rake 11.1.2 → 11.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rake might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +14 -0
- data/.rubocop.yml +0 -9
- data/.travis.yml +28 -0
- data/CONTRIBUTING.rdoc +3 -5
- data/Gemfile +3 -0
- data/History.rdoc +1770 -273
- data/Rakefile +15 -68
- data/appveyor.yml +24 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/doc/release_notes/README.md +4 -0
- data/doc/release_notes/rake-0.7.3.rdoc +0 -0
- data/{bin → exe}/rake +0 -6
- data/lib/rake.rb +1 -3
- data/lib/rake/application.rb +3 -6
- data/lib/rake/cpu_counter.rb +3 -17
- data/lib/rake/file_utils.rb +22 -6
- data/lib/rake/packagetask.rb +12 -1
- data/lib/rake/rake_test_loader.rb +0 -1
- data/lib/rake/rule_recursion_overflow_error.rb +0 -1
- data/lib/rake/task.rb +3 -3
- data/lib/rake/task_arguments.rb +2 -1
- data/lib/rake/testtask.rb +5 -1
- data/lib/rake/thread_pool.rb +0 -1
- data/lib/rake/version.rb +2 -0
- data/rake.gemspec +30 -0
- metadata +21 -110
- data/.autotest +0 -7
- data/.togglerc +0 -7
- data/Manifest.txt +0 -154
- data/lib/rake/contrib/.document +0 -1
- data/rakelib/test_times.rake +0 -25
- data/test/file_creation.rb +0 -34
- data/test/helper.rb +0 -134
- data/test/support/rakefile_definitions.rb +0 -476
- data/test/support/ruby_runner.rb +0 -34
- data/test/test_private_reader.rb +0 -42
- data/test/test_rake.rb +0 -40
- data/test/test_rake_application.rb +0 -659
- data/test/test_rake_application_options.rb +0 -468
- data/test/test_rake_backtrace.rb +0 -119
- data/test/test_rake_clean.rb +0 -61
- data/test/test_rake_cpu_counter.rb +0 -68
- data/test/test_rake_definitions.rb +0 -84
- data/test/test_rake_directory_task.rb +0 -76
- data/test/test_rake_dsl.rb +0 -40
- data/test/test_rake_early_time.rb +0 -31
- data/test/test_rake_extension.rb +0 -59
- data/test/test_rake_file_creation_task.rb +0 -56
- data/test/test_rake_file_list.rb +0 -687
- data/test/test_rake_file_list_path_map.rb +0 -15
- data/test/test_rake_file_task.rb +0 -197
- data/test/test_rake_file_utils.rb +0 -318
- data/test/test_rake_ftp_file.rb +0 -74
- data/test/test_rake_functional.rb +0 -484
- data/test/test_rake_invocation_chain.rb +0 -64
- data/test/test_rake_late_time.rb +0 -18
- data/test/test_rake_linked_list.rb +0 -84
- data/test/test_rake_makefile_loader.rb +0 -46
- data/test/test_rake_multi_task.rb +0 -64
- data/test/test_rake_name_space.rb +0 -57
- data/test/test_rake_package_task.rb +0 -79
- data/test/test_rake_path_map.rb +0 -168
- data/test/test_rake_path_map_explode.rb +0 -34
- data/test/test_rake_path_map_partial.rb +0 -18
- data/test/test_rake_pathname_extensions.rb +0 -15
- data/test/test_rake_pseudo_status.rb +0 -21
- data/test/test_rake_rake_test_loader.rb +0 -20
- data/test/test_rake_reduce_compat.rb +0 -26
- data/test/test_rake_require.rb +0 -40
- data/test/test_rake_rules.rb +0 -388
- data/test/test_rake_scope.rb +0 -44
- data/test/test_rake_task.rb +0 -430
- data/test/test_rake_task_argument_parsing.rb +0 -119
- data/test/test_rake_task_arguments.rb +0 -134
- data/test/test_rake_task_manager.rb +0 -178
- data/test/test_rake_task_manager_argument_resolution.rb +0 -19
- data/test/test_rake_task_with_arguments.rb +0 -172
- data/test/test_rake_test_task.rb +0 -130
- data/test/test_rake_thread_pool.rb +0 -145
- data/test/test_rake_top_level_functions.rb +0 -71
- data/test/test_rake_win32.rb +0 -72
- data/test/test_thread_history_display.rb +0 -101
- data/test/test_trace_output.rb +0 -52
@@ -1,31 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
|
3
|
-
class TestRakeEarlyTime < Rake::TestCase
|
4
|
-
def test_create
|
5
|
-
early = Rake::EarlyTime.instance
|
6
|
-
assert early <= Time.now
|
7
|
-
assert early < Time.now
|
8
|
-
assert early != Time.now
|
9
|
-
assert Time.now > early
|
10
|
-
assert Time.now >= early
|
11
|
-
assert Time.now != early
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_equality
|
15
|
-
early = Rake::EarlyTime.instance
|
16
|
-
assert_equal early, early, "two early times should be equal"
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_original_time_compare_is_not_messed_up
|
20
|
-
t1 = Time.mktime(1970, 1, 1, 0, 0, 0)
|
21
|
-
t2 = Time.now
|
22
|
-
assert t1 < t2
|
23
|
-
assert t2 > t1
|
24
|
-
assert t1 == t1
|
25
|
-
assert t2 == t2
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_to_s
|
29
|
-
assert_equal "<EARLY TIME>", Rake::EARLY.to_s
|
30
|
-
end
|
31
|
-
end
|
data/test/test_rake_extension.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
require 'stringio'
|
3
|
-
|
4
|
-
class TestRakeExtension < Rake::TestCase
|
5
|
-
|
6
|
-
module Redirect
|
7
|
-
def error_redirect
|
8
|
-
old_err = $stderr
|
9
|
-
result = StringIO.new
|
10
|
-
$stderr = result
|
11
|
-
yield
|
12
|
-
result
|
13
|
-
ensure
|
14
|
-
$stderr = old_err
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class Sample
|
19
|
-
extend Redirect
|
20
|
-
|
21
|
-
def duplicate_method
|
22
|
-
:original
|
23
|
-
end
|
24
|
-
|
25
|
-
OK_ERRS = error_redirect do
|
26
|
-
rake_extension("a") do
|
27
|
-
def ok_method
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
|
33
|
-
DUP_ERRS = error_redirect do
|
34
|
-
rake_extension("duplicate_method") do
|
35
|
-
def duplicate_method
|
36
|
-
:override
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_methods_actually_exist
|
43
|
-
sample = Sample.new
|
44
|
-
sample.ok_method
|
45
|
-
sample.duplicate_method
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_no_warning_when_defining_ok_method
|
49
|
-
assert_equal "", Sample::OK_ERRS.string
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_extension_complains_when_a_method_that_is_present
|
53
|
-
assert_match(/warning:/i, Sample::DUP_ERRS.string)
|
54
|
-
assert_match(/already exists/i, Sample::DUP_ERRS.string)
|
55
|
-
assert_match(/duplicate_method/i, Sample::DUP_ERRS.string)
|
56
|
-
assert_equal :original, Sample.new.duplicate_method
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
######################################################################
|
5
|
-
class TestRakeFileCreationTask < Rake::TestCase
|
6
|
-
include Rake
|
7
|
-
include Rake::DSL
|
8
|
-
|
9
|
-
DUMMY_DIR = 'dummy_dir'
|
10
|
-
|
11
|
-
def setup
|
12
|
-
super
|
13
|
-
|
14
|
-
Task.clear
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_file_needed
|
18
|
-
create_dir DUMMY_DIR
|
19
|
-
fc_task = Task[DUMMY_DIR]
|
20
|
-
assert_equal DUMMY_DIR, fc_task.name
|
21
|
-
FileUtils.rm_rf fc_task.name
|
22
|
-
assert fc_task.needed?, "file should be needed"
|
23
|
-
FileUtils.mkdir fc_task.name
|
24
|
-
assert_equal nil, fc_task.prerequisites.map { |n| Task[n].timestamp }.max
|
25
|
-
assert ! fc_task.needed?, "file should not be needed"
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_directory
|
29
|
-
directory DUMMY_DIR
|
30
|
-
fc_task = Task[DUMMY_DIR]
|
31
|
-
assert_equal DUMMY_DIR, fc_task.name
|
32
|
-
assert FileCreationTask === fc_task
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_no_retriggers_on_filecreate_task
|
36
|
-
create_timed_files(OLDFILE, NEWFILE)
|
37
|
-
t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE])
|
38
|
-
t2 = Rake.application.intern(FileCreationTask, NEWFILE)
|
39
|
-
assert ! t2.needed?, "Should not need to build new file"
|
40
|
-
assert ! t1.needed?, "Should not need to rebuild old file because of new"
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_no_retriggers_on_file_task
|
44
|
-
create_timed_files(OLDFILE, NEWFILE)
|
45
|
-
t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE])
|
46
|
-
t2 = Rake.application.intern(FileCreationTask, NEWFILE)
|
47
|
-
assert ! t2.needed?, "Should not need to build new file"
|
48
|
-
assert ! t1.needed?, "Should not need to rebuild old file because of new"
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_very_early_timestamp
|
52
|
-
t1 = Rake.application.intern(FileCreationTask, OLDFILE)
|
53
|
-
assert t1.timestamp < Time.now
|
54
|
-
assert t1.timestamp < Time.now - 1_000_000
|
55
|
-
end
|
56
|
-
end
|
data/test/test_rake_file_list.rb
DELETED
@@ -1,687 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
require 'pathname'
|
3
|
-
|
4
|
-
class TestRakeFileList < Rake::TestCase
|
5
|
-
FileList = Rake::FileList
|
6
|
-
|
7
|
-
def setup
|
8
|
-
super
|
9
|
-
|
10
|
-
FileUtils.mkdir "CVS" rescue nil
|
11
|
-
FileUtils.mkdir ".svn" rescue nil
|
12
|
-
@cdir = "cfiles"
|
13
|
-
FileUtils.mkdir @cdir rescue nil
|
14
|
-
FileUtils.touch ".dummy"
|
15
|
-
FileUtils.touch "x.bak"
|
16
|
-
FileUtils.touch "x~"
|
17
|
-
FileUtils.touch "core"
|
18
|
-
FileUtils.touch "x.c"
|
19
|
-
FileUtils.touch "xyz.c"
|
20
|
-
FileUtils.touch "abc.c"
|
21
|
-
FileUtils.touch "abc.h"
|
22
|
-
FileUtils.touch "abc.x"
|
23
|
-
FileUtils.touch "existing"
|
24
|
-
|
25
|
-
open 'xyzzy.txt', 'w' do |io|
|
26
|
-
io.puts 'x'
|
27
|
-
io.puts 'XYZZY'
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_delegating_methods_do_not_include_to_a_or_to_ary
|
33
|
-
assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a"
|
34
|
-
assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a"
|
35
|
-
assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary"
|
36
|
-
assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary"
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_create
|
40
|
-
fl = FileList.new
|
41
|
-
assert_equal 0, fl.size
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_create_with_args
|
45
|
-
fl = FileList.new("*.c", "x")
|
46
|
-
assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
|
47
|
-
fl.sort
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_create_with_pathname
|
51
|
-
fl = FileList.new(Pathname.new("*.c"))
|
52
|
-
assert_equal ["abc.c", "x.c", "xyz.c"].sort,
|
53
|
-
fl.sort
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_create_with_block
|
57
|
-
fl = FileList.new { |f| f.include("x") }
|
58
|
-
assert_equal ["x"], fl.resolve
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_create_with_brackets
|
62
|
-
fl = FileList["*.c", "x"]
|
63
|
-
assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
|
64
|
-
fl.sort
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_create_with_brackets_and_filelist
|
68
|
-
fl = FileList[FileList["*.c", "x"]]
|
69
|
-
assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
|
70
|
-
fl.sort
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_include_with_another_array
|
74
|
-
fl = FileList.new.include(["x", "y", "z"])
|
75
|
-
assert_equal ["x", "y", "z"].sort, fl.sort
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_include_with_another_filelist
|
79
|
-
fl = FileList.new.include(FileList["*.c", "x"])
|
80
|
-
assert_equal ["abc.c", "x.c", "xyz.c", "x"].sort,
|
81
|
-
fl.sort
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_include_with_pathname
|
85
|
-
fl = FileList.new.include(Pathname.new("*.c"))
|
86
|
-
assert_equal ["abc.c", "x.c", "xyz.c"].sort,
|
87
|
-
fl.sort
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_append
|
91
|
-
fl = FileList.new
|
92
|
-
fl << "a.rb" << "b.rb"
|
93
|
-
assert_equal ['a.rb', 'b.rb'], fl
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_append_pathname
|
97
|
-
fl = FileList.new
|
98
|
-
fl << Pathname.new("a.rb")
|
99
|
-
assert_equal ['a.rb'], fl
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_add_many
|
103
|
-
fl = FileList.new
|
104
|
-
fl.include %w(a d c)
|
105
|
-
fl.include('x', 'y')
|
106
|
-
assert_equal ['a', 'd', 'c', 'x', 'y'], fl
|
107
|
-
assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_add_return
|
111
|
-
f = FileList.new
|
112
|
-
g = f << "x"
|
113
|
-
assert_equal f.object_id, g.object_id
|
114
|
-
h = f.include("y")
|
115
|
-
assert_equal f.object_id, h.object_id
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_match
|
119
|
-
fl = FileList.new
|
120
|
-
fl.include '*.c'
|
121
|
-
|
122
|
-
assert_equal %w[abc.c x.c xyz.c], fl.sort
|
123
|
-
end
|
124
|
-
|
125
|
-
def test_add_matching
|
126
|
-
fl = FileList.new
|
127
|
-
fl << "a.java"
|
128
|
-
fl.include '*.c'
|
129
|
-
|
130
|
-
assert_equal %w[a.java abc.c x.c xyz.c], fl.sort
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_multiple_patterns
|
134
|
-
fl = FileList.new
|
135
|
-
fl.include('*.z', '*foo*')
|
136
|
-
|
137
|
-
assert_equal [], fl
|
138
|
-
|
139
|
-
fl.include('*.c', '*xist*')
|
140
|
-
assert_equal %w[x.c xyz.c abc.c existing].sort, fl.sort
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_square_bracket_pattern
|
144
|
-
fl = FileList.new
|
145
|
-
fl.include("abc.[ch]")
|
146
|
-
assert fl.size == 2
|
147
|
-
assert fl.include?("abc.c")
|
148
|
-
assert fl.include?("abc.h")
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_curly_bracket_pattern
|
152
|
-
fl = FileList.new
|
153
|
-
fl.include("abc.{c,h}")
|
154
|
-
assert fl.size == 2
|
155
|
-
assert fl.include?("abc.c")
|
156
|
-
assert fl.include?("abc.h")
|
157
|
-
end
|
158
|
-
|
159
|
-
def test_reject
|
160
|
-
fl = FileList.new
|
161
|
-
fl.include %w(x.c abc.c xyz.c existing)
|
162
|
-
fl.reject! { |fn| fn =~ /^x/ }
|
163
|
-
assert_equal %w[abc.c existing], fl
|
164
|
-
end
|
165
|
-
|
166
|
-
def test_exclude
|
167
|
-
fl = FileList['x.c', 'abc.c', 'xyz.c', 'existing']
|
168
|
-
fl.each { |fn| touch fn, :verbose => false }
|
169
|
-
|
170
|
-
x = fl.exclude(%r{^x.+\.})
|
171
|
-
|
172
|
-
assert_equal FileList, x.class
|
173
|
-
assert_equal %w(x.c abc.c existing), fl
|
174
|
-
assert_equal fl.object_id, x.object_id
|
175
|
-
|
176
|
-
fl.exclude('*.c')
|
177
|
-
|
178
|
-
assert_equal ['existing'], fl
|
179
|
-
|
180
|
-
fl.exclude('existing')
|
181
|
-
|
182
|
-
assert_equal [], fl
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_exclude_pathname
|
186
|
-
fl = FileList['x.c', 'abc.c', 'other']
|
187
|
-
fl.each { |fn| touch fn, :verbose => false }
|
188
|
-
|
189
|
-
fl.exclude(Pathname.new('*.c'))
|
190
|
-
|
191
|
-
assert_equal ['other'], fl
|
192
|
-
end
|
193
|
-
|
194
|
-
def test_excluding_via_block
|
195
|
-
fl = FileList['a.c', 'b.c', 'xyz.c']
|
196
|
-
fl.exclude { |fn| fn.pathmap('%n') == 'xyz' }
|
197
|
-
assert fl.excluded_from_list?("xyz.c"), "Should exclude xyz.c"
|
198
|
-
assert_equal ['a.c', 'b.c'], fl
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_exclude_return_on_create
|
202
|
-
fl = FileList['*'].exclude(/.*\.[hcx]$/)
|
203
|
-
assert_equal %w[cfiles existing xyzzy.txt], fl.sort
|
204
|
-
assert_equal FileList, fl.class
|
205
|
-
end
|
206
|
-
|
207
|
-
def test_exclude_with_string_return_on_create
|
208
|
-
fl = FileList['*'].exclude('abc.c')
|
209
|
-
assert_equal %w[abc.h abc.x cfiles existing x.c xyz.c xyzzy.txt], fl.sort
|
210
|
-
assert_equal FileList, fl.class
|
211
|
-
end
|
212
|
-
|
213
|
-
def test_exclude_curly_bracket_pattern
|
214
|
-
skip 'brace pattern matches not supported' unless defined? File::FNM_EXTGLOB
|
215
|
-
fl = FileList['*'].exclude('{abc,xyz}.c')
|
216
|
-
assert_equal %w[abc.h abc.x cfiles existing x.c xyzzy.txt], fl
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_exclude_an_array
|
220
|
-
fl = FileList['*'].exclude(['existing', '*.c'])
|
221
|
-
assert_equal %w[abc.h abc.x cfiles xyzzy.txt], fl
|
222
|
-
end
|
223
|
-
|
224
|
-
def test_exclude_a_filelist
|
225
|
-
excluded = FileList['existing', '*.c']
|
226
|
-
fl = FileList['*'].exclude(excluded)
|
227
|
-
assert_equal %w[abc.h abc.x cfiles xyzzy.txt], fl
|
228
|
-
end
|
229
|
-
|
230
|
-
def test_default_exclude
|
231
|
-
fl = FileList.new
|
232
|
-
fl.clear_exclude
|
233
|
-
fl.include("**/*~", "**/*.bak", "**/core")
|
234
|
-
assert fl.member?("core"), "Should include core"
|
235
|
-
assert fl.member?("x.bak"), "Should include .bak files"
|
236
|
-
end
|
237
|
-
|
238
|
-
def test_unique
|
239
|
-
fl = FileList.new
|
240
|
-
fl << "x.c" << "a.c" << "b.rb" << "a.c"
|
241
|
-
assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl
|
242
|
-
fl.uniq!
|
243
|
-
assert_equal ['x.c', 'a.c', 'b.rb'], fl
|
244
|
-
end
|
245
|
-
|
246
|
-
def test_to_string
|
247
|
-
fl = FileList.new
|
248
|
-
fl << "a.java" << "b.java"
|
249
|
-
assert_equal "a.java b.java", fl.to_s
|
250
|
-
assert_equal "a.java b.java", "#{fl}"
|
251
|
-
end
|
252
|
-
|
253
|
-
def test_to_array
|
254
|
-
fl = FileList['a.java', 'b.java']
|
255
|
-
assert_equal ['a.java', 'b.java'], fl.to_a
|
256
|
-
assert_equal Array, fl.to_a.class
|
257
|
-
assert_equal ['a.java', 'b.java'], fl.to_ary
|
258
|
-
assert_equal Array, fl.to_ary.class
|
259
|
-
end
|
260
|
-
|
261
|
-
def test_to_s_pending
|
262
|
-
fl = FileList['abc.*']
|
263
|
-
result = fl.to_s
|
264
|
-
assert_match(%r{abc\.c}, result)
|
265
|
-
assert_match(%r{abc\.h}, result)
|
266
|
-
assert_match(%r{abc\.x}, result)
|
267
|
-
assert_match(%r{(abc\..\b ?){2}}, result)
|
268
|
-
end
|
269
|
-
|
270
|
-
def test_inspect_pending
|
271
|
-
fl = FileList['abc.*']
|
272
|
-
result = fl.inspect
|
273
|
-
assert_match(%r{"abc\.c"}, result)
|
274
|
-
assert_match(%r{"abc\.h"}, result)
|
275
|
-
assert_match(%r{"abc\.x"}, result)
|
276
|
-
assert_match(%r|^\[("abc\..", ){2}"abc\.."\]$|, result)
|
277
|
-
end
|
278
|
-
|
279
|
-
def test_sub
|
280
|
-
fl = FileList["*.c"]
|
281
|
-
f2 = fl.sub(/\.c$/, ".o")
|
282
|
-
assert_equal FileList, f2.class
|
283
|
-
assert_equal ["abc.o", "x.o", "xyz.o"].sort,
|
284
|
-
f2.sort
|
285
|
-
f3 = fl.gsub(/\.c$/, ".o")
|
286
|
-
assert_equal FileList, f3.class
|
287
|
-
assert_equal ["abc.o", "x.o", "xyz.o"].sort,
|
288
|
-
f3.sort
|
289
|
-
end
|
290
|
-
|
291
|
-
def test_claim_to_be_a_kind_of_array
|
292
|
-
fl = FileList['*.c']
|
293
|
-
assert fl.is_a?(Array)
|
294
|
-
assert fl.kind_of?(Array)
|
295
|
-
end
|
296
|
-
|
297
|
-
def test_claim_to_be_a_kind_of_filelist
|
298
|
-
fl = FileList['*.c']
|
299
|
-
assert fl.is_a?(FileList)
|
300
|
-
assert fl.kind_of?(FileList)
|
301
|
-
end
|
302
|
-
|
303
|
-
def test_claim_to_be_a_filelist_instance
|
304
|
-
fl = FileList['*.c']
|
305
|
-
assert fl.instance_of?(FileList)
|
306
|
-
end
|
307
|
-
|
308
|
-
def test_dont_claim_to_be_an_array_instance
|
309
|
-
fl = FileList['*.c']
|
310
|
-
assert ! fl.instance_of?(Array)
|
311
|
-
end
|
312
|
-
|
313
|
-
def test_sub!
|
314
|
-
f = "x/a.c"
|
315
|
-
fl = FileList[f, "x/b.c"]
|
316
|
-
res = fl.sub!(/\.c$/, ".o")
|
317
|
-
assert_equal ["x/a.o", "x/b.o"].sort, fl.sort
|
318
|
-
assert_equal "x/a.c", f
|
319
|
-
assert_equal fl.object_id, res.object_id
|
320
|
-
end
|
321
|
-
|
322
|
-
def test_sub_with_block
|
323
|
-
fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"]
|
324
|
-
# The block version doesn't work the way I want it to ...
|
325
|
-
# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" }
|
326
|
-
f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class")
|
327
|
-
assert_equal [
|
328
|
-
"classes/org/onestepback/a.class",
|
329
|
-
"classes/org/onestepback/b.class"
|
330
|
-
].sort,
|
331
|
-
f2.sort
|
332
|
-
end
|
333
|
-
|
334
|
-
def test_string_ext
|
335
|
-
assert_equal "one.net", "one.two".ext("net")
|
336
|
-
assert_equal "one.net", "one.two".ext(".net")
|
337
|
-
assert_equal "one.net", "one".ext("net")
|
338
|
-
assert_equal "one.net", "one".ext(".net")
|
339
|
-
assert_equal "one.two.net", "one.two.c".ext(".net")
|
340
|
-
assert_equal "one/two.net", "one/two.c".ext(".net")
|
341
|
-
assert_equal "one.x/two.net", "one.x/two.c".ext(".net")
|
342
|
-
assert_equal "one.x/two.net", "one.x/two".ext(".net")
|
343
|
-
assert_equal ".onerc.net", ".onerc.dot".ext("net")
|
344
|
-
assert_equal ".onerc.net", ".onerc".ext("net")
|
345
|
-
assert_equal ".a/.onerc.net", ".a/.onerc".ext("net")
|
346
|
-
assert_equal "one", "one.two".ext('')
|
347
|
-
assert_equal "one", "one.two".ext
|
348
|
-
assert_equal ".one", ".one.two".ext
|
349
|
-
assert_equal ".one", ".one".ext
|
350
|
-
assert_equal ".", ".".ext("c")
|
351
|
-
assert_equal "..", "..".ext("c")
|
352
|
-
# These only need to work in windows
|
353
|
-
if Rake::Win32.windows?
|
354
|
-
assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net")
|
355
|
-
assert_equal "one.x\\two.net", "one.x\\two".ext(".net")
|
356
|
-
end
|
357
|
-
end
|
358
|
-
|
359
|
-
def test_filelist_ext
|
360
|
-
assert_equal FileList['one.c', '.one.c'],
|
361
|
-
FileList['one.net', '.one'].ext('c')
|
362
|
-
end
|
363
|
-
|
364
|
-
def test_gsub
|
365
|
-
fl = FileList["*.c"]
|
366
|
-
f2 = fl.gsub(/a/, "A")
|
367
|
-
assert_equal ["Abc.c", "x.c", "xyz.c"].sort,
|
368
|
-
f2.sort
|
369
|
-
end
|
370
|
-
|
371
|
-
def test_gsub!
|
372
|
-
f = FileList["*.c"]
|
373
|
-
f.gsub!(/a/, "A")
|
374
|
-
assert_equal ["Abc.c", "x.c", "xyz.c"].sort,
|
375
|
-
f.sort
|
376
|
-
end
|
377
|
-
|
378
|
-
def test_egrep_returns_0_if_no_matches
|
379
|
-
files = FileList['test/lib/*_test.rb'].exclude("test/lib/filelist_test.rb")
|
380
|
-
assert_equal 0, files.egrep(/XYZZY/) { }
|
381
|
-
end
|
382
|
-
|
383
|
-
def test_egrep_with_output
|
384
|
-
files = FileList['*.txt']
|
385
|
-
|
386
|
-
out, = capture_io do
|
387
|
-
files.egrep(/XYZZY/)
|
388
|
-
end
|
389
|
-
|
390
|
-
assert_equal "xyzzy.txt:2:XYZZY\n", out
|
391
|
-
end
|
392
|
-
|
393
|
-
def test_egrep_with_block
|
394
|
-
files = FileList['*.txt']
|
395
|
-
found = nil
|
396
|
-
|
397
|
-
files.egrep(/XYZZY/) do |fn, ln, line|
|
398
|
-
found = [fn, ln, line]
|
399
|
-
end
|
400
|
-
|
401
|
-
assert_equal ["xyzzy.txt", 2, "XYZZY\n"], found
|
402
|
-
end
|
403
|
-
|
404
|
-
def test_egrep_with_error
|
405
|
-
files = FileList['*.txt']
|
406
|
-
|
407
|
-
_, err = capture_io do
|
408
|
-
files.egrep(/XYZZY/) do |fn, ln, line |
|
409
|
-
raise "_EGREP_FAILURE_"
|
410
|
-
end
|
411
|
-
end
|
412
|
-
|
413
|
-
assert_equal "Error while processing 'xyzzy.txt': _EGREP_FAILURE_\n", err
|
414
|
-
end
|
415
|
-
|
416
|
-
def test_existing
|
417
|
-
fl = FileList['abc.c', 'notthere.c']
|
418
|
-
assert_equal ["abc.c"], fl.existing
|
419
|
-
assert fl.existing.is_a?(FileList)
|
420
|
-
end
|
421
|
-
|
422
|
-
def test_existing!
|
423
|
-
fl = FileList['abc.c', 'notthere.c']
|
424
|
-
result = fl.existing!
|
425
|
-
assert_equal ["abc.c"], fl
|
426
|
-
assert_equal fl.object_id, result.object_id
|
427
|
-
end
|
428
|
-
|
429
|
-
def test_ignore_special
|
430
|
-
f = FileList['*']
|
431
|
-
assert ! f.include?("CVS"), "Should not contain CVS"
|
432
|
-
assert ! f.include?(".svn"), "Should not contain .svn"
|
433
|
-
assert ! f.include?(".dummy"), "Should not contain dot files"
|
434
|
-
assert ! f.include?("x.bak"), "Should not contain .bak files"
|
435
|
-
assert ! f.include?("x~"), "Should not contain ~ files"
|
436
|
-
assert ! f.include?("core"), "Should not contain core files"
|
437
|
-
end
|
438
|
-
|
439
|
-
def test_clear_ignore_patterns
|
440
|
-
f = FileList['*', '.svn']
|
441
|
-
f.clear_exclude
|
442
|
-
assert f.include?("abc.c")
|
443
|
-
assert f.include?("xyz.c")
|
444
|
-
assert f.include?("CVS")
|
445
|
-
assert f.include?(".svn")
|
446
|
-
assert f.include?("x.bak")
|
447
|
-
assert f.include?("x~")
|
448
|
-
end
|
449
|
-
|
450
|
-
def test_exclude_with_alternate_file_seps
|
451
|
-
fl = FileList.new
|
452
|
-
assert fl.excluded_from_list?("x/CVS/y")
|
453
|
-
assert fl.excluded_from_list?("x\\CVS\\y")
|
454
|
-
assert fl.excluded_from_list?("x/.svn/y")
|
455
|
-
assert fl.excluded_from_list?("x\\.svn\\y")
|
456
|
-
assert fl.excluded_from_list?("x/core")
|
457
|
-
assert fl.excluded_from_list?("x\\core")
|
458
|
-
end
|
459
|
-
|
460
|
-
def test_add_default_exclude_list
|
461
|
-
fl = FileList.new
|
462
|
-
fl.exclude(/~\d+$/)
|
463
|
-
assert fl.excluded_from_list?("x/CVS/y")
|
464
|
-
assert fl.excluded_from_list?("x\\CVS\\y")
|
465
|
-
assert fl.excluded_from_list?("x/.svn/y")
|
466
|
-
assert fl.excluded_from_list?("x\\.svn\\y")
|
467
|
-
assert fl.excluded_from_list?("x/core")
|
468
|
-
assert fl.excluded_from_list?("x\\core")
|
469
|
-
assert fl.excluded_from_list?("x/abc~1")
|
470
|
-
end
|
471
|
-
|
472
|
-
def test_basic_array_functions
|
473
|
-
f = FileList['b', 'c', 'a']
|
474
|
-
assert_equal 'b', f.first
|
475
|
-
assert_equal 'b', f[0]
|
476
|
-
assert_equal 'a', f.last
|
477
|
-
assert_equal 'a', f[2]
|
478
|
-
assert_equal 'a', f[-1]
|
479
|
-
assert_equal ['a', 'b', 'c'], f.sort
|
480
|
-
f.sort!
|
481
|
-
assert_equal ['a', 'b', 'c'], f
|
482
|
-
end
|
483
|
-
|
484
|
-
def test_flatten
|
485
|
-
assert_equal ['a', 'x.c', 'xyz.c', 'abc.c'].sort,
|
486
|
-
['a', FileList['*.c']].flatten.sort
|
487
|
-
end
|
488
|
-
|
489
|
-
def test_clone_and_dup
|
490
|
-
a = FileList['a', 'b', 'c']
|
491
|
-
c = a.clone
|
492
|
-
d = a.dup
|
493
|
-
a << 'd'
|
494
|
-
assert_equal ['a', 'b', 'c', 'd'], a
|
495
|
-
assert_equal ['a', 'b', 'c'], c
|
496
|
-
assert_equal ['a', 'b', 'c'], d
|
497
|
-
end
|
498
|
-
|
499
|
-
def test_dup_and_clone_replicate_taint
|
500
|
-
a = FileList['a', 'b', 'c']
|
501
|
-
a.taint
|
502
|
-
c = a.clone
|
503
|
-
d = a.dup
|
504
|
-
assert c.tainted?, "Clone should be tainted"
|
505
|
-
assert d.tainted?, "Dup should be tainted"
|
506
|
-
end
|
507
|
-
|
508
|
-
def test_duped_items_will_thaw
|
509
|
-
a = FileList['a', 'b', 'c']
|
510
|
-
a.freeze
|
511
|
-
d = a.dup
|
512
|
-
d << 'more'
|
513
|
-
assert_equal ['a', 'b', 'c', 'more'], d
|
514
|
-
end
|
515
|
-
|
516
|
-
def test_cloned_items_stay_frozen
|
517
|
-
a = FileList['a', 'b', 'c']
|
518
|
-
a.freeze
|
519
|
-
c = a.clone
|
520
|
-
assert_raises(TypeError, RuntimeError) do
|
521
|
-
c << 'more'
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
def test_array_comparisons
|
526
|
-
fl = FileList['b', 'b']
|
527
|
-
a = ['b', 'a']
|
528
|
-
b = ['b', 'b']
|
529
|
-
c = ['b', 'c']
|
530
|
-
assert_equal(1, fl <=> a)
|
531
|
-
assert_equal(0, fl <=> b)
|
532
|
-
assert_equal(-1, fl <=> c)
|
533
|
-
assert_equal(-1, a <=> fl)
|
534
|
-
assert_equal(0, b <=> fl)
|
535
|
-
assert_equal(1, c <=> fl)
|
536
|
-
end
|
537
|
-
|
538
|
-
def test_array_equality
|
539
|
-
a = FileList['a', 'b']
|
540
|
-
b = ['a', 'b']
|
541
|
-
assert a == b
|
542
|
-
assert b == a
|
543
|
-
# assert a.eql?(b)
|
544
|
-
# assert b.eql?(a)
|
545
|
-
assert ! a.equal?(b)
|
546
|
-
assert ! b.equal?(a)
|
547
|
-
end
|
548
|
-
|
549
|
-
def test_enumeration_methods
|
550
|
-
a = FileList['a', 'b']
|
551
|
-
b = a.map { |it| it.upcase }
|
552
|
-
assert_equal ['A', 'B'], b
|
553
|
-
assert_equal FileList, b.class
|
554
|
-
|
555
|
-
b = a.map { |it| it.upcase }
|
556
|
-
assert_equal ['A', 'B'], b
|
557
|
-
assert_equal FileList, b.class
|
558
|
-
|
559
|
-
b = a.sort
|
560
|
-
assert_equal ['a', 'b'], b
|
561
|
-
assert_equal FileList, b.class
|
562
|
-
|
563
|
-
b = a.sort_by { |it| it }
|
564
|
-
assert_equal ['a', 'b'], b
|
565
|
-
assert_equal FileList, b.class
|
566
|
-
|
567
|
-
b = a.select { |it| it == 'b' }
|
568
|
-
assert_equal ['b'], b
|
569
|
-
assert_equal FileList, b.class
|
570
|
-
|
571
|
-
b = a.select { |it| it.size == 1 }
|
572
|
-
assert_equal ['a', 'b'], b
|
573
|
-
assert_equal FileList, b.class
|
574
|
-
|
575
|
-
b = a.reject { |it| it == 'b' }
|
576
|
-
assert_equal ['a'], b
|
577
|
-
assert_equal FileList, b.class
|
578
|
-
|
579
|
-
b = a.grep(/./)
|
580
|
-
assert_equal ['a', 'b'], b
|
581
|
-
assert_equal FileList, b.class
|
582
|
-
|
583
|
-
b = a.partition { |it| it == 'b' }
|
584
|
-
assert_equal [['b'], ['a']], b
|
585
|
-
assert_equal Array, b.class
|
586
|
-
assert_equal FileList, b[0].class
|
587
|
-
assert_equal FileList, b[1].class
|
588
|
-
|
589
|
-
b = a.zip(['x', 'y']).to_a
|
590
|
-
assert_equal [['a', 'x'], ['b', 'y']], b
|
591
|
-
assert_equal Array, b.class
|
592
|
-
assert_equal Array, b[0].class
|
593
|
-
assert_equal Array, b[1].class
|
594
|
-
end
|
595
|
-
|
596
|
-
def test_array_operators
|
597
|
-
a = ['a', 'b']
|
598
|
-
b = ['c', 'd']
|
599
|
-
f = FileList['x', 'y']
|
600
|
-
g = FileList['w', 'z']
|
601
|
-
|
602
|
-
r = f + g
|
603
|
-
assert_equal ['x', 'y', 'w', 'z'], r
|
604
|
-
assert_equal FileList, r.class
|
605
|
-
|
606
|
-
r = a + g
|
607
|
-
assert_equal ['a', 'b', 'w', 'z'], r
|
608
|
-
assert_equal Array, r.class
|
609
|
-
|
610
|
-
r = f + b
|
611
|
-
assert_equal ['x', 'y', 'c', 'd'], r
|
612
|
-
assert_equal FileList, r.class
|
613
|
-
|
614
|
-
r = FileList['w', 'x', 'y', 'z'] - f
|
615
|
-
assert_equal ['w', 'z'], r
|
616
|
-
assert_equal FileList, r.class
|
617
|
-
|
618
|
-
r = FileList['w', 'x', 'y', 'z'] & f
|
619
|
-
assert_equal ['x', 'y'], r
|
620
|
-
assert_equal FileList, r.class
|
621
|
-
|
622
|
-
r = f * 2
|
623
|
-
assert_equal ['x', 'y', 'x', 'y'], r
|
624
|
-
assert_equal FileList, r.class
|
625
|
-
|
626
|
-
r = f * ','
|
627
|
-
assert_equal 'x,y', r
|
628
|
-
assert_equal String, r.class
|
629
|
-
|
630
|
-
r = f | ['a', 'x']
|
631
|
-
assert_equal ['a', 'x', 'y'].sort, r.sort
|
632
|
-
assert_equal FileList, r.class
|
633
|
-
end
|
634
|
-
|
635
|
-
def test_other_array_returning_methods
|
636
|
-
f = FileList['a', nil, 'b']
|
637
|
-
r = f.compact
|
638
|
-
assert_equal ['a', 'b'], r
|
639
|
-
assert_equal FileList, r.class
|
640
|
-
|
641
|
-
f = FileList['a', 'b']
|
642
|
-
r = f.concat(['x', 'y'])
|
643
|
-
assert_equal ['a', 'b', 'x', 'y'], r
|
644
|
-
assert_equal FileList, r.class
|
645
|
-
|
646
|
-
f = FileList['a', ['b', 'c'], FileList['d', 'e']]
|
647
|
-
r = f.flatten
|
648
|
-
assert_equal ['a', 'b', 'c', 'd', 'e'], r
|
649
|
-
assert_equal FileList, r.class
|
650
|
-
|
651
|
-
f = FileList['a', 'b', 'a']
|
652
|
-
r = f.uniq
|
653
|
-
assert_equal ['a', 'b'], r
|
654
|
-
assert_equal FileList, r.class
|
655
|
-
|
656
|
-
f = FileList['a', 'b', 'c', 'd']
|
657
|
-
r = f.values_at(1, 3)
|
658
|
-
assert_equal ['b', 'd'], r
|
659
|
-
assert_equal FileList, r.class
|
660
|
-
end
|
661
|
-
|
662
|
-
def test_special_return_delegating_methods_object_type
|
663
|
-
custom_file_list = Class.new(FileList)
|
664
|
-
f = custom_file_list.new
|
665
|
-
|
666
|
-
FileList::SPECIAL_RETURN.each do |m|
|
667
|
-
r = if [].method(m).arity == 1
|
668
|
-
f.send(m, [])
|
669
|
-
else
|
670
|
-
f.send(m)
|
671
|
-
end
|
672
|
-
|
673
|
-
assert_equal custom_file_list, r.class
|
674
|
-
end
|
675
|
-
end
|
676
|
-
|
677
|
-
def test_file_utils_can_use_filelists
|
678
|
-
cfiles = FileList['*.c']
|
679
|
-
|
680
|
-
cp cfiles, @cdir, :verbose => false
|
681
|
-
|
682
|
-
assert File.exist?(File.join(@cdir, 'abc.c'))
|
683
|
-
assert File.exist?(File.join(@cdir, 'xyz.c'))
|
684
|
-
assert File.exist?(File.join(@cdir, 'x.c'))
|
685
|
-
end
|
686
|
-
|
687
|
-
end
|