
* Renames --force to --overwrite, freeing up brew ln --force for Homebrew/homebrew#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
86 lines
1.8 KiB
Ruby
86 lines
1.8 KiB
Ruby
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
|