recls-ruby 2.8.2 → 2.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +57 -10
- data/examples/find_files_and_directories.md +77 -0
- data/examples/find_files_and_directories.rb +19 -0
- data/examples/find_files_and_directories.recursive.md +304 -0
- data/examples/find_files_and_directories.recursive.rb +19 -0
- data/examples/show_hidden_files.md +39 -0
- data/examples/show_hidden_files.rb +2 -2
- data/examples/show_readonly_files.md +35 -0
- data/examples/show_readonly_files.rb +2 -2
- data/lib/recls.rb +2 -0
- data/lib/recls/api.rb +70 -3
- data/lib/recls/combine_paths_1.rb +70 -0
- data/lib/recls/combine_paths_2plus.rb +76 -0
- data/lib/recls/entry.rb +40 -4
- data/lib/recls/file_search.rb +48 -14
- data/lib/recls/flags.rb +21 -4
- data/lib/recls/foreach.rb +45 -6
- data/lib/recls/obsolete.rb +119 -0
- data/lib/recls/recls.rb +27 -56
- data/lib/recls/stat.rb +96 -24
- data/lib/recls/util.rb +74 -23
- data/lib/recls/version.rb +10 -4
- data/lib/recls/ximpl/os.rb +29 -15
- data/lib/recls/ximpl/unix.rb +29 -16
- data/lib/recls/ximpl/util.rb +141 -39
- data/lib/recls/ximpl/windows.rb +56 -25
- data/test/fixtures/readonly/file-1 +0 -0
- data/test/fixtures/readonly/file-2 +0 -0
- data/test/scratch/test_display_parts.rb +9 -9
- data/test/scratch/test_entry.rb +11 -9
- data/test/scratch/test_files_and_directories.rb +17 -14
- data/test/scratch/test_foreach.rb +0 -3
- data/test/scratch/test_module_function.rb +10 -10
- data/test/scratch/test_pattern_arrays.rb +32 -0
- data/test/scratch/test_show_dev_and_ino.rb +1 -1
- data/test/scratch/test_show_hidden.rb +3 -3
- data/test/unit/tc_recls_util.rb +6 -0
- data/test/unit/tc_recls_ximpl_util.rb +156 -101
- data/test/unit/ts_all.rb +11 -9
- metadata +36 -11
File without changes
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#! /usr/bin/ruby
|
2
2
|
#
|
3
|
-
# test Recls entry methods
|
3
|
+
# test Recls entry methods showing parts
|
4
4
|
|
5
5
|
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
6
6
|
|
@@ -19,11 +19,11 @@ Recls::FileSearch.new(root_dir, patterns, Recls::FILES | Recls::RECURSIVE).each
|
|
19
19
|
puts fe.short_path
|
20
20
|
puts fe.directory_path
|
21
21
|
puts drive
|
22
|
-
puts "".ljust(drive ? drive.size : 0) + fe.directory
|
23
|
-
puts "".ljust(fe.directory_path.size) + fe.file
|
24
|
-
puts "".ljust(fe.directory_path.size) +
|
25
|
-
puts "".ljust(fe.directory_path.size) + fe.stem
|
26
|
-
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension
|
22
|
+
puts "".ljust(drive ? drive.size : 0) + fe.directory.to_s
|
23
|
+
puts "".ljust(fe.directory_path.size) + fe.file.to_s
|
24
|
+
puts "".ljust(fe.directory_path.size) + fe.file_short_name.to_s
|
25
|
+
puts "".ljust(fe.directory_path.size) + fe.stem.to_s
|
26
|
+
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension.to_s
|
27
27
|
n = drive.size
|
28
28
|
fe.directory_parts.each do |part|
|
29
29
|
|
@@ -32,9 +32,9 @@ Recls::FileSearch.new(root_dir, patterns, Recls::FILES | Recls::RECURSIVE).each
|
|
32
32
|
end
|
33
33
|
|
34
34
|
puts fe.search_directory
|
35
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_path
|
36
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path
|
37
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory
|
35
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_path.to_s
|
36
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path.to_s
|
37
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory.to_s
|
38
38
|
|
39
39
|
n = fe.search_directory.size
|
40
40
|
fe.search_relative_directory_parts.each do |part|
|
data/test/scratch/test_entry.rb
CHANGED
@@ -15,6 +15,7 @@ def show_entry f
|
|
15
15
|
puts "entry:"
|
16
16
|
puts "\t#{'(entry)'.ljust(20)}\t#{f}"
|
17
17
|
puts "\t#{'f.path'.ljust(20)}\t#{f.path}"
|
18
|
+
puts "\t#{'f.compare_path'.ljust(20)}\t#{f.compare_path}"
|
18
19
|
puts "\t#{'f.drive'.ljust(20)}\t#{f.drive}"
|
19
20
|
puts "\t#{'f.directory_path'.ljust(20)}\t#{f.directory_path}"
|
20
21
|
puts "\t#{'f.directory'.ljust(20)}\t#{f.directory}"
|
@@ -23,11 +24,6 @@ puts "\t#{'f.directory_parts'.ljust(20)}\t[#{directory_parts.size}]"
|
|
23
24
|
directory_parts.each do |part|
|
24
25
|
puts "\t#{''.ljust(20)}\t\t#{part}"
|
25
26
|
end
|
26
|
-
search_relative_directory_parts = f.search_relative_directory_parts
|
27
|
-
puts "\t#{'f.search_relative_directory_parts'.ljust(20)}\t[#{search_relative_directory_parts.size}]"
|
28
|
-
search_relative_directory_parts.each do |part|
|
29
|
-
puts "\t#{''.ljust(20)}\t\t#{part}"
|
30
|
-
end
|
31
27
|
puts "\t#{'f.file_full_name'.ljust(20)}\t#{f.file_full_name}"
|
32
28
|
puts "\t#{'f.file_short_name'.ljust(20)}\t#{f.file_short_name}"
|
33
29
|
puts "\t#{'f.file_name_only'.ljust(20)}\t#{f.file_name_only}"
|
@@ -37,6 +33,11 @@ puts "\t#{'f.search_directory'.ljust(20)}\t#{f.search_directory}"
|
|
37
33
|
puts "\t#{'f.search_relative_path'.ljust(20)}\t#{f.search_relative_path}"
|
38
34
|
puts "\t#{'f.search_relative_directory'.ljust(20)}\t#{f.search_relative_directory}"
|
39
35
|
puts "\t#{'f.search_relative_directory_path'.ljust(20)}\t#{f.search_relative_directory_path}"
|
36
|
+
search_relative_directory_parts = f.search_relative_directory_parts
|
37
|
+
puts "\t#{'f.search_relative_directory_parts'.ljust(20)}\t[#{search_relative_directory_parts.size}]"
|
38
|
+
search_relative_directory_parts.each do |part|
|
39
|
+
puts "\t#{''.ljust(20)}\t\t#{part}"
|
40
|
+
end
|
40
41
|
|
41
42
|
puts "\t#{'f.size'.ljust(20)}\t#{f.size}"
|
42
43
|
|
@@ -44,6 +45,7 @@ puts "\t#{'f.exist?'.ljust(20)}\t#{f.exist?}"
|
|
44
45
|
puts "\t#{'f.hidden?'.ljust(20)}\t#{f.hidden?}"
|
45
46
|
puts "\t#{'f.readonly?'.ljust(20)}\t#{f.readonly?}"
|
46
47
|
puts "\t#{'f.directory?'.ljust(20)}\t#{f.directory?}"
|
48
|
+
puts "\t#{'f.dir?'.ljust(20)}\t#{f.dir?}"
|
47
49
|
puts "\t#{'f.file?'.ljust(20)}\t#{f.file?}"
|
48
50
|
puts "\t#{'f.socket?'.ljust(20)}\t#{f.socket?}"
|
49
51
|
|
@@ -52,12 +54,12 @@ puts "\t#{'f.last_access_time'.ljust(20)}\t#{f.last_access_time}"
|
|
52
54
|
end
|
53
55
|
|
54
56
|
puts
|
55
|
-
puts "stat of '.':"
|
56
|
-
show_entry Recls::stat '.'
|
57
|
+
puts "stat of '.' (from '.'):"
|
58
|
+
show_entry Recls::stat '.', '.'
|
57
59
|
|
58
60
|
puts
|
59
|
-
puts "stat of '~':"
|
60
|
-
show_entry Recls::stat '~'
|
61
|
+
puts "stat of '~' (from '.'):"
|
62
|
+
show_entry Recls::stat '~', '.'
|
61
63
|
|
62
64
|
puts
|
63
65
|
puts "directories:"
|
@@ -1,23 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#############################################################################
|
4
|
-
# File: ./test/scratch/test_files_and_directories.rb
|
5
|
-
#
|
6
|
-
# Purpose: COMPLETE_ME
|
7
|
-
#
|
8
|
-
# Created: 09 06 2016
|
9
|
-
# Updated: 09 06 2016
|
1
|
+
#! /usr/bin/ruby
|
10
2
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# Copyright: <<TBD>>
|
14
|
-
#
|
15
|
-
#############################################################################
|
3
|
+
# test Search between files and directories
|
16
4
|
|
17
5
|
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
18
6
|
|
19
7
|
require 'recls'
|
20
8
|
|
9
|
+
puts
|
10
|
+
puts "adding own trailing slash:"
|
11
|
+
puts
|
12
|
+
|
21
13
|
Recls::FileSearch.new(nil, nil, Recls::FILES | Recls::DIRECTORIES | Recls::RECURSIVE).each do |fe|
|
22
14
|
|
23
15
|
path = fe.search_relative_path
|
@@ -31,3 +23,14 @@ Recls::FileSearch.new(nil, nil, Recls::FILES | Recls::DIRECTORIES | Recls::RECUR
|
|
31
23
|
end
|
32
24
|
end
|
33
25
|
|
26
|
+
puts
|
27
|
+
puts "specifying flag for trailing slash:"
|
28
|
+
puts
|
29
|
+
|
30
|
+
Recls::FileSearch.new(nil, nil, Recls::FILES | Recls::DIRECTORIES | Recls::RECURSIVE | Recls::MARK_DIRECTORIES).each do |fe|
|
31
|
+
|
32
|
+
path = fe.search_relative_path
|
33
|
+
|
34
|
+
puts path
|
35
|
+
end
|
36
|
+
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/ruby
|
2
2
|
#
|
3
|
-
# test Recls entry methods
|
3
|
+
# test Recls entry methods showing parts, via module function
|
4
4
|
|
5
5
|
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
6
6
|
|
@@ -19,11 +19,11 @@ Recls.FileSearch(root_dir, patterns, flags: Recls::FILES).each do |fe|
|
|
19
19
|
puts fe.short_path
|
20
20
|
puts fe.directory_path
|
21
21
|
puts drive
|
22
|
-
puts "".ljust(drive ? drive.size : 0) + fe.directory
|
23
|
-
puts "".ljust(fe.directory_path.size) + fe.file
|
24
|
-
puts "".ljust(fe.directory_path.size) +
|
25
|
-
puts "".ljust(fe.directory_path.size) + fe.stem
|
26
|
-
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension
|
22
|
+
puts "".ljust(drive ? drive.size : 0) + fe.directory.to_s
|
23
|
+
puts "".ljust(fe.directory_path.size) + fe.file.to_s
|
24
|
+
puts "".ljust(fe.directory_path.size) + fe.file_short_name.to_s
|
25
|
+
puts "".ljust(fe.directory_path.size) + fe.stem.to_s
|
26
|
+
puts "".ljust(fe.directory_path.size + fe.stem.size) + fe.extension.to_s
|
27
27
|
n = drive.size
|
28
28
|
fe.directory_parts.each do |part|
|
29
29
|
|
@@ -32,9 +32,9 @@ Recls.FileSearch(root_dir, patterns, flags: Recls::FILES).each do |fe|
|
|
32
32
|
end
|
33
33
|
|
34
34
|
puts fe.search_directory
|
35
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_path
|
36
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path
|
37
|
-
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory
|
35
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_path.to_s
|
36
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory_path.to_s
|
37
|
+
puts "".ljust(fe.search_directory.size) + fe.search_relative_directory.to_s
|
38
38
|
|
39
39
|
n = fe.search_directory.size
|
40
40
|
fe.search_relative_directory_parts.each do |part|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# test Recls entry methods showing parts
|
4
|
+
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
6
|
+
|
7
|
+
require 'recls'
|
8
|
+
|
9
|
+
root_dir = File.join(File.dirname(__FILE__), '../..')
|
10
|
+
patterns_a = %w{ *.rb *.md }
|
11
|
+
patterns_s = patterns_a.join('|')
|
12
|
+
|
13
|
+
|
14
|
+
puts
|
15
|
+
puts "Searching for pattern string '#{patterns_s}':"
|
16
|
+
|
17
|
+
Recls::FileSearch.new(root_dir, patterns_s, Recls::FILES | Recls::RECURSIVE).each do |fe|
|
18
|
+
|
19
|
+
puts fe.search_relative_path
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
puts
|
25
|
+
puts "Searching for pattern array '#{patterns_a}':"
|
26
|
+
|
27
|
+
Recls::FileSearch.new(root_dir, patterns_a, Recls::FILES | Recls::RECURSIVE).each do |fe|
|
28
|
+
|
29
|
+
puts fe.search_relative_path
|
30
|
+
end
|
31
|
+
|
32
|
+
|
@@ -8,14 +8,14 @@ require 'recls'
|
|
8
8
|
|
9
9
|
puts
|
10
10
|
puts "Hidden directories:"
|
11
|
-
Recls
|
11
|
+
Recls.file_rsearch(nil, nil, Recls::DIRECTORIES | Recls::SHOW_HIDDEN).each do |fe|
|
12
12
|
|
13
13
|
puts "\t#{fe.search_relative_path}" if fe.hidden?
|
14
14
|
end
|
15
15
|
|
16
16
|
puts
|
17
17
|
puts "Hidden files:"
|
18
|
-
Recls
|
18
|
+
Recls.file_search(nil, nil, Recls::RECURSIVE | Recls::FILES | Recls::SHOW_HIDDEN).each do |fe|
|
19
19
|
|
20
20
|
puts "\t#{fe.search_relative_path}" if fe.hidden?
|
21
21
|
end
|
@@ -23,7 +23,7 @@ end
|
|
23
23
|
|
24
24
|
puts
|
25
25
|
puts "Hidden directories & files:"
|
26
|
-
Recls
|
26
|
+
Recls.file_search(nil, nil, Recls::RECURSIVE | Recls::DIRECTORIES | Recls::FILES | Recls::MARK_DIRECTORIES | Recls::SHOW_HIDDEN).each do |fe|
|
27
27
|
|
28
28
|
puts "\t#{fe.search_relative_path}" if fe.hidden?
|
29
29
|
end
|
data/test/unit/tc_recls_util.rb
CHANGED
@@ -56,6 +56,7 @@ class Test_combine_paths < Test::Unit::TestCase
|
|
56
56
|
assert_equal 'abc/def/ghi', Recls.combine_paths('abc/', 'def/ghi')
|
57
57
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/.', 'def/ghi')
|
58
58
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/./', 'def/ghi')
|
59
|
+
if RUBY_VERSION >= '2'
|
59
60
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/.', 'def/ghi', clean_path: false)
|
60
61
|
assert_equal 'abc/./def/ghi', Recls.combine_paths('abc/./', 'def/ghi', clean: false)
|
61
62
|
assert_equal 'abc/def/ghi', Recls.combine_paths('abc/.', 'def/ghi', clean_path: true)
|
@@ -63,16 +64,19 @@ class Test_combine_paths < Test::Unit::TestCase
|
|
63
64
|
assert_equal 'abc/def/ghi', Recls.combine_paths('abc/./.', 'def/ghi', clean_path: true)
|
64
65
|
assert_equal 'abc/../def/ghi', Recls.combine_paths('abc/..', 'def/ghi')
|
65
66
|
assert_equal 'def/ghi', Recls.combine_paths('abc/..', 'def/ghi', clean_path: true)
|
67
|
+
end
|
66
68
|
end
|
67
69
|
|
68
70
|
def test_multiple_relative
|
69
71
|
|
72
|
+
if RUBY_VERSION >= '2'
|
70
73
|
assert_equal 'a/b/c/d/e/f/g', Recls.combine_paths('a', 'b', 'c', 'd/e/f/', 'g', clean: false)
|
71
74
|
assert_equal 'a/b/c/d/e/f/g', Recls.combine_paths('a', 'b', 'c', 'd/e/f/', 'g', clean: true)
|
72
75
|
|
73
76
|
assert_equal 'a/b/c/../d/e/f/g', Recls.combine_paths('a', 'b', 'c', '..', 'd/e/f/', 'g', clean: false)
|
74
77
|
assert_equal 'a/b/d/e/f/g', Recls.combine_paths('a', 'b', 'c', '..', 'd/e/f/', 'g/', clean: true)
|
75
78
|
assert_equal 'a/b/d/e/f/g/', Recls.combine_paths('a', 'b', 'c', '..', 'd/e/f/', 'g/', canonicalise: true)
|
79
|
+
end
|
76
80
|
end
|
77
81
|
|
78
82
|
def test_various_absolute_placings
|
@@ -87,8 +91,10 @@ class Test_combine_paths < Test::Unit::TestCase
|
|
87
91
|
|
88
92
|
assert_equal '/f/g', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g')
|
89
93
|
assert_equal '/f/g/', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g/')
|
94
|
+
if RUBY_VERSION >= '2'
|
90
95
|
assert_equal '/f/g', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g/', clean: true)
|
91
96
|
assert_equal '/f/g/', Recls.combine_paths('/', 'a', 'b', 'c', 'd/e', '/f/g/', canonicalise: true)
|
97
|
+
end
|
92
98
|
end
|
93
99
|
end
|
94
100
|
|
@@ -708,195 +708,250 @@ class Test_Recls_Ximpl_derive_relative_path < Test::Unit::TestCase
|
|
708
708
|
|
709
709
|
end
|
710
710
|
|
711
|
+
M = Recls::Ximpl
|
712
|
+
|
713
|
+
def test_libpath_cases_test_nils_and_empties
|
714
|
+
|
715
|
+
# to get nowhere from nowhere, go nowhere
|
716
|
+
assert_nil M.derive_relative_path(nil, nil)
|
717
|
+
assert_nil M.derive_relative_path('', nil)
|
718
|
+
assert_nil M.derive_relative_path('', '')
|
719
|
+
assert_nil M.derive_relative_path(nil, '')
|
720
|
+
|
721
|
+
# to get somewhere from nowhere, just go there
|
722
|
+
assert_equal 'abc', M.derive_relative_path(nil, 'abc')
|
723
|
+
assert_equal 'abc', M.derive_relative_path('', 'abc')
|
724
|
+
|
725
|
+
# to get nowhere from anywhere else, go nowhere
|
726
|
+
assert_nil M.derive_relative_path('dir', nil)
|
727
|
+
assert_nil M.derive_relative_path('dir', '')
|
728
|
+
end
|
729
|
+
|
730
|
+
def test_libpath_cases_test_same_location
|
731
|
+
|
732
|
+
assert_equal '.', M.derive_relative_path('abc', 'abc')
|
733
|
+
assert_equal './', M.derive_relative_path('abc/', 'abc/')
|
734
|
+
assert_equal './', M.derive_relative_path('abc', 'abc/')
|
735
|
+
|
736
|
+
assert_equal './', M.derive_relative_path('/', '/')
|
737
|
+
|
738
|
+
=begin
|
739
|
+
|
740
|
+
assert_equal '.', M.derive_relative_path('./abc', 'abc')
|
741
|
+
=end
|
742
|
+
assert_equal '.', M.derive_relative_path('./abc/', 'abc')
|
743
|
+
=begin
|
744
|
+
|
745
|
+
assert_equal './', M.derive_relative_path('./abc', 'abc/')
|
746
|
+
=end
|
747
|
+
assert_equal './', M.derive_relative_path('./abc/', 'abc/')
|
748
|
+
end
|
749
|
+
|
750
|
+
def test_libpath_cases_test_one_above
|
751
|
+
|
752
|
+
=begin
|
753
|
+
|
754
|
+
assert_equal '..', M.derive_relative_path('.', '..')
|
755
|
+
=end
|
756
|
+
end
|
757
|
+
|
711
758
|
def test_absolute_proper_subset
|
712
759
|
|
713
|
-
assert_equal('abc', Recls::Ximpl
|
714
|
-
assert_equal('abc', Recls::Ximpl
|
715
|
-
assert_equal('abc/', Recls::Ximpl
|
716
|
-
assert_equal('abc/', Recls::Ximpl
|
760
|
+
assert_equal('abc', Recls::Ximpl.derive_relative_path('/dir1/dir2', '/dir1/dir2/abc'))
|
761
|
+
assert_equal('abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/', '/dir1/dir2/abc'))
|
762
|
+
assert_equal('abc/', Recls::Ximpl.derive_relative_path('/dir1/dir2', '/dir1/dir2/abc/'))
|
763
|
+
assert_equal('abc/', Recls::Ximpl.derive_relative_path('/dir1/dir2/', '/dir1/dir2/abc/'))
|
717
764
|
|
718
|
-
assert_equal('abc', Recls::Ximpl
|
719
|
-
assert_equal('abc', Recls::Ximpl
|
720
|
-
assert_equal('abc/', Recls::Ximpl
|
721
|
-
assert_equal('abc/', Recls::Ximpl
|
765
|
+
assert_equal('abc', Recls::Ximpl.derive_relative_path('dir1/dir2', 'dir1/dir2/abc'))
|
766
|
+
assert_equal('abc', Recls::Ximpl.derive_relative_path('dir1/dir2/', 'dir1/dir2/abc'))
|
767
|
+
assert_equal('abc/', Recls::Ximpl.derive_relative_path('dir1/dir2', 'dir1/dir2/abc/'))
|
768
|
+
assert_equal('abc/', Recls::Ximpl.derive_relative_path('dir1/dir2/', 'dir1/dir2/abc/'))
|
722
769
|
|
723
|
-
|
724
|
-
# assert_equal('/dir/dir2/abc', Recls::Ximpl::derive_relative_path('/dir1/dir2/abc', 'dir1/dir2/'))
|
770
|
+
=begin
|
725
771
|
|
772
|
+
assert_equal('/dir/dir2/abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/abc', 'dir1/dir2'))
|
773
|
+
assert_equal('/dir/dir2/abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/abc', 'dir1/dir2/'))
|
774
|
+
=end
|
726
775
|
end
|
727
776
|
|
728
777
|
def test_absolute_proper_subset_2
|
729
778
|
|
730
|
-
assert_equal('c++', Recls::Ximpl
|
731
|
-
assert_equal('c++', Recls::Ximpl
|
779
|
+
assert_equal('c++', Recls::Ximpl.derive_relative_path('/dir1/dir2', '/dir1/dir2/c++'))
|
780
|
+
assert_equal('c++', Recls::Ximpl.derive_relative_path('/dir1/dir2/', '/dir1/dir2/c++'))
|
732
781
|
|
733
|
-
assert_equal('c++', Recls::Ximpl
|
734
|
-
assert_equal('c++', Recls::Ximpl
|
782
|
+
assert_equal('c++', Recls::Ximpl.derive_relative_path('dir1/dir2', 'dir1/dir2/c++'))
|
783
|
+
assert_equal('c++', Recls::Ximpl.derive_relative_path('dir1/dir2/', 'dir1/dir2/c++'))
|
735
784
|
|
736
785
|
end
|
737
786
|
|
738
787
|
def test_absolute_same_1
|
739
788
|
|
740
|
-
assert_equal('.', Recls::Ximpl
|
741
|
-
assert_equal('./', Recls::Ximpl
|
742
|
-
assert_equal('.', Recls::Ximpl
|
743
|
-
assert_equal('./', Recls::Ximpl
|
789
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('/dir1/dir2/abc', '/dir1/dir2/abc'))
|
790
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('/dir1/dir2/abc', '/dir1/dir2/abc/'))
|
791
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('/dir1/dir2/abc/', '/dir1/dir2/abc'))
|
792
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('/dir1/dir2/abc/', '/dir1/dir2/abc/'))
|
744
793
|
|
745
|
-
assert_equal('.', Recls::Ximpl
|
746
|
-
assert_equal('./', Recls::Ximpl
|
747
|
-
assert_equal('.', Recls::Ximpl
|
748
|
-
assert_equal('./', Recls::Ximpl
|
794
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/dir2/abc', 'dir1/dir2/abc'))
|
795
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/dir2/abc', 'dir1/dir2/abc/'))
|
796
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/dir2/abc/', 'dir1/dir2/abc'))
|
797
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/dir2/abc/', 'dir1/dir2/abc/'))
|
749
798
|
|
750
799
|
end
|
751
800
|
|
752
801
|
def test_absolute_same_2
|
753
802
|
|
754
|
-
assert_equal('.', Recls::Ximpl
|
755
|
-
assert_equal('.', Recls::Ximpl
|
803
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('/dir1', '/dir1'))
|
804
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('/dir1/', '/dir1'))
|
756
805
|
|
757
806
|
end
|
758
807
|
|
759
808
|
def test_absolute_same_3
|
760
809
|
|
761
|
-
assert_equal('./', Recls::Ximpl
|
810
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('/', '/'))
|
762
811
|
|
763
812
|
end
|
764
813
|
|
765
814
|
def test_different_sub_trees_1
|
766
815
|
|
767
|
-
assert_equal('../abc', Recls::Ximpl
|
768
|
-
assert_equal('../abc/', Recls::Ximpl
|
769
|
-
assert_equal('../abc', Recls::Ximpl
|
770
|
-
assert_equal('../abc/', Recls::Ximpl
|
816
|
+
assert_equal('../abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref', '/dir1/dir2/abc'))
|
817
|
+
assert_equal('../abc/', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref', '/dir1/dir2/abc/'))
|
818
|
+
assert_equal('../abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref/', '/dir1/dir2/abc'))
|
819
|
+
assert_equal('../abc/', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref/', '/dir1/dir2/abc/'))
|
771
820
|
|
772
821
|
end
|
773
822
|
|
774
823
|
def test_different_sub_trees_2
|
775
824
|
|
776
|
-
assert_equal('../abc', Recls::Ximpl
|
777
|
-
assert_equal('../abc/', Recls::Ximpl
|
778
|
-
assert_equal('../abc', Recls::Ximpl
|
779
|
-
assert_equal('../abc/', Recls::Ximpl
|
825
|
+
assert_equal('../abc', Recls::Ximpl.derive_relative_path('/ref', '/abc'))
|
826
|
+
assert_equal('../abc/', Recls::Ximpl.derive_relative_path('/ref', '/abc/'))
|
827
|
+
assert_equal('../abc', Recls::Ximpl.derive_relative_path('/ref/', '/abc'))
|
828
|
+
assert_equal('../abc/', Recls::Ximpl.derive_relative_path('/ref/', '/abc/'))
|
780
829
|
|
781
830
|
end
|
782
831
|
|
783
832
|
def test_different_sub_trees_3
|
784
833
|
|
785
|
-
assert_equal('../../dir3/abc', Recls::Ximpl
|
786
|
-
assert_equal('../../dir3/abc/', Recls::Ximpl
|
787
|
-
assert_equal('../../dir3/abc', Recls::Ximpl
|
788
|
-
assert_equal('../../dir3/abc/', Recls::Ximpl
|
834
|
+
assert_equal('../../dir3/abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref', '/dir1/dir3/abc'))
|
835
|
+
assert_equal('../../dir3/abc/', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref', '/dir1/dir3/abc/'))
|
836
|
+
assert_equal('../../dir3/abc', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref/', '/dir1/dir3/abc'))
|
837
|
+
assert_equal('../../dir3/abc/', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref/', '/dir1/dir3/abc/'))
|
789
838
|
|
790
839
|
end
|
791
840
|
|
792
841
|
def test_different_sub_trees_4
|
793
842
|
|
794
|
-
assert_equal('..', Recls::Ximpl
|
795
|
-
assert_equal('..', Recls::Ximpl
|
796
|
-
assert_equal('..', Recls::Ximpl
|
797
|
-
assert_equal('..', Recls::Ximpl
|
843
|
+
assert_equal('..', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref', '/dir1/dir2'))
|
844
|
+
assert_equal('..', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref/', '/dir1/dir2'))
|
845
|
+
assert_equal('..', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref', '/dir1/dir2/'))
|
846
|
+
assert_equal('..', Recls::Ximpl.derive_relative_path('/dir1/dir2/ref/', '/dir1/dir2/'))
|
798
847
|
|
799
848
|
end
|
800
849
|
|
801
850
|
def test_different_sub_trees_5
|
802
851
|
|
803
|
-
assert_equal('../..', Recls::Ximpl
|
804
|
-
assert_equal('../..', Recls::Ximpl
|
805
|
-
assert_equal('../..', Recls::Ximpl
|
806
|
-
assert_equal('../..', Recls::Ximpl
|
852
|
+
assert_equal('../..', Recls::Ximpl.derive_relative_path('/dir1/dir2/dir3/dir4', '/dir1/dir2'))
|
853
|
+
assert_equal('../..', Recls::Ximpl.derive_relative_path('/dir1/dir2/dir3/dir4/', '/dir1/dir2'))
|
854
|
+
assert_equal('../..', Recls::Ximpl.derive_relative_path('/dir1/dir2/dir3/dir4', '/dir1/dir2/'))
|
855
|
+
assert_equal('../..', Recls::Ximpl.derive_relative_path('/dir1/dir2/dir3/dir4/', '/dir1/dir2/'))
|
807
856
|
|
808
857
|
end
|
809
858
|
|
810
859
|
def test_embedded_dots_1
|
811
860
|
|
812
|
-
assert_equal('.', Recls::Ximpl
|
813
|
-
assert_equal('./', Recls::Ximpl
|
814
|
-
assert_equal('.', Recls::Ximpl
|
815
|
-
assert_equal('./', Recls::Ximpl
|
861
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/dir2', 'dir1/dir2'))
|
862
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/dir2', 'dir1/dir2/'))
|
863
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/dir2/', 'dir1/dir2'))
|
864
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/dir2/', 'dir1/dir2/'))
|
816
865
|
|
817
|
-
assert_equal('.', Recls::Ximpl
|
818
|
-
assert_equal('./', Recls::Ximpl
|
819
|
-
assert_equal('.', Recls::Ximpl
|
820
|
-
assert_equal('./', Recls::Ximpl
|
866
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/dir2', './dir1/dir2'))
|
867
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/dir2', './dir1/dir2/'))
|
868
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/dir2/', './dir1/dir2'))
|
869
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/dir2/', './dir1/dir2/'))
|
821
870
|
|
822
871
|
end
|
823
872
|
|
824
873
|
def test_embedded_dots_2
|
825
874
|
|
826
|
-
assert_equal('.', Recls::Ximpl
|
827
|
-
assert_equal('./', Recls::Ximpl
|
828
|
-
assert_equal('.', Recls::Ximpl
|
829
|
-
assert_equal('./', Recls::Ximpl
|
830
|
-
assert_equal('.', Recls::Ximpl
|
831
|
-
assert_equal('./', Recls::Ximpl
|
832
|
-
assert_equal('.', Recls::Ximpl
|
833
|
-
assert_equal('./', Recls::Ximpl
|
875
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2', 'dir1/dir2'))
|
876
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2', 'dir1/dir2/'))
|
877
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2/', 'dir1/dir2'))
|
878
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2/', 'dir1/dir2/'))
|
879
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2', './dir1/dir2'))
|
880
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2', './dir1/dir2/'))
|
881
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2/', './dir1/dir2'))
|
882
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2/', './dir1/dir2/'))
|
834
883
|
|
835
884
|
end
|
836
885
|
|
837
886
|
def test_embedded_dots_3
|
838
887
|
|
839
|
-
assert_equal('.', Recls::Ximpl
|
840
|
-
assert_equal('./', Recls::Ximpl
|
841
|
-
assert_equal('.', Recls::Ximpl
|
842
|
-
assert_equal('./', Recls::Ximpl
|
843
|
-
assert_equal('.', Recls::Ximpl
|
844
|
-
assert_equal('./', Recls::Ximpl
|
845
|
-
assert_equal('.', Recls::Ximpl
|
846
|
-
assert_equal('./', Recls::Ximpl
|
888
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/dir2/.', 'dir1/dir2'))
|
889
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/dir2/.', 'dir1/dir2/'))
|
890
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/dir2/./', 'dir1/dir2'))
|
891
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/dir2/./', 'dir1/dir2/'))
|
892
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/dir2/.', './dir1/dir2'))
|
893
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/dir2/.', './dir1/dir2/'))
|
894
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/dir2/./', './dir1/dir2'))
|
895
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/dir2/./', './dir1/dir2/'))
|
847
896
|
|
848
897
|
end
|
849
898
|
|
850
899
|
def test_embedded_dots_4
|
851
900
|
|
852
|
-
assert_equal('.', Recls::Ximpl
|
853
|
-
assert_equal('./', Recls::Ximpl
|
854
|
-
assert_equal('.', Recls::Ximpl
|
855
|
-
assert_equal('./', Recls::Ximpl
|
856
|
-
assert_equal('.', Recls::Ximpl
|
857
|
-
assert_equal('./', Recls::Ximpl
|
858
|
-
assert_equal('.', Recls::Ximpl
|
859
|
-
assert_equal('./', Recls::Ximpl
|
901
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2/.', 'dir1/dir2'))
|
902
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2/.', 'dir1/dir2/'))
|
903
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2/./', 'dir1/dir2'))
|
904
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2/./', 'dir1/dir2/'))
|
905
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2/.', './dir1/dir2'))
|
906
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2/.', './dir1/dir2/'))
|
907
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('dir1/./dir2/./', './dir1/dir2'))
|
908
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('dir1/./dir2/./', './dir1/dir2/'))
|
860
909
|
|
861
910
|
end
|
862
911
|
|
863
912
|
def test_embedded_dots_5
|
864
913
|
|
865
|
-
assert_equal('.', Recls::Ximpl
|
866
|
-
assert_equal('./', Recls::Ximpl
|
867
|
-
assert_equal('.', Recls::Ximpl
|
868
|
-
assert_equal('./', Recls::Ximpl
|
869
|
-
assert_equal('.', Recls::Ximpl
|
870
|
-
assert_equal('./', Recls::Ximpl
|
871
|
-
assert_equal('.', Recls::Ximpl
|
872
|
-
assert_equal('./', Recls::Ximpl
|
914
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/./dir2/.', 'dir1/dir2'))
|
915
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/./dir2/.', 'dir1/dir2/'))
|
916
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/./dir2/./', 'dir1/dir2'))
|
917
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/./dir2/./', 'dir1/dir2/'))
|
918
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/./dir2/.', './dir1/dir2'))
|
919
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/./dir2/.', './dir1/dir2/'))
|
920
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/./dir2/./', './dir1/dir2'))
|
921
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/./dir2/./', './dir1/dir2/'))
|
873
922
|
|
874
923
|
end
|
875
924
|
|
876
925
|
def test_embedded_dots_6
|
877
926
|
|
878
|
-
assert_equal('.', Recls::Ximpl
|
879
|
-
assert_equal('./', Recls::Ximpl
|
880
|
-
assert_equal('.', Recls::Ximpl
|
881
|
-
assert_equal('./', Recls::Ximpl
|
882
|
-
assert_equal('.', Recls::Ximpl
|
883
|
-
assert_equal('./', Recls::Ximpl
|
884
|
-
assert_equal('.', Recls::Ximpl
|
885
|
-
assert_equal('./', Recls::Ximpl
|
927
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', 'dir1/dir2'))
|
928
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', 'dir1/dir2/'))
|
929
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', 'dir1/dir2'))
|
930
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', 'dir1/dir2/'))
|
931
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', './dir1/dir2'))
|
932
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', './dir1/dir2/'))
|
933
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', './dir1/dir2'))
|
934
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', './dir1/dir2/'))
|
886
935
|
|
887
936
|
end
|
888
937
|
|
889
938
|
def test_embedded_dots_7
|
890
939
|
|
891
|
-
assert_equal('.', Recls::Ximpl
|
892
|
-
assert_equal('./', Recls::Ximpl
|
893
|
-
assert_equal('.', Recls::Ximpl
|
894
|
-
assert_equal('./', Recls::Ximpl
|
895
|
-
assert_equal('.', Recls::Ximpl
|
896
|
-
assert_equal('./', Recls::Ximpl
|
897
|
-
assert_equal('.', Recls::Ximpl
|
898
|
-
assert_equal('./', Recls::Ximpl
|
940
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', 'dir1/././dir2'))
|
941
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', 'dir1/././dir2/'))
|
942
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', 'dir1/././dir2'))
|
943
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', 'dir1/././dir2/'))
|
944
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', './dir1/././dir2'))
|
945
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/.', './dir1/././dir2/'))
|
946
|
+
assert_equal('.', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', './dir1/././dir2'))
|
947
|
+
assert_equal('./', Recls::Ximpl.derive_relative_path('./dir1/././././dir2/./', './dir1/././dir2/'))
|
948
|
+
|
949
|
+
end
|
950
|
+
|
951
|
+
def test_dots_on_dot_1
|
899
952
|
|
953
|
+
assert_equal('../abc/ghi/file.ext', Recls::Ximpl.derive_relative_path('.', '../abc/ghi/file.ext'))
|
954
|
+
assert_equal('../abc/ghi/file.ext', Recls::Ximpl.derive_relative_path('./', '../abc/ghi/file.ext'))
|
900
955
|
end
|
901
956
|
end
|
902
957
|
|