libpath-ruby 0.2.1 → 0.2.2.1

Sign up to get free protection for your applications and to get access to all the features.
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 +3 -3
  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 +20 -17
  20. data/lib/libpath/internal_/unix/form.rb +117 -112
  21. data/lib/libpath/internal_/windows/drive.rb +62 -59
  22. data/lib/libpath/internal_/windows/form.rb +193 -188
  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 -23
  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
+