ptools 1.3.4 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,126 +0,0 @@
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