libpath-ruby 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +61 -0
  3. data/examples/path_from_arg0.md +99 -0
  4. data/examples/path_from_arg0.rb +55 -0
  5. data/lib/libpath.rb +12 -0
  6. data/lib/libpath/constants.rb +42 -0
  7. data/lib/libpath/constants/unix.rb +146 -0
  8. data/lib/libpath/constants/windows.rb +147 -0
  9. data/lib/libpath/diagnostics.rb +6 -0
  10. data/lib/libpath/diagnostics/parameter_checking.rb +46 -0
  11. data/lib/libpath/exceptions.rb +7 -0
  12. data/lib/libpath/exceptions/libpath_base_exception.rb +77 -0
  13. data/lib/libpath/exceptions/malformed_name_exception.rb +85 -0
  14. data/lib/libpath/form.rb +42 -0
  15. data/lib/libpath/form/unix.rb +215 -0
  16. data/lib/libpath/form/windows.rb +358 -0
  17. data/lib/libpath/internal_/array.rb +96 -0
  18. data/lib/libpath/internal_/platform.rb +53 -0
  19. data/lib/libpath/internal_/string.rb +33 -0
  20. data/lib/libpath/internal_/unix/form.rb +160 -0
  21. data/lib/libpath/internal_/windows/drive.rb +84 -0
  22. data/lib/libpath/internal_/windows/form.rb +281 -0
  23. data/lib/libpath/libpath.rb +6 -0
  24. data/lib/libpath/path.rb +43 -0
  25. data/lib/libpath/path/unix.rb +170 -0
  26. data/lib/libpath/path/windows.rb +176 -0
  27. data/lib/libpath/util.rb +42 -0
  28. data/lib/libpath/util/unix.rb +414 -0
  29. data/lib/libpath/util/windows.rb +636 -0
  30. data/lib/libpath/version.rb +73 -0
  31. data/test/performance/benchmark_drive_letter.rb +31 -0
  32. data/test/performance/benchmark_gsub_string_or_regex.rb +45 -0
  33. data/test/performance/benchmark_rindex2.rb +109 -0
  34. data/test/performance/benchmark_split.rb +32 -0
  35. data/test/unit/compare/ts_all.rb +22 -0
  36. data/test/unit/equate/ts_all.rb +22 -0
  37. data/test/unit/equate/unix/ts_all.rb +22 -0
  38. data/test/unit/equate/windows/ts_all.rb +22 -0
  39. data/test/unit/exceptions/tc_libpath_base_exception.rb +27 -0
  40. data/test/unit/exceptions/tc_malformed_name_exception.rb +31 -0
  41. data/test/unit/exceptions/ts_all.rb +22 -0
  42. data/test/unit/form/tc_absolute_functions.rb +369 -0
  43. data/test/unit/form/ts_all.rb +22 -0
  44. data/test/unit/form/unix/tc_absolute_functions.rb +269 -0
  45. data/test/unit/form/unix/ts_all.rb +22 -0
  46. data/test/unit/form/windows/tc_absolute_functions.rb +854 -0
  47. data/test/unit/form/windows/ts_all.rb +22 -0
  48. data/test/unit/internal_/tc_array.rb +62 -0
  49. data/test/unit/internal_/ts_all.rb +22 -0
  50. data/test/unit/internal_/unix/form/tc_slash_functions.rb +60 -0
  51. data/test/unit/internal_/unix/form/ts_all.rb +22 -0
  52. data/test/unit/internal_/unix/tc_split_path.rb +396 -0
  53. data/test/unit/internal_/unix/ts_all.rb +22 -0
  54. data/test/unit/internal_/windows/form/tc_get_windows_volume.rb +220 -0
  55. data/test/unit/internal_/windows/form/tc_slash_functions.rb +61 -0
  56. data/test/unit/internal_/windows/form/ts_all.rb +22 -0
  57. data/test/unit/internal_/windows/tc_split_path.rb +881 -0
  58. data/test/unit/internal_/windows/ts_all.rb +22 -0
  59. data/test/unit/parse/ts_all.rb +22 -0
  60. data/test/unit/path/tc_path.rb +778 -0
  61. data/test/unit/path/ts_all.rb +22 -0
  62. data/test/unit/path/unix/tc_path.rb +565 -0
  63. data/test/unit/path/unix/ts_all.rb +22 -0
  64. data/test/unit/path/windows/tc_path.rb +630 -0
  65. data/test/unit/path/windows/ts_all.rb +22 -0
  66. data/test/unit/tc_version.rb +47 -0
  67. data/test/unit/ts_all.rb +22 -0
  68. data/test/unit/util/tc_combine_paths.rb +179 -0
  69. data/test/unit/util/tc_derive_relative_path.rb +19 -0
  70. data/test/unit/util/tc_make_path_canonical.rb +228 -0
  71. data/test/unit/util/ts_all.rb +22 -0
  72. data/test/unit/util/unix/tc_combine_paths.rb +65 -0
  73. data/test/unit/util/unix/tc_derive_relative_path.rb +123 -0
  74. data/test/unit/util/unix/tc_make_path_absolute.rb +117 -0
  75. data/test/unit/util/unix/tc_make_path_canonical.rb +139 -0
  76. data/test/unit/util/unix/ts_all.rb +22 -0
  77. data/test/unit/util/windows/tc_combine_paths.rb +131 -0
  78. data/test/unit/util/windows/tc_derive_relative_path.rb +155 -0
  79. data/test/unit/util/windows/tc_make_path_absolute.rb +163 -0
  80. data/test/unit/util/windows/tc_make_path_canonical.rb +220 -0
  81. data/test/unit/util/windows/ts_all.rb +22 -0
  82. metadata +144 -0
@@ -0,0 +1,22 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # executes all other tests
4
+
5
+ this_dir = File.expand_path(File.dirname(__FILE__))
6
+
7
+ # all tc_*rb in current directory
8
+ Dir[File.join(this_dir, 'tc_*rb')].each do |file|
9
+
10
+ $stderr.puts "requiring file '#{file}'" if $DEBUG
11
+
12
+ require file
13
+ end
14
+
15
+ # all ts_*rb in immediate sub-directories
16
+ Dir[File.join(this_dir, '*', 'ts_*rb')].each do |file|
17
+
18
+ $stderr.puts "requiring file '#{file}'" if $DEBUG
19
+
20
+ require file
21
+ end
22
+
@@ -0,0 +1,369 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), *(['..'] * 3), 'lib')
4
+
5
+ require 'libpath/form'
6
+
7
+ require 'test/unit'
8
+
9
+ require 'xqsr3/extensions/test/unit'
10
+
11
+ require 'libpath/internal_/platform'
12
+
13
+ class Test_existence_of_namespace_LibPath_Form < Test::Unit::TestCase
14
+
15
+ def test_LibPath_module_exists
16
+
17
+ assert defined?(::LibPath)
18
+ end
19
+
20
+ def test_LibPath_Form_module_exists
21
+
22
+ assert defined?(::LibPath::Form)
23
+ end
24
+ end
25
+
26
+ class Test_path_is_absolute < Test::Unit::TestCase
27
+
28
+ include ::LibPath::Form
29
+
30
+ if $DEBUG
31
+
32
+ def test_with_nil
33
+
34
+ assert_raise(::ArgumentError) { path_is_absolute?(nil) }
35
+ end
36
+ end
37
+
38
+ def test_empty
39
+
40
+ assert_false path_is_absolute?('')
41
+ end
42
+
43
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
44
+
45
+ def test_absolute_paths_from_UNC
46
+
47
+ assert_false path_is_absolute?('\\\\')
48
+ assert_false path_is_absolute?('\\\\server')
49
+ assert_false path_is_absolute?('\\\\server\\')
50
+ assert_false path_is_absolute?('\\\\server\\share')
51
+
52
+ assert path_is_absolute?('\\\\server\\the-share_name\\')
53
+ assert path_is_absolute?('\\\\server\\the-share_name\\\\')
54
+ assert path_is_absolute?('\\\\server\\the-share_name\\dir')
55
+ assert path_is_absolute?('\\\\server\\the-share_name\\dir\\')
56
+
57
+ assert path_is_absolute?('\\\\101.2.303.4\\the-share_name\\')
58
+ assert path_is_absolute?('\\\\101.2.303.4\\the-share_name\\\\')
59
+ assert path_is_absolute?('\\\\101.2.303.4\\the-share_name\\dir')
60
+ assert path_is_absolute?('\\\\101.2.303.4\\the-share_name\\dir\\')
61
+
62
+ assert path_is_absolute?('\\\\::1/128\\the-share_name\\')
63
+ assert path_is_absolute?('\\\\::1/128\\the-share_name\\\\')
64
+ assert path_is_absolute?('\\\\::1/128\\the-share_name\\dir')
65
+ assert path_is_absolute?('\\\\::1/128\\the-share_name\\dir\\')
66
+ end
67
+ end
68
+
69
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
70
+
71
+ def test_absolute_paths_from_drive
72
+
73
+ assert path_is_absolute?('C:\\')
74
+ assert path_is_absolute?('C:\\abc')
75
+ assert path_is_absolute?('C:\\abc\\')
76
+
77
+ assert_false path_is_absolute?('C:')
78
+ assert_false path_is_absolute?('C:abc')
79
+ assert_false path_is_absolute?('C:abc\\')
80
+ end
81
+ end
82
+
83
+ def test_absolute_paths_from_root
84
+
85
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
86
+
87
+ assert_false path_is_absolute?('\\')
88
+ assert_false path_is_absolute?('\\\\')
89
+ assert_false path_is_absolute?('\\abc')
90
+
91
+ assert_false path_is_absolute?('/')
92
+ assert_false path_is_absolute?('//')
93
+ assert_false path_is_absolute?('/abc')
94
+ else
95
+
96
+ assert path_is_absolute?('/')
97
+ assert path_is_absolute?('//')
98
+ assert path_is_absolute?('/abc')
99
+ end
100
+ end
101
+
102
+ def test_absolute_paths_from_home
103
+
104
+ assert path_is_absolute?('~')
105
+ assert path_is_absolute?('~/')
106
+ assert path_is_absolute?('~/abc')
107
+ end
108
+
109
+ def test_relative_paths
110
+
111
+ assert_false path_is_absolute?('abc')
112
+ assert_false path_is_absolute?('abc/')
113
+ assert_false path_is_absolute?('a/')
114
+
115
+ assert_false path_is_absolute?('~abc')
116
+ end
117
+ end
118
+
119
+ class Test_path_is_homed < Test::Unit::TestCase
120
+
121
+ include ::LibPath::Form
122
+
123
+ if $DEBUG
124
+
125
+ def test_with_nil
126
+
127
+ assert_raise(::ArgumentError) { path_is_homed?(nil) }
128
+ end
129
+ end
130
+
131
+ def test_empty
132
+
133
+ assert_false path_is_homed?('')
134
+ end
135
+
136
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
137
+
138
+ def test_absolute_paths_from_UNC
139
+
140
+ assert_false path_is_homed?('\\\\')
141
+ assert_false path_is_homed?('\\\\server')
142
+ assert_false path_is_homed?('\\\\server\\')
143
+ assert_false path_is_homed?('\\\\server\\share')
144
+
145
+ assert_false path_is_homed?('\\\\server\\the-share_name\\')
146
+ assert_false path_is_homed?('\\\\server\\the-share_name\\\\')
147
+ assert_false path_is_homed?('\\\\server\\the-share_name\\dir')
148
+ assert_false path_is_homed?('\\\\server\\the-share_name\\dir\\')
149
+
150
+ assert_false path_is_homed?('\\\\101.2.303.4\\the-share_name\\')
151
+ assert_false path_is_homed?('\\\\101.2.303.4\\the-share_name\\\\')
152
+ assert_false path_is_homed?('\\\\101.2.303.4\\the-share_name\\dir')
153
+ assert_false path_is_homed?('\\\\101.2.303.4\\the-share_name\\dir\\')
154
+
155
+ assert_false path_is_homed?('\\\\::1/128\\the-share_name\\')
156
+ assert_false path_is_homed?('\\\\::1/128\\the-share_name\\\\')
157
+ assert_false path_is_homed?('\\\\::1/128\\the-share_name\\dir')
158
+ assert_false path_is_homed?('\\\\::1/128\\the-share_name\\dir\\')
159
+ end
160
+ end
161
+
162
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
163
+
164
+ def test_absolute_paths_from_drive
165
+
166
+ assert_false path_is_homed?('C:\\')
167
+ assert_false path_is_homed?('C:\\abc')
168
+ assert_false path_is_homed?('C:\\abc\\')
169
+ end
170
+ end
171
+
172
+ def test_absolute_paths_from_root
173
+
174
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
175
+
176
+ assert_false path_is_homed?('\\')
177
+ assert_false path_is_homed?('\\\\')
178
+ assert_false path_is_homed?('\\abc')
179
+ end
180
+
181
+ assert_false path_is_homed?('/')
182
+ assert_false path_is_homed?('//')
183
+ assert_false path_is_homed?('/abc')
184
+ end
185
+
186
+ def test_absolute_paths_from_home
187
+
188
+ assert path_is_homed?('~')
189
+ assert path_is_homed?('~/')
190
+ assert path_is_homed?('~/abc')
191
+ end
192
+
193
+ def test_relative_paths
194
+
195
+ assert_false path_is_homed?('abc')
196
+ assert_false path_is_homed?('abc/')
197
+ assert_false path_is_homed?('a/')
198
+
199
+ assert_false path_is_homed?('~abc')
200
+ end
201
+ end
202
+
203
+ class Test_path_is_rooteds < Test::Unit::TestCase
204
+
205
+ include ::LibPath::Form
206
+
207
+ if $DEBUG
208
+
209
+ def test_with_nil
210
+
211
+ assert_raise(::ArgumentError) { path_is_rooted?(nil) }
212
+ end
213
+ end
214
+
215
+ def test_empty
216
+
217
+ assert_false path_is_rooted?('')
218
+ end
219
+
220
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
221
+
222
+ def test_absolute_paths_from_UNC
223
+
224
+ assert_false path_is_rooted?('\\\\')
225
+ assert_false path_is_rooted?('\\\\server')
226
+ assert_false path_is_rooted?('\\\\server\\')
227
+ assert_false path_is_rooted?('\\\\server\\share')
228
+
229
+ assert path_is_rooted?('\\\\server\\the-share_name\\')
230
+ assert path_is_rooted?('\\\\server\\the-share_name\\\\')
231
+ assert path_is_rooted?('\\\\server\\the-share_name\\dir')
232
+ assert path_is_rooted?('\\\\server\\the-share_name\\dir\\')
233
+
234
+ assert path_is_rooted?('\\\\101.2.303.4\\the-share_name\\')
235
+ assert path_is_rooted?('\\\\101.2.303.4\\the-share_name\\\\')
236
+ assert path_is_rooted?('\\\\101.2.303.4\\the-share_name\\dir')
237
+ assert path_is_rooted?('\\\\101.2.303.4\\the-share_name\\dir\\')
238
+
239
+ assert path_is_rooted?('\\\\::1/128\\the-share_name\\')
240
+ assert path_is_rooted?('\\\\::1/128\\the-share_name\\\\')
241
+ assert path_is_rooted?('\\\\::1/128\\the-share_name\\dir')
242
+ assert path_is_rooted?('\\\\::1/128\\the-share_name\\dir\\')
243
+ end
244
+ end
245
+
246
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
247
+
248
+ def test_absolute_paths_from_drive
249
+
250
+ assert path_is_rooted?('C:\\')
251
+ assert path_is_rooted?('C:\\abc')
252
+ assert path_is_rooted?('C:\\abc\\')
253
+
254
+ assert_false path_is_rooted?('C:')
255
+ assert_false path_is_rooted?('C:abc')
256
+ assert_false path_is_rooted?('C:abc\\')
257
+ end
258
+ end
259
+
260
+ def test_absolute_paths_from_root
261
+
262
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
263
+
264
+ assert path_is_rooted?('\\')
265
+ assert_false path_is_rooted?('\\\\')
266
+ assert path_is_rooted?('\\abc')
267
+ end
268
+
269
+ assert path_is_rooted?('/')
270
+ assert path_is_rooted?('//')
271
+ assert path_is_rooted?('/abc')
272
+ end
273
+
274
+ def test_absolute_paths_from_home
275
+
276
+ assert_false path_is_rooted?('~')
277
+ assert_false path_is_rooted?('~/')
278
+ assert_false path_is_rooted?('~/abc')
279
+ end
280
+
281
+ def test_relative_paths
282
+
283
+ assert_false path_is_rooted?('abc')
284
+ assert_false path_is_rooted?('abc/')
285
+ assert_false path_is_rooted?('a/')
286
+
287
+ assert_false path_is_rooted?('~abc')
288
+ end
289
+ end
290
+
291
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
292
+
293
+ class Test_path_is_UNCs < Test::Unit::TestCase
294
+
295
+ include ::LibPath::Form
296
+
297
+ if $DEBUG
298
+
299
+ def test_with_nil
300
+
301
+ assert_raise(::ArgumentError) { path_is_UNC?(nil) }
302
+ end
303
+ end
304
+
305
+ def test_empty
306
+
307
+ assert_false path_is_UNC?('')
308
+ end
309
+
310
+ def test_absolute_paths_from_drive
311
+
312
+ assert_false path_is_UNC?('C:\\')
313
+ assert_false path_is_UNC?('C:\\\\')
314
+ assert_false path_is_UNC?('C:\\abc\\')
315
+ end
316
+
317
+ def test_absolute_paths_from_UNC
318
+
319
+ assert_false path_is_UNC?('\\\\')
320
+ assert_false path_is_UNC?('\\\\server')
321
+ assert_false path_is_UNC?('\\\\server\\')
322
+ assert path_is_UNC?('\\\\server\\share')
323
+
324
+ assert path_is_UNC?('\\\\server\\the-share_name\\')
325
+ assert path_is_UNC?('\\\\server\\the-share_name\\\\')
326
+ assert path_is_UNC?('\\\\server\\the-share_name\\dir')
327
+ assert path_is_UNC?('\\\\server\\the-share_name\\dir\\')
328
+
329
+ assert path_is_UNC?('\\\\101.2.303.4\\the-share_name\\')
330
+ assert path_is_UNC?('\\\\101.2.303.4\\the-share_name\\\\')
331
+ assert path_is_UNC?('\\\\101.2.303.4\\the-share_name\\dir')
332
+ assert path_is_UNC?('\\\\101.2.303.4\\the-share_name\\dir\\')
333
+
334
+ assert path_is_UNC?('\\\\::1/128\\the-share_name\\')
335
+ assert path_is_UNC?('\\\\::1/128\\the-share_name\\\\')
336
+ assert path_is_UNC?('\\\\::1/128\\the-share_name\\dir')
337
+ assert path_is_UNC?('\\\\::1/128\\the-share_name\\dir\\')
338
+ end
339
+
340
+ def test_absolute_paths_from_root
341
+
342
+ assert_false path_is_UNC?('\\')
343
+ assert_false path_is_UNC?('\\\\')
344
+ assert_false path_is_UNC?('\\abc')
345
+
346
+ assert_false path_is_UNC?('/')
347
+ assert_false path_is_UNC?('//')
348
+ assert_false path_is_UNC?('/abc')
349
+ end
350
+
351
+ def test_absolute_paths_from_home
352
+
353
+ assert_false path_is_UNC?('~')
354
+ assert_false path_is_UNC?('~/')
355
+ assert_false path_is_UNC?('~/abc')
356
+ end
357
+
358
+ def test_relative_paths
359
+
360
+ assert_false path_is_UNC?('abc')
361
+ assert_false path_is_UNC?('abc/')
362
+ assert_false path_is_UNC?('a/')
363
+
364
+ assert_false path_is_UNC?('~abc')
365
+ end
366
+ end
367
+ end
368
+
369
+
@@ -0,0 +1,22 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # executes all other tests
4
+
5
+ this_dir = File.expand_path(File.dirname(__FILE__))
6
+
7
+ # all tc_*rb in current directory
8
+ Dir[File.join(this_dir, 'tc_*rb')].each do |file|
9
+
10
+ $stderr.puts "requiring file '#{file}'" if $DEBUG
11
+
12
+ require file
13
+ end
14
+
15
+ # all ts_*rb in immediate sub-directories
16
+ Dir[File.join(this_dir, '*', 'ts_*rb')].each do |file|
17
+
18
+ $stderr.puts "requiring file '#{file}'" if $DEBUG
19
+
20
+ require file
21
+ end
22
+
@@ -0,0 +1,269 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), *(['..'] * 4), 'lib')
4
+
5
+ require 'libpath/form/unix'
6
+
7
+ require 'test/unit'
8
+
9
+ require 'xqsr3/extensions/test/unit'
10
+
11
+ class Test_existence_of_namespace_LibPath_Form_Unix < Test::Unit::TestCase
12
+
13
+ def test_LibPath_module_exists
14
+
15
+ assert defined?(::LibPath)
16
+ end
17
+
18
+ def test_LibPath_Form_module_exists
19
+
20
+ assert defined?(::LibPath::Form)
21
+ end
22
+
23
+ def test_LibPath_Form_Unix_module_exists
24
+
25
+ assert defined?(::LibPath::Form::Unix)
26
+ end
27
+ end
28
+
29
+ class Test_classify_path_Unix < Test::Unit::TestCase
30
+
31
+ include ::LibPath::Form::Unix
32
+
33
+ def test_with_nil
34
+
35
+ if $DEBUG
36
+
37
+ assert_raise(::ArgumentError) { classify_path(nil) }
38
+ else
39
+
40
+ assert_nil classify_path(nil)
41
+ end
42
+ end
43
+
44
+ def test_empty
45
+
46
+ assert_nil classify_path('')
47
+ end
48
+
49
+ def test_absolute
50
+
51
+ assert_equal :absolute, classify_path('/')
52
+
53
+ assert_equal :absolute, classify_path('/abc')
54
+ end
55
+
56
+ def test_homed
57
+
58
+ assert_equal :homed, classify_path('~')
59
+
60
+ assert_equal :homed, classify_path('~/')
61
+
62
+ assert_equal :homed, classify_path('~/abc')
63
+ end
64
+
65
+ def test_relative
66
+
67
+ assert_equal :relative, classify_path('abc')
68
+
69
+ assert_equal :relative, classify_path('~~')
70
+ end
71
+ end
72
+
73
+ class Test_name_is_malformed_Unix < Test::Unit::TestCase
74
+
75
+ include ::LibPath::Form::Unix
76
+
77
+ def test_with_nil
78
+
79
+ assert name_is_malformed?(nil)
80
+ end
81
+
82
+ def test_empty
83
+
84
+ assert_false name_is_malformed?('')
85
+ end
86
+
87
+ def test_absolute_paths_from_root
88
+
89
+ assert_false name_is_malformed?('/')
90
+ assert_false name_is_malformed?('//')
91
+ assert_false name_is_malformed?('/abc')
92
+ end
93
+
94
+ def test_absolute_paths_from_home
95
+
96
+ assert_false name_is_malformed?('~')
97
+ assert_false name_is_malformed?('~/')
98
+ assert_false name_is_malformed?('~/abc')
99
+ end
100
+
101
+ def test_relative_paths
102
+
103
+ assert_false name_is_malformed?('abc')
104
+ assert_false name_is_malformed?('abc/')
105
+ assert_false name_is_malformed?('a/')
106
+
107
+ assert_false name_is_malformed?('~abc')
108
+ end
109
+
110
+ def test_innate_invalid_characters
111
+
112
+ assert name_is_malformed?("\0")
113
+ assert name_is_malformed?("a\0")
114
+ assert name_is_malformed?("\0a")
115
+
116
+ assert name_is_malformed?("\0", reject_shell_characters: true)
117
+ assert name_is_malformed?("a\0", reject_shell_characters: true)
118
+ assert name_is_malformed?("\0a", reject_shell_characters: true)
119
+ end
120
+
121
+ def test_shell_invalid_characters
122
+
123
+ assert_false name_is_malformed?('*')
124
+ assert_false name_is_malformed?('?')
125
+ assert_false name_is_malformed?('|')
126
+
127
+ assert name_is_malformed?('*', reject_shell_characters: true)
128
+ assert name_is_malformed?('?', reject_shell_characters: true)
129
+ assert name_is_malformed?('|', reject_shell_characters: true)
130
+ end
131
+
132
+ def test_path_name_separators
133
+
134
+ assert_false name_is_malformed?('/')
135
+
136
+ assert name_is_malformed?('/', reject_path_name_separators: true)
137
+ end
138
+
139
+ def test_path_separators
140
+
141
+ assert_false name_is_malformed?(':')
142
+
143
+ assert name_is_malformed?(':', reject_path_separators: true)
144
+ end
145
+ end
146
+
147
+ class Test_path_is_absolute_Unix < Test::Unit::TestCase
148
+
149
+ include ::LibPath::Form::Unix
150
+
151
+ if $DEBUG
152
+
153
+ def test_with_nil
154
+
155
+ assert_raise(::ArgumentError) { path_is_absolute?(nil) }
156
+ end
157
+ end
158
+
159
+ def test_empty
160
+
161
+ assert_false path_is_absolute?('')
162
+ end
163
+
164
+ def test_absolute_paths_from_root
165
+
166
+ assert path_is_absolute?('/')
167
+ assert path_is_absolute?('//')
168
+ assert path_is_absolute?('/abc')
169
+ end
170
+
171
+ def test_absolute_paths_from_home
172
+
173
+ assert path_is_absolute?('~')
174
+ assert path_is_absolute?('~/')
175
+ assert path_is_absolute?('~/abc')
176
+ end
177
+
178
+ def test_relative_paths
179
+
180
+ assert_false path_is_absolute?('abc')
181
+ assert_false path_is_absolute?('abc/')
182
+ assert_false path_is_absolute?('a/')
183
+
184
+ assert_false path_is_absolute?('~abc')
185
+ end
186
+ end
187
+
188
+ class Test_path_is_homed_Unix < Test::Unit::TestCase
189
+
190
+ include ::LibPath::Form::Unix
191
+
192
+ if $DEBUG
193
+
194
+ def test_with_nil
195
+
196
+ assert_raise(::ArgumentError) { path_is_homed?(nil) }
197
+ end
198
+ end
199
+
200
+ def test_empty
201
+
202
+ assert_false path_is_homed?('')
203
+ end
204
+
205
+ def test_absolute_paths_from_root
206
+
207
+ assert_false path_is_homed?('/')
208
+ assert_false path_is_homed?('//')
209
+ assert_false path_is_homed?('/abc')
210
+ end
211
+
212
+ def test_absolute_paths_from_home
213
+
214
+ assert path_is_homed?('~')
215
+ assert path_is_homed?('~/')
216
+ assert path_is_homed?('~/abc')
217
+ end
218
+
219
+ def test_relative_paths
220
+
221
+ assert_false path_is_homed?('abc')
222
+ assert_false path_is_homed?('abc/')
223
+ assert_false path_is_homed?('a/')
224
+
225
+ assert_false path_is_homed?('~abc')
226
+ end
227
+ end
228
+
229
+ class Test_path_is_rooted_Unix < Test::Unit::TestCase
230
+
231
+ include ::LibPath::Form::Unix
232
+
233
+ if $DEBUG
234
+
235
+ def test_with_nil
236
+
237
+ assert_raise(::ArgumentError) { path_is_rooted?(nil) }
238
+ end
239
+ end
240
+
241
+ def test_empty
242
+
243
+ assert_false path_is_rooted?('')
244
+ end
245
+
246
+ def test_absolute_paths_from_root
247
+
248
+ assert path_is_rooted?('/')
249
+ assert path_is_rooted?('//')
250
+ assert path_is_rooted?('/abc')
251
+ end
252
+
253
+ def test_absolute_paths_from_home
254
+
255
+ assert_false path_is_rooted?('~')
256
+ assert_false path_is_rooted?('~/')
257
+ assert_false path_is_rooted?('~/abc')
258
+ end
259
+
260
+ def test_relative_paths
261
+
262
+ assert_false path_is_rooted?('abc')
263
+ assert_false path_is_rooted?('abc/')
264
+ assert_false path_is_rooted?('a/')
265
+
266
+ assert_false path_is_rooted?('~abc')
267
+ end
268
+ end
269
+