libpath-ruby 0.2.2 → 0.2.2.2

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 +74 -74
  7. data/lib/libpath/constants/windows.rb +75 -75
  8. data/lib/libpath/constants.rb +20 -20
  9. data/lib/libpath/diagnostics/parameter_checking.rb +27 -26
  10. data/lib/libpath/diagnostics.rb +1 -1
  11. data/lib/libpath/exceptions/libpath_base_exception.rb +20 -21
  12. data/lib/libpath/exceptions/malformed_name_exception.rb +27 -27
  13. data/lib/libpath/exceptions.rb +1 -1
  14. data/lib/libpath/form/unix.rb +118 -118
  15. data/lib/libpath/form/windows.rb +228 -214
  16. data/lib/libpath/form.rb +20 -21
  17. data/lib/libpath/internal_/array.rb +57 -57
  18. data/lib/libpath/internal_/platform.rb +30 -31
  19. data/lib/libpath/internal_/string.rb +25 -20
  20. data/lib/libpath/internal_/unix/form.rb +124 -119
  21. data/lib/libpath/internal_/windows/drive.rb +80 -75
  22. data/lib/libpath/internal_/windows/form.rb +205 -194
  23. data/lib/libpath/libpath.rb +4 -1
  24. data/lib/libpath/path/unix.rb +120 -118
  25. data/lib/libpath/path/windows.rb +126 -124
  26. data/lib/libpath/path.rb +21 -21
  27. data/lib/libpath/util/unix.rb +261 -261
  28. data/lib/libpath/util/windows.rb +403 -403
  29. data/lib/libpath/util.rb +20 -20
  30. data/lib/libpath/version.rb +25 -26
  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
@@ -12,767 +12,767 @@ require 'libpath/internal_/platform'
12
12
 
13
13
  class Test_existence_of_namespace_LibPath_Path < Test::Unit::TestCase
14
14
 
15
- def test_LibPath_module_exists
15
+ def test_LibPath_module_exists
16
16
 
17
- assert defined?(::LibPath)
18
- end
17
+ assert defined?(::LibPath)
18
+ end
19
19
 
20
- def test_LibPath_Path_module_exists
20
+ def test_LibPath_Path_module_exists
21
21
 
22
- assert defined?(::LibPath::Path)
23
- end
22
+ assert defined?(::LibPath::Path)
23
+ end
24
24
 
25
- def test_LibPath_Path_ParsedPath_class_exists
25
+ def test_LibPath_Path_ParsedPath_class_exists
26
26
 
27
- assert defined?(::LibPath::Path::ParsedPath)
28
- end
27
+ assert defined?(::LibPath::Path::ParsedPath)
28
+ end
29
29
  end
30
30
 
31
31
  class Test_LibPath_Path_ParsedPath < Test::Unit::TestCase
32
32
 
33
- include ::LibPath::Path
33
+ include ::LibPath::Path
34
34
 
35
- def test_nil
35
+ def test_nil
36
36
 
37
- assert_raise(::ArgumentError) { ParsedPath.new(nil) }
38
- end
37
+ assert_raise(::ArgumentError) { ParsedPath.new(nil) }
38
+ end
39
39
 
40
- def test_empty
40
+ def test_empty
41
41
 
42
- assert_raise(::ArgumentError) { ParsedPath.new('') }
43
- end
42
+ assert_raise(::ArgumentError) { ParsedPath.new('') }
43
+ end
44
44
 
45
- def test_root
45
+ def test_root
46
46
 
47
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
47
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
48
48
 
49
- pp = ParsedPath.new('C:\\')
49
+ pp = ParsedPath.new('C:\\')
50
50
 
51
- assert_equal 'C:\\', pp.given_path
52
- assert_equal 'C:\\', pp.absolute_path
53
- assert_equal 'C:\\', pp.compare_path
54
- assert_equal 'C:', pp.volume
55
- assert_equal '\\', pp.directory
56
- assert_equal 'C:\\', pp.directory_path
57
- assert_equal 'C:\\', pp.dirname
58
- assert_equal [ '\\' ], pp.directory_parts
51
+ assert_equal 'C:\\', pp.given_path
52
+ assert_equal 'C:\\', pp.absolute_path
53
+ assert_equal 'C:\\', pp.compare_path
54
+ assert_equal 'C:', pp.volume
55
+ assert_equal '\\', pp.directory
56
+ assert_equal 'C:\\', pp.directory_path
57
+ assert_equal 'C:\\', pp.dirname
58
+ assert_equal [ '\\' ], pp.directory_parts
59
59
 
60
- volume = pp.volume
61
- else
60
+ volume = pp.volume
61
+ else
62
62
 
63
- pp = ParsedPath.new('/')
63
+ pp = ParsedPath.new('/')
64
64
 
65
- assert_equal '/', pp.given_path
66
- assert_equal '/', pp.absolute_path
67
- assert_equal '/', pp.compare_path
68
- assert_equal '/', pp.directory
69
- assert_equal '/', pp.directory_path
70
- assert_equal '/', pp.dirname
71
- assert_equal [ '/' ], pp.directory_parts
65
+ assert_equal '/', pp.given_path
66
+ assert_equal '/', pp.absolute_path
67
+ assert_equal '/', pp.compare_path
68
+ assert_equal '/', pp.directory
69
+ assert_equal '/', pp.directory_path
70
+ assert_equal '/', pp.dirname
71
+ assert_equal [ '/' ], pp.directory_parts
72
72
 
73
- volume = nil
74
- end
75
- assert_nil pp.file_full_name
76
- assert_nil pp.basename
77
- assert_nil pp.file_name_only
78
- assert_nil pp.stem
79
- assert_nil pp.file_extension
80
- assert_nil pp.extension
81
- assert_nil pp.search_directory
82
- assert_nil pp.search_relative_path
83
- assert_nil pp.search_relative_directory_path
84
- assert_nil pp.search_relative_directory_parts
73
+ volume = nil
74
+ end
75
+ assert_nil pp.file_full_name
76
+ assert_nil pp.basename
77
+ assert_nil pp.file_name_only
78
+ assert_nil pp.stem
79
+ assert_nil pp.file_extension
80
+ assert_nil pp.extension
81
+ assert_nil pp.search_directory
82
+ assert_nil pp.search_relative_path
83
+ assert_nil pp.search_relative_directory_path
84
+ assert_nil pp.search_relative_directory_parts
85
85
 
86
- assert_equal pp.directory, pp.directory_parts.join
87
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
88
- end
86
+ assert_equal pp.directory, pp.directory_parts.join
87
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
88
+ end
89
89
 
90
- def test_root_from_srd_1
90
+ def test_root_from_srd_1
91
91
 
92
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
92
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
93
93
 
94
- srd = 'C:/dir-1/dir-2'
95
-
96
- pp = ParsedPath.new('C:\\', srd)
94
+ srd = 'C:/dir-1/dir-2'
95
+
96
+ pp = ParsedPath.new('C:\\', srd)
97
97
 
98
- assert_equal 'C:\\', pp.given_path
99
- assert_equal 'C:\\', pp.absolute_path
100
- assert_equal 'C:\\', pp.compare_path
101
- assert_equal 'C:', pp.volume
102
- assert_equal '\\', pp.directory
103
- assert_equal 'C:\\', pp.directory_path
104
- assert_equal 'C:\\', pp.dirname
105
- assert_equal [ '\\' ], pp.directory_parts
106
-
107
- volume = pp.volume
108
- else
98
+ assert_equal 'C:\\', pp.given_path
99
+ assert_equal 'C:\\', pp.absolute_path
100
+ assert_equal 'C:\\', pp.compare_path
101
+ assert_equal 'C:', pp.volume
102
+ assert_equal '\\', pp.directory
103
+ assert_equal 'C:\\', pp.directory_path
104
+ assert_equal 'C:\\', pp.dirname
105
+ assert_equal [ '\\' ], pp.directory_parts
106
+
107
+ volume = pp.volume
108
+ else
109
109
 
