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.

Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rubocop.yml +0 -9
  4. data/.travis.yml +28 -0
  5. data/CONTRIBUTING.rdoc +3 -5
  6. data/Gemfile +3 -0
  7. data/History.rdoc +1770 -273
  8. data/Rakefile +15 -68
  9. data/appveyor.yml +24 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +6 -0
  12. data/doc/release_notes/README.md +4 -0
  13. data/doc/release_notes/rake-0.7.3.rdoc +0 -0
  14. data/{bin → exe}/rake +0 -6
  15. data/lib/rake.rb +1 -3
  16. data/lib/rake/application.rb +3 -6
  17. data/lib/rake/cpu_counter.rb +3 -17
  18. data/lib/rake/file_utils.rb +22 -6
  19. data/lib/rake/packagetask.rb +12 -1
  20. data/lib/rake/rake_test_loader.rb +0 -1
  21. data/lib/rake/rule_recursion_overflow_error.rb +0 -1
  22. data/lib/rake/task.rb +3 -3
  23. data/lib/rake/task_arguments.rb +2 -1
  24. data/lib/rake/testtask.rb +5 -1
  25. data/lib/rake/thread_pool.rb +0 -1
  26. data/lib/rake/version.rb +2 -0
  27. data/rake.gemspec +30 -0
  28. metadata +21 -110
  29. data/.autotest +0 -7
  30. data/.togglerc +0 -7
  31. data/Manifest.txt +0 -154
  32. data/lib/rake/contrib/.document +0 -1
  33. data/rakelib/test_times.rake +0 -25
  34. data/test/file_creation.rb +0 -34
  35. data/test/helper.rb +0 -134
  36. data/test/support/rakefile_definitions.rb +0 -476
  37. data/test/support/ruby_runner.rb +0 -34
  38. data/test/test_private_reader.rb +0 -42
  39. data/test/test_rake.rb +0 -40
  40. data/test/test_rake_application.rb +0 -659
  41. data/test/test_rake_application_options.rb +0 -468
  42. data/test/test_rake_backtrace.rb +0 -119
  43. data/test/test_rake_clean.rb +0 -61
  44. data/test/test_rake_cpu_counter.rb +0 -68
  45. data/test/test_rake_definitions.rb +0 -84
  46. data/test/test_rake_directory_task.rb +0 -76
  47. data/test/test_rake_dsl.rb +0 -40
  48. data/test/test_rake_early_time.rb +0 -31
  49. data/test/test_rake_extension.rb +0 -59
  50. data/test/test_rake_file_creation_task.rb +0 -56
  51. data/test/test_rake_file_list.rb +0 -687
  52. data/test/test_rake_file_list_path_map.rb +0 -15
  53. data/test/test_rake_file_task.rb +0 -197
  54. data/test/test_rake_file_utils.rb +0 -318
  55. data/test/test_rake_ftp_file.rb +0 -74
  56. data/test/test_rake_functional.rb +0 -484
  57. data/test/test_rake_invocation_chain.rb +0 -64
  58. data/test/test_rake_late_time.rb +0 -18
  59. data/test/test_rake_linked_list.rb +0 -84
  60. data/test/test_rake_makefile_loader.rb +0 -46
  61. data/test/test_rake_multi_task.rb +0 -64
  62. data/test/test_rake_name_space.rb +0 -57
  63. data/test/test_rake_package_task.rb +0 -79
  64. data/test/test_rake_path_map.rb +0 -168
  65. data/test/test_rake_path_map_explode.rb +0 -34
  66. data/test/test_rake_path_map_partial.rb +0 -18
  67. data/test/test_rake_pathname_extensions.rb +0 -15
  68. data/test/test_rake_pseudo_status.rb +0 -21
  69. data/test/test_rake_rake_test_loader.rb +0 -20
  70. data/test/test_rake_reduce_compat.rb +0 -26
  71. data/test/test_rake_require.rb +0 -40
  72. data/test/test_rake_rules.rb +0 -388
  73. data/test/test_rake_scope.rb +0 -44
  74. data/test/test_rake_task.rb +0 -430
  75. data/test/test_rake_task_argument_parsing.rb +0 -119
  76. data/test/test_rake_task_arguments.rb +0 -134
  77. data/test/test_rake_task_manager.rb +0 -178
  78. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  79. data/test/test_rake_task_with_arguments.rb +0 -172
  80. data/test/test_rake_test_task.rb +0 -130
  81. data/test/test_rake_thread_pool.rb +0 -145
  82. data/test/test_rake_top_level_functions.rb +0 -71
  83. data/test/test_rake_win32.rb +0 -72
  84. data/test/test_thread_history_display.rb +0 -101
  85. 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
@@ -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
@@ -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