libpath-ruby 0.2.2 → 0.2.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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +33 -0
  3. data/README.md +25 -8
  4. data/examples/path_from_arg0.md +43 -43
  5. data/examples/path_from_arg0.rb +25 -23
  6. data/lib/libpath/constants/unix.rb +71 -71
  7. data/lib/libpath/constants/windows.rb +72 -72
  8. data/lib/libpath/constants.rb +18 -19
  9. data/lib/libpath/diagnostics/parameter_checking.rb +25 -25
  10. data/lib/libpath/diagnostics.rb +1 -1
  11. data/lib/libpath/exceptions/libpath_base_exception.rb +13 -13
  12. data/lib/libpath/exceptions/malformed_name_exception.rb +23 -22
  13. data/lib/libpath/exceptions.rb +1 -1
  14. data/lib/libpath/form/unix.rb +104 -103
  15. data/lib/libpath/form/windows.rb +200 -199
  16. data/lib/libpath/form.rb +18 -18
  17. data/lib/libpath/internal_/array.rb +53 -53
  18. data/lib/libpath/internal_/platform.rb +24 -24
  19. data/lib/libpath/internal_/string.rb +18 -18
  20. data/lib/libpath/internal_/unix/form.rb +116 -116
  21. data/lib/libpath/internal_/windows/drive.rb +59 -59
  22. data/lib/libpath/internal_/windows/form.rb +189 -189
  23. data/lib/libpath/libpath.rb +3 -0
  24. data/lib/libpath/path/unix.rb +114 -112
  25. data/lib/libpath/path/windows.rb +120 -118
  26. data/lib/libpath/path.rb +18 -20
  27. data/lib/libpath/util/unix.rb +258 -258
  28. data/lib/libpath/util/windows.rb +400 -400
  29. data/lib/libpath/util.rb +18 -19
  30. data/lib/libpath/version.rb +23 -24
  31. data/lib/libpath.rb +1 -1
  32. data/test/performance/benchmark_drive_letter.rb +50 -10
  33. data/test/performance/benchmark_gsub_string_or_regex.rb +27 -23
  34. data/test/performance/benchmark_rindex2.rb +56 -48
  35. data/test/performance/benchmark_split.rb +16 -10
  36. data/test/unit/compare/ts_all.rb +4 -4
  37. data/test/unit/equate/ts_all.rb +4 -4
  38. data/test/unit/equate/unix/ts_all.rb +4 -4
  39. data/test/unit/equate/windows/ts_all.rb +4 -4
  40. data/test/unit/exceptions/tc_libpath_base_exception.rb +10 -8
  41. data/test/unit/exceptions/tc_malformed_name_exception.rb +14 -12
  42. data/test/unit/exceptions/ts_all.rb +4 -4
  43. data/test/unit/form/tc_absolute_functions.rb +242 -240
  44. data/test/unit/form/ts_all.rb +4 -4
  45. data/test/unit/form/unix/tc_absolute_functions.rb +158 -155
  46. data/test/unit/form/unix/ts_all.rb +4 -4
  47. data/test/unit/form/windows/tc_absolute_functions.rb +628 -625
  48. data/test/unit/form/windows/ts_all.rb +4 -4
  49. data/test/unit/internal_/tc_array.rb +36 -32
  50. data/test/unit/internal_/ts_all.rb +4 -4
  51. data/test/unit/internal_/unix/form/tc_slash_functions.rb +38 -35
  52. data/test/unit/internal_/unix/form/ts_all.rb +4 -4
  53. data/test/unit/internal_/unix/tc_split_path.rb +387 -384
  54. data/test/unit/internal_/unix/ts_all.rb +4 -4
  55. data/test/unit/internal_/windows/form/tc_get_windows_volume.rb +157 -153
  56. data/test/unit/internal_/windows/form/tc_slash_functions.rb +39 -35
  57. data/test/unit/internal_/windows/form/ts_all.rb +4 -4
  58. data/test/unit/internal_/windows/tc_split_path.rb +874 -869
  59. data/test/unit/internal_/windows/ts_all.rb +4 -4
  60. data/test/unit/parse/ts_all.rb +4 -4
  61. data/test/unit/path/tc_path.rb +732 -732
  62. data/test/unit/path/ts_all.rb +4 -4
  63. data/test/unit/path/unix/tc_path.rb +544 -540
  64. data/test/unit/path/unix/ts_all.rb +4 -4
  65. data/test/unit/path/windows/tc_path.rb +608 -603
  66. data/test/unit/path/windows/ts_all.rb +4 -4
  67. data/test/unit/tc_version.rb +25 -22
  68. data/test/unit/ts_all.rb +4 -4
  69. data/test/unit/util/tc_combine_paths.rb +110 -105
  70. data/test/unit/util/tc_derive_relative_path.rb +8 -3
  71. data/test/unit/util/tc_make_path_canonical.rb +142 -138
  72. data/test/unit/util/ts_all.rb +4 -4
  73. data/test/unit/util/unix/tc_combine_paths.rb +38 -34
  74. data/test/unit/util/unix/tc_derive_relative_path.rb +80 -75
  75. data/test/unit/util/unix/tc_make_path_absolute.rb +74 -70
  76. data/test/unit/util/unix/tc_make_path_canonical.rb +95 -90
  77. data/test/unit/util/unix/ts_all.rb +4 -4
  78. data/test/unit/util/windows/tc_combine_paths.rb +82 -77
  79. data/test/unit/util/windows/tc_derive_relative_path.rb +98 -93
  80. data/test/unit/util/windows/tc_make_path_absolute.rb +105 -101
  81. data/test/unit/util/windows/tc_make_path_canonical.rb +158 -153
  82. data/test/unit/util/windows/ts_all.rb +4 -4
  83. metadata +9 -8
@@ -2,564 +2,568 @@
2
2
 
3
3
  $:.unshift File.join(File.dirname(__FILE__), *(['..'] * 4), 'lib')
4
4
 
5
- require 'libpath/path/unix'
6
5
 
7
- require 'test/unit'
6
+ require 'libpath/path/unix'
8
7
 
9
8
  require 'xqsr3/extensions/test/unit'
9
+ require 'test/unit'
10
10
 
11
11
  require 'libpath/internal_/platform'
12
12
 
13
+
13
14
  class Test_existence_of_namespace_LibPath_Path_Unix < Test::Unit::TestCase
14
15
 
15
- def test_LibPath_module_exists
16
+ def test_LibPath_module_exists
16
17
 
17
- assert defined?(::LibPath)
18
- end
18
+ assert defined?(::LibPath)
19
+ end
19
20
 
20
- def test_LibPath_Path_module_exists
21
+ def test_LibPath_Path_module_exists
21
22
 
