gemrage 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +6 -0
  3. data/VERSION +1 -1
  4. data/gemrage.gemspec +160 -2
  5. data/lib/rubygems/commands/scan_command.rb +26 -7
  6. data/spec/spec_helper.rb +2 -1
  7. data/vendor/ruby/1.8/bin/launchy +19 -0
  8. data/vendor/ruby/1.8/bin/rake +19 -0
  9. data/vendor/ruby/1.8/cache/configuration-1.1.0.gem +0 -0
  10. data/vendor/ruby/1.8/cache/launchy-0.3.7.gem +0 -0
  11. data/vendor/ruby/1.8/cache/rake-0.8.7.gem +0 -0
  12. data/vendor/ruby/1.8/gems/configuration-1.1.0/README +197 -0
  13. data/vendor/ruby/1.8/gems/configuration-1.1.0/README.erb +69 -0
  14. data/vendor/ruby/1.8/gems/configuration-1.1.0/Rakefile +241 -0
  15. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/a.rb +5 -0
  16. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/b.rb +19 -0
  17. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/c.rb +8 -0
  18. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/d.rb +5 -0
  19. data/vendor/ruby/1.8/gems/configuration-1.1.0/config/e.rb +13 -0
  20. data/vendor/ruby/1.8/gems/configuration-1.1.0/configuration.gemspec +28 -0
  21. data/vendor/ruby/1.8/gems/configuration-1.1.0/lib/configuration.rb +199 -0
  22. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/a.rb +11 -0
  23. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/b.rb +11 -0
  24. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/c.rb +11 -0
  25. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/d.rb +14 -0
  26. data/vendor/ruby/1.8/gems/configuration-1.1.0/samples/e.rb +12 -0
  27. data/vendor/ruby/1.8/gems/launchy-0.3.7/HISTORY +71 -0
  28. data/vendor/ruby/1.8/gems/launchy-0.3.7/LICENSE +16 -0
  29. data/vendor/ruby/1.8/gems/launchy-0.3.7/README +53 -0
  30. data/vendor/ruby/1.8/gems/launchy-0.3.7/Rakefile +62 -0
  31. data/vendor/ruby/1.8/gems/launchy-0.3.7/bin/launchy +12 -0
  32. data/vendor/ruby/1.8/gems/launchy-0.3.7/gemspec.rb +41 -0
  33. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/application.rb +178 -0
  34. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/browser.rb +98 -0
  35. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/command_line.rb +48 -0
  36. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/paths.rb +53 -0
  37. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy/version.rb +17 -0
  38. data/vendor/ruby/1.8/gems/launchy-0.3.7/lib/launchy.rb +53 -0
  39. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/application_spec.rb +62 -0
  40. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/browser_spec.rb +58 -0
  41. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/launchy_spec.rb +18 -0
  42. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/paths_spec.rb +15 -0
  43. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/spec_helper.rb +5 -0
  44. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/tattle-host-os.yml +427 -0
  45. data/vendor/ruby/1.8/gems/launchy-0.3.7/spec/version_spec.rb +11 -0
  46. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/announce.rake +39 -0
  47. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/config.rb +107 -0
  48. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/distribution.rake +46 -0
  49. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/documentation.rake +32 -0
  50. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/rspec.rake +37 -0
  51. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/rubyforge.rake +52 -0
  52. data/vendor/ruby/1.8/gems/launchy-0.3.7/tasks/utils.rb +80 -0
  53. data/vendor/ruby/1.8/gems/rake-0.8.7/CHANGES +440 -0
  54. data/vendor/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE +21 -0
  55. data/vendor/ruby/1.8/gems/rake-0.8.7/README +196 -0
  56. data/vendor/ruby/1.8/gems/rake-0.8.7/Rakefile +430 -0
  57. data/vendor/ruby/1.8/gems/rake-0.8.7/TODO +20 -0
  58. data/vendor/ruby/1.8/gems/rake-0.8.7/bin/rake +31 -0
  59. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc +102 -0
  60. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 +38 -0
  61. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 +35 -0
  62. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/a.c +6 -0
  63. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/b.c +6 -0
  64. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/example/main.c +11 -0
  65. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc +51 -0
  66. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb +591 -0
  67. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc +127 -0
  68. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz +0 -0
  69. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rakefile.rdoc +534 -0
  70. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc +151 -0
  71. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +23 -0
  72. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +35 -0
  73. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +53 -0
  74. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +78 -0
  75. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +46 -0
  76. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +141 -0
  77. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +119 -0
  78. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +59 -0
  79. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +121 -0
  80. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +47 -0
  81. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +114 -0
  82. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +165 -0
  83. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +112 -0
  84. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +147 -0
  85. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +53 -0
  86. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +55 -0
  87. data/vendor/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +55 -0
  88. data/vendor/ruby/1.8/gems/rake-0.8.7/install.rb +88 -0
  89. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb +108 -0
  90. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb +8 -0
  91. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb +33 -0
  92. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +24 -0
  93. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb +153 -0
  94. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb +75 -0
  95. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  96. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +47 -0
  97. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb +209 -0
  98. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb +97 -0
  99. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb +42 -0
  100. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb +184 -0
  101. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb +5 -0
  102. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb +209 -0
  103. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +23 -0
  104. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb +23 -0
  105. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb +23 -0
  106. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb +161 -0
  107. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb +55 -0
  108. data/vendor/ruby/1.8/gems/rake-0.8.7/lib/rake.rb +2506 -0
  109. data/vendor/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb +26 -0
  110. data/vendor/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb +5 -0
  111. data/vendor/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb +5 -0
  112. data/vendor/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb +47 -0
  113. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile +15 -0
  114. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile +19 -0
  115. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile +22 -0
  116. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile +33 -0
  117. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile +19 -0
  118. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf +1 -0
  119. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile +17 -0
  120. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile +57 -0
  121. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb +3 -0
  122. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb +3 -0
  123. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf +14 -0
  124. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile +8 -0
  125. data/vendor/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile +1 -0
  126. data/vendor/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb +32 -0
  127. data/vendor/ruby/1.8/gems/rake-0.8.7/test/functional.rb +15 -0
  128. data/vendor/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb +30 -0
  129. data/vendor/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb +24 -0
  130. data/vendor/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb +3 -0
  131. data/vendor/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb +3 -0
  132. data/vendor/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb +339 -0
  133. data/vendor/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb +3 -0
  134. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_application.rb +675 -0
  135. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb +14 -0
  136. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb +85 -0
  137. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb +35 -0
  138. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb +63 -0
  139. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb +62 -0
  140. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb +143 -0
  141. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb +623 -0
  142. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb +251 -0
  143. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb +59 -0
  144. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb +81 -0
  145. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb +26 -0
  146. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb +45 -0
  147. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb +55 -0
  148. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb +118 -0
  149. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb +210 -0
  150. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb +26 -0
  151. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb +41 -0
  152. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb +88 -0
  153. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_require.rb +35 -0
  154. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb +349 -0
  155. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb +89 -0
  156. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb +173 -0
  157. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb +12 -0
  158. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb +374 -0
  159. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb +77 -0
  160. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb +86 -0
  161. data/vendor/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb +72 -0
  162. data/vendor/ruby/1.8/specifications/configuration-1.1.0.gemspec +27 -0
  163. data/vendor/ruby/1.8/specifications/launchy-0.3.7.gemspec +44 -0
  164. data/vendor/ruby/1.8/specifications/rake-0.8.7.gemspec +32 -0
  165. metadata +163 -5
