diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 80408f73df..333b66ee4f 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -4,6 +4,15 @@ require "formula_lock" require "ostruct" class Keg < Pathname + class AlreadyLinkedError < RuntimeError + def initialize(keg) + super <<-EOS.undent + Cannot link #{keg.fname} + Another version is already linked: #{keg.linked_keg_record.resolved_path} + EOS + end + end + class LinkError < RuntimeError attr_reader :keg, :src, :dst @@ -169,7 +178,7 @@ class Keg < Pathname end def link mode=OpenStruct.new - raise "Cannot link #{fname}\nAnother version is already linked: #{linked_keg_record.resolved_path}" if linked_keg_record.directory? + raise AlreadyLinkedError.new(self) if linked_keg_record.directory? ObserverPathnameExtension.reset_counts! diff --git a/Library/Homebrew/test/test_keg.rb b/Library/Homebrew/test/test_keg.rb index 0da3a87621..828ad1e43c 100644 --- a/Library/Homebrew/test/test_keg.rb +++ b/Library/Homebrew/test/test_keg.rb @@ -49,7 +49,7 @@ class LinkTests < Test::Unit::TestCase def test_linking_fails_when_already_linked @keg.link - assert_raise RuntimeError do + assert_raise Keg::AlreadyLinkedError do shutup { @keg.link } end end