rfs 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ Dir.glob(File.join(File.split(__FILE__).first,'*.rb')) do |fn|
2
+ require fn
3
+ end
@@ -0,0 +1,45 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+
3
+ class TestAdd < BaseTest
4
+ def rr(ey = nil, o = {}, &b)
5
+ r :preview, :rename_add, ey, o, &b
6
+ end
7
+
8
+ def test_add
9
+ rr 3, :search => (/\d/), :add => 5, :action => :commit do |h|
10
+ assert_equal h[:oldfn].succ.succ.succ.succ.succ, h[:newfn]
11
+ end
12
+ #make sure it went in reverse
13
+ assert_equal [['dir/file3', 'dir/file8'],
14
+ ['dir/file2', 'dir/file7'],
15
+ ['dir/file1', 'dir/file6']], @r.renames
16
+ end
17
+
18
+ def test_add_neg
19
+ c = %w{ file-2 file-1 file0 }.to_cursor
20
+ rr 3, :search => (/\d/), :add => -3, :action => :commit do |h|
21
+ assert_equal c.read1next, h[:newfn]
22
+ end
23
+ #make sure it went in reverse
24
+ assert_equal [['dir/file1', 'dir/file-2'],
25
+ ['dir/file2', 'dir/file-1'],
26
+ ['dir/file3', 'dir/file0']], @r.renames
27
+ end
28
+
29
+ def test_add_cap
30
+ rr 3, :search => (/(\d)/), :add => 5 do |h|
31
+ assert_equal h[:oldfn].succ.succ.succ.succ.succ, h[:newfn]
32
+ end
33
+ end
34
+
35
+ def test_missing_add
36
+ assert_raise MissingOptionError do
37
+ rr(3, :search => (/(\d)/)) { |h| fail "shouldn't get here" }
38
+ end
39
+ assert_raise BadOptionValueError do
40
+ rr(3, :search => (/(\d)/), :add => 'something') { |h| fail "shouldn't get here" }
41
+ end
42
+ end
43
+ end
44
+
45
+
@@ -0,0 +1,67 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+ class TestBasics < BaseTest
3
+ def test_list
4
+ r :list, :rename_replace, 5, :test_r_nofilter => true do |h|
5
+ if ['.', '..'].include? @file
6
+ assert_equal @file + '/', h[:result]
7
+ else
8
+ assert_equal @file, h[:result]
9
+ end
10
+ end
11
+ end
12
+
13
+ def test_wrong_iterations
14
+ assert_raise(RuntimeError) {
15
+ r :list, :rename_replace, 1000, :test_r_count => true do |h|
16
+ if ['.', '..'].include? @file
17
+ assert_equal @file + '/', h[:result]
18
+ else
19
+ assert_equal @file, h[:result]
20
+ end
21
+ end
22
+ }
23
+ end
24
+
25
+ def test_bad_action
26
+ assert_raise(ActionError) {
27
+ r :no, :rename_replace
28
+ }
29
+ end
30
+
31
+ def test_bad_method
32
+ assert_raise(NameError) {
33
+ r :preview, :foo_bar
34
+ }
35
+ end
36
+
37
+ def test_missing_option
38
+ assert_raise(MissingOptionError) {
39
+ r :preview, :rename_replace
40
+ }
41
+ end
42
+ def test_missing_option1
43
+ # this doesn't raise MissingOptionError because the error is caught and given as result feedback
44
+ r :preview, :rename_replace, 3, :search => /file/ do |h|
45
+ assert_match(/MissingOptionError/, h[:result])
46
+ end
47
+ end
48
+ def test_missing_option2
49
+ assert_raise(MissingOptionError) {
50
+ r :preview, :rename_replace, nil, :replace => 'good'
51
+ }
52
+ end
53
+
54
+ def test_bad_search
55
+ assert_raise(BadOptionValueError) {
56
+ r :preview, :rename_replace, nil, :search => 3
57
+ }
58
+ end
59
+ def test_bad_search1
60
+ # this doesn't raise BadOptionValueError because the error is caught and given as result feedback
61
+ r :preview, :rename_replace, 3, :search => /file/, :replace => /aeu/ do |h|
62
+ assert_match(/BadOptionValueError/, h[:result])
63
+ end
64
+ end
65
+ end
66
+
67
+
@@ -0,0 +1,24 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+ class TestCapitalize < BaseTest
3
+ def rr(ey, o, &b)
4
+ new_files(
5
+ ['this sentence should be capitalized',
6
+ 'here is another one. the best is to see what will happen! is it good?',
7
+ 'how many more do i need here? a few.',
8
+ "i'll have to get this done soon, it may get boring..."])
9
+ r :preview, :rename_capitalize, ey, o, &b
10
+ end
11
+
12
+ def test_capitalize
13
+ changes = ['This Sentence Should Be Capitalized',
14
+ 'Here is Another One. The Best is to See What Will Happen! Is it Good?',
15
+ 'How Many More Do I Need Here? A Few.',
16
+ "I'll Have to Get This Done Soon, it May Get Boring..."].to_cursor
17
+ rr 4, :search => (/.*/) do |h|
18
+ assert_equal changes.read1next, h[:newfn]
19
+ assert_equal(:ok, h[:result_type])
20
+ end
21
+ end
22
+ end
23
+
24
+
@@ -0,0 +1,145 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+ class TestConfirm < BaseTest
3
+ def rr(expected_yields = nil, options = {}, &b)
4
+ r :commit, :rename_replace, expected_yields, options, &b
5
+ end
6
+
7
+ def test_confirm_yes
8
+ confirms = 0
9
+ rr 3, :confirm => (proc {|path, oldfn, newfn, full_name, exists, default|
10
+ confirms += 1
11
+ assert_equal 'dir', path
12
+ assert_match(/file[1-3]/, oldfn)
13
+ assert_match(/new[1-3]/, newfn)
14
+ assert_equal false, full_name
15
+ assert_equal((oldfn[-1] == ?1) ? :yes : :yes, default)
16
+ :yes
17
+ }),
18
+ :search => (/file/), :replace => 'new' do |h|
19
+ assert_match(/new[123]/, h[:newfn])
20
+ assert_equal :ok, h[:result_type]
21
+ assert_equal h[:newfn], h[:result]
22
+ assert_equal h[:confirm], :yes
23
+ end
24
+ assert_equal 3, confirms
25
+ end
26
+
27
+ def test_confirm_all
28
+ confirms = 0
29
+ rr 3, :confirm => (proc {|path, oldfn, newfn, full_name, exists, default|
30
+ confirms += 1
31
+ assert_equal :yes, default
32
+ :all
33
+ }),
34
+ :search => (/file/), :replace => 'new' do |h|
35
+ assert_match(/new[123]/, h[:newfn])
36
+ assert_equal :ok, h[:result_type]
37
+ assert_equal h[:newfn], h[:result]
38
+ assert_equal h[:confirm], :all
39
+ end
40
+ assert_equal 1, confirms
41
+ end
42
+
43
+ def test_confirm_no
44
+ confirms = 0
45
+ rr 3, :confirm => (proc {|path, oldfn, newfn, full_name, exists, default|
46
+ confirms += 1
47
+ assert_equal((oldfn[-1] == ?1) ? :yes : :no, default)
48
+ :no
49
+ }),
50
+ :search => (/file/), :replace => 'new' do |h|
51
+ assert_match(/new[123]/, h[:newfn])
52
+ assert_equal :skipped, h[:result_type]
53
+ assert_equal h[:oldfn], h[:result]
54
+ assert_equal h[:confirm], :no
55
+ end
56
+ assert_equal 3, confirms
57
+ end
58
+
59
+ def test_confirm_cancel
60
+ confirms = 0
61
+ rr 0, :confirm => (proc {|path, oldfn, newfn, full_name, exists, default|
62
+ confirms += 1
63
+ assert_equal :yes, default
64
+ :cancel
65
+ }),
66
+ :search => (/file/), :replace => 'new' do |h|
67
+ fail
68
+ end
69
+ assert_equal 1, confirms
70
+ end
71
+
72
+ def exists_test(files, expect, p, s)
73
+ confirms = 0
74
+ new_files(files)
75
+ cp = proc do |path, oldfn, newfn, full_name, exists, default|
76
+ confirms += 1
77
+ assert_equal expect, exists
78
+ :no
79
+ end
80
+
81
+ #class << @r
82
+ #alias a_e_test already_exists?
83
+ #def already_exists?(*a)
84
+ #r = a_e_test(*a)
85
+ #assert_equal expect, r
86
+ #end
87
+ #end
88
+ rr 3, :confirm => cp, :search => p, :replace => s do |h|
89
+ # fail
90
+ end
91
+ assert_equal 3, confirms
92
+ end
93
+
94
+ def test_exists_same
95
+ confirms = 0
96
+ new_files(%w{ ./dir/FILE1 ./dir/FILE2 ./dir/FILE3 })
97
+ cp = proc do |path, oldfn, newfn, full_name, exists, default|
98
+ confirms += 1
99
+ assert_equal nil, exists
100
+ :no
101
+ end
102
+ class << @r
103
+ alias a_e_test already_exists?
104
+ def already_exists?(*a)
105
+ r = a_e_test(*a)
106
+ raise "false expected but was <#{r}>" unless false == r
107
+ r
108
+ end
109
+ end
110
+ rr 3, :confirm => cp, :search => (/FILE/), :replace => 'file' do |h|
111
+ assert_equal :skipped, h[:result_type]
112
+ end
113
+ assert_equal 3, confirms
114
+ end
115
+
116
+ def test_exists_diff
117
+ new_files(%w{ ./dir/FILES1 ./dir/FILES2 ./dir/FILES3 })
118
+ confirms = 0
119
+ cp = proc do |path, oldfn, newfn, full_name, exists, default|
120
+ confirms += 1
121
+ assert_equal true, exists
122
+ :no
123
+ end
124
+ class << @r
125
+ alias a_e_test already_exists?
126
+ def already_exists?(*a)
127
+ r = a_e_test(*a)
128
+ raise "true expected but was <#{r}>" unless true == r
129
+ r
130
+ end
131
+ end
132
+ rr 3, :confirm => cp, :search => (/FILES/), :replace => 'file', :force => true do |h|
133
+ assert_equal :skipped, h[:result_type]
134
+ end
135
+ assert_equal 3, confirms
136
+
137
+ confirms = 0
138
+ rr 3, :confirm => cp, :search => (/FILES/), :replace => 'file' do |h|
139
+ assert_equal :fileerror, h[:result_type]
140
+ end
141
+ assert_equal 0, confirms
142
+ end
143
+ end
144
+
145
+
@@ -0,0 +1,20 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+ class TestCount < BaseTest
3
+ def test_count
4
+ count = 0
5
+ r :preview, :rename_count, 3, :search => (/()./), :count_start => 1 do |h|
6
+ count += 1
7
+ assert_equal "#{count}#{h[:oldfn]}", h[:newfn]
8
+ end
9
+ end
10
+
11
+ def test_count_string
12
+ count = "b.9 "
13
+ r :preview, :rename_count, 3, :search => (/()./), :count_start => count do |h|
14
+ assert_equal "#{count}#{h[:oldfn]}", h[:newfn]
15
+ count.succ!
16
+ end
17
+ end
18
+ end
19
+
20
+
@@ -0,0 +1,106 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+ class TestDelete < BaseTest
3
+ def teardown
4
+ super
5
+ unless File.exists? 'dir'
6
+ Dir.mkdir 'dir'
7
+ end
8
+ %w{file1 file2 file3}.each do |f|
9
+ fn = File.join('dir', f)
10
+ unless File.exists? fn
11
+ File.open(fn, 'w') {|f| f.puts fn }
12
+ end
13
+ end
14
+ end
15
+
16
+ def rr(expected_yields = nil, options = {}, &b)
17
+ r :preview, :rename_remove, expected_yields, options, &b
18
+ end
19
+
20
+ def test_delete_file
21
+ rr 1, :search => (/^file2$/), :action => :commit do |h|
22
+ assert_equal [["dir/file2", :deleted]], @r.renames
23
+ assert_equal :ok, h[:result_type]
24
+ assert_equal '<<file2>>', h[:result]
25
+ assert_equal 'dir', h[:result_path]
26
+ assert_equal 'file2', h[:result_file]
27
+ end
28
+ end
29
+
30
+ def test_delete_dir_not_empty_sim
31
+ new_files(%w{ . .. dir })
32
+ rr 1, :search => (/^dir$/), :action => :commit do |h|
33
+ assert_equal [["./dir", :deleted]], @r.renames
34
+ assert_equal :ok, h[:result_type]
35
+ assert_equal '<<dir>>', h[:result]
36
+ assert_equal '.', h[:result_path]
37
+ assert_equal 'dir', h[:result_file]
38
+ end
39
+ end
40
+
41
+ def test_delete_dir_not_empty_real
42
+ new_files(%w{ . .. dir })
43
+ class << @r
44
+ alias actual_delete actual_delete_orig
45
+ end
46
+ rr 1, :search => (/^dir$/), :action => :commit do |h|
47
+ assert_equal :fileerror, h[:result_type]
48
+ assert_equal "Errno::ENOTEMPTY: Directory not empty - ./dir", h[:result]
49
+ assert_equal '.', h[:result_path]
50
+ assert_equal 'dir', h[:result_file]
51
+ end
52
+ end
53
+
54
+ def test_delete_dir_not_empty_real
55
+ new_files(%w{ . .. dir })
56
+ class << @r
57
+ alias actual_delete actual_delete_orig
58
+ end
59
+ rr 1, :search => (/^dir$/), :action => :commit do |h|
60
+ assert_equal :fileerror, h[:result_type]
61
+ assert_equal "Errno::ENOTEMPTY: Directory not empty - ./dir", h[:result]
62
+ assert_equal '.', h[:result_path]
63
+ assert_equal 'dir', h[:result_file]
64
+ end
65
+ end
66
+
67
+ def test_delete_recursive
68
+ @files = Provider::File::Recursive.new(['.'])
69
+ add_file_events
70
+ class << @r
71
+ #alias actual_delete actual_delete_orig
72
+ end
73
+ c = %w{ ./dir/file1 ./dir/file2 ./dir/file3 ./dir }.to_cursor
74
+ rr 4, :search => (/^(dir|file[1-3])$/), :action => :commit do |h|
75
+ assert_equal :ok, h[:result_type]
76
+ p, f = File.split c.read1next
77
+ assert_equal p, h[:result_path]
78
+ assert_equal f, h[:result_file]
79
+ end
80
+ c.pos = 0
81
+ @r.renames.each do |a|
82
+ fn, r = a
83
+ assert_equal c.read1next, fn
84
+ assert_equal :deleted, r
85
+ end
86
+ end
87
+
88
+ def test_confirm_delete
89
+ confirms = 0
90
+ cp = proc do |path, oldfn, newfn, full_name, exists, default|
91
+ assert_equal 'dir', path
92
+ assert_match(/file[1-3]/, oldfn)
93
+ assert_equal '<<deleted>>', newfn
94
+ assert_equal false, full_name
95
+ assert_equal nil, exists
96
+ confirms += 1
97
+ :no
98
+ end
99
+ rr 3, :search => (/./), :confirm => cp, :action => :commit do |h|
100
+ assert_equal :skipped, h[:result_type]
101
+ end
102
+ assert_equal 3, confirms
103
+ end
104
+ end
105
+
106
+
@@ -0,0 +1,35 @@
1
+ require File.split(__FILE__).first + "/../lib/test/test_helper"
2
+ class TestDowncase < BaseTest
3
+ def setup
4
+ super
5
+ new_files(%w{ FILE1 FILE2 FILE3 })
6
+ end
7
+
8
+ def rr(ey, o, &b)
9
+ r :preview, :rename_downcase, ey, o, &b
10
+ end
11
+
12
+ def test_downcase
13
+ c = %w{ File1 File2 File3 }.to_cursor
14
+ rr 3, :search => (/ILE/) do |h|
15
+ assert_equal(c.read1next, h[:newfn])
16
+ assert_equal(:ok, h[:result_type])
17
+ end
18
+ end
19
+
20
+ def test_upcase_entire
21
+ c = %w{ file1 file2 file3 }.to_cursor
22
+ rr 3, :search => (/(.*)/) do |h|
23
+ assert_equal(c.read1next, h[:newfn])
24
+ assert_equal(:ok, h[:result_type])
25
+ end
26
+ end
27
+
28
+ def test_no_change
29
+ new_files(%w{ file1 file2 file3 })
30
+ rr 3, :search => (/(.*)/) do |h|
31
+ assert_nil(h[:result_type])
32
+ end
33
+ end
34
+ end
35
+