summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorThayne McCombs <thayne@lucidchart.com>2023-05-03 12:34:20 -0600
committerGitHub <noreply@github.com>2023-05-03 14:34:20 -0400
commitb731df4d74cc510d16d5db15ba54ab13fbf14373 (patch)
tree25642a52682c51f0c1a7ca618c52dbdcb3b52cbe /spec
parentab8dbddf34f10409ef5398bdf597599f31707b09 (diff)
downloadchef-b731df4d74cc510d16d5db15ba54ab13fbf14373.tar.gz
feat(apt_repository): Allow specifying arbitrary options (#13728)
This allows specifying additional options to apt repositories, in addition to `trusted` and `arch`. By using an array of strings we also allow using multivalue operators like -= and += Fixes: #13727 Signed-off-by: Thayne McCombs <thayne@lucid.co>
Diffstat (limited to 'spec')
-rw-r--r--spec/unit/provider/apt_repository_spec.rb24
-rw-r--r--spec/unit/resource/apt_repository_spec.rb5
2 files changed, 22 insertions, 7 deletions
diff --git a/spec/unit/provider/apt_repository_spec.rb b/spec/unit/provider/apt_repository_spec.rb
index 0f5421abc2..979119ed11 100644
--- a/spec/unit/provider/apt_repository_spec.rb
+++ b/spec/unit/provider/apt_repository_spec.rb
@@ -246,33 +246,43 @@ C5986B4F1257FFA86632CBA746181433FBB75451
describe "#build_repo" do
it "creates a repository string" do
target = "deb http://test/uri unstable main\n"
- expect(provider.build_repo("http://test/uri", "unstable", "main", false, nil)).to eql(target)
+ expect(provider.build_repo("http://test/uri", "unstable", "main", false, nil, [])).to eql(target)
end
it "creates a repository string with spaces" do
target = "deb http://test/uri%20with%20spaces unstable main\n"
- expect(provider.build_repo("http://test/uri with spaces", "unstable", "main", false, nil)).to eql(target)
+ expect(provider.build_repo("http://test/uri with spaces", "unstable", "main", false, nil, [])).to eql(target)
end
it "creates a repository string with no distribution" do
target = "deb http://test/uri main\n"
- expect(provider.build_repo("http://test/uri", nil, "main", false, nil)).to eql(target)
+ expect(provider.build_repo("http://test/uri", nil, "main", false, nil, [])).to eql(target)
end
it "creates a repository string with source" do
target = "deb http://test/uri unstable main\ndeb-src http://test/uri unstable main\n"
- expect(provider.build_repo("http://test/uri", "unstable", "main", false, nil, true)).to eql(target)
+ expect(provider.build_repo("http://test/uri", "unstable", "main", false, nil, [], true)).to eql(target)
end
- it "creates a repository string with options" do
+ it "creates a repository string with trusted" do
target = "deb [trusted=yes] http://test/uri unstable main\n"
- expect(provider.build_repo("http://test/uri", "unstable", "main", true, nil)).to eql(target)
+ expect(provider.build_repo("http://test/uri", "unstable", "main", true, nil, [])).to eql(target)
+ end
+
+ it "creates a repository string with custom options" do
+ target = "deb [by-hash=no] http://test/uri unstable main\n"
+ expect(provider.build_repo("http://test/uri", "unstable", "main", false, nil, ["by-hash=no"])).to eql(target)
+ end
+
+ it "creates a repository string with trusted, arch, and custom options" do
+ target = "deb [arch=amd64 trusted=yes by-hash=no] http://test/uri unstable main\n"
+ expect(provider.build_repo("http://test/uri", "unstable", "main", true, "amd64", ["by-hash=no"])).to eql(target)
end
it "handles a ppa repo" do
target = "deb http://ppa.launchpad.net/chef/main/ubuntu unstable main\n"
expect(provider).to receive(:make_ppa_url).with("ppa:chef/main").and_return("http://ppa.launchpad.net/chef/main/ubuntu")
- expect(provider.build_repo("ppa:chef/main", "unstable", "main", false, nil)).to eql(target)
+ expect(provider.build_repo("ppa:chef/main", "unstable", "main", false, nil, [])).to eql(target)
end
end
end
diff --git a/spec/unit/resource/apt_repository_spec.rb b/spec/unit/resource/apt_repository_spec.rb
index 23016c9abf..d97d746364 100644
--- a/spec/unit/resource/apt_repository_spec.rb
+++ b/spec/unit/resource/apt_repository_spec.rb
@@ -68,6 +68,11 @@ describe Chef::Resource::AptRepository do
expect(resource.key).to eql(["key1"])
end
+ it "allows setting options to a String and coerces it to an Array" do
+ resource.options = "by-hash=no"
+ expect(resource.options).to eql(["by-hash=no"])
+ end
+
it "fails if the user provides a repo_name with a forward slash" do
expect { resource.repo_name "foo/bar" }.to raise_error(ArgumentError)
end