diff options
| author | Markus Reiter | 2017-02-14 17:45:20 +0100 | 
|---|---|---|
| committer | Markus Reiter | 2017-02-15 15:53:27 +0100 | 
| commit | 279831fc0e3241eda17b6007aef02299b3c82c9e (patch) | |
| tree | fb17533ae83582095218a33c16eaf9d104169bb7 /Library/Homebrew/test/exceptions_spec.rb | |
| parent | 3babab25bb0de001e3494ca86ce14970622f45fe (diff) | |
| download | brew-279831fc0e3241eda17b6007aef02299b3c82c9e.tar.bz2 | |
Convert Exceptions test to spec.
Diffstat (limited to 'Library/Homebrew/test/exceptions_spec.rb')
| -rw-r--r-- | Library/Homebrew/test/exceptions_spec.rb | 188 | 
1 files changed, 188 insertions, 0 deletions
| diff --git a/Library/Homebrew/test/exceptions_spec.rb b/Library/Homebrew/test/exceptions_spec.rb new file mode 100644 index 000000000..33547ea32 --- /dev/null +++ b/Library/Homebrew/test/exceptions_spec.rb @@ -0,0 +1,188 @@ +require "exceptions" + +describe MultipleVersionsInstalledError do +  subject { described_class.new("foo") } +  its(:to_s) { is_expected.to eq("foo has multiple installed versions") } +end + +describe NoSuchKegError do +  subject { described_class.new("foo") } +  its(:to_s) { is_expected.to eq("No such keg: #{HOMEBREW_CELLAR}/foo") } +end + +describe FormulaValidationError do +  subject { described_class.new("foo", "sha257", "magic") } +  its(:to_s) { +    is_expected.to eq(%q(invalid attribute for formula 'foo': sha257 ("magic"))) +  } +end + +describe FormulaUnavailableError do +  subject { described_class.new("foo") } + +  describe "#dependent_s" do +    it "returns nil if there is no dependent" do +      expect(subject.dependent_s).to be nil +    end + +    it "returns nil if it depended on by itself" do +      subject.dependent = "foo" +      expect(subject.dependent_s).to be nil +    end + +    it "returns a string if there is a dependent" do +      subject.dependent = "foobar" +      expect(subject.dependent_s).to eq("(dependency of foobar)") +    end +  end + +  context "without a dependent" do +    its(:to_s) { is_expected.to eq('No available formula with the name "foo" ') } +  end + +  context "with a dependent" do +    before(:each) do +      subject.dependent = "foobar" +    end + +    its(:to_s) { +      is_expected.to eq('No available formula with the name "foo" (dependency of foobar)') +    } +  end +end + +describe TapFormulaUnavailableError do +  subject { described_class.new(tap, "foo") } +  let(:tap) { double(Tap, user: "u", repo: "r", to_s: "u/r", installed?: false) } +  its(:to_s) { is_expected.to match(%r{Please tap it and then try again: brew tap u/r}) } +end + +describe FormulaClassUnavailableError do +  subject { described_class.new("foo", "foo.rb", "Foo", list) } +  let(:mod) do +    Module.new do +      class Bar < Requirement; end +      class Baz < Formula; end +    end +  end + +  context "no classes" do +    let(:list) { [] } +    its(:to_s) { +      is_expected.to match(/Expected to find class Foo, but found no classes\./) +    } +  end + +  context "class not derived from Formula" do +    let(:list) { [mod.const_get(:Bar)] } +    its(:to_s) { +      is_expected.to match(/Expected to find class Foo, but only found: Bar \(not derived from Formula!\)\./) +    } +  end + +  context "class derived from Formula" do +    let(:list) { [mod.const_get(:Baz)] } +    its(:to_s) { is_expected.to match(/Expected to find class Foo, but only found: Baz\./) } +  end +end + +describe FormulaUnreadableError do +  subject { described_class.new("foo", formula_error) } +  let(:formula_error) { LoadError.new("bar") } +  its(:to_s) { is_expected.to eq("foo: bar") } +end + +describe TapUnavailableError do +  subject { described_class.new("foo") } +  its(:to_s) { is_expected.to eq("No available tap foo.\n") } +end + +describe TapAlreadyTappedError do +  subject { described_class.new("foo") } +  its(:to_s) { is_expected.to eq("Tap foo already tapped.\n") } +end + +describe TapPinStatusError do +  context "pinned" do +    subject { described_class.new("foo", true) } +    its(:to_s) { is_expected.to eq("foo is already pinned.") } +  end + +  context "unpinned" do +    subject { described_class.new("foo", false) } +    its(:to_s) { is_expected.to eq("foo is already unpinned.") } +  end +end + +describe BuildError do +  subject { described_class.new(formula, "badprg", %w[arg1 arg2], {}) } +  let(:formula) { double(Formula, name: "foo") } +  its(:to_s) { is_expected.to eq("Failed executing: badprg arg1 arg2") } +end + +describe OperationInProgressError do +  subject { described_class.new("foo") } +  its(:to_s) { is_expected.to match(/Operation already in progress for foo/) } +end + +describe FormulaInstallationAlreadyAttemptedError do +  subject { described_class.new(formula) } +  let(:formula) { double(Formula, full_name: "foo/bar") } +  its(:to_s) { is_expected.to eq("Formula installation already attempted: foo/bar") } +end + +describe FormulaConflictError do +  subject { described_class.new(formula, [conflict]) } +  let(:formula) { double(Formula, full_name: "foo/qux") } +  let(:conflict) { double(name: "bar", reason: "I decided to") } +  its(:to_s) { is_expected.to match(/Please `brew unlink bar` before continuing\./) } +end + +describe CompilerSelectionError do +  subject { described_class.new(formula) } +  let(:formula) { double(Formula, full_name: "foo") } +  its(:to_s) { is_expected.to match(/foo cannot be built with any available compilers\./) } +end + +describe CurlDownloadStrategyError do +  context "file does not exist" do +    subject { described_class.new("file:///tmp/foo") } +    its(:to_s) { is_expected.to eq("File does not exist: /tmp/foo") } +  end + +  context "download failed" do +    subject { described_class.new("http://brew.sh") } +    its(:to_s) { is_expected.to eq("Download failed: http://brew.sh") } +  end +end + +describe ErrorDuringExecution do +  subject { described_class.new("badprg", %w[arg1 arg2]) } +  its(:to_s) { is_expected.to eq("Failure while executing: badprg arg1 arg2") } +end + +describe ChecksumMismatchError do +  subject { described_class.new("/file.tar.gz", hash1, hash2) } +  let(:hash1) { double(hash_type: "sha256", to_s: "deadbeef") } +  let(:hash2) { double(hash_type: "sha256", to_s: "deadcafe") } +  its(:to_s) { is_expected.to match(/SHA256 mismatch/) } +end + +describe ResourceMissingError do +  subject { described_class.new(formula, resource) } +  let(:formula) { double(Formula, full_name: "bar") } +  let(:resource) { double(inspect: "<resource foo>") } +  its(:to_s) { is_expected.to eq("bar does not define resource <resource foo>") } +end + +describe DuplicateResourceError do +  subject { described_class.new(resource) } +  let(:resource) { double(inspect: "<resource foo>") } +  its(:to_s) { is_expected.to eq("Resource <resource foo> is defined more than once") } +end + +describe BottleVersionMismatchError do +  subject { described_class.new("/foo.bottle.tar.gz", "1.0", formula, "1.1") } +  let(:formula) { double(Formula, full_name: "foo") } +  its(:to_s) { is_expected.to match(/Bottle version mismatch/) } +end | 
