From f52ebe5fc74cdcfa343a407978a8a38aefb9d2ca Mon Sep 17 00:00:00 2001 From: Misty De Meo Date: Sat, 20 Oct 2012 20:54:11 -0500 Subject: 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--- Library/Homebrew/test/test_keg.rb | 85 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Library/Homebrew/test/test_keg.rb (limited to 'Library/Homebrew/test') 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 -- cgit v1.2.3