 5be80a78f6
			
		
	
	
		5be80a78f6
		
			
		
	
	
	
	
		
			
			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.
		
			
				
	
	
		
			172 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "patch"
 | |
| 
 | |
| describe Patch do
 | |
|   describe "#create" do
 | |
|     context "simple patch" do
 | |
|       subject { described_class.create(:p2, nil) }
 | |
| 
 | |
|       it { is_expected.to be_kind_of ExternalPatch }
 | |
|       it { is_expected.to be_external }
 | |
|       its(:strip) { is_expected.to eq(:p2) }
 | |
|     end
 | |
| 
 | |
|     context "string patch" do
 | |
|       subject { described_class.create(:p0, "foo") }
 | |
| 
 | |
|       it { is_expected.to be_kind_of StringPatch }
 | |
|       its(:strip) { is_expected.to eq(:p0) }
 | |
|     end
 | |
| 
 | |
|     context "string patch without strip" do
 | |
|       subject { described_class.create("foo", nil) }
 | |
| 
 | |
|       it { is_expected.to be_kind_of StringPatch }
 | |
|       its(:strip) { is_expected.to eq(:p1) }
 | |
|     end
 | |
| 
 | |
|     context "data patch" do
 | |
|       subject { described_class.create(:p0, :DATA) }
 | |
| 
 | |
|       it { is_expected.to be_kind_of DATAPatch }
 | |
|       its(:strip) { is_expected.to eq(:p0) }
 | |
|     end
 | |
| 
 | |
|     context "data patch without strip" do
 | |
|       subject { described_class.create(:DATA, nil) }
 | |
| 
 | |
|       it { is_expected.to be_kind_of DATAPatch }
 | |
|       its(:strip) { is_expected.to eq(:p1) }
 | |
|     end
 | |
| 
 | |
|     it "raises an error for unknown values" do
 | |
|       expect {
 | |
|         described_class.create(Object.new)
 | |
|       }.to raise_error(ArgumentError)
 | |
| 
 | |
|       expect {
 | |
|         described_class.create(Object.new, Object.new)
 | |
|       }.to raise_error(ArgumentError)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe "#patch_files" do
 | |
|     subject { described_class.create(:p2, nil) }
 | |
| 
 | |
|     context "empty patch" do
 | |
|       its(:resource) { is_expected.to be_kind_of Resource::PatchResource }
 | |
|       its(:patch_files) { is_expected.to eq(subject.resource.patch_files) }
 | |
|       its(:patch_files) { is_expected.to eq([]) }
 | |
|     end
 | |
| 
 | |
|     it "returns applied patch files" do
 | |
|       subject.resource.apply("patch1.diff")
 | |
|       expect(subject.patch_files).to eq(["patch1.diff"])
 | |
| 
 | |
|       subject.resource.apply("patch2.diff", "patch3.diff")
 | |
|       expect(subject.patch_files).to eq(["patch1.diff", "patch2.diff", "patch3.diff"])
 | |
| 
 | |
|       subject.resource.apply(["patch4.diff", "patch5.diff"])
 | |
|       expect(subject.patch_files.count).to eq(5)
 | |
| 
 | |
|       subject.resource.apply("patch4.diff", ["patch5.diff", "patch6.diff"], "patch7.diff")
 | |
|       expect(subject.patch_files.count).to eq(7)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe "#normalize_legacy_patches" do
 | |
|     it "can create a patch from a single string" do
 | |
|       patches = described_class.normalize_legacy_patches("https://brew.sh/patch.diff")
 | |
|       expect(patches.length).to eq(1)
 | |
|       expect(patches.first.strip).to eq(:p1)
 | |
|     end
 | |
| 
 | |
|     it "can create patches from an array" do
 | |
|       patches = described_class.normalize_legacy_patches(
 | |
|         %w[https://brew.sh/patch1.diff https://brew.sh/patch2.diff],
 | |
|       )
 | |
| 
 | |
|       expect(patches.length).to eq(2)
 | |
|       expect(patches.first.strip).to eq(:p1)
 | |
|       expect(patches.second.strip).to eq(:p1)
 | |
|     end
 | |
| 
 | |
|     it "can create patches from a :p0 hash" do
 | |
|       patches = described_class.normalize_legacy_patches(
 | |
|         p0: "https://brew.sh/patch.diff",
 | |
|       )
 | |
| 
 | |
|       expect(patches.length).to eq(1)
 | |
|       expect(patches.first.strip).to eq(:p0)
 | |
|     end
 | |
| 
 | |
|     it "can create patches from a :p1 hash" do
 | |
|       patches = described_class.normalize_legacy_patches(
 | |
|         p1: "https://brew.sh/patch.diff",
 | |
|       )
 | |
| 
 | |
|       expect(patches.length).to eq(1)
 | |
|       expect(patches.first.strip).to eq(:p1)
 | |
|     end
 | |
| 
 | |
|     it "can create patches from a mixed hash" do
 | |
|       patches = described_class.normalize_legacy_patches(
 | |
|         p1: "https://brew.sh/patch1.diff",
 | |
|         p0: "https://brew.sh/patch0.diff",
 | |
|       )
 | |
| 
 | |
|       expect(patches.length).to eq(2)
 | |
|       expect(patches.count { |p| p.strip == :p0 }).to eq(1)
 | |
|       expect(patches.count { |p| p.strip == :p1 }).to eq(1)
 | |
|     end
 | |
| 
 | |
|     it "can create patches from a mixed hash with array" do
 | |
|       patches = described_class.normalize_legacy_patches(
 | |
|         p1: [
 | |
|           "https://brew.sh/patch10.diff",
 | |
|           "https://brew.sh/patch11.diff",
 | |
|         ],
 | |
|         p0: [
 | |
|           "https://brew.sh/patch00.diff",
 | |
|           "https://brew.sh/patch01.diff",
 | |
|         ],
 | |
|       )
 | |
| 
 | |
|       expect(patches.length).to eq(4)
 | |
|       expect(patches.count { |p| p.strip == :p0 }).to eq(2)
 | |
|       expect(patches.count { |p| p.strip == :p1 }).to eq(2)
 | |
|     end
 | |
| 
 | |
|     it "returns an empty array if given nil" do
 | |
|       expect(described_class.normalize_legacy_patches(nil)).to be_empty
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| describe EmbeddedPatch do
 | |
|   describe "#new" do
 | |
|     subject { described_class.new(:p1) }
 | |
| 
 | |
|     its(:inspect) { is_expected.to eq("#<EmbeddedPatch: :p1>") }
 | |
|   end
 | |
| end
 | |
| 
 | |
| describe ExternalPatch do
 | |
|   subject { described_class.new(:p1) { url "file:///my.patch" } }
 | |
| 
 | |
|   describe "#url" do
 | |
|     its(:url) { is_expected.to eq("file:///my.patch") }
 | |
|   end
 | |
| 
 | |
|   describe "#inspect" do
 | |
|     its(:inspect) { is_expected.to eq('#<ExternalPatch: :p1 "file:///my.patch">') }
 | |
|   end
 | |
| 
 | |
|   describe "#cached_download" do
 | |
|     before do
 | |
|       allow(subject.resource).to receive(:cached_download).and_return("/tmp/foo.tar.gz")
 | |
|     end
 | |
| 
 | |
|     its(:cached_download) { is_expected.to eq("/tmp/foo.tar.gz") }
 | |
|   end
 | |
| end
 |