| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  | require "testing_env" | 
					
						
							|  |  |  | require "exceptions" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ExceptionsTest < Homebrew::TestCase | 
					
						
							|  |  |  |   def test_multiple_versions_installed_error | 
					
						
							|  |  |  |     assert_equal "foo has multiple installed versions", | 
					
						
							|  |  |  |       MultipleVersionsInstalledError.new("foo").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_no_such_keg_error | 
					
						
							|  |  |  |     assert_equal "No such keg: #{HOMEBREW_CELLAR}/foo", | 
					
						
							|  |  |  |       NoSuchKegError.new("foo").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_formula_validation_error | 
					
						
							|  |  |  |     assert_equal %(invalid attribute for formula 'foo': sha257 ("magic")), | 
					
						
							|  |  |  |       FormulaValidationError.new("foo", "sha257", "magic").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_formula_unavailable_error | 
					
						
							|  |  |  |     e = FormulaUnavailableError.new "foo" | 
					
						
							|  |  |  |     assert_nil e.dependent_s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e.dependent = "foo" | 
					
						
							|  |  |  |     assert_nil e.dependent_s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     e.dependent = "foobar" | 
					
						
							|  |  |  |     assert_equal "(dependency of foobar)", e.dependent_s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_equal "No available formula with the name \"foo\" (dependency of foobar)", | 
					
						
							|  |  |  |       e.to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_tap_formula_unavailable_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     t = stub(:user => "u", :repo => "r", :to_s => "u/r", :installed? => false) | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_match "Please tap it and then try again: brew tap u/r", | 
					
						
							|  |  |  |       TapFormulaUnavailableError.new(t, "foo").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-16 22:08:04 +02:00
										 |  |  |   def test_formula_class_unavailable_error | 
					
						
							|  |  |  |     mod = Module.new | 
					
						
							|  |  |  |     mod.module_eval <<-EOS.undent
 | 
					
						
							|  |  |  |       class Bar < Requirement; end | 
					
						
							|  |  |  |       class Baz < Formula; end | 
					
						
							|  |  |  |     EOS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_match "Expected to find class Foo, but found no classes.", | 
					
						
							|  |  |  |       FormulaClassUnavailableError.new("foo", "foo.rb", "Foo", []).to_s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     list = [mod.const_get(:Bar)] | 
					
						
							|  |  |  |     assert_match "Expected to find class Foo, but only found: Bar (not derived from Formula!).", | 
					
						
							|  |  |  |       FormulaClassUnavailableError.new("foo", "foo.rb", "Foo", list).to_s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     list = [mod.const_get(:Baz)] | 
					
						
							|  |  |  |     assert_match "Expected to find class Foo, but only found: Baz.", | 
					
						
							|  |  |  |       FormulaClassUnavailableError.new("foo", "foo.rb", "Foo", list).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |   def test_tap_unavailable_error | 
					
						
							|  |  |  |     assert_equal "No available tap foo.\n", TapUnavailableError.new("foo").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_tap_already_tapped_error | 
					
						
							|  |  |  |     assert_equal "Tap foo already tapped.\n", | 
					
						
							|  |  |  |       TapAlreadyTappedError.new("foo").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_pin_status_error | 
					
						
							|  |  |  |     assert_equal "foo is already pinned.", | 
					
						
							|  |  |  |       TapPinStatusError.new("foo", true).to_s | 
					
						
							|  |  |  |     assert_equal "foo is already unpinned.", | 
					
						
							|  |  |  |       TapPinStatusError.new("foo", false).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_build_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     f = stub(:name => "foo") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_equal "Failed executing: badprg arg1 arg2", | 
					
						
							|  |  |  |       BuildError.new(f, "badprg", %w[arg1 arg2], {}).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_operation_in_progress_error | 
					
						
							|  |  |  |     assert_match "Operation already in progress for bar", | 
					
						
							|  |  |  |       OperationInProgressError.new("bar").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_formula_installation_already_attempted_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     f = stub(:full_name => "foo/bar") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_equal "Formula installation already attempted: foo/bar", | 
					
						
							|  |  |  |       FormulaInstallationAlreadyAttemptedError.new(f).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_formula_conflict_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     f = stub(:full_name => "foo/qux") | 
					
						
							|  |  |  |     c = stub(:name => "bar", :reason => "I decided to") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_match "Please `brew unlink bar` before continuing.", | 
					
						
							|  |  |  |       FormulaConflictError.new(f, [c]).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_compiler_selection_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     f = stub(:full_name => "foo") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_match "foo cannot be built with any available compilers.", | 
					
						
							|  |  |  |       CompilerSelectionError.new(f).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_curl_download_strategy_error | 
					
						
							|  |  |  |     assert_equal "File does not exist: /tmp/foo", | 
					
						
							|  |  |  |       CurlDownloadStrategyError.new("file:///tmp/foo").to_s | 
					
						
							|  |  |  |     assert_equal "Download failed: http://brew.sh", | 
					
						
							|  |  |  |       CurlDownloadStrategyError.new("http://brew.sh").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_error_during_execution | 
					
						
							|  |  |  |     assert_equal "Failure while executing: badprg arg1 arg2", | 
					
						
							|  |  |  |       ErrorDuringExecution.new("badprg", %w[arg1 arg2]).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_checksum_mismatch_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     h1 = stub(:hash_type => "sha256", :to_s => "deadbeef") | 
					
						
							|  |  |  |     h2 = stub(:hash_type => "sha256", :to_s => "deadcafe") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_match "SHA256 mismatch", | 
					
						
							|  |  |  |       ChecksumMismatchError.new("/file.tar.gz", h1, h2).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_resource_missing_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     f = stub(:full_name => "bar") | 
					
						
							|  |  |  |     r = stub(:inspect => "<resource foo>") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_match "bar does not define resource <resource foo>", | 
					
						
							|  |  |  |       ResourceMissingError.new(f, r).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_duplicate_resource_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     r = stub(:inspect => "<resource foo>") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_equal "Resource <resource foo> is defined more than once", | 
					
						
							|  |  |  |       DuplicateResourceError.new(r).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_bottle_version_mismatch_error | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |     f = stub(:full_name => "foo") | 
					
						
							| 
									
										
										
										
											2016-01-20 01:33:34 +01:00
										 |  |  |     assert_match "Bottle version mismatch", | 
					
						
							|  |  |  |       BottleVersionMismatchError.new("/foo.bottle.tar.gz", "1.0", f, "1.1").to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |