libpath-ruby 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+