necktie 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. data/README.rdoc +174 -0
  2. data/bin/necktie +2 -1
  3. data/lib/necktie/files.rb +29 -0
  4. data/lib/necktie/rake.rb +127 -0
  5. data/lib/necktie/services.rb +11 -7
  6. data/lib/necktie.rb +4 -54
  7. data/necktie.gemspec +3 -3
  8. data/vendor/rake/CHANGES +477 -0
  9. data/vendor/rake/MIT-LICENSE +21 -0
  10. data/vendor/rake/README.rdoc +194 -0
  11. data/vendor/rake/Rakefile +421 -0
  12. data/vendor/rake/TODO +20 -0
  13. data/vendor/rake/bin/rake +31 -0
  14. data/vendor/rake/doc/command_line_usage.rdoc +102 -0
  15. data/vendor/rake/doc/example/Rakefile1 +38 -0
  16. data/vendor/rake/doc/example/Rakefile2 +35 -0
  17. data/vendor/rake/doc/example/a.c +6 -0
  18. data/vendor/rake/doc/example/b.c +6 -0
  19. data/vendor/rake/doc/example/main.c +11 -0
  20. data/vendor/rake/doc/glossary.rdoc +51 -0
  21. data/vendor/rake/doc/jamis.rb +591 -0
  22. data/vendor/rake/doc/proto_rake.rdoc +127 -0
  23. data/vendor/rake/doc/rake.1.gz +0 -0
  24. data/vendor/rake/doc/rakefile.rdoc +566 -0
  25. data/vendor/rake/doc/rational.rdoc +151 -0
  26. data/vendor/rake/doc/release_notes/rake-0.4.14.rdoc +23 -0
  27. data/vendor/rake/doc/release_notes/rake-0.4.15.rdoc +35 -0
  28. data/vendor/rake/doc/release_notes/rake-0.5.0.rdoc +53 -0
  29. data/vendor/rake/doc/release_notes/rake-0.5.3.rdoc +78 -0
  30. data/vendor/rake/doc/release_notes/rake-0.5.4.rdoc +46 -0
  31. data/vendor/rake/doc/release_notes/rake-0.6.0.rdoc +141 -0
  32. data/vendor/rake/doc/release_notes/rake-0.7.0.rdoc +119 -0
  33. data/vendor/rake/doc/release_notes/rake-0.7.1.rdoc +59 -0
  34. data/vendor/rake/doc/release_notes/rake-0.7.2.rdoc +121 -0
  35. data/vendor/rake/doc/release_notes/rake-0.7.3.rdoc +47 -0
  36. data/vendor/rake/doc/release_notes/rake-0.8.0.rdoc +114 -0
  37. data/vendor/rake/doc/release_notes/rake-0.8.2.rdoc +165 -0
  38. data/vendor/rake/doc/release_notes/rake-0.8.3.rdoc +112 -0
  39. data/vendor/rake/doc/release_notes/rake-0.8.4.rdoc +147 -0
  40. data/vendor/rake/doc/release_notes/rake-0.8.5.rdoc +53 -0
  41. data/vendor/rake/doc/release_notes/rake-0.8.6.rdoc +55 -0
  42. data/vendor/rake/doc/release_notes/rake-0.8.7.rdoc +55 -0
  43. data/vendor/rake/install.rb +88 -0
  44. data/vendor/rake/lib/rake/alt_system.rb +108 -0
  45. data/vendor/rake/lib/rake/application.rb +579 -0
  46. data/vendor/rake/lib/rake/classic_namespace.rb +9 -0
  47. data/vendor/rake/lib/rake/clean.rb +35 -0
  48. data/vendor/rake/lib/rake/cloneable.rb +25 -0
  49. data/vendor/rake/lib/rake/contrib/compositepublisher.rb +24 -0
  50. data/vendor/rake/lib/rake/contrib/ftptools.rb +153 -0
  51. data/vendor/rake/lib/rake/contrib/publisher.rb +75 -0
  52. data/vendor/rake/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  53. data/vendor/rake/lib/rake/contrib/sshpublisher.rb +47 -0
  54. data/vendor/rake/lib/rake/contrib/sys.rb +209 -0
  55. data/vendor/rake/lib/rake/default_loader.rb +10 -0
  56. data/vendor/rake/lib/rake/dsl.rb +136 -0
  57. data/vendor/rake/lib/rake/early_time.rb +18 -0
  58. data/vendor/rake/lib/rake/environment.rb +40 -0
  59. data/vendor/rake/lib/rake/ext/module.rb +60 -0
  60. data/vendor/rake/lib/rake/ext/string.rb +165 -0
  61. data/vendor/rake/lib/rake/ext/time.rb +14 -0
  62. data/vendor/rake/lib/rake/file_creation_task.rb +24 -0
  63. data/vendor/rake/lib/rake/file_list.rb +395 -0
  64. data/vendor/rake/lib/rake/file_task.rb +47 -0
  65. data/vendor/rake/lib/rake/file_utils.rb +108 -0
  66. data/vendor/rake/lib/rake/gempackagetask.rb +97 -0
  67. data/vendor/rake/lib/rake/invocation_chain.rb +51 -0
  68. data/vendor/rake/lib/rake/invocation_exception_mixin.rb +16 -0
  69. data/vendor/rake/lib/rake/lib/project.rake +24 -0
  70. data/vendor/rake/lib/rake/loaders/makefile.rb +44 -0
  71. data/vendor/rake/lib/rake/multi_task.rb +16 -0
  72. data/vendor/rake/lib/rake/name_space.rb +25 -0
  73. data/vendor/rake/lib/rake/packagetask.rb +184 -0
  74. data/vendor/rake/lib/rake/psuedo_status.rb +24 -0
  75. data/vendor/rake/lib/rake/rake_file_utils.rb +133 -0
  76. data/vendor/rake/lib/rake/rake_module.rb +25 -0
  77. data/vendor/rake/lib/rake/rake_test_loader.rb +15 -0
  78. data/vendor/rake/lib/rake/rdoctask.rb +209 -0
  79. data/vendor/rake/lib/rake/ruby182_test_unit_fix.rb +25 -0
  80. data/vendor/rake/lib/rake/rule_recursion_overflow_error.rb +20 -0
  81. data/vendor/rake/lib/rake/runtest.rb +23 -0
  82. data/vendor/rake/lib/rake/task.rb +318 -0
  83. data/vendor/rake/lib/rake/task_argument_error.rb +7 -0
  84. data/vendor/rake/lib/rake/task_arguments.rb +78 -0
  85. data/vendor/rake/lib/rake/task_manager.rb +328 -0
  86. data/vendor/rake/lib/rake/tasklib.rb +24 -0
  87. data/vendor/rake/lib/rake/testtask.rb +175 -0
  88. data/vendor/rake/lib/rake/win32.rb +55 -0
  89. data/vendor/rake/lib/rake.rb +72 -0
  90. data/vendor/rake/rake.blurb +19 -0
  91. data/vendor/rake/rake.gemspec +214 -0
  92. data/vendor/rake/rakelib/extra.rake +8 -0
  93. data/vendor/rake/rakelib/publish.rake +22 -0
  94. data/vendor/rake/rakelib/rbx.rake +82 -0
  95. data/vendor/rake/rakelib/ruby19.rake +88 -0
  96. data/vendor/rake/rakelib/tags.rake +18 -0
  97. data/vendor/rake/test/capture_stdout.rb +26 -0
  98. data/vendor/rake/test/check_expansion.rb +5 -0
  99. data/vendor/rake/test/check_no_expansion.rb +5 -0
  100. data/vendor/rake/test/contrib/test_sys.rb +47 -0
  101. data/vendor/rake/test/data/chains/Rakefile +15 -0
  102. data/vendor/rake/test/data/comments/Rakefile +18 -0
  103. data/vendor/rake/test/data/default/Rakefile +19 -0
  104. data/vendor/rake/test/data/dryrun/Rakefile +22 -0
  105. data/vendor/rake/test/data/file_creation_task/Rakefile +33 -0
  106. data/vendor/rake/test/data/imports/Rakefile +19 -0
  107. data/vendor/rake/test/data/imports/deps.mf +1 -0
  108. data/vendor/rake/test/data/multidesc/Rakefile +17 -0
  109. data/vendor/rake/test/data/namespace/Rakefile +66 -0
  110. data/vendor/rake/test/data/nosearch/dummy +1 -0
  111. data/vendor/rake/test/data/rakelib/test1.rb +5 -0
  112. data/vendor/rake/test/data/rakelib/test2.rake +3 -0
  113. data/vendor/rake/test/data/rbext/rakefile.rb +3 -0
  114. data/vendor/rake/test/data/sample.mf +14 -0
  115. data/vendor/rake/test/data/statusreturn/Rakefile +8 -0
  116. data/vendor/rake/test/data/sys/sys1.rake +3 -0
  117. data/vendor/rake/test/data/unittest/Rakefile +1 -0
  118. data/vendor/rake/test/data/unittest/subdir/README +0 -0
  119. data/vendor/rake/test/data/verbose/Rakefile +34 -0
  120. data/vendor/rake/test/filecreation.rb +32 -0
  121. data/vendor/rake/test/functional/functional_test.rb +15 -0
  122. data/vendor/rake/test/functional/session_based_tests.rb +442 -0
  123. data/vendor/rake/test/in_environment.rb +32 -0
  124. data/vendor/rake/test/lib/application_test.rb +769 -0
  125. data/vendor/rake/test/lib/clean_test.rb +15 -0
  126. data/vendor/rake/test/lib/definitions_test.rb +85 -0
  127. data/vendor/rake/test/lib/dsl_test.rb +41 -0
  128. data/vendor/rake/test/lib/earlytime_test.rb +35 -0
  129. data/vendor/rake/test/lib/environment_test.rb +18 -0
  130. data/vendor/rake/test/lib/extension_test.rb +63 -0
  131. data/vendor/rake/test/lib/file_creation_task_test.rb +62 -0
  132. data/vendor/rake/test/lib/file_task_test.rb +143 -0
  133. data/vendor/rake/test/lib/filelist_test.rb +623 -0
  134. data/vendor/rake/test/lib/fileutils_test.rb +251 -0
  135. data/vendor/rake/test/lib/ftp_test.rb +59 -0
  136. data/vendor/rake/test/lib/invocation_chain_test.rb +81 -0
  137. data/vendor/rake/test/lib/makefile_loader_test.rb +26 -0
  138. data/vendor/rake/test/lib/multitask_test.rb +53 -0
  139. data/vendor/rake/test/lib/namespace_test.rb +55 -0
  140. data/vendor/rake/test/lib/package_task_test.rb +118 -0
  141. data/vendor/rake/test/lib/pathmap_test.rb +210 -0
  142. data/vendor/rake/test/lib/pseudo_status_test.rb +26 -0
  143. data/vendor/rake/test/lib/rake_test.rb +41 -0
  144. data/vendor/rake/test/lib/rdoc_task_test.rb +88 -0
  145. data/vendor/rake/test/lib/require_test.rb +35 -0
  146. data/vendor/rake/test/lib/rules_test.rb +349 -0
  147. data/vendor/rake/test/lib/task_arguments_test.rb +89 -0
  148. data/vendor/rake/test/lib/task_manager_test.rb +173 -0
  149. data/vendor/rake/test/lib/task_test.rb +376 -0
  150. data/vendor/rake/test/lib/tasklib_test.rb +12 -0
  151. data/vendor/rake/test/lib/test_task_test.rb +77 -0
  152. data/vendor/rake/test/lib/testtask_test.rb +49 -0
  153. data/vendor/rake/test/lib/top_level_functions_test.rb +86 -0
  154. data/vendor/rake/test/lib/win32_test.rb +72 -0
  155. data/vendor/rake/test/rake_test_setup.rb +24 -0
  156. data/vendor/rake/test/reqfile.rb +3 -0
  157. data/vendor/rake/test/reqfile2.rb +3 -0
  158. data/vendor/rake/test/reqfile3.rake +3 -0
  159. data/vendor/rake/test/shellcommand.rb +3 -0
  160. data/vendor/rake/test/test_helper.rb +13 -0
  161. metadata +212 -56
  162. /data/{rush → vendor/rush}/README.rdoc +0 -0
  163. /data/{rush → vendor/rush}/Rakefile +0 -0
  164. /data/{rush → vendor/rush}/VERSION +0 -0
  165. /data/{rush → vendor/rush}/bin/rush +0 -0
  166. /data/{rush → vendor/rush}/bin/rushd +0 -0
  167. /data/{rush → vendor/rush}/lib/rush/access.rb +0 -0
  168. /data/{rush → vendor/rush}/lib/rush/array_ext.rb +0 -0
  169. /data/{rush → vendor/rush}/lib/rush/box.rb +0 -0
  170. /data/{rush → vendor/rush}/lib/rush/commands.rb +0 -0
  171. /data/{rush → vendor/rush}/lib/rush/config.rb +0 -0
  172. /data/{rush → vendor/rush}/lib/rush/dir.rb +0 -0
  173. /data/{rush → vendor/rush}/lib/rush/embeddable_shell.rb +0 -0
  174. /data/{rush → vendor/rush}/lib/rush/entry.rb +0 -0
  175. /data/{rush → vendor/rush}/lib/rush/exceptions.rb +0 -0
  176. /data/{rush → vendor/rush}/lib/rush/file.rb +0 -0
  177. /data/{rush → vendor/rush}/lib/rush/find_by.rb +0 -0
  178. /data/{rush → vendor/rush}/lib/rush/fixnum_ext.rb +0 -0
  179. /data/{rush → vendor/rush}/lib/rush/head_tail.rb +0 -0
  180. /data/{rush → vendor/rush}/lib/rush/local.rb +0 -0
  181. /data/{rush → vendor/rush}/lib/rush/process.rb +0 -0
  182. /data/{rush → vendor/rush}/lib/rush/process_set.rb +0 -0
  183. /data/{rush → vendor/rush}/lib/rush/remote.rb +0 -0
  184. /data/{rush → vendor/rush}/lib/rush/search_results.rb +0 -0
  185. /data/{rush → vendor/rush}/lib/rush/server.rb +0 -0
  186. /data/{rush → vendor/rush}/lib/rush/shell.rb +0 -0
  187. /data/{rush → vendor/rush}/lib/rush/ssh_tunnel.rb +0 -0
  188. /data/{rush → vendor/rush}/lib/rush/string_ext.rb +0 -0
  189. /data/{rush → vendor/rush}/lib/rush.rb +0 -0
  190. /data/{rush → vendor/rush}/rush.gemspec +0 -0
  191. /data/{rush → vendor/rush}/spec/access_spec.rb +0 -0
  192. /data/{rush → vendor/rush}/spec/array_ext_spec.rb +0 -0
  193. /data/{rush → vendor/rush}/spec/base.rb +0 -0
  194. /data/{rush → vendor/rush}/spec/box_spec.rb +0 -0
  195. /data/{rush → vendor/rush}/spec/commands_spec.rb +0 -0
  196. /data/{rush → vendor/rush}/spec/config_spec.rb +0 -0
  197. /data/{rush → vendor/rush}/spec/dir_spec.rb +0 -0
  198. /data/{rush → vendor/rush}/spec/embeddable_shell_spec.rb +0 -0
  199. /data/{rush → vendor/rush}/spec/entry_spec.rb +0 -0
  200. /data/{rush → vendor/rush}/spec/file_spec.rb +0 -0
  201. /data/{rush → vendor/rush}/spec/find_by_spec.rb +0 -0
  202. /data/{rush → vendor/rush}/spec/fixnum_ext_spec.rb +0 -0
  203. /data/{rush → vendor/rush}/spec/local_spec.rb +0 -0
  204. /data/{rush → vendor/rush}/spec/process_set_spec.rb +0 -0
  205. /data/{rush → vendor/rush}/spec/process_spec.rb +0 -0
  206. /data/{rush → vendor/rush}/spec/remote_spec.rb +0 -0
  207. /data/{rush → vendor/rush}/spec/rush_spec.rb +0 -0
  208. /data/{rush → vendor/rush}/spec/search_results_spec.rb +0 -0
  209. /data/{rush → vendor/rush}/spec/shell_spec.rb +0 -0
  210. /data/{rush → vendor/rush}/spec/ssh_tunnel_spec.rb +0 -0
  211. /data/{rush → vendor/rush}/spec/string_ext_spec.rb +0 -0
  212. /data/{session → vendor/session}/lib/session-2.4.0.rb +0 -0
  213. /data/{session → vendor/session}/lib/session.rb +0 -0
  214. /data/{session → vendor/session}/test/session.rb +0 -0