@@ -0,0 +1,623 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+
6
+ require 'test/capture_stdout'
7
+ require 'test/rake_test_setup'
8
+
9
+ class TestFileList < Test::Unit::TestCase
10
+ FileList = Rake::FileList
11
+ include CaptureStdout
12
+ include TestMethods
13
+
14
+ def setup
15
+ create_test_data
16
+ end
17
+
18
+ def teardown
19
+ # FileList.select_default_ignore_patterns
20
+ FileUtils.rm_rf("testdata")
21
+ end
22
+
23
+ def test_delgating_methods_do_not_include_to_a_or_to_ary
24
+ assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a"
25
+ assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a"
26
+ assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary"
27
+ assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary"
28
+ end
29
+
30
+ def test_create
31
+ fl = FileList.new
32
+ assert_equal 0, fl.size
33
+ end
34
+
35
+ def test_create_with_args
36
+ fl = FileList.new("testdata/*.c", "x")
37
+ assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort,
38
+ fl.sort
39
+ end
40
+
41
+ def test_create_with_block
42
+ fl = FileList.new { |f| f.include("x") }
43
+ assert_equal ["x"], fl.resolve
44
+ end
45
+
46
+ def test_create_with_brackets
47
+ fl = FileList["testdata/*.c", "x"]
48
+ assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort,
49
+ fl.sort
50
+ end
51
+
52
+ def test_create_with_brackets_and_filelist
53
+ fl = FileList[FileList["testdata/*.c", "x"]]
54
+ assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort,
55
+ fl.sort
56
+ end
57
+
58
+ def test_include_with_another_array
59
+ fl = FileList.new.include(["x", "y", "z"])
60
+ assert_equal ["x", "y", "z"].sort, fl.sort
61
+ end
62
+
63
+ def test_include_with_another_filelist
64
+ fl = FileList.new.include(FileList["testdata/*.c", "x"])
65
+ assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort,
66
+ fl.sort
67
+ end
68
+
69
+ def test_append
70
+ fl = FileList.new
71
+ fl << "a.rb" << "b.rb"
72
+ assert_equal ['a.rb', 'b.rb'], fl
73
+ end
74
+
75
+ def test_add_many
76
+ fl = FileList.new
77
+ fl.include %w(a d c)
78
+ fl.include('x', 'y')
79
+ assert_equal ['a', 'd', 'c', 'x', 'y'], fl
80
+ assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve
81
+ end
82
+
83
+ def test_add_return
84
+ f = FileList.new
85
+ g = f << "x"
86
+ assert_equal f.object_id, g.object_id
87
+ h = f.include("y")
88
+ assert_equal f.object_id, h.object_id
89
+ end
90
+
91
+ def test_match
92
+ fl = FileList.new
93
+ fl.include('test/test*.rb')
94
+ assert fl.include?("test/test_filelist.rb")
95
+ assert fl.size > 3
96
+ fl.each { |fn| assert_match(/\.rb$/, fn) }
97
+ end
98
+
99
+ def test_add_matching
100
+ fl = FileList.new
101
+ fl << "a.java"
102
+ fl.include("test/*.rb")
103
+ assert_equal "a.java", fl[0]
104
+ assert fl.size > 2
105
+ assert fl.include?("test/test_filelist.rb")
106
+ end
107
+
108
+ def test_multiple_patterns
109
+ create_test_data
110
+ fl = FileList.new
111
+ fl.include('*.c', '*xist*')
112
+ assert_equal [], fl
113
+ fl.include('testdata/*.c', 'testdata/*xist*')
114
+ assert_equal [
115
+ 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c', 'testdata/existing'
116
+ ].sort, fl.sort
117
+ end
118
+
119
+ def test_square_bracket_pattern
120
+ fl = FileList.new
121
+ fl.include("testdata/abc.[ch]")
122
+ assert fl.size == 2
123
+ assert fl.include?("testdata/abc.c")
124
+ assert fl.include?("testdata/abc.h")
125
+ end
126
+
127
+ def test_curly_bracket_pattern
128
+ fl = FileList.new
129
+ fl.include("testdata/abc.{c,h}")
130
+ assert fl.size == 2
131
+ assert fl.include?("testdata/abc.c")
132
+ assert fl.include?("testdata/abc.h")
133
+ end
134
+
135
+ def test_reject
136
+ fl = FileList.new
137
+ fl.include %w(testdata/x.c testdata/abc.c testdata/xyz.c testdata/existing)
138
+ fl.reject! { |fn| fn =~ %r{/x} }
139
+ assert_equal [
140
+ 'testdata/abc.c', 'testdata/existing'
141
+ ], fl
142
+ end
143
+
144
+ def test_exclude
145
+ fl = FileList['testdata/x.c', 'testdata/abc.c', 'testdata/xyz.c', 'testdata/existing']
146
+ fl.each { |fn| touch fn, :verbose => false }
147
+ x = fl.exclude(%r{/x.+\.})
148
+ assert_equal FileList, x.class
149
+ assert_equal %w(testdata/x.c testdata/abc.c testdata/existing), fl
150
+ assert_equal fl.object_id, x.object_id
151
+ fl.exclude('testdata/*.c')
152
+ assert_equal ['testdata/existing'], fl
153
+ fl.exclude('testdata/existing')
154
+ assert_equal [], fl
155
+ end
156
+
157
+ def test_excluding_via_block
158
+ fl = FileList['testdata/a.c', 'testdata/b.c', 'testdata/xyz.c']
159
+ fl.exclude { |fn| fn.pathmap('%n') == 'xyz' }
160
+ assert fl.exclude?("xyz.c"), "Should exclude xyz.c"
161
+ assert_equal ['testdata/a.c', 'testdata/b.c'], fl
162
+ end
163
+
164
+ def test_exclude_return_on_create
165
+ fl = FileList['testdata/*'].exclude(/.*\.[hcx]$/)
166
+ assert_equal ['testdata/existing', 'testdata/cfiles'].sort, fl.sort
167
+ assert_equal FileList, fl.class
168
+ end
169
+
170
+ def test_exclude_with_string_return_on_create
171
+ fl = FileList['testdata/*'].exclude('testdata/abc.c')
172
+ assert_equal %w(testdata/existing testdata/cfiles testdata/x.c testdata/abc.h testdata/abc.x testdata/xyz.c).sort, fl.sort
173
+ assert_equal FileList, fl.class
174
+ end
175
+
176
+ def test_default_exclude
177
+ fl = FileList.new
178
+ fl.clear_exclude
179
+ fl.include("**/*~", "**/*.bak", "**/core")
180
+ assert fl.member?("testdata/core"), "Should include core"
181
+ assert fl.member?("testdata/x.bak"), "Should include .bak files"
182
+ end
183
+
184
+ def test_unique
185
+ fl = FileList.new
186
+ fl << "x.c" << "a.c" << "b.rb" << "a.c"
187
+ assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl
188
+ fl.uniq!
189
+ assert_equal ['x.c', 'a.c', 'b.rb'], fl
190
+ end
191
+
192
+ def test_to_string
193
+ fl = FileList.new
194
+ fl << "a.java" << "b.java"
195
+ assert_equal "a.java b.java", fl.to_s
196
+ assert_equal "a.java b.java", "#{fl}"
197
+ end
198
+
199
+ def test_to_array
200
+ fl = FileList['a.java', 'b.java']
201
+ assert_equal ['a.java', 'b.java'], fl.to_a
202
+ assert_equal Array, fl.to_a.class
203
+ assert_equal ['a.java', 'b.java'], fl.to_ary
204
+ assert_equal Array, fl.to_ary.class
205
+ end
206
+
207
+ def test_to_s_pending
208
+ fl = FileList['testdata/abc.*']
209
+ result = fl.to_s
210
+ assert_match(%r{testdata/abc\.c}, result)
211
+ assert_match(%r{testdata/abc\.h}, result)
212
+ assert_match(%r{testdata/abc\.x}, result)
213
+ assert_match(%r{(testdata/abc\..\b ?){2}}, result)
214
+ end
215
+
216
+ def test_inspect_pending
217
+ fl = FileList['testdata/abc.*']
218
+ result = fl.inspect
219
+ assert_match(%r{"testdata/abc\.c"}, result)
220
+ assert_match(%r{"testdata/abc\.h"}, result)
221
+ assert_match(%r{"testdata/abc\.x"}, result)
222
+ assert_match(%r|^\[("testdata/abc\..", ){2}"testdata/abc\.."\]$|, result)
223
+ end
224
+
225
+ def test_sub
226
+ fl = FileList["testdata/*.c"]
227
+ f2 = fl.sub(/\.c$/, ".o")
228
+ assert_equal FileList, f2.class
229
+ assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort,
230
+ f2.sort
231
+ f3 = fl.gsub(/\.c$/, ".o")
232
+ assert_equal FileList, f3.class
233
+ assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort,
234
+ f3.sort
235
+ end
236
+
237
+ def test_claim_to_be_a_kind_of_array
238
+ fl = FileList['testdata/*.c']
239
+ assert fl.is_a?(Array)
240
+ assert fl.kind_of?(Array)
241
+ end
242
+
243
+ def test_claim_to_be_a_kind_of_filelist
244
+ fl = FileList['testdata/*.c']
245
+ assert fl.is_a?(FileList)
246
+ assert fl.kind_of?(FileList)
247
+ end
248
+
249
+ def test_claim_to_be_a_filelist_instance
250
+ fl = FileList['testdata/*.c']
251
+ assert fl.instance_of?(FileList)
252
+ end
253
+
254
+ def test_dont_claim_to_be_an_array_instance
255
+ fl = FileList['testdata/*.c']
256
+ assert ! fl.instance_of?(Array)
257
+ end
258
+
259
+ def test_sub!
260
+ f = "x/a.c"
261
+ fl = FileList[f, "x/b.c"]
262
+ res = fl.sub!(/\.c$/, ".o")
263
+ assert_equal ["x/a.o", "x/b.o"].sort, fl.sort
264
+ assert_equal "x/a.c", f
265
+ assert_equal fl.object_id, res.object_id
266
+ end
267
+
268
+ def test_sub_with_block
269
+ fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"]
270
+ # The block version doesn't work the way I want it to ...
271
+ # f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" }
272
+ f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class")
273
+ assert_equal [
274
+ "classes/org/onestepback/a.class",
275
+ "classes/org/onestepback/b.class"
276
+ ].sort,
277
+ f2.sort
278
+ end
279
+
280
+ def test_string_ext
281
+ assert_equal "one.net", "one.two".ext("net")
282
+ assert_equal "one.net", "one.two".ext(".net")
283
+ assert_equal "one.net", "one".ext("net")
284
+ assert_equal "one.net", "one".ext(".net")
285
+ assert_equal "one.two.net", "one.two.c".ext(".net")
286
+ assert_equal "one/two.net", "one/two.c".ext(".net")
287
+ assert_equal "one.x/two.net", "one.x/two.c".ext(".net")
288
+ assert_equal "one.x/two.net", "one.x/two".ext(".net")
289
+ assert_equal ".onerc.net", ".onerc.dot".ext("net")
290
+ assert_equal ".onerc.net", ".onerc".ext("net")
291
+ assert_equal ".a/.onerc.net", ".a/.onerc".ext("net")
292
+ assert_equal "one", "one.two".ext('')
293
+ assert_equal "one", "one.two".ext
294
+ assert_equal ".one", ".one.two".ext
295
+ assert_equal ".one", ".one".ext
296
+ assert_equal ".", ".".ext("c")
297
+ assert_equal "..", "..".ext("c")
298
+ # These only need to work in windows
299
+ if Rake::Win32.windows?
300
+ assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net")
301
+ assert_equal "one.x\\two.net", "one.x\\two".ext(".net")
302
+ end
303
+ end
304
+
305
+ def test_filelist_ext
306
+ assert_equal FileList['one.c', '.one.c'],
307
+ FileList['one.net', '.one'].ext('c')
308
+ end
309
+
310
+ def test_gsub
311
+ create_test_data
312
+ fl = FileList["testdata/*.c"]
313
+ f2 = fl.gsub(/a/, "A")
314
+ assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort,
315
+ f2.sort
316
+ end
317
+
318
+ def test_gsub!
319
+ create_test_data
320
+ f = FileList["testdata/*.c"]
321
+ f.gsub!(/a/, "A")
322
+ assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort,
323
+ f.sort
324
+ end
325
+
326
+ def test_egrep_with_output
327
+ files = FileList['test/test*.rb']
328
+ the_line_number = __LINE__ + 1
329
+ out = capture_stdout do files.egrep(/PUGH/) end
330
+ assert_match(/:#{the_line_number}:/, out)
331
+ end
332
+
333
+ def test_egrep_with_block
334
+ files = FileList['test/test*.rb']
335
+ found = false
336
+ the_line_number = __LINE__ + 1
337
+ files.egrep(/XYZZY/) do |fn, ln, line |
338
+ assert_equal 'test/test_filelist.rb', fn
339
+ assert_equal the_line_number, ln
340
+ assert_match(/files\.egrep/, line)
341
+ found = true
342
+ end
343
+ assert found, "should have found a matching line"
344
+ end
345
+
346
+ def test_existing
347
+ fl = FileList['testdata/abc.c', 'testdata/notthere.c']
348
+ assert_equal ["testdata/abc.c"], fl.existing
349
+ assert fl.existing.is_a?(FileList)
350
+ end
351
+
352
+ def test_existing!
353
+ fl = FileList['testdata/abc.c', 'testdata/notthere.c']
354
+ result = fl.existing!
355
+ assert_equal ["testdata/abc.c"], fl
356
+ assert_equal fl.object_id, result.object_id
357
+ end
358
+
359
+ def test_ignore_special
360
+ f = FileList['testdata/*']
361
+ assert ! f.include?("testdata/CVS"), "Should not contain CVS"
362
+ assert ! f.include?("testdata/.svn"), "Should not contain .svn"
363
+ assert ! f.include?("testdata/.dummy"), "Should not contain dot files"
364
+ assert ! f.include?("testdata/x.bak"), "Should not contain .bak files"
365
+ assert ! f.include?("testdata/x~"), "Should not contain ~ files"
366
+ assert ! f.include?("testdata/core"), "Should not contain core files"
367
+ end
368
+
369
+ def test_clear_ignore_patterns
370
+ f = FileList['testdata/*', 'testdata/.svn']
371
+ f.clear_exclude
372
+ assert f.include?("testdata/abc.c")
373
+ assert f.include?("testdata/xyz.c")
374
+ assert f.include?("testdata/CVS")
375
+ assert f.include?("testdata/.svn")
376
+ assert f.include?("testdata/x.bak")
377
+ assert f.include?("testdata/x~")
378
+ end
379
+
380
+ def test_exclude_with_alternate_file_seps
381
+ fl = FileList.new
382
+ assert fl.exclude?("x/CVS/y")
383
+ assert fl.exclude?("x\\CVS\\y")
384
+ assert fl.exclude?("x/.svn/y")
385
+ assert fl.exclude?("x\\.svn\\y")
386
+ assert fl.exclude?("x/core")
387
+ assert fl.exclude?("x\\core")
388
+ end
389
+
390
+ def test_add_default_exclude_list
391
+ fl = FileList.new
392
+ fl.exclude(/~\d+$/)
393
+ assert fl.exclude?("x/CVS/y")
394
+ assert fl.exclude?("x\\CVS\\y")
395
+ assert fl.exclude?("x/.svn/y")
396
+ assert fl.exclude?("x\\.svn\\y")
397
+ assert fl.exclude?("x/core")
398
+ assert fl.exclude?("x\\core")
399
+ assert fl.exclude?("x/abc~1")
400
+ end
401
+
402
+ def test_basic_array_functions
403
+ f = FileList['b', 'c', 'a']
404
+ assert_equal 'b', f.first
405
+ assert_equal 'b', f[0]
406
+ assert_equal 'a', f.last
407
+ assert_equal 'a', f[2]
408
+ assert_equal 'a', f[-1]
409
+ assert_equal ['a', 'b', 'c'], f.sort
410
+ f.sort!
411
+ assert_equal ['a', 'b', 'c'], f
412
+ end
413
+
414
+ def test_flatten
415
+ assert_equal ['a', 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c'].sort,
416
+ ['a', FileList['testdata/*.c']].flatten.sort
417
+ end
418
+
419
+ def test_clone_and_dup
420
+ a = FileList['a', 'b', 'c']
421
+ c = a.clone
422
+ d = a.dup
423
+ a << 'd'
424
+ assert_equal ['a', 'b', 'c', 'd'], a
425
+ assert_equal ['a', 'b', 'c'], c
426
+ assert_equal ['a', 'b', 'c'], d
427
+ end
428
+
429
+ def test_dup_and_clone_replicate_taint
430
+ a = FileList['a', 'b', 'c']
431
+ a.taint
432
+ c = a.clone
433
+ d = a.dup
434
+ assert c.tainted?, "Clone should be tainted"
435
+ assert d.tainted?, "Dup should be tainted"
436
+ end
437
+
438
+ def test_duped_items_will_thaw
439
+ a = FileList['a', 'b', 'c']
440
+ a.freeze
441
+ d = a.dup
442
+ d << 'more'
443
+ assert_equal ['a', 'b', 'c', 'more'], d
444
+ end
445
+
446
+ def test_cloned_items_stay_frozen
447
+ a = FileList['a', 'b', 'c']
448
+ a.freeze
449
+ c = a.clone
450
+ assert_exception(TypeError, RuntimeError) do
451
+ c << 'more'
452
+ end
453
+ end
454
+
455
+ def test_array_comparisons
456
+ fl = FileList['b', 'b']
457
+ a = ['b', 'a']
458
+ b = ['b', 'b']
459
+ c = ['b', 'c']
460
+ assert_equal( 1, fl <=> a )
461
+ assert_equal( 0, fl <=> b )
462
+ assert_equal( -1, fl <=> c )
463
+ assert_equal( -1, a <=> fl )
464
+ assert_equal( 0, b <=> fl )
465
+ assert_equal( 1, c <=> fl )
466
+ end
467
+
468
+ def test_array_equality
469
+ a = FileList['a', 'b']
470
+ b = ['a', 'b']
471
+ assert a == b
472
+ assert b == a
473
+ # assert a.eql?(b)
474
+ # assert b.eql?(a)
475
+ assert ! a.equal?(b)
476
+ assert ! b.equal?(a)
477
+ end
478
+
479
+ def test_enumeration_methods
480
+ a = FileList['a', 'b']
481
+ b = a.collect { |it| it.upcase }
482
+ assert_equal ['A', 'B'], b
483
+ assert_equal FileList, b.class
484
+
485
+ b = a.map { |it| it.upcase }
486
+ assert_equal ['A', 'B'], b
487
+ assert_equal FileList, b.class
488
+
489
+ b = a.sort
490
+ assert_equal ['a', 'b'], b
491
+ assert_equal FileList, b.class
492
+
493
+ b = a.sort_by { |it| it }
494
+ assert_equal ['a', 'b'], b
495
+ assert_equal FileList, b.class
496
+
497
+ b = a.find_all { |it| it == 'b'}
498
+ assert_equal ['b'], b
499
+ assert_equal FileList, b.class
500
+
501
+ b = a.select { |it| it.size == 1 }
502
+ assert_equal ['a', 'b'], b
503
+ assert_equal FileList, b.class
504
+
505
+ b = a.reject { |it| it == 'b' }
506
+ assert_equal ['a'], b
507
+ assert_equal FileList, b.class
508
+
509
+ b = a.grep(/./)
510
+ assert_equal ['a', 'b'], b
511
+ assert_equal FileList, b.class
512
+
513
+ b = a.partition { |it| it == 'b' }
514
+ assert_equal [['b'], ['a']], b
515
+ assert_equal Array, b.class
516
+ assert_equal FileList, b[0].class
517
+ assert_equal FileList, b[1].class
518
+
519
+ b = a.zip(['x', 'y']).to_a
520
+ assert_equal [['a', 'x'], ['b', 'y']], b
521
+ assert_equal Array, b.class
522
+ assert_equal Array, b[0].class
523
+ assert_equal Array, b[1].class
524
+ end
525
+
526
+ def test_array_operators
527
+ a = ['a', 'b']
528
+ b = ['c', 'd']
529
+ f = FileList['x', 'y']
530
+ g = FileList['w', 'z']
531
+
532
+ r = f + g
533
+ assert_equal ['x', 'y', 'w', 'z'], r
534
+ assert_equal FileList, r.class
535
+
536
+ r = a + g
537
+ assert_equal ['a', 'b', 'w', 'z'], r
538
+ assert_equal Array, r.class
539
+
540
+ r = f + b
541
+ assert_equal ['x', 'y', 'c', 'd'], r
542
+ assert_equal FileList, r.class
543
+
544
+ r = FileList['w', 'x', 'y', 'z'] - f
545
+ assert_equal ['w', 'z'], r
546
+ assert_equal FileList, r.class
547
+
548
+ r = FileList['w', 'x', 'y', 'z'] & f
549
+ assert_equal ['x', 'y'], r
550
+ assert_equal FileList, r.class
551
+
552
+ r = f * 2
553
+ assert_equal ['x', 'y', 'x', 'y'], r
554
+ assert_equal FileList, r.class
555
+
556
+ r = f * ','
557
+ assert_equal 'x,y', r
558
+ assert_equal String, r.class
559
+
560
+ r = f | ['a', 'x']
561
+ assert_equal ['a', 'x', 'y'].sort, r.sort
562
+ assert_equal FileList, r.class
563
+ end
564
+
565
+ def test_other_array_returning_methods
566
+ f = FileList['a', nil, 'b']
567
+ r = f.compact
568
+ assert_equal ['a', 'b'], r
569
+ assert_equal FileList, r.class
570
+
571
+ f = FileList['a', 'b']
572
+ r = f.concat(['x', 'y'])
573
+ assert_equal ['a', 'b', 'x', 'y'], r
574
+ assert_equal FileList, r.class
575
+
576
+ f = FileList['a', ['b', 'c'], FileList['d', 'e']]
577
+ r = f.flatten
578
+ assert_equal ['a', 'b', 'c', 'd', 'e'], r
579
+ assert_equal FileList, r.class
580
+
581
+ f = FileList['a', 'b', 'a']
582
+ r = f.uniq
583
+ assert_equal ['a', 'b'], r
584
+ assert_equal FileList, r.class
585
+
586
+ f = FileList['a', 'b', 'c', 'd']
587
+ r = f.values_at(1,3)
588
+ assert_equal ['b', 'd'], r
589
+ assert_equal FileList, r.class
590
+ end
591
+
592
+ def test_file_utils_can_use_filelists
593
+ cfiles = FileList['testdata/*.c']
594
+
595
+ cp cfiles, @cdir, :verbose => false
596
+
597
+ assert File.exist?(File.join(@cdir, 'abc.c'))
598
+ assert File.exist?(File.join(@cdir, 'xyz.c'))
599
+ assert File.exist?(File.join(@cdir, 'x.c'))
600
+ end
601
+
602
+ def create_test_data
603
+ verbose(false) do
604
+
605
+ mkdir "testdata" unless File.exist? "testdata"
606
+ mkdir "testdata/CVS" rescue nil
607
+ mkdir "testdata/.svn" rescue nil
608
+ @cdir = "testdata/cfiles"
609
+ mkdir @cdir rescue nil
610
+ touch "testdata/.dummy"
611
+ touch "testdata/x.bak"
612
+ touch "testdata/x~"
613
+ touch "testdata/core"
614
+ touch "testdata/x.c"
615
+ touch "testdata/xyz.c"
616
+ touch "testdata/abc.c"
617
+ touch "testdata/abc.h"
618
+ touch "testdata/abc.x"
619
+ touch "testdata/existing"
620
+ end
621
+ end
622
+
623
+ end