ptools 1.3.2-universal-mingw32 → 1.3.3-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,53 +1,53 @@
1
- #####################################################################
2
- # test_touch.rb
3
- #
4
- # Test case for the File.touch method. This test should be run
5
- # via the 'rake test_touch task'.
6
- #####################################################################
7
- require 'test-unit'
8
- require 'ptools'
9
-
10
- class TC_FileTouch < Test::Unit::TestCase
11
- def self.startup
12
- @@dirname = File.dirname(__FILE__)
13
- @@xfile = File.join(@@dirname, 'test_file1.txt')
14
- File.open(@@xfile, 'w'){ |fh| 10.times{ |n| fh.puts "line #{n}" } }
15
- end
16
-
17
- def setup
18
- @test_file = File.join(@@dirname, 'delete.this')
19
- @xfile = File.join(@@dirname, 'test_file1.txt')
20
- end
21
-
22
- def test_touch_basic
23
- assert_respond_to(File, :touch)
24
- assert_nothing_raised{ File.touch(@test_file) }
25
- end
26
-
27
- def test_touch_expected_results
28
- assert_equal(File, File.touch(@test_file))
29
- assert_equal(true, File.exist?(@test_file))
30
- assert_equal(0, File.size(@test_file))
31
- end
32
-
33
- def test_touch_existing_file
34
- stat = File.stat(@xfile)
35
- sleep 1
36
- assert_nothing_raised{ File.touch(@xfile) }
37
- assert_equal(true, File.size(@xfile) == stat.size)
38
- assert_equal(false, File.mtime(@xfile) == stat.mtime)
39
- end
40
-
41
- def test_touch_expected_errors
42
- assert_raises(ArgumentError){ File.touch }
43
- end
44
-
45
- def teardown
46
- File.delete(@test_file) if File.exist?(@test_file)
47
- @test_file = nil
48
- end
49
-
50
- def self.shutdown
51
- File.delete(@@xfile) if File.exist?(@@xfile)
52
- end
53
- end
1
+ #####################################################################
2
+ # test_touch.rb
3
+ #
4
+ # Test case for the File.touch method. This test should be run
5
+ # via the 'rake test_touch task'.
6
+ #####################################################################
7
+ require 'test-unit'
8
+ require 'ptools'
9
+
10
+ class TC_FileTouch < Test::Unit::TestCase
11
+ def self.startup
12
+ @@dirname = File.dirname(__FILE__)
13
+ @@xfile = File.join(@@dirname, 'test_file1.txt')
14
+ File.open(@@xfile, 'w'){ |fh| 10.times{ |n| fh.puts "line #{n}" } }
15
+ end
16
+
17
+ def setup
18
+ @test_file = File.join(@@dirname, 'delete.this')
19
+ @xfile = File.join(@@dirname, 'test_file1.txt')
20
+ end
21
+
22
+ def test_touch_basic
23
+ assert_respond_to(File, :touch)
24
+ assert_nothing_raised{ File.touch(@test_file) }
25
+ end
26
+
27
+ def test_touch_expected_results
28
+ assert_equal(File, File.touch(@test_file))
29
+ assert_equal(true, File.exist?(@test_file))
30
+ assert_equal(0, File.size(@test_file))
31
+ end
32
+
33
+ def test_touch_existing_file
34
+ stat = File.stat(@xfile)
35
+ sleep 1
36
+ assert_nothing_raised{ File.touch(@xfile) }
37
+ assert_equal(true, File.size(@xfile) == stat.size)
38
+ assert_equal(false, File.mtime(@xfile) == stat.mtime)
39
+ end
40
+
41
+ def test_touch_expected_errors
42
+ assert_raises(ArgumentError){ File.touch }
43
+ end
44
+
45
+ def teardown
46
+ File.delete(@test_file) if File.exist?(@test_file)
47
+ @test_file = nil
48
+ end
49
+
50
+ def self.shutdown
51
+ File.delete(@@xfile) if File.exist?(@@xfile)
52
+ end
53
+ end
@@ -1,73 +1,73 @@
1
- #####################################################################
2
- # test_wc.rb
3
- #
4
- # Test case for the File.wc method. This test should be run via
5
- # the 'rake test_wc' task.
6
- #####################################################################
7
- require 'test-unit'
8
- require 'ptools'
9
-
10
- class TC_FileWC < Test::Unit::TestCase
11
- def self.startup
12
- Dir.chdir('test') if File.exist?('test')
13
- File.open('test_file1.txt', 'w'){ |fh| 25.times{ |n| fh.puts "line#{n+1}" } }
14
- @@test_file = 'test_file1.txt'
15
- end
16
-
17
- def setup
18
- @test_file = 'test_file1.txt'
19
- end
20
-
21
- test "wc method basic functionality" do
22
- assert_respond_to(File, :wc)
23
- assert_nothing_raised{ File.wc(@test_file) }
24
- end
25
-
26
- test "wc accepts specific optional arguments" do
27
- assert_nothing_raised{ File.wc(@test_file, 'bytes') }
28
- assert_nothing_raised{ File.wc(@test_file, 'chars') }
29
- assert_nothing_raised{ File.wc(@test_file, 'words') }
30
- assert_nothing_raised{ File.wc(@test_file, 'lines') }
31
- end
32
-
33
- test "argument to wc ignores the case of the option argument" do
34
- assert_nothing_raised{ File.wc(@test_file, 'LINES') }
35
- end
36
-
37
- test "wc with no option returns expected results" do
38
- assert_kind_of(Array, File.wc(@test_file))
39
- assert_equal([166,166,25,25], File.wc(@test_file))
40
- end
41
-
42
- test "wc with bytes option returns the expected result" do
43
- assert_equal(166, File.wc(@test_file, 'bytes'), "Wrong number of bytes")
44
- end
45
-
46
- test "wc with chars option returns the expected result" do
47
- assert_equal(166, File.wc(@test_file, 'chars'), "Wrong number of chars")
48
- end
49
-
50
- test "wc with words option returns the expected result" do
51
- assert_equal(25, File.wc(@test_file, 'words'), "Wrong number of words")
52
- end
53
-
54
- test "wc with lines option returns the expected result" do
55
- assert_equal(25, File.wc(@test_file, 'lines'), "Wrong number of lines")
56
- end
57
-
58
- test "wc requires at least on argument" do
59
- assert_raises(ArgumentError){ File.wc }
60
- end
61
-
62
- test "an invalid option raises an error" do
63
- assert_raises(ArgumentError){ File.wc(@test_file, 'bogus') }
64
- end
65
-
66
- def teardown
67
- @test_file = nil
68
- end
69
-
70
- def self.shutdown
71
- File.delete(@@test_file) if File.exist?(@@test_file)
72
- end
73
- end
1
+ #####################################################################
2
+ # test_wc.rb
3
+ #
4
+ # Test case for the File.wc method. This test should be run via
5
+ # the 'rake test_wc' task.
6
+ #####################################################################
7
+ require 'test-unit'
8
+ require 'ptools'
9
+
10
+ class TC_FileWC < Test::Unit::TestCase
11
+ def self.startup
12
+ Dir.chdir('test') if File.exist?('test')
13
+ File.open('test_file1.txt', 'w'){ |fh| 25.times{ |n| fh.puts "line#{n+1}" } }
14
+ @@test_file = 'test_file1.txt'
15
+ end
16
+
17
+ def setup
18
+ @test_file = 'test_file1.txt'
19
+ end
20
+
21
+ test "wc method basic functionality" do
22
+ assert_respond_to(File, :wc)
23
+ assert_nothing_raised{ File.wc(@test_file) }
24
+ end
25
+
26
+ test "wc accepts specific optional arguments" do
27
+ assert_nothing_raised{ File.wc(@test_file, 'bytes') }
28
+ assert_nothing_raised{ File.wc(@test_file, 'chars') }
29
+ assert_nothing_raised{ File.wc(@test_file, 'words') }
30
+ assert_nothing_raised{ File.wc(@test_file, 'lines') }
31
+ end
32
+
33
+ test "argument to wc ignores the case of the option argument" do
34
+ assert_nothing_raised{ File.wc(@test_file, 'LINES') }
35
+ end
36
+
37
+ test "wc with no option returns expected results" do
38
+ assert_kind_of(Array, File.wc(@test_file))
39
+ assert_equal([166,166,25,25], File.wc(@test_file))
40
+ end
41
+
42
+ test "wc with bytes option returns the expected result" do
43
+ assert_equal(166, File.wc(@test_file, 'bytes'), "Wrong number of bytes")
44
+ end
45
+
46
+ test "wc with chars option returns the expected result" do
47
+ assert_equal(166, File.wc(@test_file, 'chars'), "Wrong number of chars")
48
+ end
49
+
50
+ test "wc with words option returns the expected result" do
51
+ assert_equal(25, File.wc(@test_file, 'words'), "Wrong number of words")
52
+ end
53
+
54
+ test "wc with lines option returns the expected result" do
55
+ assert_equal(25, File.wc(@test_file, 'lines'), "Wrong number of lines")
56
+ end
57
+
58
+ test "wc requires at least on argument" do
59
+ assert_raises(ArgumentError){ File.wc }
60
+ end
61
+
62
+ test "an invalid option raises an error" do
63
+ assert_raises(ArgumentError){ File.wc(@test_file, 'bogus') }
64
+ end
65
+
66
+ def teardown
67
+ @test_file = nil
68
+ end
69
+
70
+ def self.shutdown
71
+ File.delete(@@test_file) if File.exist?(@@test_file)
72
+ end
73
+ end
@@ -1,98 +1,98 @@
1
- ######################################################################
2
- # test_whereis.rb
3
- #
4
- # Tests for the File.whereis method.
5
- ######################################################################
6
- require 'rubygems'
7
- require 'test-unit'
8
- require 'ptools'
9
- require 'rbconfig'
10
-
11
- class TC_Ptools_Whereis < Test::Unit::TestCase
12
- def self.startup
13
- @@windows = File::ALT_SEPARATOR
14
- @@ruby = RUBY_PLATFORM == 'java' ? 'jruby' : 'ruby'
15
- end
16
-
17
- def setup
18
- @bin_dir = RbConfig::CONFIG['bindir']
19
- @expected_locs = [File.join(@bin_dir, @@ruby)]
20
-
21
- if @@windows
22
- @expected_locs[0] << '.exe'
23
- @expected_locs[0].tr!("/", "\\")
24
- end
25
-
26
- unless @@windows
27
- @expected_locs << "/usr/local/bin/#{@@ruby}"
28
- @expected_locs << "/opt/sfw/bin/#{@@ruby}"
29
- @expected_locs << "/opt/bin/#{@@ruby}"
30
- @expected_locs << "/usr/bin/#{@@ruby}"
31
- end
32
-
33
- @actual_locs = nil
34
- end
35
-
36
- test "whereis basic functionality" do
37
- assert_respond_to(File, :whereis)
38
- assert_nothing_raised{ File.whereis('ruby') }
39
- assert_kind_of([Array, NilClass], File.whereis('ruby'))
40
- end
41
-
42
- test "whereis accepts an optional second argument" do
43
- assert_nothing_raised{ File.whereis('ruby', '/usr/bin:/usr/local/bin') }
44
- end
45
-
46
- test "whereis returns expected values" do
47
- assert_nothing_raised{ @actual_locs = File.whereis(@@ruby) }
48
- assert_kind_of(Array, @actual_locs)
49
- assert_true((@expected_locs & @actual_locs).size > 0)
50
- end
51
-
52
- test "whereis returns nil if program not found" do
53
- assert_nil(File.whereis('xxxyyy'))
54
- end
55
-
56
- test "whereis returns nil if program cannot be found in provided path" do
57
- assert_nil(File.whereis(@@ruby, '/foo/bar'))
58
- end
59
-
60
- test "whereis returns single element array or nil if absolute path is provided" do
61
- absolute = File.join(@bin_dir, @@ruby)
62
- absolute << '.exe' if @@windows
63
-
64
- assert_equal([absolute], File.whereis(absolute))
65
- assert_nil(File.whereis("/foo/bar/baz/#{@@ruby}"))
66
- end
67
-
68
- test "whereis works with an explicit extension on ms windows" do
69
- omit_unless(@@windows, 'test skipped except on MS Windows')
70
- assert_not_nil(File.whereis(@@ruby + '.exe'))
71
- end
72
-
73
- test "whereis requires at least one argument" do
74
- assert_raise(ArgumentError){ File.whereis }
75
- end
76
-
77
- test "whereis returns unique paths only" do
78
- assert_true(File.whereis(@@ruby) == File.whereis(@@ruby).uniq)
79
- end
80
-
81
- test "whereis accepts a maximum of two arguments" do
82
- assert_raise(ArgumentError){ File.whereis(@@ruby, 'foo', 'bar') }
83
- end
84
-
85
- test "the second argument to whereis cannot be nil or empty" do
86
- assert_raise(ArgumentError){ File.whereis(@@ruby, nil) }
87
- assert_raise(ArgumentError){ File.whereis(@@ruby, '') }
88
- end
89
-
90
- def teardown
91
- @expected_locs = nil
92
- @actual_locs = nil
93
- end
94
-
95
- def self.shutdown
96
- @@windows = nil
97
- end
98
- end
1
+ ######################################################################
2
+ # test_whereis.rb
3
+ #
4
+ # Tests for the File.whereis method.
5
+ ######################################################################
6
+ require 'rubygems'
7
+ require 'test-unit'
8
+ require 'ptools'
9
+ require 'rbconfig'
10
+
11
+ class TC_Ptools_Whereis < Test::Unit::TestCase
12
+ def self.startup
13
+ @@windows = File::ALT_SEPARATOR
14
+ @@ruby = RUBY_PLATFORM == 'java' ? 'jruby' : 'ruby'
15
+ end
16
+
17
+ def setup
18
+ @bin_dir = RbConfig::CONFIG['bindir']
19
+ @expected_locs = [File.join(@bin_dir, @@ruby)]
20
+
21
+ if @@windows
22
+ @expected_locs[0] << '.exe'
23
+ @expected_locs[0].tr!("/", "\\")
24
+ end
25
+
26
+ unless @@windows
27
+ @expected_locs << "/usr/local/bin/#{@@ruby}"
28
+ @expected_locs << "/opt/sfw/bin/#{@@ruby}"
29
+ @expected_locs << "/opt/bin/#{@@ruby}"
30
+ @expected_locs << "/usr/bin/#{@@ruby}"
31
+ end
32
+
33
+ @actual_locs = nil
34
+ end
35
+
36
+ test "whereis basic functionality" do
37
+ assert_respond_to(File, :whereis)
38
+ assert_nothing_raised{ File.whereis('ruby') }
39
+ assert_kind_of([Array, NilClass], File.whereis('ruby'))
40
+ end
41
+
42
+ test "whereis accepts an optional second argument" do
43
+ assert_nothing_raised{ File.whereis('ruby', '/usr/bin:/usr/local/bin') }
44
+ end
45
+
46
+ test "whereis returns expected values" do
47
+ assert_nothing_raised{ @actual_locs = File.whereis(@@ruby) }
48
+ assert_kind_of(Array, @actual_locs)
49
+ assert_true((@expected_locs & @actual_locs).size > 0)
50
+ end
51
+
52
+ test "whereis returns nil if program not found" do
53
+ assert_nil(File.whereis('xxxyyy'))
54
+ end
55
+
56
+ test "whereis returns nil if program cannot be found in provided path" do
57
+ assert_nil(File.whereis(@@ruby, '/foo/bar'))
58
+ end
59
+
60
+ test "whereis returns single element array or nil if absolute path is provided" do
61
+ absolute = File.join(@bin_dir, @@ruby)
62
+ absolute << '.exe' if @@windows
63
+
64
+ assert_equal([absolute], File.whereis(absolute))
65
+ assert_nil(File.whereis("/foo/bar/baz/#{@@ruby}"))
66
+ end
67
+
68
+ test "whereis works with an explicit extension on ms windows" do
69
+ omit_unless(@@windows, 'test skipped except on MS Windows')
70
+ assert_not_nil(File.whereis(@@ruby + '.exe'))
71
+ end
72
+
73
+ test "whereis requires at least one argument" do
74
+ assert_raise(ArgumentError){ File.whereis }
75
+ end
76
+
77
+ test "whereis returns unique paths only" do
78
+ assert_true(File.whereis(@@ruby) == File.whereis(@@ruby).uniq)
79
+ end
80
+
81
+ test "whereis accepts a maximum of two arguments" do
82
+ assert_raise(ArgumentError){ File.whereis(@@ruby, 'foo', 'bar') }
83
+ end
84
+
85
+ test "the second argument to whereis cannot be nil or empty" do
86
+ assert_raise(ArgumentError){ File.whereis(@@ruby, nil) }
87
+ assert_raise(ArgumentError){ File.whereis(@@ruby, '') }
88
+ end
89
+
90
+ def teardown
91
+ @expected_locs = nil
92
+ @actual_locs = nil
93
+ end
94
+
95
+ def self.shutdown
96
+ @@windows = nil
97
+ end
98
+ end
@@ -1,126 +1,126 @@
1
- #####################################################################
2
- # test_which.rb
3
- #
4
- # Test case for the File.which method. You should run this test
5
- # via the 'rake test_which' rake task.
6
- #
7
- # NOTE: I make the assumption that Ruby (or JRuby) is in your
8
- # PATH for these tests.
9
- #####################################################################
10
- require 'test-unit'
11
- require 'rbconfig'
12
- require 'fileutils'
13
- require 'ptools'
14
- require 'tempfile'
15
-
16
- class TC_FileWhich < Test::Unit::TestCase
17
- def self.startup
18
- @@windows = File::ALT_SEPARATOR
19
- @@dir = File.join(Dir.pwd, 'tempdir')
20
- @@non_exe = File.join(Dir.pwd, 'tempfile')
21
-
22
- Dir.mkdir(@@dir) unless File.exist?(@@dir)
23
- FileUtils.touch(@@non_exe)
24
- File.chmod(775, @@dir)
25
- File.chmod(644, @@non_exe)
26
- end
27
-
28
- def setup
29
- @ruby = RUBY_PLATFORM.match('java') ? 'jruby' : 'ruby'
30
- @ruby = 'rbx' if defined?(Rubinius)
31
-
32
- @exe = File.join(
33
- RbConfig::CONFIG['bindir'],
34
- RbConfig::CONFIG['ruby_install_name']
35
- )
36
-
37
- if @@windows
38
- @exe.tr!('/','\\')
39
- @exe << ".exe"
40
- end
41
- end
42
-
43
- test "which method basic functionality" do
44
- assert_respond_to(File, :which)
45
- assert_nothing_raised{ File.which(@ruby) }
46
- assert_kind_of(String, File.which(@ruby))
47
- end
48
-
49
- test "which accepts an optional path to search" do
50
- assert_nothing_raised{ File.which(@ruby, "/usr/bin:/usr/local/bin") }
51
- end
52
-
53
- test "which returns nil if not found" do
54
- assert_equal(nil, File.which(@ruby, '/bogus/path'))
55
- assert_equal(nil, File.which('blahblahblah'))
56
- end
57
-
58
- test "which handles executables without extensions on windows" do
59
- omit_unless(@@windows, "test skipped unless MS Windows")
60
- assert_not_nil(File.which('ruby'))
61
- assert_not_nil(File.which('notepad'))
62
- end
63
-
64
- test "which handles executables that already contain extensions on windows" do
65
- omit_unless(@@windows, "test skipped unless MS Windows")
66
- assert_not_nil(File.which('ruby.exe'))
67
- assert_not_nil(File.which('notepad.exe'))
68
- end
69
-
70
- test "which returns argument if an existent absolute path is provided" do
71
- assert_equal(@exe, File.which(@ruby), "=> May fail on a symlink")
72
- end
73
-
74
- test "which returns nil if a non-existent absolute path is provided" do
75
- assert_nil(File.which('/foo/bar/baz/ruby'))
76
- end
77
-
78
- test "which does not pickup files that are not executable" do
79
- assert_nil(File.which(@@non_exe))
80
- end
81
-
82
- test "which does not pickup executable directories" do
83
- assert_nil(File.which(@@dir))
84
- end
85
-
86
- test "which accepts a minimum of one argument" do
87
- assert_raises(ArgumentError){ File.which }
88
- end
89
-
90
- test "which accepts a maximum of two arguments" do
91
- assert_raises(ArgumentError){ File.which(@ruby, "foo", "bar") }
92
- end
93
-
94
- test "the second argument cannot be nil or empty" do
95
- assert_raises(ArgumentError){ File.which(@ruby, nil) }
96
- assert_raises(ArgumentError){ File.which(@ruby, '') }
97
- end
98
-
99
- test "resolves with with ~" do
100
- omit_if(@@windows, "~ tests skipped on MS Windows")
101
- begin
102
- old_home = ENV['HOME']
103
-
104
- ENV['HOME'] = Dir::Tmpname.tmpdir
105
- program = Tempfile.new(['program', '.sh'])
106
- File.chmod(755, program.path)
107
-
108
- assert_not_nil(File.which(File.basename(program.path), '~/'))
109
- ensure
110
- ENV['HOME'] = old_home
111
- end
112
- end
113
-
114
- def teardown
115
- @exe = nil
116
- @ruby = nil
117
- end
118
-
119
- def self.shutdown
120
- FileUtils.rm(@@non_exe)
121
- FileUtils.rm_rf(@@dir)
122
- @@windows = nil
123
- @@dir = nil
124
- @@non_exe = nil
125
- end
126
- end
1
+ #####################################################################
2
+ # test_which.rb
3
+ #
4
+ # Test case for the File.which method. You should run this test
5
+ # via the 'rake test_which' rake task.
6
+ #
7
+ # NOTE: I make the assumption that Ruby (or JRuby) is in your
8
+ # PATH for these tests.
9
+ #####################################################################
10
+ require 'test-unit'
11
+ require 'rbconfig'
12
+ require 'fileutils'
13
+ require 'ptools'
14
+ require 'tempfile'
15
+
16
+ class TC_FileWhich < Test::Unit::TestCase
17
+ def self.startup
18
+ @@windows = File::ALT_SEPARATOR
19
+ @@dir = File.join(Dir.pwd, 'tempdir')
20
+ @@non_exe = File.join(Dir.pwd, 'tempfile')
21
+
22
+ Dir.mkdir(@@dir) unless File.exist?(@@dir)
23
+ FileUtils.touch(@@non_exe)
24
+ File.chmod(775, @@dir)
25
+ File.chmod(644, @@non_exe)
26
+ end
27
+
28
+ def setup
29
+ @ruby = RUBY_PLATFORM.match('java') ? 'jruby' : 'ruby'
30
+ @ruby = 'rbx' if defined?(Rubinius)
31
+
32
+ @exe = File.join(
33
+ RbConfig::CONFIG['bindir'],
34
+ RbConfig::CONFIG['ruby_install_name']
35
+ )
36
+
37
+ if @@windows
38
+ @exe.tr!('/','\\')
39
+ @exe << ".exe"
40
+ end
41
+ end
42
+
43
+ test "which method basic functionality" do
44
+ assert_respond_to(File, :which)
45
+ assert_nothing_raised{ File.which(@ruby) }
46
+ assert_kind_of(String, File.which(@ruby))
47
+ end
48
+
49
+ test "which accepts an optional path to search" do
50
+ assert_nothing_raised{ File.which(@ruby, "/usr/bin:/usr/local/bin") }
51
+ end
52
+
53
+ test "which returns nil if not found" do
54
+ assert_equal(nil, File.which(@ruby, '/bogus/path'))
55
+ assert_equal(nil, File.which('blahblahblah'))
56
+ end
57
+
58
+ test "which handles executables without extensions on windows" do
59
+ omit_unless(@@windows, "test skipped unless MS Windows")
60
+ assert_not_nil(File.which('ruby'))
61
+ assert_not_nil(File.which('notepad'))
62
+ end
63
+
64
+ test "which handles executables that already contain extensions on windows" do
65
+ omit_unless(@@windows, "test skipped unless MS Windows")
66
+ assert_not_nil(File.which('ruby.exe'))
67
+ assert_not_nil(File.which('notepad.exe'))
68
+ end
69
+
70
+ test "which returns argument if an existent absolute path is provided" do
71
+ assert_equal(@exe, File.which(@ruby), "=> May fail on a symlink")
72
+ end
73
+
74
+ test "which returns nil if a non-existent absolute path is provided" do
75
+ assert_nil(File.which('/foo/bar/baz/ruby'))
76
+ end
77
+
78
+ test "which does not pickup files that are not executable" do
79
+ assert_nil(File.which(@@non_exe))
80
+ end
81
+
82
+ test "which does not pickup executable directories" do
83
+ assert_nil(File.which(@@dir))
84
+ end
85
+
86
+ test "which accepts a minimum of one argument" do
87
+ assert_raises(ArgumentError){ File.which }
88
+ end
89
+
90
+ test "which accepts a maximum of two arguments" do
91
+ assert_raises(ArgumentError){ File.which(@ruby, "foo", "bar") }
92
+ end
93
+
94
+ test "the second argument cannot be nil or empty" do
95
+ assert_raises(ArgumentError){ File.which(@ruby, nil) }
96
+ assert_raises(ArgumentError){ File.which(@ruby, '') }
97
+ end
98
+
99
+ test "resolves with with ~" do
100
+ omit_if(@@windows, "~ tests skipped on MS Windows")
101
+ begin
102
+ old_home = ENV['HOME']
103
+
104
+ ENV['HOME'] = Dir::Tmpname.tmpdir
105
+ program = Tempfile.new(['program', '.sh'])
106
+ File.chmod(755, program.path)
107
+
108
+ assert_not_nil(File.which(File.basename(program.path), '~/'))
109
+ ensure
110
+ ENV['HOME'] = old_home
111
+ end
112
+ end
113
+
114
+ def teardown
115
+ @exe = nil
116
+ @ruby = nil
117
+ end
118
+
119
+ def self.shutdown
120
+ FileUtils.rm(@@non_exe)
121
+ FileUtils.rm_rf(@@dir)
122
+ @@windows = nil
123
+ @@dir = nil
124
+ @@non_exe = nil
125
+ end
126
+ end