63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # frozen_string_literal: true | ||
|  | 
 | ||
|  | require "software_spec" | ||
|  | 
 | ||
|  | RSpec.describe BottleSpecification do | ||
|  |   subject(:bottle_spec) { described_class.new } | ||
|  | 
 | ||
|  |   describe "#sha256" do | ||
|  |     it "works without cellar" do | ||
|  |       checksums = { | ||
|  |         arm64_big_sur: "deadbeef" * 8, | ||
|  |         big_sur:       "faceb00c" * 8, | ||
|  |         catalina:      "baadf00d" * 8, | ||
|  |         mojave:        "8badf00d" * 8, | ||
|  |       } | ||
|  | 
 | ||
|  |       checksums.each_pair do |cat, digest| | ||
|  |         bottle_spec.sha256(cat => digest) | ||
|  |         tag_spec = bottle_spec.tag_specification_for(Utils::Bottles::Tag.from_symbol(cat)) | ||
|  |         expect(Checksum.new(digest)).to eq(tag_spec.checksum) | ||
|  |       end | ||
|  |     end | ||
|  | 
 | ||
|  |     it "works with cellar" do | ||
|  |       checksums = [ | ||
|  |         { cellar: :any_skip_relocation, tag: :arm64_big_sur,  digest: "deadbeef" * 8 }, | ||
|  |         { cellar: :any, tag: :big_sur, digest: "faceb00c" * 8 }, | ||
|  |         { cellar: "/usr/local/Cellar", tag: :catalina, digest: "baadf00d" * 8 }, | ||
|  |         { cellar: Homebrew::DEFAULT_CELLAR, tag: :mojave, digest: "8badf00d" * 8 }, | ||
|  |       ] | ||
|  | 
 | ||
|  |       checksums.each do |checksum| | ||
|  |         bottle_spec.sha256(cellar: checksum[:cellar], checksum[:tag] => checksum[:digest]) | ||
|  |         tag_spec = bottle_spec.tag_specification_for(Utils::Bottles::Tag.from_symbol(checksum[:tag])) | ||
|  |         expect(Checksum.new(checksum[:digest])).to eq(tag_spec.checksum) | ||
|  |         expect(checksum[:tag]).to eq(tag_spec.tag.to_sym) | ||
|  |         checksum[:cellar] ||= Homebrew::DEFAULT_CELLAR | ||
|  |         expect(checksum[:cellar]).to eq(tag_spec.cellar) | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   describe "#compatible_locations?" do | ||
|  |     it "checks if the bottle cellar is relocatable" do | ||
|  |       expect(bottle_spec.compatible_locations?).to be false | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   describe "#tag_to_cellar" do | ||
|  |     it "returns the cellar for a tag" do | ||
|  |       expect(bottle_spec.tag_to_cellar).to eq Utils::Bottles.tag.default_cellar | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   %w[root_url rebuild].each do |method| | ||
|  |     specify "##{method}" do | ||
|  |       object = Object.new | ||
|  |       bottle_spec.public_send(method, object) | ||
|  |       expect(bottle_spec.public_send(method)).to eq(object) | ||
|  |     end | ||
|  |   end | ||
|  | end |