110
- srd = '/dir-1/dir-2'
110
+ srd = '/dir-1/dir-2'
111
111
 
112
- pp = ParsedPath.new('/', srd)
112
+ pp = ParsedPath.new('/', srd)
113
113
 
114
- assert_equal '/', pp.given_path
115
- assert_equal '/', pp.absolute_path
116
- assert_equal '/', pp.compare_path
117
- assert_equal '/', pp.directory
118
- assert_equal '/', pp.directory_path
119
- assert_equal '/', pp.dirname
120
- assert_equal [ '/' ], pp.directory_parts
121
-
122
- volume = nil
123
- end
124
- assert_nil pp.file_full_name
125
- assert_nil pp.basename
126
- assert_nil pp.file_name_only
127
- assert_nil pp.stem
128
- assert_nil pp.file_extension
129
- assert_nil pp.extension
114
+ assert_equal '/', pp.given_path
115
+ assert_equal '/', pp.absolute_path
116
+ assert_equal '/', pp.compare_path
117
+ assert_equal '/', pp.directory
118
+ assert_equal '/', pp.directory_path
119
+ assert_equal '/', pp.dirname
120
+ assert_equal [ '/' ], pp.directory_parts
121
+
122
+ volume = nil
123
+ end
124
+ assert_nil pp.file_full_name
125
+ assert_nil pp.basename
126
+ assert_nil pp.file_name_only
127
+ assert_nil pp.stem
128
+ assert_nil pp.file_extension
129
+ assert_nil pp.extension
130
130
 