@@ -0,0 +1,251 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rake'
4
+ require 'test/unit'
5
+ require 'test/filecreation'
6
+ require 'fileutils'
7
+ require 'stringio'
8
+ require 'test/rake_test_setup'
9
+
10
+ class TestFileUtils < Test::Unit::TestCase
11
+ include FileCreation
12
+ include TestMethods
13
+
14
+ def setup
15
+ File.chmod(0750,"test/shellcommand.rb")
16
+ end
17
+
18
+ def teardown
19
+ FileUtils.rm_rf("testdata")
20
+ FileUtils::LN_SUPPORTED[0] = true
21
+ end
22
+
23
+ def test_rm_one_file
24
+ create_file("testdata/a")
25
+ FileUtils.rm_rf "testdata/a"
26
+ assert ! File.exist?("testdata/a")
27
+ end
28
+
29
+ def test_rm_two_files
30
+ create_file("testdata/a")
31
+ create_file("testdata/b")
32
+ FileUtils.rm_rf ["testdata/a", "testdata/b"]
33
+ assert ! File.exist?("testdata/a")
34
+ assert ! File.exist?("testdata/b")
35
+ end
36
+
37
+ def test_rm_filelist
38
+ list = Rake::FileList.new << "testdata/a" << "testdata/b"
39
+ list.each { |fn| create_file(fn) }
40
+ FileUtils.rm_r list
41
+ assert ! File.exist?("testdata/a")
42
+ assert ! File.exist?("testdata/b")
43
+ end
44
+
45
+ def test_ln
46
+ create_dir("testdata")
47
+ open("testdata/a", "w") { |f| f.puts "TEST_LN" }
48
+ RakeFileUtils.safe_ln("testdata/a", "testdata/b", :verbose => false)
49
+ assert_equal "TEST_LN\n", open("testdata/b") { |f| f.read }
50
+ end
51
+
52
+ class BadLink
53
+ include RakeFileUtils
54
+ attr_reader :cp_args
55
+ def initialize(klass)
56
+ @failure_class = klass
57
+ end
58
+ def cp(*args)
59
+ @cp_args = args
60
+ end
61
+ def ln(*args)
62
+ fail @failure_class, "ln not supported"
63
+ end
64
+ public :safe_ln
65
+ end
66
+
67
+ def test_safe_ln_failover_to_cp_on_standard_error
68
+ FileUtils::LN_SUPPORTED[0] = true
69
+ c = BadLink.new(StandardError)
70
+ c.safe_ln "a", "b"
71
+ assert_equal ['a', 'b'], c.cp_args
72
+ c.safe_ln "x", "y"
73
+ assert_equal ['x', 'y'], c.cp_args
74
+ end
75
+
76
+ def test_safe_ln_failover_to_cp_on_not_implemented_error
77
+ FileUtils::LN_SUPPORTED[0] = true
78
+ c = BadLink.new(NotImplementedError)
79
+ c.safe_ln "a", "b"
80
+ assert_equal ['a', 'b'], c.cp_args
81
+ end
82
+
83
+ def test_safe_ln_fails_on_script_error
84
+ FileUtils::LN_SUPPORTED[0] = true
85
+ c = BadLink.new(ScriptError)
86
+ assert_exception(ScriptError) do c.safe_ln "a", "b" end
87
+ end
88
+
89
+ def test_verbose
90
+ verbose true
91
+ assert_equal true, verbose
92
+ verbose false
93
+ assert_equal false, verbose
94
+ verbose(true) {
95
+ assert_equal true, verbose
96
+ }
97
+ assert_equal false, verbose
98
+ end
99
+
100
+ def test_nowrite
101
+ nowrite true
102
+ assert_equal true, nowrite
103
+ nowrite false
104
+ assert_equal false, nowrite
105
+ nowrite(true){
106
+ assert_equal true, nowrite
107
+ }
108
+ assert_equal false, nowrite
109
+ end
110
+
111
+ def test_file_utils_methods_are_available_at_top_level
112
+ create_file("testdata/a")
113
+ rm_rf "testdata/a"
114
+ assert ! File.exist?("testdata/a")
115
+ end
116
+
117
+ def test_fileutils_methods_dont_leak
118
+ obj = Object.new
119
+ assert_exception(NoMethodError) { obj.copy } # from FileUtils
120
+ assert_exception(NoMethodError) { obj.ruby "-v" } # from RubyFileUtils
121
+ end
122
+
123
+ def test_sh
124
+ verbose(false) { sh %{ruby test/shellcommand.rb} }
125
+ assert true, "should not fail"
126
+ end
127
+
128
+ # If the :sh method is invoked directly from a test unit instance
129
+ # (under mini/test), the mini/test version of fail is invoked rather
130
+ # than the kernel version of fail. So we run :sh from within a
131
+ # non-test class to avoid the problem.
132
+ class Sh
133
+ include FileUtils
134
+ def run(*args)
135
+ sh(*args)
136
+ end
137
+ def self.run(*args)
138
+ new.run(*args)
139
+ end
140
+ end
141
+
142
+ def test_sh_with_a_single_string_argument
143
+ ENV['RAKE_TEST_SH'] = 'someval'
144
+ verbose(false) {
145
+ sh %{ruby test/check_expansion.rb #{env_var} someval}
146
+ }
147
+ end
148
+
149
+ def test_sh_with_multiple_arguments
150
+ ENV['RAKE_TEST_SH'] = 'someval'
151
+ verbose(false) {
152
+ Sh.run 'ruby', 'test/check_no_expansion.rb', env_var, 'someval'
153
+ }
154
+ end
155
+
156
+ def test_sh_failure
157
+ assert_exception(RuntimeError) {
158
+ verbose(false) { Sh.run %{ruby test/shellcommand.rb 1} }
159
+ }
160
+ end
161
+
162
+ def test_sh_special_handling
163
+ count = 0
164
+ verbose(false) {
165
+ sh(%{ruby test/shellcommand.rb}) do |ok, res|
166
+ assert(ok)
167
+ assert_equal 0, res.exitstatus
168
+ count += 1
169
+ end
170
+ sh(%{ruby test/shellcommand.rb 1}) do |ok, res|
171
+ assert(!ok)
172
+ assert_equal 1, res.exitstatus
173
+ count += 1
174
+ end
175
+ }
176
+ assert_equal 2, count, "Block count should be 2"
177
+ end
178
+
179
+ def test_sh_noop
180
+ verbose(false) { sh %{test/shellcommand.rb 1}, :noop=>true }
181
+ assert true, "should not fail"
182
+ end
183
+
184
+ def test_sh_bad_option
185
+ ex = assert_exception(ArgumentError) {
186
+ verbose(false) { sh %{test/shellcommand.rb}, :bad_option=>true }
187
+ }
188
+ assert_match(/bad_option/, ex.message)
189
+ end
190
+
191
+ def test_sh_verbose
192
+ out = redirect_stderr {
193
+ verbose(true) {
194
+ sh %{test/shellcommand.rb}, :noop=>true
195
+ }
196
+ }
197
+ assert_match(/^test\/shellcommand\.rb$/, out)
198
+ end
199
+
200
+ def test_sh_no_verbose
201
+ out = redirect_stderr {
202
+ verbose(false) {
203
+ sh %{test/shellcommand.rb}, :noop=>true
204
+ }
205
+ }
206
+ assert_equal '', out
207
+ end
208
+
209
+ def test_ruby_with_a_single_string_argument
210
+ ENV['RAKE_TEST_SH'] = 'someval'
211
+ verbose(false) {
212
+ ruby %{test/check_expansion.rb #{env_var} someval}
213
+ }
214
+ end
215
+
216
+ def test_ruby_with_multiple_arguments
217
+ ENV['RAKE_TEST_SH'] = 'someval'
218
+ verbose(false) {
219
+ ruby 'test/check_no_expansion.rb', env_var, 'someval'
220
+ }
221
+ end
222
+
223
+ def test_split_all
224
+ assert_equal ['a'], RakeFileUtils.split_all('a')
225
+ assert_equal ['..'], RakeFileUtils.split_all('..')
226
+ assert_equal ['/'], RakeFileUtils.split_all('/')
227
+ assert_equal ['a', 'b'], RakeFileUtils.split_all('a/b')
228
+ assert_equal ['/', 'a', 'b'], RakeFileUtils.split_all('/a/b')
229
+ assert_equal ['..', 'a', 'b'], RakeFileUtils.split_all('../a/b')
230
+ end
231
+
232
+ private
233
+
234
+ def redirect_stderr
235
+ old_err = $stderr
236
+ $stderr = StringIO.new
237
+ yield
238
+ $stderr.string
239
+ ensure
240
+ $stderr = old_err
241
+ end
242
+
243
+ def windows?
244
+ ! File::ALT_SEPARATOR.nil?
245
+ end
246
+
247
+ def env_var
248
+ windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH'
249
+ end
250
+
251
+ end
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'date'
4
+ require 'time'
5
+ require 'test/unit'
6
+ require 'rake/contrib/ftptools'
7
+
8
+ class FakeDate
9
+ def self.today
10
+ Date.new(2003,10,3)
11
+ end
12
+ def self.now
13
+ Time.local(2003,10,3,12,00,00)
14
+ end
15
+ end
16
+
17
+
18
+ class TestFtpFile < Test::Unit::TestCase
19
+
20
+ def setup
21
+ Rake::FtpFile.class_eval { @date_class = FakeDate; @time_class = FakeDate }
22
+ end
23
+
24
+ def test_general
25
+ file = Rake::FtpFile.new("here", "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl")
26
+ assert_equal "wiki.pl", file.name
27
+ assert_equal "here/wiki.pl", file.path
28
+ assert_equal "a279376", file.owner
29
+ assert_equal "develop", file.group
30
+ assert_equal 0644, file.mode
31
+ assert_equal 121770, file.size
32
+ assert_equal Time.mktime(2003,3,6,14,50,0,0), file.time
33
+ assert ! file.directory?
34
+ assert ! file.symlink?
35
+ end
36
+
37
+ def test_far_date
38
+ file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss")
39
+ assert_equal Time.mktime(2001,11,26,0,0,0,0), file.time
40
+ end
41
+
42
+ def test_close_date
43
+ file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss")
44
+ assert_equal Time.mktime(2002,11,26,15,35,0,0), file.time
45
+ end
46
+
47
+ def test_directory
48
+ file = Rake::FtpFile.new(".", "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working")
49
+ assert file.directory?
50
+ assert !file.symlink?
51
+ end
52
+
53
+ def test_symlink
54
+ file = Rake::FtpFile.new(".", "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 xtrac -> /home/a279376/working/ics/development/java/com/fmr/fwp/ics/xtrac")
55
+ assert_equal 'xtrac', file.name
56
+ assert file.symlink?
57
+ assert !file.directory?
58
+ end
59
+ end
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+ require 'test/rake_test_setup'
6
+
7
+ ######################################################################
8
+ class TestAnEmptyInvocationChain < Test::Unit::TestCase
9
+ include TestMethods
10
+
11
+ def setup
12
+ @empty = Rake::InvocationChain::EMPTY
13
+ end
14
+
15
+ def test_should_be_able_to_add_members
16
+ assert_nothing_raised do
17
+ @empty.append("A")
18
+ end
19
+ end
20
+
21
+ def test_to_s
22
+ assert_equal "TOP", @empty.to_s
23
+ end
24
+ end
25
+
26
+ ######################################################################
27
+ class TestAnInvocationChainWithOneMember < Test::Unit::TestCase
28
+ include TestMethods
29
+
30
+ def setup
31
+ @empty = Rake::InvocationChain::EMPTY
32
+ @first_member = "A"
33
+ @chain = @empty.append(@first_member)
34
+ end
35
+
36
+ def test_should_report_first_member_as_a_member
37
+ assert @chain.member?(@first_member)
38
+ end
39
+
40
+ def test_should_fail_when_adding_original_member
41
+ ex = assert_exception RuntimeError do
42
+ @chain.append(@first_member)
43
+ end
44
+ assert_match(/circular +dependency/i, ex.message)
45
+ assert_match(/A.*=>.*A/, ex.message)
46
+ end
47
+
48
+ def test_to_s
49
+ assert_equal "TOP => A", @chain.to_s
50
+ end
51
+
52
+ end
53
+
54
+ ######################################################################
55
+ class TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase
56
+ include TestMethods
57
+
58
+ def setup
59
+ @first_member = "A"
60
+ @second_member = "B"
61
+ ch = Rake::InvocationChain::EMPTY.append(@first_member)
62
+ @chain = ch.append(@second_member)
63
+ end
64
+
65
+ def test_should_report_first_member_as_a_member
66
+ assert @chain.member?(@first_member)
67
+ end
68
+
69
+ def test_should_report_second_member_as_a_member
70
+ assert @chain.member?(@second_member)
71
+ end
72
+
73
+ def test_should_fail_when_adding_original_member
74
+ ex = assert_exception RuntimeError do
75
+ @chain.append(@first_member)
76
+ end
77
+ assert_match(/A.*=>.*B.*=>.*A/, ex.message)
78
+ end
79
+ end
80
+
81
+
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+ require 'rake/loaders/makefile'
6
+
7
+ class TestMakefileLoader < Test::Unit::TestCase
8
+ include Rake
9
+
10
+ def test_parse
11
+ Task.clear
12
+ loader = Rake::MakefileLoader.new
13
+ loader.load("test/data/sample.mf")
14
+ %w(a b c d).each do |t|
15
+ assert Task.task_defined?(t), "#{t} should be a defined task"
16
+ end
17
+ assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort
18
+ assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort
19
+ assert_equal %w(c1).sort, Task['c'].prerequisites.sort
20
+ assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort
21
+ assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort
22
+ assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort
23
+ assert_equal ["g1", "g 2", "g 3", "g4"].sort, Task['g 0'].prerequisites.sort
24
+ assert_equal 7, Task.tasks.size
25
+ end
26
+ end
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'thread'
5
+ require 'rake'
6
+
7
+ ######################################################################
8
+ class TestMultiTask < Test::Unit::TestCase
9
+ include Rake
10
+
11
+ def setup
12
+ Task.clear
13
+ @runs = Array.new
14
+ @mutex = Mutex.new
15
+ end
16
+
17
+ def add_run(obj)
18
+ @mutex.synchronize do
19
+ @runs << obj
20
+ end
21
+ end
22
+
23
+ def test_running_multitasks
24
+ task :a do 3.times do |i| add_run("A#{i}"); sleep 0.01; end end
25
+ task :b do 3.times do |i| add_run("B#{i}"); sleep 0.01; end end
26
+ multitask :both => [:a, :b]
27
+ Task[:both].invoke
28
+ assert_equal 6, @runs.size
29
+ assert @runs.index("A0") < @runs.index("A1")
30
+ assert @runs.index("A1") < @runs.index("A2")
31
+ assert @runs.index("B0") < @runs.index("B1")
32
+ assert @runs.index("B1") < @runs.index("B2")
33
+ end
34
+
35
+ def test_all_multitasks_wait_on_slow_prerequisites
36
+ task :slow do 3.times do |i| add_run("S#{i}"); sleep 0.05 end end
37
+ task :a => [:slow] do 3.times do |i| add_run("A#{i}"); sleep 0.01 end end
38
+ task :b => [:slow] do 3.times do |i| add_run("B#{i}"); sleep 0.01 end end
39
+ multitask :both => [:a, :b]
40
+ Task[:both].invoke
41
+ assert_equal 9, @runs.size
42
+ assert @runs.index("S0") < @runs.index("S1")
43
+ assert @runs.index("S1") < @runs.index("S2")
44
+ assert @runs.index("S2") < @runs.index("A0")
45
+ assert @runs.index("S2") < @runs.index("B0")
46
+ assert @runs.index("A0") < @runs.index("A1")
47
+ assert @runs.index("A1") < @runs.index("A2")
48
+ assert @runs.index("B0") < @runs.index("B1")
49
+ assert @runs.index("B1") < @runs.index("B2")
50
+ end
51
+ end
52
+
53
+
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'rubygems'
5
+ rescue LoadError
6
+ # got no gems
7
+ end
8
+
9
+ require 'test/unit'
10
+ require 'flexmock/test_unit'
11
+ require 'rake'
12
+ require 'test/rake_test_setup'
13
+
14
+ class TestNameSpace < Test::Unit::TestCase
15
+ include TestMethods
16
+
17
+ class TM
18
+ include Rake::TaskManager
19
+ end
20
+
21
+ def test_namespace_creation
22
+ mgr = TM.new
23
+ ns = Rake::NameSpace.new(mgr, [])
24
+ assert_not_nil ns
25
+ end
26
+
27
+ def test_namespace_lookup
28
+ mgr = TM.new
29
+ ns = mgr.in_namespace("n") do
30
+ mgr.define_task(Rake::Task, "t")
31
+ end
32
+
33
+ assert_not_nil ns["t"]
34
+ assert_equal mgr["n:t"], ns["t"]
35
+ end
36
+
37
+ def test_namespace_reports_tasks_it_owns
38
+ mgr = TM.new
39
+ nns = nil
40
+ ns = mgr.in_namespace("n") do
41
+ mgr.define_task(Rake::Task, :x)
42
+ mgr.define_task(Rake::Task, :y)
43
+ nns = mgr.in_namespace("nn") do
44
+ mgr.define_task(Rake::Task, :z)
45
+ end
46
+ end
47
+ mgr.in_namespace("m") do
48
+ mgr.define_task(Rake::Task, :x)
49
+ end
50
+
51
+ assert_equal ["n:nn:z", "n:x", "n:y"],
52
+ ns.tasks.map { |tsk| tsk.name }
53
+ assert_equal ["n:nn:z"], nns.tasks.map {|t| t.name}
54
+ end
55
+ end
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake/packagetask'
5
+ require 'test/rake_test_setup'
6
+
7
+ class TestPackageTask < Test::Unit::TestCase
8
+ include Rake
9
+ include TestMethods
10
+
11
+ def test_create
12
+ pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p|
13
+ p.package_files << "install.rb"
14
+ p.package_files.include(
15
+ '[A-Z]*',
16
+ 'bin/**/*',
17
+ 'lib/**/*.rb',
18
+ 'test/**/*.rb',
19
+ 'doc/**/*',
20
+ 'build/rubyapp.rb',
21
+ '*.blurb')
22
+ p.package_files.exclude(/\bCVS\b/)
23
+ p.package_files.exclude(/~$/)
24
+ p.package_dir = 'pkg'
25
+ p.need_tar = true
26
+ p.need_tar_gz = true
27
+ p.need_tar_bz2 = true
28
+ p.need_zip = true
29
+ }
30
+ assert_equal "pkg", pkg.package_dir
31
+ assert pkg.package_files.include?("bin/rake")
32
+ assert "pkgr", pkg.name
33
+ assert "1.2.3", pkg.version
34
+ assert Task[:package]
35
+ assert Task['pkg/pkgr-1.2.3.tgz']
36
+ assert Task['pkg/pkgr-1.2.3.tar.gz']
37
+ assert Task['pkg/pkgr-1.2.3.tar.bz2']
38
+ assert Task['pkg/pkgr-1.2.3.zip']
39
+ assert Task["pkg/pkgr-1.2.3"]
40
+ assert Task[:clobber_package]
41
+ assert Task[:repackage]
42
+ end
43
+
44
+ def test_missing_version
45
+ assert_exception(RuntimeError) {
46
+ pkg = Rake::PackageTask.new("pkgr") { |p| }
47
+ }
48
+ end
49
+
50
+ def test_no_version
51
+ pkg = Rake::PackageTask.new("pkgr", :noversion) { |p| }
52
+ assert "pkgr", pkg.send(:package_name)
53
+ end
54
+
55
+ def test_clone
56
+ pkg = Rake::PackageTask.new("x", :noversion)
57
+ p2 = pkg.clone
58
+ pkg.package_files << "y"
59
+ p2.package_files << "x"
60
+ assert_equal ["y"], pkg.package_files
61
+ assert_equal ["x"], p2.package_files
62
+ end
63
+ end
64
+
65
+
66
+ begin
67
+ require 'rubygems'
68
+ require 'rake/gempackagetask'
69
+ rescue Exception
70
+ puts "WARNING: RubyGems not installed"
71
+ end
72
+
73
+ if ! defined?(Gem)
74
+ puts "WARNING: Unable to test GemPackaging ... requires RubyGems"
75
+ else
76
+ class TestGemPackageTask < Test::Unit::TestCase
77
+ def test_gem_package
78
+ gem = Gem::Specification.new do |g|
79
+ g.name = "pkgr"
80
+ g.version = "1.2.3"
81
+ g.files = FileList["x"].resolve
82
+ end
83
+ pkg = Rake::GemPackageTask.new(gem) do |p|
84
+ p.package_files << "y"
85
+ end
86
+ assert_equal ["x", "y"], pkg.package_files
87
+ assert_equal "pkgr-1.2.3.gem", pkg.gem_file
88
+ end
89
+
90
+ def test_gem_package_with_current_platform
91
+ gem = Gem::Specification.new do |g|
92
+ g.name = "pkgr"
93
+ g.version = "1.2.3"
94
+ g.files = FileList["x"].resolve
95
+ g.platform = Gem::Platform::CURRENT
96
+ end
97
+ pkg = Rake::GemPackageTask.new(gem) do |p|
98
+ p.package_files << "y"
99
+ end
100
+ assert_equal ["x", "y"], pkg.package_files
101
+ assert_match(/^pkgr-1\.2\.3-(\S+)\.gem$/, pkg.gem_file)
102
+ end
103
+
104
+ def test_gem_package_with_ruby_platform
105
+ gem = Gem::Specification.new do |g|
106
+ g.name = "pkgr"
107
+ g.version = "1.2.3"
108
+ g.files = FileList["x"].resolve
109
+ g.platform = Gem::Platform::RUBY
110
+ end
111
+ pkg = Rake::GemPackageTask.new(gem) do |p|
112
+ p.package_files << "y"
113
+ end
114
+ assert_equal ["x", "y"], pkg.package_files
115
+ assert_equal "pkgr-1.2.3.gem", pkg.gem_file
116
+ end
117
+ end
118
+ end