22
- assert defined?(::LibPath::Path)
23
- end
23
+ assert defined?(::LibPath::Path)
24
+ end
24
25
 
25
- def test_LibPath_Path_Unix_module_exists
26
+ def test_LibPath_Path_Unix_module_exists
26
27
 
27
- assert defined?(::LibPath::Path::Unix)
28
- end
28
+ assert defined?(::LibPath::Path::Unix)
29
+ end
29
30
 
30
- def test_LibPath_Path_Unix_ParsedPath_class_exists
31
+ def test_LibPath_Path_Unix_ParsedPath_class_exists
31
32
 
32
- assert defined?(::LibPath::Path::Unix::ParsedPath)
33
- end
33
+ assert defined?(::LibPath::Path::Unix::ParsedPath)
34
+ end
34
35
  end
35
36
 
36
37
  class Test_LibPath_Path_Unix_ParsedPath < Test::Unit::TestCase
37
38
 
38
- include ::LibPath::Path::Unix
39
-
40
- def test_nil
41
-
42
- assert_raise(::ArgumentError) { ParsedPath.new(nil) }
43
- end
44
-
45
- def test_empty
46
-
47
- assert_raise(::ArgumentError) { ParsedPath.new('') }
48
- end
49
-
50
- def test_root
51
-
52
- pp = ParsedPath.new('/')
53
-
54
- assert_equal '/', pp.given_path
55
- assert_equal '/', pp.absolute_path
56
- assert_equal '/', pp.compare_path
57
- assert_equal '/', pp.directory
58
- assert_equal '/', pp.directory_path
59
- assert_equal '/', pp.dirname
60
- assert_equal [ '/' ], pp.directory_parts
61
- assert_nil pp.file_full_name
62
- assert_nil pp.basename
63
- assert_nil pp.file_name_only
64
- assert_nil pp.stem
65
- assert_nil pp.file_extension
66
- assert_nil pp.extension
67
- assert_nil pp.search_directory
68
- assert_nil pp.search_relative_path
69
- assert_nil pp.search_relative_directory_path
70
- assert_nil pp.search_relative_directory_parts
71
-
72
- assert_equal pp.directory, pp.directory_parts.join
73
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
74
- end
75
-
76
- def test_root_from_srd_1
77
-
78
- srd = '/dir-1/dir-2'
79
-
80
- pp = ParsedPath.new('/', srd)
81
-
82
- assert_equal '/', pp.given_path
83
- assert_equal '/', pp.absolute_path
84
- assert_equal '/', pp.compare_path
85
- assert_equal '/', pp.directory
86
- assert_equal '/', pp.directory_path
87
- assert_equal '/', pp.dirname
88
- assert_equal [ '/' ], pp.directory_parts
89
- assert_nil pp.file_full_name
90
- assert_nil pp.basename
91
- assert_nil pp.file_name_only
92
- assert_nil pp.stem
93
- assert_nil pp.file_extension
94
- assert_nil pp.extension
95
- assert_equal '/dir-1/dir-2/', pp.search_directory
96
- assert_equal '../../', pp.search_relative_path
97
- assert_equal '../../', pp.search_relative_directory_path
98
- assert_equal [ '../', '../' ], pp.search_relative_directory_parts
99
-
100
- assert_equal pp.directory, pp.directory_parts.join
101
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
102
- end
103
-
104
- def test_root_from_srd_2
105
-
106
- srd = '/'
107
-
108
- pp = ParsedPath.new('/', srd)
109
-
110
- assert_equal '/', pp.given_path
111
- assert_equal '/', pp.absolute_path
112
- assert_equal '/', pp.compare_path
113
- assert_equal '/', pp.directory
114
- assert_equal '/', pp.directory_path
115
- assert_equal '/', pp.dirname
116
- assert_equal [ '/' ], pp.directory_parts
117
- assert_nil pp.file_full_name
118
- assert_nil pp.basename
119
- assert_nil pp.file_name_only
120
- assert_nil pp.stem
121
- assert_nil pp.file_extension
122
- assert_nil pp.extension
123
- assert_equal '/', pp.search_directory
124
- assert_equal './', pp.search_relative_path
125
- assert_equal './', pp.search_relative_directory_path
126
- assert_equal [ './' ], pp.search_relative_directory_parts
127
-
128
- assert_equal pp.directory, pp.directory_parts.join
129
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
130
- end
131
-
132
- def test_rooted_one_dir
133
-
134
- pp = ParsedPath.new('/abc/')
135
-
136
- assert_equal '/abc/', pp.given_path
137
- assert_equal '/abc/', pp.absolute_path
138
- assert_equal '/abc/', pp.compare_path
139
- assert_equal '/abc/', pp.directory
140
- assert_equal '/abc/', pp.directory_path
141
- assert_equal '/abc/', pp.dirname
142
- assert_equal [ '/', 'abc/' ], pp.directory_parts
143
- assert_nil pp.file_full_name
144
- assert_nil pp.basename
145
- assert_nil pp.file_name_only
146
- assert_nil pp.stem
147
- assert_nil pp.file_extension
148
- assert_nil pp.extension
149
- assert_nil pp.search_directory
150
- assert_nil pp.search_relative_path
151
- assert_nil pp.search_relative_directory_path
152
- assert_nil pp.search_relative_directory_parts
153
-
154
- assert_equal pp.directory, pp.directory_parts.join
155
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
156
- end
157
-
158
- def test_rooted_one_dir_from_srd
159
-
160
- srd = '/dir-1/dir-2'
161
-
162
- pp = ParsedPath.new('/abc/', srd)
163
-
164
- assert_equal '/abc/', pp.given_path
165
- assert_equal '/abc/', pp.absolute_path
166
- assert_equal '/abc/', pp.compare_path
167
- assert_equal '/abc/', pp.directory
168
- assert_equal '/abc/', pp.directory_path
169
- assert_equal '/abc/', pp.dirname
170
- assert_equal [ '/', 'abc/' ], pp.directory_parts
171
- assert_nil pp.file_full_name
172
- assert_nil pp.basename
173
- assert_nil pp.file_name_only
174
- assert_nil pp.stem
175
- assert_nil pp.file_extension
176
- assert_nil pp.extension
177
- assert_equal '/dir-1/dir-2/', pp.search_directory
178
- assert_equal '../../abc/', pp.search_relative_path
179
- assert_equal '../../abc/', pp.search_relative_directory_path
180
- assert_equal [ '../', '../', 'abc/' ], pp.search_relative_directory_parts
181
-
182
- assert_equal pp.directory, pp.directory_parts.join
183
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
184
- end
185
-
186
- def test_rooted_one_dir_with_trailing_dot
187
-
188
- pp = ParsedPath.new('/abc/.')
189
-
190
- assert_equal '/abc/.', pp.given_path
191
- assert_equal '/abc/', pp.absolute_path
192
- assert_equal '/abc/', pp.compare_path
193
- assert_equal '/abc/', pp.directory
194
- assert_equal '/abc/', pp.directory_path
195
- assert_equal '/abc/', pp.dirname
196
- assert_equal [ '/', 'abc/' ], pp.directory_parts
197
- assert_nil pp.file_full_name
198
- assert_nil pp.basename
199
- assert_nil pp.file_name_only
200
- assert_nil pp.stem
201
- assert_nil pp.file_extension
202
- assert_nil pp.extension
203
- assert_nil pp.search_directory
204
- assert_nil pp.search_relative_path
205
- assert_nil pp.search_relative_directory_path
206
- assert_nil pp.search_relative_directory_parts
207
-
208
- assert_equal pp.directory, pp.directory_parts.join
209
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
210
- end
211
-
212
- def test_rooted_one_file
213
-
214
- pp = ParsedPath.new('/file.ext')
215
-
216
- assert_equal '/file.ext', pp.given_path
217
- assert_equal '/file.ext', pp.absolute_path
218
- assert_equal '/file.ext', pp.compare_path
219
- assert_equal '/', pp.directory
220
- assert_equal '/', pp.directory_path
221
- assert_equal '/', pp.dirname
222
- assert_equal [ '/' ], pp.directory_parts
223
- assert_equal 'file.ext', pp.file_full_name
224
- assert_equal 'file.ext', pp.basename
225
- assert_equal 'file', pp.file_name_only
226
- assert_equal 'file', pp.stem
227
- assert_equal '.ext', pp.file_extension
228
- assert_equal '.ext', pp.extension
229
- assert_nil pp.search_directory
230
- assert_nil pp.search_relative_path
231
- assert_nil pp.search_relative_directory_path
232
- assert_nil pp.search_relative_directory_parts
233
-
234
- assert_equal pp.directory, pp.directory_parts.join
235
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
236
- end
237
-
238
- def test_rooted_one_file_from_srd1
239
-
240
- srd = '/dir-1/dir-2'
241
-
242
- pp = ParsedPath.new('/file.ext', srd)
243
-
244
- assert_equal '/file.ext', pp.given_path
245
- assert_equal '/file.ext', pp.absolute_path
246
- assert_equal '/file.ext', pp.compare_path
247
- assert_equal '/', pp.directory
248
- assert_equal '/', pp.directory_path
249
- assert_equal '/', pp.dirname
250
- assert_equal [ '/' ], pp.directory_parts
251
- assert_equal 'file.ext', pp.file_full_name
252
- assert_equal 'file.ext', pp.basename
253
- assert_equal 'file', pp.file_name_only
254
- assert_equal 'file', pp.stem
255
- assert_equal '.ext', pp.file_extension
256
- assert_equal '.ext', pp.extension
257
- assert_equal '/dir-1/dir-2/', pp.search_directory
258
- assert_equal '../../file.ext', pp.search_relative_path
259
- assert_equal '../../', pp.search_relative_directory_path
260
- assert_equal [ '../', '../' ], pp.search_relative_directory_parts
261
-
262
- assert_equal pp.directory, pp.directory_parts.join
263
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
264
- end
265
-
266
- def test_rooted_one_file_without_extension
267
-
268
- pp = ParsedPath.new('/file')
269
-
270
- assert_equal '/file', pp.given_path
271
- assert_equal '/file', pp.absolute_path
272
- assert_equal '/file', pp.compare_path
273
- assert_equal '/', pp.directory
274
- assert_equal '/', pp.directory_path
275
- assert_equal '/', pp.dirname
276
- assert_equal [ '/' ], pp.directory_parts
277
- assert_equal 'file', pp.file_full_name
278
- assert_equal 'file', pp.basename
279
- assert_equal 'file', pp.file_name_only
280
- assert_equal 'file', pp.stem
281
- assert_nil pp.file_extension
282
- assert_nil pp.extension
283
- assert_nil pp.search_directory
284
- assert_nil pp.search_relative_path
285
- assert_nil pp.search_relative_directory_path
286
- assert_nil pp.search_relative_directory_parts
287
-
288
- assert_equal pp.directory, pp.directory_parts.join
289
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
290
- end
291
-
292
- def test_rooted_one_file_without_stem
293
-
294
- pp = ParsedPath.new('/.ext')
295
-
296
- assert_equal '/.ext', pp.given_path
297
- assert_equal '/.ext', pp.absolute_path
298
- assert_equal '/.ext', pp.compare_path
299
- assert_equal '/', pp.directory
300
- assert_equal '/', pp.directory_path
301
- assert_equal '/', pp.dirname
302
- assert_equal [ '/' ], pp.directory_parts
303
- assert_equal '.ext', pp.file_full_name
304
- assert_equal '.ext', pp.basename
305
- assert_nil pp.file_name_only
306
- assert_nil pp.stem
307
- assert_equal '.ext', pp.file_extension
308
- assert_equal '.ext', pp.extension
309
- assert_nil pp.search_directory
310
- assert_nil pp.search_relative_path
311
- assert_nil pp.search_relative_directory_path
312
- assert_nil pp.search_relative_directory_parts
313
-
314
- assert_equal pp.directory, pp.directory_parts.join
315
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
316
- end
317
-
318
- def test_rooted_one_long_path
319
-
320
- pp = ParsedPath.new('/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext')
321
-
322
- assert_equal '/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext', pp.given_path
323
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.absolute_path
324
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.compare_path
325
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory
326
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory_path
327
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.dirname
328
- assert_equal [ '/', 'dir-1/', 'dir-2/', 'dir-3/', 'dir-4/', 'dir-5/' ], pp.directory_parts
329
- assert_equal 'file.ext', pp.file_full_name
330
- assert_equal 'file.ext', pp.basename
331
- assert_equal 'file', pp.file_name_only
332
- assert_equal 'file', pp.stem
333
- assert_equal '.ext', pp.file_extension
334
- assert_equal '.ext', pp.extension
335
- assert_nil pp.search_directory
336
- assert_nil pp.search_relative_path
337
- assert_nil pp.search_relative_directory_path
338
- assert_nil pp.search_relative_directory_parts
339
-
340
- assert_equal pp.directory, pp.directory_parts.join
341
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
342
- end
343
-
344
- def test_rooted_one_long_path_with_short_directory_names
345
-
346
- pp = ParsedPath.new('/1/2/3/4/./5/6/../file.ext')
347
-
348
- assert_equal '/1/2/3/4/./5/6/../file.ext', pp.given_path
349
- assert_equal '/1/2/3/4/5/file.ext', pp.absolute_path
350
- assert_equal '/1/2/3/4/5/file.ext', pp.compare_path
351
- assert_equal '/1/2/3/4/5/', pp.directory
352
- assert_equal '/1/2/3/4/5/', pp.directory_path
353
- assert_equal '/1/2/3/4/5/', pp.dirname
354
- assert_equal [ '/', '1/', '2/', '3/', '4/', '5/' ], pp.directory_parts
355
- assert_equal 'file.ext', pp.file_full_name
356
- assert_equal 'file.ext', pp.basename
357
- assert_equal 'file', pp.file_name_only
358
- assert_equal 'file', pp.stem
359
- assert_equal '.ext', pp.file_extension
360
- assert_equal '.ext', pp.extension
361
- assert_nil pp.search_directory
362
- assert_nil pp.search_relative_path
363
- assert_nil pp.search_relative_directory_path
364
- assert_nil pp.search_relative_directory_parts
365
-
366
- assert_equal pp.directory, pp.directory_parts.join
367
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
368
- end
369
-
370
- def test_unrooted_one_file
371
-
372
- pwd = '/some-directory'
373
-
374
- pp = ParsedPath.new('file.ext', pwd: pwd)
375
-
376
- assert_equal 'file.ext', pp.given_path
377
- assert_equal '/some-directory/file.ext', pp.absolute_path
378
- assert_equal '/some-directory/file.ext', pp.compare_path
379
- assert_equal '/some-directory/', pp.directory
380
- assert_equal '/some-directory/', pp.directory_path
381
- assert_equal '/some-directory/', pp.dirname
382
- assert_equal [ '/', 'some-directory/' ], pp.directory_parts
383
- assert_equal 'file.ext', pp.file_full_name
384
- assert_equal 'file.ext', pp.basename
385
- assert_equal 'file', pp.file_name_only
386
- assert_equal 'file', pp.stem
387
- assert_equal '.ext', pp.file_extension
388
- assert_equal '.ext', pp.extension
389
- assert_nil pp.search_directory
390
- assert_nil pp.search_relative_path
391
- assert_nil pp.search_relative_directory_path
392
- assert_nil pp.search_relative_directory_parts
393
-
394
- assert_equal pp.directory, pp.directory_parts.join
395
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
396
- end
397
-
398
- def test_unrooted_one_file_from_srd
399
-
400
- pwd = '/some-directory'
401
- srd = '/dir-1/dir-2/'
402
-
403
- pp = ParsedPath.new('file.ext', srd, pwd: pwd)
404
-
405
- assert_equal 'file.ext', pp.given_path
406
- assert_equal '/some-directory/file.ext', pp.absolute_path
407
- assert_equal '/some-directory/file.ext', pp.compare_path
408
- assert_equal '/some-directory/', pp.directory
409
- assert_equal '/some-directory/', pp.directory_path
410
- assert_equal '/some-directory/', pp.dirname
411
- assert_equal [ '/', 'some-directory/' ], pp.directory_parts
412
- assert_equal 'file.ext', pp.file_full_name
413
- assert_equal 'file.ext', pp.basename
414
- assert_equal 'file', pp.file_name_only
415
- assert_equal 'file', pp.stem
416
- assert_equal '.ext', pp.file_extension
417
- assert_equal '.ext', pp.extension
418
- assert_equal srd, pp.search_directory
419
- assert_equal '../../some-directory/file.ext', pp.search_relative_path
420
- assert_equal '../../some-directory/', pp.search_relative_directory_path
421
- assert_equal [ '../', '../', 'some-directory/' ], pp.search_relative_directory_parts
422
-
423
- assert_equal pp.directory, pp.directory_parts.join
424
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
425
- end
426
-
427
- def test_unrooted_dir_file
428
-
429
- pwd = '/some-directory'
430
-
431
- pp = ParsedPath.new('sub-dir/file.ext', pwd: pwd)
432
-
433
- assert_equal 'sub-dir/file.ext', pp.given_path
434
- assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
435
- assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
436
- assert_equal '/some-directory/sub-dir/', pp.directory
437
- assert_equal '/some-directory/sub-dir/', pp.directory_path
438
- assert_equal '/some-directory/sub-dir/', pp.dirname
439
- assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
440
- assert_equal 'file.ext', pp.file_full_name
441
- assert_equal 'file.ext', pp.basename
442
- assert_equal 'file', pp.file_name_only
443
- assert_equal 'file', pp.stem
444
- assert_equal '.ext', pp.file_extension
445
- assert_equal '.ext', pp.extension
446
- assert_nil pp.search_directory
447
- assert_nil pp.search_relative_path
448
- assert_nil pp.search_relative_directory_path
449
- assert_nil pp.search_relative_directory_parts
450
-
451
- assert_equal pp.directory, pp.directory_parts.join
452
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
453
- end
454
-
455
- def test_unrooted_dir_file_2
456
-
457
- locator = Object.new
458
-
459
- locator.define_singleton_method(:pwd) { '/some-directory' }
460
-
461
- pp = ParsedPath.new('sub-dir/file.ext', locator: locator)
462
-
463
- assert_equal 'sub-dir/file.ext', pp.given_path
464
- assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
465
- assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
466
- assert_equal '/some-directory/sub-dir/', pp.directory
467
- assert_equal '/some-directory/sub-dir/', pp.directory_path
468
- assert_equal '/some-directory/sub-dir/', pp.dirname
469
- assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
470
- assert_equal 'file.ext', pp.file_full_name
471
- assert_equal 'file.ext', pp.basename
472
- assert_equal 'file', pp.file_name_only
473
- assert_equal 'file', pp.stem
474
- assert_equal '.ext', pp.file_extension
475
- assert_equal '.ext', pp.extension
476
- assert_nil pp.search_directory
477
- assert_nil pp.search_relative_path
478
- assert_nil pp.search_relative_directory_path
479
- assert_nil pp.search_relative_directory_parts
480
-
481
- assert_equal pp.directory, pp.directory_parts.join
482
- assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
483
- end
484
-
485
- def test_recls_stat_case_1
486
-
487
- pwd = '/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/'
488
- srd = '.'
489
-
490
- pp = ParsedPath.new('.', srd, pwd: pwd)
491
-
492
- assert_equal '.', pp.given_path
493
- assert_equal pwd, pp.absolute_path
494
- assert_equal pwd, pp.compare_path
495
- assert_equal pwd, pp.directory
496
- assert_equal pwd, pp.directory_path
497
- assert_equal pwd, pp.dirname
498
- assert_equal [ '/', 'Users/', 'matthewwilson/', 'dev/', 'freelibs/', 'recls/', '100/', 'recls.Ruby/', 'trunk/' ], pp.directory_parts
499
- assert_nil pp.file_full_name
500
- assert_nil pp.basename
501
- assert_nil pp.file_name_only
502
- assert_nil pp.stem
503
- assert_nil pp.file_extension
504
- assert_nil pp.extension
505
- assert_equal pwd, pp.search_directory
506
- assert_equal './', pp.search_relative_path
507
- assert_equal './', pp.search_relative_directory_path
508
- assert_equal [ './' ], pp.search_relative_directory_parts
509
- end
510
-
511
- def test_recls_stat_case_2
512
-
513
- pwd = '/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/'
514
- home = '/Users/matthewwilson'
515
- srd = '~'
516
-
517
- pp = ParsedPath.new('.', srd, home: home, pwd: pwd)
518
-
519
- assert_equal '.', pp.given_path
520
- assert_equal pwd, pp.absolute_path
521
- assert_equal pwd, pp.compare_path
522
- assert_equal pwd, pp.directory
523
- assert_equal pwd, pp.directory_path
524
- assert_equal pwd, pp.dirname
525
- assert_equal [ '/', 'Users/', 'matthewwilson/', 'dev/', 'freelibs/', 'recls/', '100/', 'recls.Ruby/', 'trunk/' ], pp.directory_parts
526
- assert_nil pp.file_full_name
527
- assert_nil pp.basename
528
- assert_nil pp.file_name_only
529
- assert_nil pp.stem
530
- assert_nil pp.file_extension
531
- assert_nil pp.extension
532
- assert_equal '/Users/matthewwilson/', pp.search_directory
533
- assert_equal 'dev/freelibs/recls/100/recls.Ruby/trunk/', pp.search_relative_path
534
- assert_equal 'dev/freelibs/recls/100/recls.Ruby/trunk/', pp.search_relative_directory_path
535
- assert_equal [ 'dev/', 'freelibs/', 'recls/', '100/', 'recls.Ruby/', 'trunk/' ], pp.search_relative_directory_parts
536
- end
537
-
538
- def test_recls_stat_case_3
539
-
540
- pwd = '/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/'
541
- home = '/Users/matthewwilson'
542
- srd = '.'
543
-
544
- pp = ParsedPath.new('~', srd, home: home, pwd: pwd)
545
-
546
- assert_equal '~', pp.given_path
547
- assert_equal '/Users/matthewwilson/', pp.absolute_path
548
- assert_equal '/Users/matthewwilson/', pp.compare_path
549
- assert_equal '/Users/matthewwilson/', pp.directory
550
- assert_equal '/Users/matthewwilson/', pp.directory_path
551
- assert_equal '/Users/matthewwilson/', pp.dirname
552
- assert_equal [ '/', 'Users/', 'matthewwilson/' ], pp.directory_parts
553
- assert_nil pp.file_full_name
554
- assert_nil pp.basename
555
- assert_nil pp.file_name_only
556
- assert_nil pp.stem
557
- assert_nil pp.file_extension
558
- assert_nil pp.extension
559
- assert_equal pwd, pp.search_directory
560
- assert_equal '../../../../../../', pp.search_relative_path
561
- assert_equal '../../../../../../', pp.search_relative_directory_path
562
- assert_equal [ '../', '../', '../', '../', '../', '../' ], pp.search_relative_directory_parts
563
- end
39
+ include ::LibPath::Path::Unix
40
+
41
+ def test_nil
42
+
43
+ assert_raise(::ArgumentError) { ParsedPath.new(nil) }
44
+ end
45
+
46
+ def test_empty
47
+
48
+ assert_raise(::ArgumentError) { ParsedPath.new('') }
49
+ end
50
+
51
+ def test_root
52
+
53
+ pp = ParsedPath.new('/')
54
+
55
+ assert_equal '/', pp.given_path
56
+ assert_equal '/', pp.absolute_path
57
+ assert_equal '/', pp.compare_path
58
+ assert_equal '/', pp.directory
59
+ assert_equal '/', pp.directory_path
60
+ assert_equal '/', pp.dirname
61
+ assert_equal [ '/' ], pp.directory_parts
62
+ assert_nil pp.file_full_name
63
+ assert_nil pp.basename
64
+ assert_nil pp.file_name_only
65
+ assert_nil pp.stem
66
+ assert_nil pp.file_extension
67
+ assert_nil pp.extension
68
+ assert_nil pp.search_directory
69
+ assert_nil pp.search_relative_path
70
+ assert_nil pp.search_relative_directory_path
71
+ assert_nil pp.search_relative_directory_parts
72
+
73
+ assert_equal pp.directory, pp.directory_parts.join
74
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
75
+ end
76
+
77
+ def test_root_from_srd_1
78
+
79
+ srd = '/dir-1/dir-2'
80
+
81
+ pp = ParsedPath.new('/', srd)
82
+
83
+ assert_equal '/', pp.given_path
84
+ assert_equal '/', pp.absolute_path
85
+ assert_equal '/', pp.compare_path
86
+ assert_equal '/', pp.directory
87
+ assert_equal '/', pp.directory_path
88
+ assert_equal '/', pp.dirname
89
+ assert_equal [ '/' ], pp.directory_parts
90
+ assert_nil pp.file_full_name
91
+ assert_nil pp.basename
92
+ assert_nil pp.file_name_only
93
+ assert_nil pp.stem
94
+ assert_nil pp.file_extension
95
+ assert_nil pp.extension
96
+ assert_equal '/dir-1/dir-2/', pp.search_directory
97
+ assert_equal '../../', pp.search_relative_path
98
+ assert_equal '../../', pp.search_relative_directory_path
99
+ assert_equal [ '../', '../' ], pp.search_relative_directory_parts
100
+
101
+ assert_equal pp.directory, pp.directory_parts.join
102
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
103
+ end
104
+
105
+ def test_root_from_srd_2
106
+
107
+ srd = '/'
108
+
109
+ pp = ParsedPath.new('/', srd)
110
+
111
+ assert_equal '/', pp.given_path
112
+ assert_equal '/', pp.absolute_path
113
+ assert_equal '/', pp.compare_path
114
+ assert_equal '/', pp.directory
115
+ assert_equal '/', pp.directory_path
116
+ assert_equal '/', pp.dirname
117
+ assert_equal [ '/' ], pp.directory_parts
118
+ assert_nil pp.file_full_name
119
+ assert_nil pp.basename
120
+ assert_nil pp.file_name_only
121
+ assert_nil pp.stem
122
+ assert_nil pp.file_extension
123
+ assert_nil pp.extension
124
+ assert_equal '/', pp.search_directory
125
+ assert_equal './', pp.search_relative_path
126
+ assert_equal './', pp.search_relative_directory_path
127
+ assert_equal [ './' ], pp.search_relative_directory_parts
128
+
129
+ assert_equal pp.directory, pp.directory_parts.join
130
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
131
+ end
132
+
133
+ def test_rooted_one_dir
134
+
135
+ pp = ParsedPath.new('/abc/')
136
+
137
+ assert_equal '/abc/', pp.given_path
138
+ assert_equal '/abc/', pp.absolute_path
139
+ assert_equal '/abc/', pp.compare_path
140
+ assert_equal '/abc/', pp.directory
141
+ assert_equal '/abc/', pp.directory_path
142
+ assert_equal '/abc/', pp.dirname
143
+ assert_equal [ '/', 'abc/' ], pp.directory_parts
144
+ assert_nil pp.file_full_name
145
+ assert_nil pp.basename
146
+ assert_nil pp.file_name_only
147
+ assert_nil pp.stem
148
+ assert_nil pp.file_extension
149
+ assert_nil pp.extension
150
+ assert_nil pp.search_directory
151
+ assert_nil pp.search_relative_path
152
+ assert_nil pp.search_relative_directory_path
153
+ assert_nil pp.search_relative_directory_parts
154
+
155
+ assert_equal pp.directory, pp.directory_parts.join
156
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
157
+ end
158
+
159
+ def test_rooted_one_dir_from_srd
160
+
161
+ srd = '/dir-1/dir-2'
162
+
163
+ pp = ParsedPath.new('/abc/', srd)
164
+
165
+ assert_equal '/abc/', pp.given_path
166
+ assert_equal '/abc/', pp.absolute_path
167
+ assert_equal '/abc/', pp.compare_path
168
+ assert_equal '/abc/', pp.directory
169
+ assert_equal '/abc/', pp.directory_path
170
+ assert_equal '/abc/', pp.dirname
171
+ assert_equal [ '/', 'abc/' ], pp.directory_parts
172
+ assert_nil pp.file_full_name
173
+ assert_nil pp.basename
174
+ assert_nil pp.file_name_only
175
+ assert_nil pp.stem
176
+ assert_nil pp.file_extension
177
+ assert_nil pp.extension
178
+ assert_equal '/dir-1/dir-2/', pp.search_directory
179
+ assert_equal '../../abc/', pp.search_relative_path
180
+ assert_equal '../../abc/', pp.search_relative_directory_path
181
+ assert_equal [ '../', '../', 'abc/' ], pp.search_relative_directory_parts
182
+
183
+ assert_equal pp.directory, pp.directory_parts.join
184
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
185
+ end
186
+
187
+ def test_rooted_one_dir_with_trailing_dot
188
+
189
+ pp = ParsedPath.new('/abc/.')
190
+
191
+ assert_equal '/abc/.', pp.given_path
192
+ assert_equal '/abc/', pp.absolute_path
193
+ assert_equal '/abc/', pp.compare_path
194
+ assert_equal '/abc/', pp.directory
195
+ assert_equal '/abc/', pp.directory_path
196
+ assert_equal '/abc/', pp.dirname
197
+ assert_equal [ '/', 'abc/' ], pp.directory_parts
198
+ assert_nil pp.file_full_name
199
+ assert_nil pp.basename
200
+ assert_nil pp.file_name_only
201
+ assert_nil pp.stem
202
+ assert_nil pp.file_extension
203
+ assert_nil pp.extension
204
+ assert_nil pp.search_directory
205
+ assert_nil pp.search_relative_path
206
+ assert_nil pp.search_relative_directory_path
207
+ assert_nil pp.search_relative_directory_parts
208
+
209
+ assert_equal pp.directory, pp.directory_parts.join
210
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
211
+ end
212
+
213
+ def test_rooted_one_file
214
+
215
+ pp = ParsedPath.new('/file.ext')
216
+
217
+ assert_equal '/file.ext', pp.given_path
218
+ assert_equal '/file.ext', pp.absolute_path
219
+ assert_equal '/file.ext', pp.compare_path
220
+ assert_equal '/', pp.directory
221
+ assert_equal '/', pp.directory_path
222
+ assert_equal '/', pp.dirname
223
+ assert_equal [ '/' ], pp.directory_parts
224
+ assert_equal 'file.ext', pp.file_full_name
225
+ assert_equal 'file.ext', pp.basename
226
+ assert_equal 'file', pp.file_name_only
227
+ assert_equal 'file', pp.stem
228
+ assert_equal '.ext', pp.file_extension
229
+ assert_equal '.ext', pp.extension
230
+ assert_nil pp.search_directory
231
+ assert_nil pp.search_relative_path
232
+ assert_nil pp.search_relative_directory_path
233
+ assert_nil pp.search_relative_directory_parts
234
+
235
+ assert_equal pp.directory, pp.directory_parts.join
236
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
237
+ end
238
+
239
+ def test_rooted_one_file_from_srd1
240
+
241
+ srd = '/dir-1/dir-2'
242
+
243
+ pp = ParsedPath.new('/file.ext', srd)
244
+
245
+ assert_equal '/file.ext', pp.given_path
246
+ assert_equal '/file.ext', pp.absolute_path
247
+ assert_equal '/file.ext', pp.compare_path
248
+ assert_equal '/', pp.directory
249
+ assert_equal '/', pp.directory_path
250
+ assert_equal '/', pp.dirname
251
+ assert_equal [ '/' ], pp.directory_parts
252
+ assert_equal 'file.ext', pp.file_full_name
253
+ assert_equal 'file.ext', pp.basename
254
+ assert_equal 'file', pp.file_name_only
255
+ assert_equal 'file', pp.stem
256
+ assert_equal '.ext', pp.file_extension
257
+ assert_equal '.ext', pp.extension
258
+ assert_equal '/dir-1/dir-2/', pp.search_directory
259
+ assert_equal '../../file.ext', pp.search_relative_path
260
+ assert_equal '../../', pp.search_relative_directory_path
261
+ assert_equal [ '../', '../' ], pp.search_relative_directory_parts
262
+
263
+ assert_equal pp.directory, pp.directory_parts.join
264
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
265
+ end
266
+
267
+ def test_rooted_one_file_without_extension
268
+
269
+ pp = ParsedPath.new('/file')
270
+
271
+ assert_equal '/file', pp.given_path
272
+ assert_equal '/file', pp.absolute_path
273
+ assert_equal '/file', pp.compare_path
274
+ assert_equal '/', pp.directory
275
+ assert_equal '/', pp.directory_path
276
+ assert_equal '/', pp.dirname
277
+ assert_equal [ '/' ], pp.directory_parts
278
+ assert_equal 'file', pp.file_full_name
279
+ assert_equal 'file', pp.basename
280
+ assert_equal 'file', pp.file_name_only
281
+ assert_equal 'file', pp.stem
282
+ assert_nil pp.file_extension
283
+ assert_nil pp.extension
284
+ assert_nil pp.search_directory
285
+ assert_nil pp.search_relative_path
286
+ assert_nil pp.search_relative_directory_path
287
+ assert_nil pp.search_relative_directory_parts
288
+
289
+ assert_equal pp.directory, pp.directory_parts.join
290
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
291
+ end
292
+
293
+ def test_rooted_one_file_without_stem
294
+
295
+ pp = ParsedPath.new('/.ext')
296
+
297
+ assert_equal '/.ext', pp.given_path
298
+ assert_equal '/.ext', pp.absolute_path
299
+ assert_equal '/.ext', pp.compare_path
300
+ assert_equal '/', pp.directory
301
+ assert_equal '/', pp.directory_path
302
+ assert_equal '/', pp.dirname
303
+ assert_equal [ '/' ], pp.directory_parts
304
+ assert_equal '.ext', pp.file_full_name
305
+ assert_equal '.ext', pp.basename
306
+ assert_nil pp.file_name_only
307
+ assert_nil pp.stem
308
+ assert_equal '.ext', pp.file_extension
309
+ assert_equal '.ext', pp.extension
310
+ assert_nil pp.search_directory
311
+ assert_nil pp.search_relative_path
312
+ assert_nil pp.search_relative_directory_path
313
+ assert_nil pp.search_relative_directory_parts
314
+
315
+ assert_equal pp.directory, pp.directory_parts.join
316
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
317
+ end
318
+
319
+ def test_rooted_one_long_path
320
+
321
+ pp = ParsedPath.new('/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext')
322
+
323
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext', pp.given_path
324
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.absolute_path
325
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.compare_path
326
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory
327
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory_path
328
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.dirname
329
+ assert_equal [ '/', 'dir-1/', 'dir-2/', 'dir-3/', 'dir-4/', 'dir-5/' ], pp.directory_parts
330
+ assert_equal 'file.ext', pp.file_full_name
331
+ assert_equal 'file.ext', pp.basename
332
+ assert_equal 'file', pp.file_name_only
333
+ assert_equal 'file', pp.stem
334
+ assert_equal '.ext', pp.file_extension
335
+ assert_equal '.ext', pp.extension
336
+ assert_nil pp.search_directory
337
+ assert_nil pp.search_relative_path
338
+ assert_nil pp.search_relative_directory_path
339
+ assert_nil pp.search_relative_directory_parts
340
+
341
+ assert_equal pp.directory, pp.directory_parts.join
342
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
343
+ end
344
+
345
+ def test_rooted_one_long_path_with_short_directory_names
346
+
347
+ pp = ParsedPath.new('/1/2/3/4/./5/6/../file.ext')
348
+
349
+ assert_equal '/1/2/3/4/./5/6/../file.ext', pp.given_path
350
+ assert_equal '/1/2/3/4/5/file.ext', pp.absolute_path
351
+ assert_equal '/1/2/3/4/5/file.ext', pp.compare_path
352
+ assert_equal '/1/2/3/4/5/', pp.directory
353
+ assert_equal '/1/2/3/4/5/', pp.directory_path
354
+ assert_equal '/1/2/3/4/5/', pp.dirname
355
+ assert_equal [ '/', '1/', '2/', '3/', '4/', '5/' ], pp.directory_parts
356
+ assert_equal 'file.ext', pp.file_full_name
357
+ assert_equal 'file.ext', pp.basename
358
+ assert_equal 'file', pp.file_name_only
359
+ assert_equal 'file', pp.stem
360
+ assert_equal '.ext', pp.file_extension
361
+ assert_equal '.ext', pp.extension
362
+ assert_nil pp.search_directory
363
+ assert_nil pp.search_relative_path
364
+ assert_nil pp.search_relative_directory_path
365
+ assert_nil pp.search_relative_directory_parts
366
+
367
+ assert_equal pp.directory, pp.directory_parts.join
368
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
369
+ end
370
+
371
+ def test_unrooted_one_file
372
+
373
+ pwd = '/some-directory'
374
+
375
+ pp = ParsedPath.new('file.ext', pwd: pwd)
376
+
377
+ assert_equal 'file.ext', pp.given_path
378
+ assert_equal '/some-directory/file.ext', pp.absolute_path
379
+ assert_equal '/some-directory/file.ext', pp.compare_path
380
+ assert_equal '/some-directory/', pp.directory
381
+ assert_equal '/some-directory/', pp.directory_path
382
+ assert_equal '/some-directory/', pp.dirname
383
+ assert_equal [ '/', 'some-directory/' ], pp.directory_parts
384
+ assert_equal 'file.ext', pp.file_full_name
385
+ assert_equal 'file.ext', pp.basename
386
+ assert_equal 'file', pp.file_name_only
387
+ assert_equal 'file', pp.stem
388
+ assert_equal '.ext', pp.file_extension
389
+ assert_equal '.ext', pp.extension
390
+ assert_nil pp.search_directory
391
+ assert_nil pp.search_relative_path
392
+ assert_nil pp.search_relative_directory_path
393
+ assert_nil pp.search_relative_directory_parts
394
+
395
+ assert_equal pp.directory, pp.directory_parts.join
396
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
397
+ end
398
+
399
+ def test_unrooted_one_file_from_srd
400
+
401
+ pwd = '/some-directory'
402
+ srd = '/dir-1/dir-2/'
403
+
404
+ pp = ParsedPath.new('file.ext', srd, pwd: pwd)
405
+
406
+ assert_equal 'file.ext', pp.given_path
407
+ assert_equal '/some-directory/file.ext', pp.absolute_path
408
+ assert_equal '/some-directory/file.ext', pp.compare_path
409
+ assert_equal '/some-directory/', pp.directory
410
+ assert_equal '/some-directory/', pp.directory_path
411
+ assert_equal '/some-directory/', pp.dirname
412
+ assert_equal [ '/', 'some-directory/' ], pp.directory_parts
413
+ assert_equal 'file.ext', pp.file_full_name
414
+ assert_equal 'file.ext', pp.basename
415
+ assert_equal 'file', pp.file_name_only
416
+ assert_equal 'file', pp.stem
417
+ assert_equal '.ext', pp.file_extension
418
+ assert_equal '.ext', pp.extension
419
+ assert_equal srd, pp.search_directory
420
+ assert_equal '../../some-directory/file.ext', pp.search_relative_path
421
+ assert_equal '../../some-directory/', pp.search_relative_directory_path
422
+ assert_equal [ '../', '../', 'some-directory/' ], pp.search_relative_directory_parts
423
+
424
+ assert_equal pp.directory, pp.directory_parts.join
425
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
426
+ end
427
+
428
+ def test_unrooted_dir_file
429
+
430
+ pwd = '/some-directory'
431
+
432
+ pp = ParsedPath.new('sub-dir/file.ext', pwd: pwd)
433
+
434
+ assert_equal 'sub-dir/file.ext', pp.given_path
435
+ assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
436
+ assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
437
+ assert_equal '/some-directory/sub-dir/', pp.directory
438
+ assert_equal '/some-directory/sub-dir/', pp.directory_path
439
+ assert_equal '/some-directory/sub-dir/', pp.dirname
440
+ assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
441
+ assert_equal 'file.ext', pp.file_full_name
442
+ assert_equal 'file.ext', pp.basename
443
+ assert_equal 'file', pp.file_name_only
444
+ assert_equal 'file', pp.stem
445
+ assert_equal '.ext', pp.file_extension
446
+ assert_equal '.ext', pp.extension
447
+ assert_nil pp.search_directory
448
+ assert_nil pp.search_relative_path
449
+ assert_nil pp.search_relative_directory_path
450
+ assert_nil pp.search_relative_directory_parts
451
+
452
+ assert_equal pp.directory, pp.directory_parts.join
453
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
454
+ end
455
+
456
+ def test_unrooted_dir_file_2
457
+
458
+ locator = Object.new
459
+
460
+ locator.define_singleton_method(:pwd) { '/some-directory' }
461
+
462
+ pp = ParsedPath.new('sub-dir/file.ext', locator: locator)
463
+
464
+ assert_equal 'sub-dir/file.ext', pp.given_path
465
+ assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
466
+ assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
467
+ assert_equal '/some-directory/sub-dir/', pp.directory
468
+ assert_equal '/some-directory/sub-dir/', pp.directory_path
469
+ assert_equal '/some-directory/sub-dir/', pp.dirname
470
+ assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
471
+ assert_equal 'file.ext', pp.file_full_name
472
+ assert_equal 'file.ext', pp.basename
473
+ assert_equal 'file', pp.file_name_only
474
+ assert_equal 'file', pp.stem
475
+ assert_equal '.ext', pp.file_extension
476
+ assert_equal '.ext', pp.extension
477
+ assert_nil pp.search_directory
478
+ assert_nil pp.search_relative_path
479
+ assert_nil pp.search_relative_directory_path
480
+ assert_nil pp.search_relative_directory_parts
481
+
482
+ assert_equal pp.directory, pp.directory_parts.join
483
+ assert_equal pp.absolute_path, "#{pp.directory_parts.join}#{pp.basename}"
484
+ end
485
+
486
+ def test_recls_stat_case_1
487
+
488
+ pwd = '/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/'
489
+ srd = '.'
490
+
491
+ pp = ParsedPath.new('.', srd, pwd: pwd)
492
+
493
+ assert_equal '.', pp.given_path
494
+ assert_equal pwd, pp.absolute_path
495
+ assert_equal pwd, pp.compare_path
496
+ assert_equal pwd, pp.directory
497
+ assert_equal pwd, pp.directory_path
498
+ assert_equal pwd, pp.dirname
499
+ assert_equal [ '/', 'Users/', 'matthewwilson/', 'dev/', 'freelibs/', 'recls/', '100/', 'recls.Ruby/', 'trunk/' ], pp.directory_parts
500
+ assert_nil pp.file_full_name
501
+ assert_nil pp.basename
502
+ assert_nil pp.file_name_only
503
+ assert_nil pp.stem
504
+ assert_nil pp.file_extension
505
+ assert_nil pp.extension
506
+ assert_equal pwd, pp.search_directory
507
+ assert_equal './', pp.search_relative_path
508
+ assert_equal './', pp.search_relative_directory_path
509
+ assert_equal [ './' ], pp.search_relative_directory_parts
510
+ end
511
+
512
+ def test_recls_stat_case_2
513
+
514
+ pwd = '/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/'
515
+ home = '/Users/matthewwilson'
516
+ srd = '~'
517
+
518
+ pp = ParsedPath.new('.', srd, home: home, pwd: pwd)
519
+
520
+ assert_equal '.', pp.given_path
521
+ assert_equal pwd, pp.absolute_path
522
+ assert_equal pwd, pp.compare_path
523
+ assert_equal pwd, pp.directory
524
+ assert_equal pwd, pp.directory_path
525
+ assert_equal pwd, pp.dirname
526
+ assert_equal [ '/', 'Users/', 'matthewwilson/', 'dev/', 'freelibs/', 'recls/', '100/', 'recls.Ruby/', 'trunk/' ], pp.directory_parts
527
+ assert_nil pp.file_full_name
528
+ assert_nil pp.basename
529
+ assert_nil pp.file_name_only
530
+ assert_nil pp.stem
531
+ assert_nil pp.file_extension
532
+ assert_nil pp.extension
533
+ assert_equal '/Users/matthewwilson/', pp.search_directory
534
+ assert_equal 'dev/freelibs/recls/100/recls.Ruby/trunk/', pp.search_relative_path
535
+ assert_equal 'dev/freelibs/recls/100/recls.Ruby/trunk/', pp.search_relative_directory_path
536
+ assert_equal [ 'dev/', 'freelibs/', 'recls/', '100/', 'recls.Ruby/', 'trunk/' ], pp.search_relative_directory_parts
537
+ end
538
+
539
+ def test_recls_stat_case_3
540
+
541
+ pwd = '/Users/matthewwilson/dev/freelibs/recls/100/recls.Ruby/trunk/'
542
+ home = '/Users/matthewwilson'
543
+ srd = '.'
544
+
545
+ pp = ParsedPath.new('~', srd, home: home, pwd: pwd)
546
+
547
+ assert_equal '~', pp.given_path
548
+ assert_equal '/Users/matthewwilson/', pp.absolute_path
549
+ assert_equal '/Users/matthewwilson/', pp.compare_path
550
+ assert_equal '/Users/matthewwilson/', pp.directory
551
+ assert_equal '/Users/matthewwilson/', pp.directory_path
552
+ assert_equal '/Users/matthewwilson/', pp.dirname
553
+ assert_equal [ '/', 'Users/', 'matthewwilson/' ], pp.directory_parts
554
+ assert_nil pp.file_full_name
555
+ assert_nil pp.basename
556
+ assert_nil pp.file_name_only
557
+ assert_nil pp.stem
558
+ assert_nil pp.file_extension
559
+ assert_nil pp.extension
560
+ assert_equal pwd, pp.search_directory
561
+ assert_equal '../../../../../../', pp.search_relative_path
562
+ assert_equal '../../../../../../', pp.search_relative_directory_path
563
+ assert_equal [ '../', '../', '../', '../', '../', '../' ], pp.search_relative_directory_parts
564
+ end
564
565
  end
565
566
 
567
+
568
+ # ############################## end of file ############################# #
569
+