aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorMisty De Meo2012-10-20 20:54:11 -0500
committerMisty De Meo2012-10-20 21:00:46 -0500
commitf52ebe5fc74cdcfa343a407978a8a38aefb9d2ca (patch)
treee8a12296ae48ff0c946f1832e93b0bafe9fb2bd3 /Library/Homebrew/test
parent606769bebcc976436530b5651cceeaf45a29a34e (diff)
downloadhomebrew-f52ebe5fc74cdcfa343a407978a8a38aefb9d2ca.tar.bz2
brew ln --force is now brew ln --overwrite
* Renames --force to --overwrite, freeing up brew ln --force for #13349 * Changes --dry-run to preview linking by default, rather than overwriting. An overwrite dry-run can be simulated via both --dry-run --overwrite * Adds some basic Keg tests
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/test_keg.rb85
1 files changed, 85 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_keg.rb b/Library/Homebrew/test/test_keg.rb
new file mode 100644
index 000000000..c9e5990a0
--- /dev/null
+++ b/Library/Homebrew/test/test_keg.rb
@@ -0,0 +1,85 @@
+require 'testing_env'
+require 'test/testball'
+require 'keg'
+require 'stringio'
+
+class LinkTests < Test::Unit::TestCase
+ def setup
+ @formula = TestBall.new
+ shutup do
+ @formula.brew { @formula.install }
+ end
+ @keg = Keg.for @formula.prefix
+ @keg.unlink
+
+ @old_stdout = $stdout
+ $stdout = StringIO.new
+
+ FileUtils.mkpath HOMEBREW_PREFIX/"bin"
+ end
+
+ def test_linking_keg
+ assert_equal @keg.link, 3
+ end
+
+ def test_unlinking_keg
+ @keg.link
+ assert_equal @keg.unlink, 3
+ end
+
+ def test_link_dry_run
+ mode = OpenStruct.new
+ mode.dry_run = true
+
+ assert_equal @keg.link(mode), 0
+ assert !@keg.linked?
+
+ assert_equal $stdout.string, <<-EOS.undent
+ /private/tmp/testbrew/prefix/bin/hiworld
+ /private/tmp/testbrew/prefix/bin/helloworld
+ /private/tmp/testbrew/prefix/bin/goodbye_cruel_world
+ EOS
+ end
+
+ def test_linking_fails_when_already_linked
+ @keg.link
+ assert_raise RuntimeError, "Cannot link testball" do
+ @keg.link
+ end
+ end
+
+ def test_linking_fails_when_files_exist
+ FileUtils.touch HOMEBREW_PREFIX/"bin/helloworld"
+ assert_raise RuntimeError do
+ @keg.link
+ end
+ end
+
+ def test_link_overwrite
+ FileUtils.touch HOMEBREW_PREFIX/"bin/helloworld"
+ mode = OpenStruct.new
+ mode.overwrite = true
+ assert_equal @keg.link(mode), 3
+ end
+
+ def test_link_overwrite_dryrun
+ FileUtils.touch HOMEBREW_PREFIX/"bin/helloworld"
+ mode = OpenStruct.new
+ mode.overwrite = true
+ mode.dry_run = true
+
+ assert_equal @keg.link(mode), 0
+ assert !@keg.linked?
+
+ assert_equal $stdout.string, "/private/tmp/testbrew/prefix/bin/helloworld\n"
+ end
+
+ def teardown
+ @keg.unlink
+ @keg.rmtree
+
+ $stdout = @old_stdout
+
+ FileUtils.rmtree HOMEBREW_PREFIX/"bin"
+ end
+end