Add and update tests
This commit is contained in:
		
							parent
							
								
									f3e34230ad
								
							
						
					
					
						commit
						6c35317732
					
				@ -211,4 +211,64 @@ describe Cask::Cask, :cask do
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "#to_hash_with_variations" do
 | 
			
		||||
    let!(:original_macos_version) { MacOS.full_version.to_s }
 | 
			
		||||
    let(:expected_variations) {
 | 
			
		||||
      <<~JSON
 | 
			
		||||
        {
 | 
			
		||||
          "arm64_big_sur": {
 | 
			
		||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.0/arm.zip",
 | 
			
		||||
            "version": "1.2.0",
 | 
			
		||||
            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
			
		||||
          },
 | 
			
		||||
          "monterey": {
 | 
			
		||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.3/intel.zip"
 | 
			
		||||
          },
 | 
			
		||||
          "big_sur": {
 | 
			
		||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.0/intel.zip",
 | 
			
		||||
            "version": "1.2.0",
 | 
			
		||||
            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
			
		||||
          },
 | 
			
		||||
          "catalina": {
 | 
			
		||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.0.0/intel.zip",
 | 
			
		||||
            "version": "1.0.0",
 | 
			
		||||
            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
			
		||||
          },
 | 
			
		||||
          "mojave": {
 | 
			
		||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.0.0/intel.zip",
 | 
			
		||||
            "version": "1.0.0",
 | 
			
		||||
            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      JSON
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    before do
 | 
			
		||||
      # Use a more limited symbols list to shorten the variations hash
 | 
			
		||||
      symbols = {
 | 
			
		||||
        monterey: "12",
 | 
			
		||||
        big_sur:  "11",
 | 
			
		||||
        catalina: "10.15",
 | 
			
		||||
        mojave:   "10.14",
 | 
			
		||||
      }
 | 
			
		||||
      stub_const("MacOSVersions::SYMBOLS", symbols)
 | 
			
		||||
 | 
			
		||||
      # For consistency, always run on Monterey and ARM
 | 
			
		||||
      MacOS.full_version = "12"
 | 
			
		||||
      allow(Hardware::CPU).to receive(:type).and_return(:arm)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    after do
 | 
			
		||||
      MacOS.full_version = original_macos_version
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "returns the correct variations hash" do
 | 
			
		||||
      c = Cask::CaskLoader.load("multiple-versions")
 | 
			
		||||
      h = c.to_hash_with_variations
 | 
			
		||||
 | 
			
		||||
      expect(h).to be_a(Hash)
 | 
			
		||||
      expect(JSON.pretty_generate(h["variations"])).to eq expected_variations.strip
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -120,9 +120,7 @@ describe Cask::Cmd::List, :cask do
 | 
			
		||||
            },
 | 
			
		||||
            "conflicts_with": null,
 | 
			
		||||
            "container": null,
 | 
			
		||||
            "auto_updates": null,
 | 
			
		||||
            "variations": {
 | 
			
		||||
            }
 | 
			
		||||
            "auto_updates": null
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            "token": "local-transmission",
 | 
			
		||||
@ -151,9 +149,7 @@ describe Cask::Cmd::List, :cask do
 | 
			
		||||
            },
 | 
			
		||||
            "conflicts_with": null,
 | 
			
		||||
            "container": null,
 | 
			
		||||
            "auto_updates": null,
 | 
			
		||||
            "variations": {
 | 
			
		||||
            }
 | 
			
		||||
            "auto_updates": null
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            "token": "multiple-versions",
 | 
			
		||||
@ -185,32 +181,7 @@ describe Cask::Cmd::List, :cask do
 | 
			
		||||
            },
 | 
			
		||||
            "conflicts_with": null,
 | 
			
		||||
            "container": null,
 | 
			
		||||
            "auto_updates": null,
 | 
			
		||||
            "variations": {
 | 
			
		||||
              "arm64_big_sur": {
 | 
			
		||||
                "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.0/arm.zip",
 | 
			
		||||
                "version": "1.2.0",
 | 
			
		||||
                "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
			
		||||
              },
 | 
			
		||||
              "monterey": {
 | 
			
		||||
                "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.3/intel.zip"
 | 
			
		||||
              },
 | 
			
		||||
              "big_sur": {
 | 
			
		||||
                "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.2.0/intel.zip",
 | 
			
		||||
                "version": "1.2.0",
 | 
			
		||||
                "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
			
		||||
              },
 | 
			
		||||
              "catalina": {
 | 
			
		||||
                "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.0.0/intel.zip",
 | 
			
		||||
                "version": "1.0.0",
 | 
			
		||||
                "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
			
		||||
              },
 | 
			
		||||
              "mojave": {
 | 
			
		||||
                "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/1.0.0/intel.zip",
 | 
			
		||||
                "version": "1.0.0",
 | 
			
		||||
                "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            "auto_updates": null
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            "token": "third-party-cask",
 | 
			
		||||
@ -239,9 +210,7 @@ describe Cask::Cmd::List, :cask do
 | 
			
		||||
            },
 | 
			
		||||
            "conflicts_with": null,
 | 
			
		||||
            "container": null,
 | 
			
		||||
            "auto_updates": null,
 | 
			
		||||
            "variations": {
 | 
			
		||||
            }
 | 
			
		||||
            "auto_updates": null
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      EOS
 | 
			
		||||
 | 
			
		||||
@ -905,6 +905,99 @@ describe Formula do
 | 
			
		||||
    expect(h["versions"]["bottle"]).to be_truthy
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "#to_hash_with_variations" do
 | 
			
		||||
    let(:formula_path) { CoreTap.new.formula_dir/"foo-variations.rb" }
 | 
			
		||||
    let(:formula_content) do
 | 
			
		||||
      <<~RUBY
 | 
			
		||||
        class FooVariations < Formula
 | 
			
		||||
          url "file://#{TEST_FIXTURE_DIR}/tarballs/testball-0.1.tbz"
 | 
			
		||||
          sha256 TESTBALL_SHA256
 | 
			
		||||
 | 
			
		||||
          on_intel do
 | 
			
		||||
            depends_on "intel-formula"
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          on_big_sur do
 | 
			
		||||
            depends_on "big-sur-formula"
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          on_catalina :or_older do
 | 
			
		||||
            depends_on "catalina-or-older-formula"
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          on_linux do
 | 
			
		||||
            depends_on "linux-formula"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      RUBY
 | 
			
		||||
    end
 | 
			
		||||
    let(:expected_variations) {
 | 
			
		||||
      <<~JSON
 | 
			
		||||
        {
 | 
			
		||||
          "arm64_big_sur": {
 | 
			
		||||
            "dependencies": [
 | 
			
		||||
              "big-sur-formula"
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          "monterey": {
 | 
			
		||||
            "dependencies": [
 | 
			
		||||
              "intel-formula"
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          "big_sur": {
 | 
			
		||||
            "dependencies": [
 | 
			
		||||
              "intel-formula",
 | 
			
		||||
              "big-sur-formula"
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          "catalina": {
 | 
			
		||||
            "dependencies": [
 | 
			
		||||
              "intel-formula",
 | 
			
		||||
              "catalina-or-older-formula"
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          "mojave": {
 | 
			
		||||
            "dependencies": [
 | 
			
		||||
              "intel-formula",
 | 
			
		||||
              "catalina-or-older-formula"
 | 
			
		||||
            ]
 | 
			
		||||
          },
 | 
			
		||||
          "x86_64_linux": {
 | 
			
		||||
            "dependencies": [
 | 
			
		||||
              "intel-formula",
 | 
			
		||||
              "linux-formula"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      JSON
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    before do
 | 
			
		||||
      # Use a more limited symbols list to shorten the variations hash
 | 
			
		||||
      symbols = {
 | 
			
		||||
        monterey: "12",
 | 
			
		||||
        big_sur:  "11",
 | 
			
		||||
        catalina: "10.15",
 | 
			
		||||
        mojave:   "10.14",
 | 
			
		||||
      }
 | 
			
		||||
      stub_const("MacOSVersions::SYMBOLS", symbols)
 | 
			
		||||
 | 
			
		||||
      # For consistency, always run on Monterey and ARM
 | 
			
		||||
      MacOS.full_version = "12"
 | 
			
		||||
      allow(Hardware::CPU).to receive(:type).and_return(:arm)
 | 
			
		||||
 | 
			
		||||
      formula_path.dirname.mkpath
 | 
			
		||||
      formula_path.write formula_content
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "returns the correct variations hash" do
 | 
			
		||||
      h = Formulary.factory("foo-variations").to_hash_with_variations
 | 
			
		||||
 | 
			
		||||
      expect(h).to be_a(Hash)
 | 
			
		||||
      expect(JSON.pretty_generate(h["variations"])).to eq expected_variations.strip
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  specify "#to_recursive_bottle_hash" do
 | 
			
		||||
    f1 = formula "foo" do
 | 
			
		||||
      url "foo-1.0"
 | 
			
		||||
 | 
			
		||||
@ -62,7 +62,7 @@ describe Utils::Bottles::Tag do
 | 
			
		||||
      expect(tag.valid_combination?).to be false
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "returns false for arm archs and linux " do
 | 
			
		||||
    it "returns false for arm archs and linux" do
 | 
			
		||||
      tag = described_class.new(system: :linux, arch: :arm64)
 | 
			
		||||
      expect(tag.valid_combination?).to be false
 | 
			
		||||
      tag = described_class.new(system: :linux, arch: :arm)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user