131
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
132
-
133
- assert_equal 'C:\\dir-1\\dir-2\\', pp.search_directory
134
- assert_equal '..\\..\\', pp.search_relative_path
135
- assert_equal '..\\..\\', pp.search_relative_directory_path
136
- assert_equal [ '..\\', '..\\' ], pp.search_relative_directory_parts
137
- else
138
-
139
- assert_equal '/dir-1/dir-2/', pp.search_directory
140
- assert_equal '../../', pp.search_relative_path
141
- assert_equal '../../', pp.search_relative_directory_path
142
- assert_equal [ '../', '../' ], pp.search_relative_directory_parts
143
- end
144
-
145
- assert_equal pp.directory, pp.directory_parts.join
146
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
147
- end
148
-
149
- def test_root_from_srd_2
150
-
151
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
152
-
153
- srd = 'C:/'
154
-
155
- pp = ParsedPath.new('C:\\', srd)
156
-
157
- assert_equal 'C:\\', pp.given_path
158
- assert_equal 'C:\\', pp.absolute_path
159
- assert_equal 'C:\\', pp.compare_path
160
- assert_equal 'C:', pp.volume
161
- assert_equal '\\', pp.directory
162
- assert_equal 'C:\\', pp.directory_path
163
- assert_equal 'C:\\', pp.dirname
164
- assert_equal [ '\\' ], pp.directory_parts
165
-
166
- volume = pp.volume
167
- else
168
-
169
- srd = '/'
170
-
171
- pp = ParsedPath.new('/', srd)
172
-
173
- assert_equal '/', pp.given_path
174
- assert_equal '/', pp.absolute_path
175
- assert_equal '/', pp.compare_path
176
- assert_equal '/', pp.directory
177
- assert_equal '/', pp.directory_path
178
- assert_equal '/', pp.dirname
179
- assert_equal [ '/' ], pp.directory_parts
180
-
181
- volume = nil
182
- end
183
- assert_nil pp.file_full_name
184
- assert_nil pp.basename
185
- assert_nil pp.file_name_only
186
- assert_nil pp.stem
187
- assert_nil pp.file_extension
188
- assert_nil pp.extension
189
-
190
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
191
-
192
- assert_equal 'C:\\', pp.search_directory
193
- assert_equal '.\\', pp.search_relative_path
194
- assert_equal '.\\', pp.search_relative_directory_path
195
- assert_equal [ '.\\' ], pp.search_relative_directory_parts
196
- else
197
-
198
- assert_equal '/', pp.search_directory
199
- assert_equal './', pp.search_relative_path
200
- assert_equal './', pp.search_relative_directory_path
201
- assert_equal [ './' ], pp.search_relative_directory_parts
202
- end
203
-
204
- assert_equal pp.directory, pp.directory_parts.join
205
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
206
- end
207
-
208
- def test_rooted_one_dir
209
-
210
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
211
-
212
- pp = ParsedPath.new('G:\\abc\\')
213
-
214
- assert_equal 'G:\\abc\\', pp.given_path
215
- assert_equal 'G:\\abc\\', pp.absolute_path
216
- assert_equal 'G:\\ABC\\', pp.compare_path
217
- assert_equal '\\abc\\', pp.directory
218
- assert_equal 'G:', pp.volume
219
- assert_equal 'G:\\abc\\', pp.directory_path
220
- assert_equal 'G:\\abc\\', pp.dirname
221
- assert_equal [ '\\', 'abc\\' ], pp.directory_parts
222
-
223
- volume = pp.volume
224
- else
225
-
226
- pp = ParsedPath.new('/abc//')
227
-
228
- assert_equal '/abc//', pp.given_path
229
- assert_equal '/abc/', pp.absolute_path
230
- assert_equal '/abc/', pp.compare_path
231
- assert_equal '/abc/', pp.directory
232
- assert_equal '/abc/', pp.directory_path
233
- assert_equal '/abc/', pp.dirname
234
- assert_equal [ '/', 'abc/' ], pp.directory_parts
235
-
236
- volume = nil
237
- end
238
- assert_nil pp.file_full_name
239
- assert_nil pp.basename
240
- assert_nil pp.file_name_only
241
- assert_nil pp.stem
242
- assert_nil pp.file_extension
243
- assert_nil pp.extension
244
- assert_nil pp.search_directory
245
- assert_nil pp.search_relative_path
246
- assert_nil pp.search_relative_directory_path
247
- assert_nil pp.search_relative_directory_parts
248
-
249
- assert_equal pp.directory, pp.directory_parts.join
250
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
251
- end
252
-
253
- def test_rooted_one_dir_from_srd
254
-
255
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
256
-
257
- srd = 'G:/dir-1/dir-2'
258
-
259
- pp = ParsedPath.new('G:\\\\abc\\\\', srd)
260
-
261
- assert_equal 'G:\\\\abc\\\\', pp.given_path
262
- assert_equal 'G:\\abc\\', pp.absolute_path
263
- assert_equal 'G:\\ABC\\', pp.compare_path
264
- assert_equal '\\abc\\', pp.directory
265
- assert_equal 'G:', pp.volume
266
- assert_equal 'G:\\abc\\', pp.directory_path
267
- assert_equal 'G:\\abc\\', pp.dirname
268
- assert_equal [ '\\', 'abc\\' ], pp.directory_parts
269
-
270
- volume = pp.volume
271
- else
272
-
273
- srd = '/dir-1/dir-2'
274
-
275
- pp = ParsedPath.new('//abc//', srd)
276
-
277
- assert_equal '//abc//', pp.given_path
278
- assert_equal '/abc/', pp.absolute_path
279
- assert_equal '/abc/', pp.compare_path
280
- assert_equal '/abc/', pp.directory
281
- assert_equal '/abc/', pp.directory_path
282
- assert_equal '/abc/', pp.dirname
283
- assert_equal [ '/', 'abc/' ], pp.directory_parts
284
-
285
- volume = nil
286
- end
287
- assert_nil pp.file_full_name
288
- assert_nil pp.basename
289
- assert_nil pp.file_name_only
290
- assert_nil pp.stem
291
- assert_nil pp.file_extension
292
- assert_nil pp.extension
293
-
294
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
295
-
296
- assert_equal 'G:\\dir-1\\dir-2\\', pp.search_directory
297
- assert_equal '..\\..\\abc\\', pp.search_relative_path
298
- assert_equal '..\\..\\abc\\', pp.search_relative_directory_path
299
- assert_equal [ '..\\', '..\\', 'abc\\' ], pp.search_relative_directory_parts
300
- else
301
-
302
- end
303
-
304
- assert_equal pp.directory, pp.directory_parts.join
305
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
306
- end
307
-
308
- def test_rooted_one_dir_with_trailing_dot
309
-
310
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
311
-
312
- pp = ParsedPath.new('G:\\abc\\.')
313
-
314
- assert_equal 'G:\\abc\\.', pp.given_path
315
- assert_equal 'G:\\abc\\', pp.absolute_path
316
- assert_equal 'G:\\ABC\\', pp.compare_path
317
- assert_equal 'G:', pp.volume
318
- assert_equal '\\abc\\', pp.directory
319
- assert_equal 'G:\\abc\\', pp.directory_path
320
- assert_equal 'G:\\abc\\', pp.dirname
321
- assert_equal [ '\\', 'abc\\' ], pp.directory_parts
322
-
323
- volume = pp.volume
324
- else
325
-
326
- pp = ParsedPath.new('/abc/.')
327
-
328
- assert_equal '/abc/.', pp.given_path
329
- assert_equal '/abc/', pp.absolute_path
330
- assert_equal '/abc/', pp.compare_path
331
- assert_equal '/abc/', pp.directory
332
- assert_equal '/abc/', pp.directory_path
333
- assert_equal '/abc/', pp.dirname
334
- assert_equal [ '/', 'abc/' ], pp.directory_parts
335
-
336
- volume = nil
337
- end
338
- assert_nil pp.file_full_name
339
- assert_nil pp.basename
340
- assert_nil pp.file_name_only
341
- assert_nil pp.stem
342
- assert_nil pp.file_extension
343
- assert_nil pp.extension
344
- assert_nil pp.search_directory
345
- assert_nil pp.search_relative_path
346
- assert_nil pp.search_relative_directory_path
347
- assert_nil pp.search_relative_directory_parts
348
-
349
- assert_equal pp.directory, pp.directory_parts.join
350
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
351
- end
352
-
353
- def test_rooted_one_file
354
-
355
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
356
-
357
- pp = ParsedPath.new('G:\\file.ext')
358
-
359
- assert_equal 'G:\\file.ext', pp.given_path
360
- assert_equal 'G:\\file.ext', pp.absolute_path
361
- assert_equal 'G:\\FILE.EXT', pp.compare_path
362
- assert_equal 'G:', pp.volume
363
- assert_equal '\\', pp.directory
364
- assert_equal 'G:\\', pp.directory_path
365
- assert_equal 'G:\\', pp.dirname
366
- assert_equal [ '\\' ], pp.directory_parts
367
-
368
- volume = pp.volume
369
- else
370
-
371
- pp = ParsedPath.new('/file.ext')
372
-
373
- assert_equal '/file.ext', pp.given_path
374
- assert_equal '/file.ext', pp.absolute_path
375
- assert_equal '/file.ext', pp.compare_path
376
- assert_equal '/', pp.directory
377
- assert_equal '/', pp.directory_path
378
- assert_equal '/', pp.dirname
379
- assert_equal [ '/' ], pp.directory_parts
380
-
381
- volume = nil
382
- end
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, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
396
- end
397
-
398
- def test_rooted_one_file_without_extension
399
-
400
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
401
-
402
- pp = ParsedPath.new('G:\\file')
403
-
404
- assert_equal 'G:\\file', pp.given_path
405
- assert_equal 'G:\\file', pp.absolute_path
406
- assert_equal 'G:\\FILE', pp.compare_path
407
- assert_equal 'G:', pp.volume
408
- assert_equal '\\', pp.directory
409
- assert_equal 'G:\\', pp.directory_path
410
- assert_equal 'G:\\', pp.dirname
411
- assert_equal [ '\\' ], pp.directory_parts
412
-
413
- volume = pp.volume
414
- else
415
-
416
- pp = ParsedPath.new('/file')
417
-
418
- assert_equal '/file', pp.given_path
419
- assert_equal '/file', pp.absolute_path
420
- assert_equal '/file', pp.compare_path
421
- assert_equal '/', pp.directory
422
- assert_equal '/', pp.directory_path
423
- assert_equal '/', pp.dirname
424
- assert_equal [ '/' ], pp.directory_parts
425
-
426
- volume = nil
427
- end
428
- assert_equal 'file', pp.file_full_name
429
- assert_equal 'file', pp.basename
430
- assert_equal 'file', pp.file_name_only
431
- assert_equal 'file', pp.stem
432
- assert_nil pp.file_extension
433
- assert_nil pp.extension
434
- assert_nil pp.search_directory
435
- assert_nil pp.search_relative_path
436
- assert_nil pp.search_relative_directory_path
437
- assert_nil pp.search_relative_directory_parts
438
-
439
- assert_equal pp.directory, pp.directory_parts.join
440
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
441
- end
442
-
443
- def test_rooted_one_file_without_stem
444
-
445
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
446
-
447
- pp = ParsedPath.new('H:\\.ext')
448
-
449
- assert_equal 'H:\\.ext', pp.given_path
450
- assert_equal 'H:\\.ext', pp.absolute_path
451
- assert_equal 'H:\\.EXT', pp.compare_path
452
- assert_equal 'H:', pp.volume
453
- assert_equal '\\', pp.directory
454
- assert_equal 'H:\\', pp.directory_path
455
- assert_equal 'H:\\', pp.dirname
456
- assert_equal [ '\\' ], pp.directory_parts
457
-
458
- volume = pp.volume
459
- else
460
-
461
- pp = ParsedPath.new('/.ext')
462
-
463
- assert_equal '/.ext', pp.given_path
464
- assert_equal '/.ext', pp.absolute_path
465
- assert_equal '/.ext', pp.compare_path
466
- assert_equal '/', pp.directory
467
- assert_equal '/', pp.directory_path
468
- assert_equal '/', pp.dirname
469
- assert_equal [ '/' ], pp.directory_parts
470
-
471
- volume = nil
472
- end
473
- assert_equal '.ext', pp.file_full_name
474
- assert_equal '.ext', pp.basename
475
- assert_nil pp.file_name_only
476
- assert_nil pp.stem
477
- assert_equal '.ext', pp.file_extension
478
- assert_equal '.ext', pp.extension
479
- assert_nil pp.search_directory
480
- assert_nil pp.search_relative_path
481
- assert_nil pp.search_relative_directory_path
482
- assert_nil pp.search_relative_directory_parts
483
-
484
- assert_equal pp.directory, pp.directory_parts.join
485
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
486
- end
487
-
488
- def test_rooted_one_long_path
489
-
490
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
491
-
492
- pp = ParsedPath.new('C:/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext')
493
-
494
- assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext', pp.given_path
495
- assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.absolute_path
496
- assert_equal 'C:/DIR-1/DIR-2/DIR-3/DIR-4/DIR-5/FILE.EXT', pp.compare_path
497
- assert_equal 'C:', pp.volume
498
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory
499
- assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory_path
500
- assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.dirname
501
- assert_equal [ '/', 'dir-1/', 'dir-2/', 'dir-3/', 'dir-4/', 'dir-5/' ], pp.directory_parts
502
-
503
- volume = pp.volume
504
- else
505
-
506
- pp = ParsedPath.new('/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext')
507
-
508
- assert_equal '/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext', pp.given_path
509
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.absolute_path
510
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.compare_path
511
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory
512
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory_path
513
- assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.dirname
514
- assert_equal [ '/', 'dir-1/', 'dir-2/', 'dir-3/', 'dir-4/', 'dir-5/' ], pp.directory_parts
515
-
516
- volume = nil
517
- end
518
- assert_equal 'file.ext', pp.file_full_name
519
- assert_equal 'file.ext', pp.basename
520
- assert_equal 'file', pp.file_name_only
521
- assert_equal 'file', pp.stem
522
- assert_equal '.ext', pp.file_extension
523
- assert_equal '.ext', pp.extension
524
- assert_nil pp.search_directory
525
- assert_nil pp.search_relative_path
526
- assert_nil pp.search_relative_directory_path
527
- assert_nil pp.search_relative_directory_parts
528
-
529
- assert_equal pp.directory, pp.directory_parts.join
530
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
531
- end
532
-
533
- def test_rooted_one_long_path_with_short_directory_names
534
-
535
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
536
-
537
- pp = ParsedPath.new('C:/1/2/3/4/./5/6/../file.ext')
538
-
539
- assert_equal 'C:/1/2/3/4/./5/6/../file.ext', pp.given_path
540
- assert_equal 'C:/1/2/3/4/5/file.ext', pp.absolute_path
541
- assert_equal 'C:/1/2/3/4/5/FILE.EXT', pp.compare_path
542
- assert_equal 'C:', pp.volume
543
- assert_equal '/1/2/3/4/5/', pp.directory
544
- assert_equal 'C:/1/2/3/4/5/', pp.directory_path
545
- assert_equal 'C:/1/2/3/4/5/', pp.dirname
546
- assert_equal [ '/', '1/', '2/', '3/', '4/', '5/' ], pp.directory_parts
547
-
548
- volume = pp.volume
549
- else
550
-
551
- pp = ParsedPath.new('/1/2/3/4/./5/6/../file.ext')
552
-
553
- assert_equal '/1/2/3/4/./5/6/../file.ext', pp.given_path
554
- assert_equal '/1/2/3/4/5/file.ext', pp.absolute_path
555
- assert_equal '/1/2/3/4/5/file.ext', pp.compare_path
556
- assert_equal '/1/2/3/4/5/', pp.directory
557
- assert_equal '/1/2/3/4/5/', pp.directory_path
558
- assert_equal '/1/2/3/4/5/', pp.dirname
559
- assert_equal [ '/', '1/', '2/', '3/', '4/', '5/' ], pp.directory_parts
560
-
561
- volume = nil
562
- end
563
- assert_equal 'file.ext', pp.file_full_name
564
- assert_equal 'file.ext', pp.basename
565
- assert_equal 'file', pp.file_name_only
566
- assert_equal 'file', pp.stem
567
- assert_equal '.ext', pp.file_extension
568
- assert_equal '.ext', pp.extension
569
- assert_nil pp.search_directory
570
- assert_nil pp.search_relative_path
571
- assert_nil pp.search_relative_directory_path
572
- assert_nil pp.search_relative_directory_parts
573
-
574
- assert_equal pp.directory, pp.directory_parts.join
575
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
576
- end
577
-
578
- def test_unrooted_one_file
579
-
580
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
581
-
582
- pwd = '/some-directory'
583
-
584
- pp = ParsedPath.new('file.ext', pwd: pwd)
585
-
586
- assert_equal 'file.ext', pp.given_path
587
- assert_equal '/some-directory\\file.ext', pp.absolute_path
588
- assert_equal '/SOME-DIRECTORY\\FILE.EXT', pp.compare_path
589
- assert_nil pp.volume
590
- assert_equal '/some-directory\\', pp.directory
591
- assert_equal '/some-directory\\', pp.directory_path
592
- assert_equal '/some-directory\\', pp.dirname
593
- assert_equal [ '/', 'some-directory\\' ], pp.directory_parts
594
-
595
- volume = pp.volume
596
- else
597
-
598
- pwd = '/some-directory'
599
-
600
- pp = ParsedPath.new('file.ext', pwd: pwd)
601
-
602
- assert_equal 'file.ext', pp.given_path
603
- assert_equal '/some-directory/file.ext', pp.absolute_path
604
- assert_equal '/some-directory/file.ext', pp.compare_path
605
- assert_equal '/some-directory/', pp.directory
606
- assert_equal '/some-directory/', pp.directory_path
607
- assert_equal '/some-directory/', pp.dirname
608
- assert_equal [ '/', 'some-directory/' ], pp.directory_parts
609
-
610
- volume = nil
611
- end
612
- assert_equal 'file.ext', pp.file_full_name
613
- assert_equal 'file.ext', pp.basename
614
- assert_equal 'file', pp.file_name_only
615
- assert_equal 'file', pp.stem
616
- assert_equal '.ext', pp.file_extension
617
- assert_equal '.ext', pp.extension
618
- assert_nil pp.search_directory
619
- assert_nil pp.search_relative_path
620
- assert_nil pp.search_relative_directory_path
621
- assert_nil pp.search_relative_directory_parts
622
-
623
- assert_equal pp.directory, pp.directory_parts.join
624
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
625
- end
626
-
627
- def test_unrooted_one_file_from_srd
628
-
629
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
630
-
631
- pwd = '/some-directory'
632
- srd = '/dir-1/dir-2/'
633
-
634
- pp = ParsedPath.new('file.ext', pwd: pwd)
635
-
636
- assert_equal 'file.ext', pp.given_path
637
- assert_equal '/some-directory\\file.ext', pp.absolute_path
638
- assert_equal '/SOME-DIRECTORY\\FILE.EXT', pp.compare_path
639
- assert_nil pp.volume
640
- assert_equal '/some-directory\\', pp.directory
641
- assert_equal '/some-directory\\', pp.directory_path
642
- assert_equal '/some-directory\\', pp.dirname
643
- assert_equal [ '/', 'some-directory\\' ], pp.directory_parts
644
-
645
- volume = pp.volume
646
- else
647
-
648
- pwd = '/some-directory'
649
- srd = '/dir-1/dir-2/'
650
-
651
- pp = ParsedPath.new('file.ext', pwd: pwd)
652
-
653
- assert_equal 'file.ext', pp.given_path
654
- assert_equal '/some-directory/file.ext', pp.absolute_path
655
- assert_equal '/some-directory/file.ext', pp.compare_path
656
- assert_equal '/some-directory/', pp.directory
657
- assert_equal '/some-directory/', pp.directory_path
658
- assert_equal '/some-directory/', pp.dirname
659
- assert_equal [ '/', 'some-directory/' ], pp.directory_parts
660
-
661
- volume = nil
662
- end
663
- assert_equal 'file.ext', pp.file_full_name
664
- assert_equal 'file.ext', pp.basename
665
- assert_equal 'file', pp.file_name_only
666
- assert_equal 'file', pp.stem
667
- assert_equal '.ext', pp.file_extension
668
- assert_equal '.ext', pp.extension
669
- assert_nil pp.search_directory
670
- assert_nil pp.search_relative_path
671
- assert_nil pp.search_relative_directory_path
672
- assert_nil pp.search_relative_directory_parts
673
-
674
- assert_equal pp.directory, pp.directory_parts.join
675
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
676
- end
677
-
678
- def test_unrooted_dir_file
679
-
680
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
681
-
682
- pwd = '/some-directory'
683
-
684
- pp = ParsedPath.new('sub-dir/file.ext', pwd: pwd)
685
-
686
- assert_equal 'sub-dir/file.ext', pp.given_path
687
- assert_equal '/some-directory\\sub-dir/file.ext', pp.absolute_path
688
- assert_equal '/SOME-DIRECTORY\\SUB-DIR/FILE.EXT', pp.compare_path
689
- assert_nil pp.volume
690
- assert_equal '/some-directory\\sub-dir/', pp.directory
691
- assert_equal '/some-directory\\sub-dir/', pp.directory_path
692
- assert_equal '/some-directory\\sub-dir/', pp.dirname
693
- assert_equal [ '/', 'some-directory\\', 'sub-dir/' ], pp.directory_parts
694
-
695
- volume = pp.volume
696
- else
697
-
698
- pwd = '/some-directory'
699
-
700
- pp = ParsedPath.new('sub-dir/file.ext', pwd: pwd)
701
-
702
- assert_equal 'sub-dir/file.ext', pp.given_path
703
- assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
704
- assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
705
- assert_equal '/some-directory/sub-dir/', pp.directory
706
- assert_equal '/some-directory/sub-dir/', pp.directory_path
707
- assert_equal '/some-directory/sub-dir/', pp.dirname
708
- assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
709
-
710
- volume = nil
711
- end
712
- assert_equal 'file.ext', pp.file_full_name
713
- assert_equal 'file.ext', pp.basename
714
- assert_equal 'file', pp.file_name_only
715
- assert_equal 'file', pp.stem
716
- assert_equal '.ext', pp.file_extension
717
- assert_equal '.ext', pp.extension
718
- assert_nil pp.search_directory
719
- assert_nil pp.search_relative_path
720
- assert_nil pp.search_relative_directory_path
721
- assert_nil pp.search_relative_directory_parts
722
-
723
- assert_equal pp.directory, pp.directory_parts.join
724
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
725
- end
726
-
727
- def test_unrooted_dir_file_2
728
-
729
- locator = Object.new
730
-
731
- if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
732
-
733
- locator.define_singleton_method(:pwd) { '/some-directory' }
734
-
735
- pp = ParsedPath.new('sub-dir/file.ext', locator: locator)
736
-
737
- assert_equal 'sub-dir/file.ext', pp.given_path
738
- assert_equal '/some-directory\\sub-dir/file.ext', pp.absolute_path
739
- assert_equal '/SOME-DIRECTORY\\SUB-DIR/FILE.EXT', pp.compare_path
740
- assert_nil pp.volume
741
- assert_equal '/some-directory\\sub-dir/', pp.directory
742
- assert_equal '/some-directory\\sub-dir/', pp.directory_path
743
- assert_equal '/some-directory\\sub-dir/', pp.dirname
744
- assert_equal [ '/', 'some-directory\\', 'sub-dir/' ], pp.directory_parts
745
-
746
- volume = pp.volume
747
- else
748
-
749
- locator.define_singleton_method(:pwd) { '/some-directory' }
750
-
751
- pp = ParsedPath.new('sub-dir/file.ext', locator: locator)
752
-
753
- assert_equal 'sub-dir/file.ext', pp.given_path
754
- assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
755
- assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
756
- assert_equal '/some-directory/sub-dir/', pp.directory
757
- assert_equal '/some-directory/sub-dir/', pp.directory_path
758
- assert_equal '/some-directory/sub-dir/', pp.dirname
759
- assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
760
-
761
- volume = nil
762
- end
763
- assert_equal 'file.ext', pp.file_full_name
764
- assert_equal 'file.ext', pp.basename
765
- assert_equal 'file', pp.file_name_only
766
- assert_equal 'file', pp.stem
767
- assert_equal '.ext', pp.file_extension
768
- assert_equal '.ext', pp.extension
769
- assert_nil pp.search_directory
770
- assert_nil pp.search_relative_path
771
- assert_nil pp.search_relative_directory_path
772
- assert_nil pp.search_relative_directory_parts
773
-
774
- assert_equal pp.directory, pp.directory_parts.join
775
- assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
776
- end
131
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
132
+
133
+ assert_equal 'C:\\dir-1\\dir-2\\', pp.search_directory
134
+ assert_equal '..\\..\\', pp.search_relative_path
135
+ assert_equal '..\\..\\', pp.search_relative_directory_path
136
+ assert_equal [ '..\\', '..\\' ], pp.search_relative_directory_parts
137
+ else
138
+
139
+ assert_equal '/dir-1/dir-2/', pp.search_directory
140
+ assert_equal '../../', pp.search_relative_path
141
+ assert_equal '../../', pp.search_relative_directory_path
142
+ assert_equal [ '../', '../' ], pp.search_relative_directory_parts
143
+ end
144
+
145
+ assert_equal pp.directory, pp.directory_parts.join
146
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
147
+ end
148
+
149
+ def test_root_from_srd_2
150
+
151
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
152
+
153
+ srd = 'C:/'
154
+
155
+ pp = ParsedPath.new('C:\\', srd)
156
+
157
+ assert_equal 'C:\\', pp.given_path
158
+ assert_equal 'C:\\', pp.absolute_path
159
+ assert_equal 'C:\\', pp.compare_path
160
+ assert_equal 'C:', pp.volume
161
+ assert_equal '\\', pp.directory
162
+ assert_equal 'C:\\', pp.directory_path
163
+ assert_equal 'C:\\', pp.dirname
164
+ assert_equal [ '\\' ], pp.directory_parts
165
+
166
+ volume = pp.volume
167
+ else
168
+
169
+ srd = '/'
170
+
171
+ pp = ParsedPath.new('/', srd)
172
+
173
+ assert_equal '/', pp.given_path
174
+ assert_equal '/', pp.absolute_path
175
+ assert_equal '/', pp.compare_path
176
+ assert_equal '/', pp.directory
177
+ assert_equal '/', pp.directory_path
178
+ assert_equal '/', pp.dirname
179
+ assert_equal [ '/' ], pp.directory_parts
180
+
181
+ volume = nil
182
+ end
183
+ assert_nil pp.file_full_name
184
+ assert_nil pp.basename
185
+ assert_nil pp.file_name_only
186
+ assert_nil pp.stem
187
+ assert_nil pp.file_extension
188
+ assert_nil pp.extension
189
+
190
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
191
+
192
+ assert_equal 'C:\\', pp.search_directory
193
+ assert_equal '.\\', pp.search_relative_path
194
+ assert_equal '.\\', pp.search_relative_directory_path
195
+ assert_equal [ '.\\' ], pp.search_relative_directory_parts
196
+ else
197
+
198
+ assert_equal '/', pp.search_directory
199
+ assert_equal './', pp.search_relative_path
200
+ assert_equal './', pp.search_relative_directory_path
201
+ assert_equal [ './' ], pp.search_relative_directory_parts
202
+ end
203
+
204
+ assert_equal pp.directory, pp.directory_parts.join
205
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
206
+ end
207
+
208
+ def test_rooted_one_dir
209
+
210
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
211
+
212
+ pp = ParsedPath.new('G:\\abc\\')
213
+
214
+ assert_equal 'G:\\abc\\', pp.given_path
215
+ assert_equal 'G:\\abc\\', pp.absolute_path
216
+ assert_equal 'G:\\ABC\\', pp.compare_path
217
+ assert_equal '\\abc\\', pp.directory
218
+ assert_equal 'G:', pp.volume
219
+ assert_equal 'G:\\abc\\', pp.directory_path
220
+ assert_equal 'G:\\abc\\', pp.dirname
221
+ assert_equal [ '\\', 'abc\\' ], pp.directory_parts
222
+
223
+ volume = pp.volume
224
+ else
225
+
226
+ pp = ParsedPath.new('/abc//')
227
+
228
+ assert_equal '/abc//', pp.given_path
229
+ assert_equal '/abc/', pp.absolute_path
230
+ assert_equal '/abc/', pp.compare_path
231
+ assert_equal '/abc/', pp.directory
232
+ assert_equal '/abc/', pp.directory_path
233
+ assert_equal '/abc/', pp.dirname
234
+ assert_equal [ '/', 'abc/' ], pp.directory_parts
235
+
236
+ volume = nil
237
+ end
238
+ assert_nil pp.file_full_name
239
+ assert_nil pp.basename
240
+ assert_nil pp.file_name_only
241
+ assert_nil pp.stem
242
+ assert_nil pp.file_extension
243
+ assert_nil pp.extension
244
+ assert_nil pp.search_directory
245
+ assert_nil pp.search_relative_path
246
+ assert_nil pp.search_relative_directory_path
247
+ assert_nil pp.search_relative_directory_parts
248
+
249
+ assert_equal pp.directory, pp.directory_parts.join
250
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
251
+ end
252
+
253
+ def test_rooted_one_dir_from_srd
254
+
255
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
256
+
257
+ srd = 'G:/dir-1/dir-2'
258
+
259
+ pp = ParsedPath.new('G:\\\\abc\\\\', srd)
260
+
261
+ assert_equal 'G:\\\\abc\\\\', pp.given_path
262
+ assert_equal 'G:\\abc\\', pp.absolute_path
263
+ assert_equal 'G:\\ABC\\', pp.compare_path
264
+ assert_equal '\\abc\\', pp.directory
265
+ assert_equal 'G:', pp.volume
266
+ assert_equal 'G:\\abc\\', pp.directory_path
267
+ assert_equal 'G:\\abc\\', pp.dirname
268
+ assert_equal [ '\\', 'abc\\' ], pp.directory_parts
269
+
270
+ volume = pp.volume
271
+ else
272
+
273
+ srd = '/dir-1/dir-2'
274
+
275
+ pp = ParsedPath.new('//abc//', srd)
276
+
277
+ assert_equal '//abc//', pp.given_path
278
+ assert_equal '/abc/', pp.absolute_path
279
+ assert_equal '/abc/', pp.compare_path
280
+ assert_equal '/abc/', pp.directory
281
+ assert_equal '/abc/', pp.directory_path
282
+ assert_equal '/abc/', pp.dirname
283
+ assert_equal [ '/', 'abc/' ], pp.directory_parts
284
+
285
+ volume = nil
286
+ end
287
+ assert_nil pp.file_full_name
288
+ assert_nil pp.basename
289
+ assert_nil pp.file_name_only
290
+ assert_nil pp.stem
291
+ assert_nil pp.file_extension
292
+ assert_nil pp.extension
293
+
294
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
295
+
296
+ assert_equal 'G:\\dir-1\\dir-2\\', pp.search_directory
297
+ assert_equal '..\\..\\abc\\', pp.search_relative_path
298
+ assert_equal '..\\..\\abc\\', pp.search_relative_directory_path
299
+ assert_equal [ '..\\', '..\\', 'abc\\' ], pp.search_relative_directory_parts
300
+ else
301
+
302
+ end
303
+
304
+ assert_equal pp.directory, pp.directory_parts.join
305
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
306
+ end
307
+
308
+ def test_rooted_one_dir_with_trailing_dot
309
+
310
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
311
+
312
+ pp = ParsedPath.new('G:\\abc\\.')
313
+
314
+ assert_equal 'G:\\abc\\.', pp.given_path
315
+ assert_equal 'G:\\abc\\', pp.absolute_path
316
+ assert_equal 'G:\\ABC\\', pp.compare_path
317
+ assert_equal 'G:', pp.volume
318
+ assert_equal '\\abc\\', pp.directory
319
+ assert_equal 'G:\\abc\\', pp.directory_path
320
+ assert_equal 'G:\\abc\\', pp.dirname
321
+ assert_equal [ '\\', 'abc\\' ], pp.directory_parts
322
+
323
+ volume = pp.volume
324
+ else
325
+
326
+ pp = ParsedPath.new('/abc/.')
327
+
328
+ assert_equal '/abc/.', pp.given_path
329
+ assert_equal '/abc/', pp.absolute_path
330
+ assert_equal '/abc/', pp.compare_path
331
+ assert_equal '/abc/', pp.directory
332
+ assert_equal '/abc/', pp.directory_path
333
+ assert_equal '/abc/', pp.dirname
334
+ assert_equal [ '/', 'abc/' ], pp.directory_parts
335
+
336
+ volume = nil
337
+ end
338
+ assert_nil pp.file_full_name
339
+ assert_nil pp.basename
340
+ assert_nil pp.file_name_only
341
+ assert_nil pp.stem
342
+ assert_nil pp.file_extension
343
+ assert_nil pp.extension
344
+ assert_nil pp.search_directory
345
+ assert_nil pp.search_relative_path
346
+ assert_nil pp.search_relative_directory_path
347
+ assert_nil pp.search_relative_directory_parts
348
+
349
+ assert_equal pp.directory, pp.directory_parts.join
350
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
351
+ end
352
+
353
+ def test_rooted_one_file
354
+
355
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
356
+
357
+ pp = ParsedPath.new('G:\\file.ext')
358
+
359
+ assert_equal 'G:\\file.ext', pp.given_path
360
+ assert_equal 'G:\\file.ext', pp.absolute_path
361
+ assert_equal 'G:\\FILE.EXT', pp.compare_path
362
+ assert_equal 'G:', pp.volume
363
+ assert_equal '\\', pp.directory
364
+ assert_equal 'G:\\', pp.directory_path
365
+ assert_equal 'G:\\', pp.dirname
366
+ assert_equal [ '\\' ], pp.directory_parts
367
+
368
+ volume = pp.volume
369
+ else
370
+
371
+ pp = ParsedPath.new('/file.ext')
372
+
373
+ assert_equal '/file.ext', pp.given_path
374
+ assert_equal '/file.ext', pp.absolute_path
375
+ assert_equal '/file.ext', pp.compare_path
376
+ assert_equal '/', pp.directory
377
+ assert_equal '/', pp.directory_path
378
+ assert_equal '/', pp.dirname
379
+ assert_equal [ '/' ], pp.directory_parts
380
+
381
+ volume = nil
382
+ end
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, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
396
+ end
397
+
398
+ def test_rooted_one_file_without_extension
399
+
400
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
401
+
402
+ pp = ParsedPath.new('G:\\file')
403
+
404
+ assert_equal 'G:\\file', pp.given_path
405
+ assert_equal 'G:\\file', pp.absolute_path
406
+ assert_equal 'G:\\FILE', pp.compare_path
407
+ assert_equal 'G:', pp.volume
408
+ assert_equal '\\', pp.directory
409
+ assert_equal 'G:\\', pp.directory_path
410
+ assert_equal 'G:\\', pp.dirname
411
+ assert_equal [ '\\' ], pp.directory_parts
412
+
413
+ volume = pp.volume
414
+ else
415
+
416
+ pp = ParsedPath.new('/file')
417
+
418
+ assert_equal '/file', pp.given_path
419
+ assert_equal '/file', pp.absolute_path
420
+ assert_equal '/file', pp.compare_path
421
+ assert_equal '/', pp.directory
422
+ assert_equal '/', pp.directory_path
423
+ assert_equal '/', pp.dirname
424
+ assert_equal [ '/' ], pp.directory_parts
425
+
426
+ volume = nil
427
+ end
428
+ assert_equal 'file', pp.file_full_name
429
+ assert_equal 'file', pp.basename
430
+ assert_equal 'file', pp.file_name_only
431
+ assert_equal 'file', pp.stem
432
+ assert_nil pp.file_extension
433
+ assert_nil pp.extension
434
+ assert_nil pp.search_directory
435
+ assert_nil pp.search_relative_path
436
+ assert_nil pp.search_relative_directory_path
437
+ assert_nil pp.search_relative_directory_parts
438
+
439
+ assert_equal pp.directory, pp.directory_parts.join
440
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
441
+ end
442
+
443
+ def test_rooted_one_file_without_stem
444
+
445
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
446
+
447
+ pp = ParsedPath.new('H:\\.ext')
448
+
449
+ assert_equal 'H:\\.ext', pp.given_path
450
+ assert_equal 'H:\\.ext', pp.absolute_path
451
+ assert_equal 'H:\\.EXT', pp.compare_path
452
+ assert_equal 'H:', pp.volume
453
+ assert_equal '\\', pp.directory
454
+ assert_equal 'H:\\', pp.directory_path
455
+ assert_equal 'H:\\', pp.dirname
456
+ assert_equal [ '\\' ], pp.directory_parts
457
+
458
+ volume = pp.volume
459
+ else
460
+
461
+ pp = ParsedPath.new('/.ext')
462
+
463
+ assert_equal '/.ext', pp.given_path
464
+ assert_equal '/.ext', pp.absolute_path
465
+ assert_equal '/.ext', pp.compare_path
466
+ assert_equal '/', pp.directory
467
+ assert_equal '/', pp.directory_path
468
+ assert_equal '/', pp.dirname
469
+ assert_equal [ '/' ], pp.directory_parts
470
+
471
+ volume = nil
472
+ end
473
+ assert_equal '.ext', pp.file_full_name
474
+ assert_equal '.ext', pp.basename
475
+ assert_nil pp.file_name_only
476
+ assert_nil pp.stem
477
+ assert_equal '.ext', pp.file_extension
478
+ assert_equal '.ext', pp.extension
479
+ assert_nil pp.search_directory
480
+ assert_nil pp.search_relative_path
481
+ assert_nil pp.search_relative_directory_path
482
+ assert_nil pp.search_relative_directory_parts
483
+
484
+ assert_equal pp.directory, pp.directory_parts.join
485
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
486
+ end
487
+
488
+ def test_rooted_one_long_path
489
+
490
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
491
+
492
+ pp = ParsedPath.new('C:/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext')
493
+
494
+ assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext', pp.given_path
495
+ assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.absolute_path
496
+ assert_equal 'C:/DIR-1/DIR-2/DIR-3/DIR-4/DIR-5/FILE.EXT', pp.compare_path
497
+ assert_equal 'C:', pp.volume
498
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory
499
+ assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory_path
500
+ assert_equal 'C:/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.dirname
501
+ assert_equal [ '/', 'dir-1/', 'dir-2/', 'dir-3/', 'dir-4/', 'dir-5/' ], pp.directory_parts
502
+
503
+ volume = pp.volume
504
+ else
505
+
506
+ pp = ParsedPath.new('/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext')
507
+
508
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/./dir-5/dir-6/../file.ext', pp.given_path
509
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.absolute_path
510
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/file.ext', pp.compare_path
511
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory
512
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.directory_path
513
+ assert_equal '/dir-1/dir-2/dir-3/dir-4/dir-5/', pp.dirname
514
+ assert_equal [ '/', 'dir-1/', 'dir-2/', 'dir-3/', 'dir-4/', 'dir-5/' ], pp.directory_parts
515
+
516
+ volume = nil
517
+ end
518
+ assert_equal 'file.ext', pp.file_full_name
519
+ assert_equal 'file.ext', pp.basename
520
+ assert_equal 'file', pp.file_name_only
521
+ assert_equal 'file', pp.stem
522
+ assert_equal '.ext', pp.file_extension
523
+ assert_equal '.ext', pp.extension
524
+ assert_nil pp.search_directory
525
+ assert_nil pp.search_relative_path
526
+ assert_nil pp.search_relative_directory_path
527
+ assert_nil pp.search_relative_directory_parts
528
+
529
+ assert_equal pp.directory, pp.directory_parts.join
530
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
531
+ end
532
+
533
+ def test_rooted_one_long_path_with_short_directory_names
534
+
535
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
536
+
537
+ pp = ParsedPath.new('C:/1/2/3/4/./5/6/../file.ext')
538
+
539
+ assert_equal 'C:/1/2/3/4/./5/6/../file.ext', pp.given_path
540
+ assert_equal 'C:/1/2/3/4/5/file.ext', pp.absolute_path
541
+ assert_equal 'C:/1/2/3/4/5/FILE.EXT', pp.compare_path
542
+ assert_equal 'C:', pp.volume
543
+ assert_equal '/1/2/3/4/5/', pp.directory
544
+ assert_equal 'C:/1/2/3/4/5/', pp.directory_path
545
+ assert_equal 'C:/1/2/3/4/5/', pp.dirname
546
+ assert_equal [ '/', '1/', '2/', '3/', '4/', '5/' ], pp.directory_parts
547
+
548
+ volume = pp.volume
549
+ else
550
+
551
+ pp = ParsedPath.new('/1/2/3/4/./5/6/../file.ext')
552
+
553
+ assert_equal '/1/2/3/4/./5/6/../file.ext', pp.given_path
554
+ assert_equal '/1/2/3/4/5/file.ext', pp.absolute_path
555
+ assert_equal '/1/2/3/4/5/file.ext', pp.compare_path
556
+ assert_equal '/1/2/3/4/5/', pp.directory
557
+ assert_equal '/1/2/3/4/5/', pp.directory_path
558
+ assert_equal '/1/2/3/4/5/', pp.dirname
559
+ assert_equal [ '/', '1/', '2/', '3/', '4/', '5/' ], pp.directory_parts
560
+
561
+ volume = nil
562
+ end
563
+ assert_equal 'file.ext', pp.file_full_name
564
+ assert_equal 'file.ext', pp.basename
565
+ assert_equal 'file', pp.file_name_only
566
+ assert_equal 'file', pp.stem
567
+ assert_equal '.ext', pp.file_extension
568
+ assert_equal '.ext', pp.extension
569
+ assert_nil pp.search_directory
570
+ assert_nil pp.search_relative_path
571
+ assert_nil pp.search_relative_directory_path
572
+ assert_nil pp.search_relative_directory_parts
573
+
574
+ assert_equal pp.directory, pp.directory_parts.join
575
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
576
+ end
577
+
578
+ def test_unrooted_one_file
579
+
580
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
581
+
582
+ pwd = '/some-directory'
583
+
584
+ pp = ParsedPath.new('file.ext', pwd: pwd)
585
+
586
+ assert_equal 'file.ext', pp.given_path
587
+ assert_equal '/some-directory\\file.ext', pp.absolute_path
588
+ assert_equal '/SOME-DIRECTORY\\FILE.EXT', pp.compare_path
589
+ assert_nil pp.volume
590
+ assert_equal '/some-directory\\', pp.directory
591
+ assert_equal '/some-directory\\', pp.directory_path
592
+ assert_equal '/some-directory\\', pp.dirname
593
+ assert_equal [ '/', 'some-directory\\' ], pp.directory_parts
594
+
595
+ volume = pp.volume
596
+ else
597
+
598
+ pwd = '/some-directory'
599
+
600
+ pp = ParsedPath.new('file.ext', pwd: pwd)
601
+
602
+ assert_equal 'file.ext', pp.given_path
603
+ assert_equal '/some-directory/file.ext', pp.absolute_path
604
+ assert_equal '/some-directory/file.ext', pp.compare_path
605
+ assert_equal '/some-directory/', pp.directory
606
+ assert_equal '/some-directory/', pp.directory_path
607
+ assert_equal '/some-directory/', pp.dirname
608
+ assert_equal [ '/', 'some-directory/' ], pp.directory_parts
609
+
610
+ volume = nil
611
+ end
612
+ assert_equal 'file.ext', pp.file_full_name
613
+ assert_equal 'file.ext', pp.basename
614
+ assert_equal 'file', pp.file_name_only
615
+ assert_equal 'file', pp.stem
616
+ assert_equal '.ext', pp.file_extension
617
+ assert_equal '.ext', pp.extension
618
+ assert_nil pp.search_directory
619
+ assert_nil pp.search_relative_path
620
+ assert_nil pp.search_relative_directory_path
621
+ assert_nil pp.search_relative_directory_parts
622
+
623
+ assert_equal pp.directory, pp.directory_parts.join
624
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
625
+ end
626
+
627
+ def test_unrooted_one_file_from_srd
628
+
629
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
630
+
631
+ pwd = '/some-directory'
632
+ srd = '/dir-1/dir-2/'
633
+
634
+ pp = ParsedPath.new('file.ext', pwd: pwd)
635
+
636
+ assert_equal 'file.ext', pp.given_path
637
+ assert_equal '/some-directory\\file.ext', pp.absolute_path
638
+ assert_equal '/SOME-DIRECTORY\\FILE.EXT', pp.compare_path
639
+ assert_nil pp.volume
640
+ assert_equal '/some-directory\\', pp.directory
641
+ assert_equal '/some-directory\\', pp.directory_path
642
+ assert_equal '/some-directory\\', pp.dirname
643
+ assert_equal [ '/', 'some-directory\\' ], pp.directory_parts
644
+
645
+ volume = pp.volume
646
+ else
647
+
648
+ pwd = '/some-directory'
649
+ srd = '/dir-1/dir-2/'
650
+
651
+ pp = ParsedPath.new('file.ext', pwd: pwd)
652
+
653
+ assert_equal 'file.ext', pp.given_path
654
+ assert_equal '/some-directory/file.ext', pp.absolute_path
655
+ assert_equal '/some-directory/file.ext', pp.compare_path
656
+ assert_equal '/some-directory/', pp.directory
657
+ assert_equal '/some-directory/', pp.directory_path
658
+ assert_equal '/some-directory/', pp.dirname
659
+ assert_equal [ '/', 'some-directory/' ], pp.directory_parts
660
+
661
+ volume = nil
662
+ end
663
+ assert_equal 'file.ext', pp.file_full_name
664
+ assert_equal 'file.ext', pp.basename
665
+ assert_equal 'file', pp.file_name_only
666
+ assert_equal 'file', pp.stem
667
+ assert_equal '.ext', pp.file_extension
668
+ assert_equal '.ext', pp.extension
669
+ assert_nil pp.search_directory
670
+ assert_nil pp.search_relative_path
671
+ assert_nil pp.search_relative_directory_path
672
+ assert_nil pp.search_relative_directory_parts
673
+
674
+ assert_equal pp.directory, pp.directory_parts.join
675
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
676
+ end
677
+
678
+ def test_unrooted_dir_file
679
+
680
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
681
+
682
+ pwd = '/some-directory'
683
+
684
+ pp = ParsedPath.new('sub-dir/file.ext', pwd: pwd)
685
+
686
+ assert_equal 'sub-dir/file.ext', pp.given_path
687
+ assert_equal '/some-directory\\sub-dir/file.ext', pp.absolute_path
688
+ assert_equal '/SOME-DIRECTORY\\SUB-DIR/FILE.EXT', pp.compare_path
689
+ assert_nil pp.volume
690
+ assert_equal '/some-directory\\sub-dir/', pp.directory
691
+ assert_equal '/some-directory\\sub-dir/', pp.directory_path
692
+ assert_equal '/some-directory\\sub-dir/', pp.dirname
693
+ assert_equal [ '/', 'some-directory\\', 'sub-dir/' ], pp.directory_parts
694
+
695
+ volume = pp.volume
696
+ else
697
+
698
+ pwd = '/some-directory'
699
+
700
+ pp = ParsedPath.new('sub-dir/file.ext', pwd: pwd)
701
+
702
+ assert_equal 'sub-dir/file.ext', pp.given_path
703
+ assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
704
+ assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
705
+ assert_equal '/some-directory/sub-dir/', pp.directory
706
+ assert_equal '/some-directory/sub-dir/', pp.directory_path
707
+ assert_equal '/some-directory/sub-dir/', pp.dirname
708
+ assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
709
+
710
+ volume = nil
711
+ end
712
+ assert_equal 'file.ext', pp.file_full_name
713
+ assert_equal 'file.ext', pp.basename
714
+ assert_equal 'file', pp.file_name_only
715
+ assert_equal 'file', pp.stem
716
+ assert_equal '.ext', pp.file_extension
717
+ assert_equal '.ext', pp.extension
718
+ assert_nil pp.search_directory
719
+ assert_nil pp.search_relative_path
720
+ assert_nil pp.search_relative_directory_path
721
+ assert_nil pp.search_relative_directory_parts
722
+
723
+ assert_equal pp.directory, pp.directory_parts.join
724
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
725
+ end
726
+
727
+ def test_unrooted_dir_file_2
728
+
729
+ locator = Object.new
730
+
731
+ if ::LibPath::Internal_::Platform::Constants::PLATFORM_IS_WINDOWS then
732
+
733
+ locator.define_singleton_method(:pwd) { '/some-directory' }
734
+
735
+ pp = ParsedPath.new('sub-dir/file.ext', locator: locator)
736
+
737
+ assert_equal 'sub-dir/file.ext', pp.given_path
738
+ assert_equal '/some-directory\\sub-dir/file.ext', pp.absolute_path
739
+ assert_equal '/SOME-DIRECTORY\\SUB-DIR/FILE.EXT', pp.compare_path
740
+ assert_nil pp.volume
741
+ assert_equal '/some-directory\\sub-dir/', pp.directory
742
+ assert_equal '/some-directory\\sub-dir/', pp.directory_path
743
+ assert_equal '/some-directory\\sub-dir/', pp.dirname
744
+ assert_equal [ '/', 'some-directory\\', 'sub-dir/' ], pp.directory_parts
745
+
746
+ volume = pp.volume
747
+ else
748
+
749
+ locator.define_singleton_method(:pwd) { '/some-directory' }
750
+
751
+ pp = ParsedPath.new('sub-dir/file.ext', locator: locator)
752
+
753
+ assert_equal 'sub-dir/file.ext', pp.given_path
754
+ assert_equal '/some-directory/sub-dir/file.ext', pp.absolute_path
755
+ assert_equal '/some-directory/sub-dir/file.ext', pp.compare_path
756
+ assert_equal '/some-directory/sub-dir/', pp.directory
757
+ assert_equal '/some-directory/sub-dir/', pp.directory_path
758
+ assert_equal '/some-directory/sub-dir/', pp.dirname
759
+ assert_equal [ '/', 'some-directory/', 'sub-dir/' ], pp.directory_parts
760
+
761
+ volume = nil
762
+ end
763
+ assert_equal 'file.ext', pp.file_full_name
764
+ assert_equal 'file.ext', pp.basename
765
+ assert_equal 'file', pp.file_name_only
766
+ assert_equal 'file', pp.stem
767
+ assert_equal '.ext', pp.file_extension
768
+ assert_equal '.ext', pp.extension
769
+ assert_nil pp.search_directory
770
+ assert_nil pp.search_relative_path
771
+ assert_nil pp.search_relative_directory_path
772
+ assert_nil pp.search_relative_directory_parts
773
+
774
+ assert_equal pp.directory, pp.directory_parts.join
775
+ assert_equal pp.absolute_path, "#{volume}#{pp.directory_parts.join}#{pp.basename}"
776
+ end
777
777
  end
778
778