1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
require 'setup'
require 'fileutils'
require 'stringio'
require 'test/unit'
class DummyConfig
def initialize(config)
@config = config
end
def [](key)
@config[key]
end
def no_harm?
false
end
def verbose?
false
end
end
class TestInstaller < Test::Unit::TestCase
include FileUtils
def setup
rm_rf %w(srcdir objdir)
mkdir %w(srcdir objdir)
Dir.chdir 'objdir'
$stderr, $orig_stderr = StringIO.new, $stderr
end
def teardown
$stderr = $orig_stderr
Dir.chdir '..'
rm_rf %w(srcdir objdir)
end
def setup_installer(config = {})
@installer = Installer.new(DummyConfig.new(config), '../srcdir', '.')
end
def do_update_shebang_line(id, str)
create id, str
@installer.update_shebang_line "../srcdir/#{id}"
read(id)
end
def create(filename, content)
File.open("../srcdir/#{filename}", 'wb') {|f|
f.write content
}
end
def read(filename)
path = File.exist?(filename) ? filename : "../srcdir/#{filename}"
File.open(path, 'rb') {|f|
return f.read
}
end
def test_update_shebang_line__never
setup_installer 'shebang' => 'never', 'rubypath' => 'ERROR'
assert_equal "#!/usr/local/bin/ruby\nprogram",
do_update_shebang_line('ruby', "#!/usr/local/bin/ruby\nprogram")
assert_equal "#! /usr/local/bin/ruby\nprogram",
do_update_shebang_line('ruby-sp', "#! /usr/local/bin/ruby\nprogram")
assert_equal "#!/usr/local/bin/ruby -Ke\nprogram",
do_update_shebang_line('ruby-arg', "#!/usr/local/bin/ruby -Ke\nprogram")
assert_equal "#!/usr/bin/ruby -n -p\nprogram",
do_update_shebang_line('ruby-args', "#!/usr/bin/ruby -n -p\nprogram")
assert_equal "#!/usr/bin/env ruby\nprogram",
do_update_shebang_line('env-ruby', "#!/usr/bin/env ruby\nprogram")
assert_equal "#!/usr/bin/env perl\nprogram",
do_update_shebang_line('env-noruby', "#!/usr/bin/env perl\nprogram")
assert_equal "#!/bin/sh\nprogram",
do_update_shebang_line('interp', "#!/bin/sh\nprogram")
assert_equal "#!/bin/sh -l -r -\nprogram",
do_update_shebang_line('interp-args', "#!/bin/sh -l -r -\nprogram")
assert_equal "program",
do_update_shebang_line('bare', "program")
assert_equal "\001\002\003\n\004\005\006",
do_update_shebang_line('binary', "\001\002\003\n\004\005\006")
end
def test_update_shebang_line__all
setup_installer 'shebang' => 'all', 'rubypath' => 'RUBYPATH'
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('ruby', "#!/usr/local/bin/ruby\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('ruby-sp', "#! /usr/local/bin/ruby\nprogram")
assert_equal "#! RUBYPATH -Ke\nprogram",
do_update_shebang_line('ruby-arg', "#!/usr/local/bin/ruby -Ke\nprogram")
assert_equal "#! RUBYPATH -n -p\nprogram",
do_update_shebang_line('ruby-args', "#!/usr/bin/ruby -n -p\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('env-ruby', "#!/usr/bin/env ruby\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('env-noruby', "#!/usr/bin/env perl\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('interp', "#!/bin/sh\nprogram")
assert_equal "#! RUBYPATH\nprogram", # args removed
do_update_shebang_line('interp-args', "#!/bin/sh -l -r -\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('bare', "program")
assert_equal "#! RUBYPATH\n\001\002\003\n\004\005\006",
do_update_shebang_line('binary', "\001\002\003\n\004\005\006")
end
def test_update_shebang_line__ruby
setup_installer 'shebang' => 'ruby', 'rubypath' => 'RUBYPATH'
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('ruby', "#!/usr/local/bin/ruby\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('ruby-sp', "#! /usr/local/bin/ruby\nprogram")
assert_equal "#! RUBYPATH -Ke\nprogram",
do_update_shebang_line('ruby-arg', "#!/usr/local/bin/ruby -Ke\nprogram")
assert_equal "#! RUBYPATH -n -p\nprogram",
do_update_shebang_line('ruby-args', "#!/usr/bin/ruby -n -p\nprogram")
assert_equal "#! RUBYPATH\nprogram",
do_update_shebang_line('env-ruby', "#!/usr/bin/env ruby\nprogram")
assert_equal "#!/usr/bin/env perl\nprogram",
do_update_shebang_line('env-noruby', "#!/usr/bin/env perl\nprogram")
assert_equal "#!/bin/sh\nprogram",
do_update_shebang_line('interp', "#!/bin/sh\nprogram")
assert_equal "#!/bin/sh -l -r -\nprogram",
do_update_shebang_line('interp-args', "#!/bin/sh -l -r -\nprogram")
assert_equal "program",
do_update_shebang_line('bare', "program")
assert_equal "\001\002\003\n\004\005\006",
do_update_shebang_line('binary', "\001\002\003\n\004\005\006")
end
end
|