
In a number of Cask specs, the value of the `homepage` stanza is currently set to https://example.com. As of 2018-11-28, the TLS certificate served by example.com seems to be expired, possibly due to an oversight on ICANN’s side. While the certificate is certainly going to be renewed soon, it would be desirable for Homebrew’s test result to be less dependent on ICANN’s actions. This commit changes the homepages of all test Casks to http://brew.sh, whose domain and TLS certificate are both controlled by Homebrew.
133 lines
4.1 KiB
Ruby
133 lines
4.1 KiB
Ruby
require "dependency_collector"
|
|
|
|
describe DependencyCollector do
|
|
alias_matcher :be_a_build_requirement, :be_build
|
|
|
|
def find_dependency(name)
|
|
subject.deps.find { |dep| dep.name == name }
|
|
end
|
|
|
|
def find_requirement(klass)
|
|
subject.requirements.find { |req| req.is_a? klass }
|
|
end
|
|
|
|
after do
|
|
described_class.clear_cache
|
|
end
|
|
|
|
describe "#add" do
|
|
specify "dependency creation" do
|
|
subject.add "foo" => :build
|
|
subject.add "bar" => ["--universal", :optional]
|
|
expect(find_dependency("foo")).to be_an_instance_of(Dependency)
|
|
expect(find_dependency("bar").tags.count).to eq(2)
|
|
end
|
|
|
|
it "returns the created dependency" do
|
|
expect(subject.add("foo")).to eq(Dependency.new("foo"))
|
|
end
|
|
|
|
specify "requirement creation" do
|
|
subject.add :x11
|
|
expect(find_requirement(X11Requirement)).to be_an_instance_of(X11Requirement)
|
|
end
|
|
|
|
it "deduplicates requirements" do
|
|
2.times { subject.add :x11 }
|
|
expect(subject.requirements.count).to eq(1)
|
|
end
|
|
|
|
specify "requirement tags" do
|
|
subject.add :x11
|
|
subject.add xcode: :build
|
|
expect(find_requirement(X11Requirement).tags).to be_empty
|
|
expect(find_requirement(XcodeRequirement)).to be_a_build_requirement
|
|
end
|
|
|
|
specify "x11 without tag" do
|
|
subject.add :x11
|
|
expect(find_requirement(X11Requirement).tags).to be_empty
|
|
end
|
|
|
|
specify "x11 with (ignored) minimum version" do
|
|
subject.add x11: "2.5.1"
|
|
expect(find_requirement(X11Requirement).min_version.to_s).not_to eq("2.5.1")
|
|
end
|
|
|
|
specify "x11 with tag" do
|
|
subject.add x11: :optional
|
|
expect(find_requirement(X11Requirement)).to be_optional
|
|
end
|
|
|
|
specify "x11 with (ignored) minimum version and tag" do
|
|
subject.add x11: ["2.5.1", :optional]
|
|
dep = find_requirement(X11Requirement)
|
|
expect(dep.min_version.to_s).not_to eq("2.5.1")
|
|
expect(dep).to be_optional
|
|
end
|
|
|
|
it "doesn't mutate the dependency spec" do
|
|
spec = { "foo" => :optional }
|
|
copy = spec.dup
|
|
subject.add(spec)
|
|
expect(spec).to eq(copy)
|
|
end
|
|
|
|
it "creates a resource dependency from a CVS URL" do
|
|
resource = Resource.new
|
|
resource.url(":pserver:anonymous:@brew.sh:/cvsroot/foo/bar", using: :cvs)
|
|
expect(subject.add(resource)).to eq(Dependency.new("cvs", [:build]))
|
|
end
|
|
|
|
it "creates a resource dependency from a '.7z' URL" do
|
|
resource = Resource.new
|
|
resource.url("https://brew.sh/foo.7z")
|
|
expect(subject.add(resource)).to eq(Dependency.new("p7zip", [:build]))
|
|
end
|
|
|
|
it "creates a resource dependency from a '.gz' URL" do
|
|
resource = Resource.new
|
|
resource.url("https://brew.sh/foo.tar.gz")
|
|
expect(subject.add(resource)).to be nil
|
|
end
|
|
|
|
it "creates a resource dependency from a '.lz' URL" do
|
|
resource = Resource.new
|
|
resource.url("https://brew.sh/foo.lz")
|
|
expect(subject.add(resource)).to eq(Dependency.new("lzip", [:build]))
|
|
end
|
|
|
|
it "creates a resource dependency from a '.lha' URL" do
|
|
resource = Resource.new
|
|
resource.url("https://brew.sh/foo.lha")
|
|
expect(subject.add(resource)).to eq(Dependency.new("lha", [:build]))
|
|
end
|
|
|
|
it "creates a resource dependency from a '.lzh' URL" do
|
|
resource = Resource.new
|
|
resource.url("https://brew.sh/foo.lzh")
|
|
expect(subject.add(resource)).to eq(Dependency.new("lha", [:build]))
|
|
end
|
|
|
|
it "creates a resource dependency from a '.rar' URL" do
|
|
resource = Resource.new
|
|
resource.url("https://brew.sh/foo.rar")
|
|
expect(subject.add(resource)).to eq(Dependency.new("unrar", [:build]))
|
|
end
|
|
|
|
it "raises a TypeError for unknown classes" do
|
|
expect { subject.add(Class.new) }.to raise_error(TypeError)
|
|
end
|
|
|
|
it "raises a TypeError for unknown Types" do
|
|
expect { subject.add(Object.new) }.to raise_error(TypeError)
|
|
end
|
|
|
|
it "raises a TypeError for a Resource with an unknown download strategy" do
|
|
resource = Resource.new
|
|
resource.download_strategy = Class.new
|
|
expect { subject.add(resource) }.to raise_error(TypeError)
|
|
end
|
|
end
|
|
end
|