rant 0.4.6 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/INSTALL +44 -0
- data/NEWS +30 -0
- data/README +6 -46
- data/Rantfile +38 -7
- data/doc/c.rdoc +2 -0
- data/doc/command.rdoc +210 -0
- data/doc/examples/c_dependencies/Rantfile +1 -1
- data/doc/examples/directedrule/Rantfile +1 -1
- data/doc/homepage/index.html +12 -1
- data/doc/rant-import.rdoc +5 -0
- data/doc/rant_vs_rake.rdoc +107 -0
- data/doc/rantfile.rdoc +17 -17
- data/doc/rubyproject.rdoc +45 -45
- data/doc/subdirs.rdoc +1 -1
- data/lib/rant/coregen.rb +62 -22
- data/lib/rant/import/archive.rb +1 -0
- data/lib/rant/import/command.rb +206 -0
- data/lib/rant/import/nodes/default.rb +12 -6
- data/lib/rant/import/nodes/signed.rb +3 -3
- data/lib/rant/import/signedfile.rb +14 -15
- data/lib/rant/import/win32/rubycmdwrapper.rb +1 -0
- data/lib/rant/import.rb +52 -4
- data/lib/rant/metautils.rb +119 -0
- data/lib/rant/node.rb +11 -2
- data/lib/rant/rantenv.rb +5 -2
- data/lib/rant/rantlib.rb +30 -46
- data/lib/rant/rantsys.rb +81 -13
- data/lib/rant/rantvar.rb +1 -76
- data/lib/rant.rb +2 -2
- data/misc/TODO +21 -0
- data/test/deprecated/test_0_5_2.rb +28 -0
- data/test/deprecated/test_0_6_0.rb +24 -0
- data/test/dyn_dependencies.rf +25 -0
- data/test/import/command/Rantfile +102 -0
- data/test/import/command/test_command.rb +597 -0
- data/test/rant-import/test_rant-import.rb +23 -1
- data/test/rule.rf +2 -0
- data/test/test_dyn_dependencies.rb +45 -0
- data/test/test_env.rb +5 -4
- data/test/test_filelist.rb +60 -3
- data/test/test_rant_interface.rb +5 -0
- data/test/test_sys.rb +53 -2
- data/test/tutil.rb +14 -6
- metadata +17 -6
- data/test/deprecated/test_0_4_8.rb +0 -41
@@ -0,0 +1,597 @@
|
|
1
|
+
|
2
|
+
require 'test/unit'
|
3
|
+
require 'tutil'
|
4
|
+
|
5
|
+
$testImportCommandDir ||= File.expand_path(File.dirname(__FILE__))
|
6
|
+
|
7
|
+
class TestImportCommand < Test::Unit::TestCase
|
8
|
+
include Rant::TestUtil
|
9
|
+
def setup
|
10
|
+
# Ensure we run in test directory.
|
11
|
+
Dir.chdir($testImportCommandDir)
|
12
|
+
end
|
13
|
+
def teardown
|
14
|
+
Dir.chdir($testImportCommandDir)
|
15
|
+
assert_rant "autoclean"
|
16
|
+
assert Rant::FileList["*.t"].empty?
|
17
|
+
assert Rant::FileList[".rant.meta"].empty?
|
18
|
+
end
|
19
|
+
def test_plain_syntax_no_deps
|
20
|
+
out, err = assert_rant "b.t"
|
21
|
+
assert err.empty?
|
22
|
+
assert !out.empty?
|
23
|
+
assert test(?f, "b.t")
|
24
|
+
assert_equal "b", File.read("b.t").strip
|
25
|
+
out, err = assert_rant "b.t"
|
26
|
+
assert err.empty?
|
27
|
+
assert out.empty?
|
28
|
+
out, err = assert_rant "b.t", "btxt=x"
|
29
|
+
assert err.empty?
|
30
|
+
assert !out.empty?
|
31
|
+
assert test(?f, "b.t")
|
32
|
+
assert_equal "x", File.read("b.t").strip
|
33
|
+
out, err = assert_rant "b.t", "btxt=x"
|
34
|
+
assert err.empty?
|
35
|
+
assert out.empty?
|
36
|
+
end
|
37
|
+
def test_plain_syntax_no_deps_md5
|
38
|
+
out, err = assert_rant "-imd5", "b.t"
|
39
|
+
assert err.empty?
|
40
|
+
assert !out.empty?
|
41
|
+
assert test(?f, "b.t")
|
42
|
+
assert_equal "b", File.read("b.t").strip
|
43
|
+
out, err = assert_rant "-imd5", "b.t"
|
44
|
+
assert err.empty?
|
45
|
+
assert out.empty?
|
46
|
+
out, err = assert_rant "-imd5", "b.t", "btxt=x"
|
47
|
+
assert err.empty?
|
48
|
+
assert !out.empty?
|
49
|
+
assert test(?f, "b.t")
|
50
|
+
assert_equal "x", File.read("b.t").strip
|
51
|
+
out, err = assert_rant "-imd5", "b.t", "btxt=x"
|
52
|
+
assert err.empty?
|
53
|
+
assert out.empty?
|
54
|
+
end
|
55
|
+
def test_opt_tasks
|
56
|
+
out, err = assert_rant "-T"
|
57
|
+
assert err.empty?
|
58
|
+
lines = out.split(/\n/)
|
59
|
+
assert_equal 1, lines.size
|
60
|
+
assert_match(/\ba\.t\b.*\bBuild a\.t\b/, lines.first)
|
61
|
+
end
|
62
|
+
def test_block_syntax
|
63
|
+
out, err = assert_rant
|
64
|
+
assert err.empty?
|
65
|
+
lines = out.split(/\n/)
|
66
|
+
assert_match(/b\.t/, lines[0])
|
67
|
+
assert_match(/c\.t/, lines[1])
|
68
|
+
assert_match(/a\.t/, lines[2])
|
69
|
+
assert_file_content "a.t", "b.t c.t", :strip
|
70
|
+
assert_file_content "b.t", "b", :strip
|
71
|
+
assert_file_content "c.t", "", :strip
|
72
|
+
out, err = assert_rant
|
73
|
+
assert err.empty?
|
74
|
+
assert out.empty?
|
75
|
+
end
|
76
|
+
def test_block_syntax_md5
|
77
|
+
out, err = assert_rant "-imd5"
|
78
|
+
assert err.empty?
|
79
|
+
lines = out.split(/\n/)
|
80
|
+
assert_match(/b\.t/, lines[0])
|
81
|
+
assert_match(/c\.t/, lines[1])
|
82
|
+
assert_match(/a\.t/, lines[2])
|
83
|
+
assert_file_content "a.t", "b.t c.t", :strip
|
84
|
+
assert_file_content "b.t", "b", :strip
|
85
|
+
assert_file_content "c.t", "", :strip
|
86
|
+
out, err = assert_rant "-imd5"
|
87
|
+
assert err.empty?
|
88
|
+
assert out.empty?
|
89
|
+
Rant::Sys.write_to_file "d .t", "abc"
|
90
|
+
out, err = assert_rant "-imd5"
|
91
|
+
assert err.empty?
|
92
|
+
lines = out.split(/\n/)
|
93
|
+
assert_match(/c\.t/, lines[0])
|
94
|
+
assert_match(/a\.t/, lines[1])
|
95
|
+
assert_file_content "a.t", "b.t c.t", :strip
|
96
|
+
assert_file_content "c.t", "d .t", :strip
|
97
|
+
out, err = assert_rant "-imd5"
|
98
|
+
assert err.empty?
|
99
|
+
assert out.empty?
|
100
|
+
ensure
|
101
|
+
Rant::Sys.rm_f "d .t"
|
102
|
+
end
|
103
|
+
def test_enhance
|
104
|
+
Rant::Sys.write_to_file "d.t", "d\n"
|
105
|
+
out, err = assert_rant "b.t", "be=on"
|
106
|
+
assert err.empty?
|
107
|
+
assert !out.empty?
|
108
|
+
assert_file_content "b.t", "b\nd\n"
|
109
|
+
out, err = assert_rant "b.t", "be=on"
|
110
|
+
assert err.empty?
|
111
|
+
assert out.empty?
|
112
|
+
ensure
|
113
|
+
Rant::Sys.rm_f "d.t"
|
114
|
+
end
|
115
|
+
def test_enhance_md5
|
116
|
+
Rant::Sys.write_to_file "d.t", "d\n"
|
117
|
+
out, err = assert_rant "-imd5", "b.t", "be=on"
|
118
|
+
assert err.empty?
|
119
|
+
assert !out.empty?
|
120
|
+
assert_file_content "b.t", "b\nd\n"
|
121
|
+
out, err = assert_rant "-imd5", "b.t", "be=on"
|
122
|
+
assert err.empty?
|
123
|
+
assert out.empty?
|
124
|
+
Rant::Sys.write_to_file "d.t", "e\n"
|
125
|
+
out, err = assert_rant "-imd5", "b.t", "be=on"
|
126
|
+
assert err.empty?
|
127
|
+
assert !out.empty?
|
128
|
+
assert_file_content "b.t", "b\ne\n"
|
129
|
+
out, err = assert_rant "-imd5", "b.t", "be=on"
|
130
|
+
assert err.empty?
|
131
|
+
assert out.empty?
|
132
|
+
Rant::Sys.write_to_file "b.t", "c\n"
|
133
|
+
out, err = assert_rant "-imd5", "b.t", "be=on"
|
134
|
+
assert err.empty?
|
135
|
+
assert !out.empty?
|
136
|
+
assert_file_content "b.t", "b\ne\n"
|
137
|
+
out, err = assert_rant "-imd5", "b.t", "be=on"
|
138
|
+
assert err.empty?
|
139
|
+
assert out.empty?
|
140
|
+
ensure
|
141
|
+
Rant::Sys.rm_f "d.t"
|
142
|
+
end
|
143
|
+
def test_rule
|
144
|
+
out, err = assert_rant :fail, "a.out"
|
145
|
+
assert out.empty?
|
146
|
+
lines = err.split(/\n/)
|
147
|
+
assert lines.size < 3
|
148
|
+
assert_match(/ERROR.*\ba\.out\b/, lines.first)
|
149
|
+
assert !test(?e, "a.out")
|
150
|
+
assert !test(?e, "a.in1")
|
151
|
+
Rant::Sys.write_to_file "a.in2", ""
|
152
|
+
assert test(?f, "a.in2")
|
153
|
+
out, err = assert_rant "a.out"
|
154
|
+
assert err.empty?
|
155
|
+
assert !out.empty?
|
156
|
+
assert_file_content "a.out", "a.in1 a.in2 a.in1", :strip
|
157
|
+
assert test(?d, "a.in1")
|
158
|
+
out, err = assert_rant "a.out", "rargs=$(prerequisites) $(source) > $(name)"
|
159
|
+
assert err.empty?
|
160
|
+
assert out.empty?
|
161
|
+
out, err = assert_rant "a.out", "rargs=$(source) > $(name)"
|
162
|
+
assert err.empty?
|
163
|
+
assert !out.empty?
|
164
|
+
assert_file_content "a.out", "a.in1", :strip
|
165
|
+
assert test(?d, "a.in1")
|
166
|
+
out, err = assert_rant "a.out", "rargs=$(source) > $(name)"
|
167
|
+
assert err.empty?
|
168
|
+
assert out.empty?
|
169
|
+
timeout
|
170
|
+
Rant::Sys.touch "a.in2"
|
171
|
+
out, err = assert_rant "a.out", "rargs= $(source) > $(>)"
|
172
|
+
assert err.empty?
|
173
|
+
assert !out.empty?
|
174
|
+
assert_file_content "a.out", "a.in1", :strip
|
175
|
+
out, err = assert_rant "a.out", "rargs=$(source) > $(>)"
|
176
|
+
assert err.empty?
|
177
|
+
assert out.empty?
|
178
|
+
ensure
|
179
|
+
Rant::Sys.rm_f "a.in2"
|
180
|
+
assert_rant "autoclean"
|
181
|
+
assert !(test(?e, "a.out"))
|
182
|
+
assert !(test(?e, "a.in1"))
|
183
|
+
end
|
184
|
+
def test_rule_md5
|
185
|
+
Rant::Sys.write_to_file "a.in2", ""
|
186
|
+
assert test(?f, "a.in2")
|
187
|
+
out, err = assert_rant "-imd5", "a.out"
|
188
|
+
assert err.empty?
|
189
|
+
assert !out.empty?
|
190
|
+
assert_file_content "a.out", "a.in1 a.in2 a.in1", :strip
|
191
|
+
assert test(?d, "a.in1")
|
192
|
+
out, err = assert_rant "-imd5", "a.out", "rargs=$(prerequisites) $(source) > $(name)"
|
193
|
+
assert err.empty?
|
194
|
+
assert out.empty?
|
195
|
+
out, err = assert_rant "-imd5", "a.out", "rargs=$(source) > $(>)"
|
196
|
+
assert err.empty?
|
197
|
+
assert !out.empty?
|
198
|
+
assert_file_content "a.out", "a.in1", :strip
|
199
|
+
assert test(?d, "a.in1")
|
200
|
+
out, err = assert_rant "-imd5", "a.out", "rargs= $(source) > $(>)"
|
201
|
+
assert err.empty?
|
202
|
+
assert out.empty?
|
203
|
+
Rant::Sys.write_to_file "a.in2", " "
|
204
|
+
out, err = assert_rant "-imd5", "a.out", "rargs= $(source) > $(>)"
|
205
|
+
assert err.empty?
|
206
|
+
assert !out.empty?
|
207
|
+
assert_file_content "a.out", "a.in1", :strip
|
208
|
+
out, err = assert_rant "-imd5", "a.out", "rargs=$(source) > $(>)"
|
209
|
+
assert err.empty?
|
210
|
+
assert out.empty?
|
211
|
+
ensure
|
212
|
+
Rant::Sys.rm_f "a.in2"
|
213
|
+
assert_rant "autoclean"
|
214
|
+
assert !(test(?e, "a.out"))
|
215
|
+
assert !(test(?e, "a.in1"))
|
216
|
+
end
|
217
|
+
def test_ignore_symbolic_node_var_changes
|
218
|
+
Rant::Sys.mkdir "sub.t"
|
219
|
+
Rant::Sys.touch ["sub.t/b.in1", "sub.t/b.in2"]
|
220
|
+
out, err = assert_rant "sub.t/b.out", "rargs=$(<) $(-) > $(>)"
|
221
|
+
assert err.empty?
|
222
|
+
assert !out.empty?
|
223
|
+
if Rant::Env.on_windows?
|
224
|
+
assert_file_content "sub.t/b.out", "sub.t\\b.in1 sub.t\\b.in2 sub.t\\b.in1", :strip
|
225
|
+
else
|
226
|
+
assert_file_content "sub.t/b.out", "sub.t/b.in1 sub.t/b.in2 sub.t/b.in1", :strip
|
227
|
+
end
|
228
|
+
out, err = assert_rant "sub.t/b.out", "rargs=$(<) $(-) > $(>)"
|
229
|
+
assert err.empty?
|
230
|
+
assert out.empty?
|
231
|
+
Dir.chdir "sub.t"
|
232
|
+
out, err = assert_rant "-u", "b.out", "rargs=$(<) $(-) > $(>)"
|
233
|
+
assert err.empty?
|
234
|
+
lines = out.split(/\n/)
|
235
|
+
assert_equal 1, lines.size
|
236
|
+
assert_match(/\(root\b.*\bsub\.t\)/, lines.first)
|
237
|
+
if Rant::Env.on_windows?
|
238
|
+
assert_file_content "b.out", "sub.t\\b.in1 sub.t\\b.in2 sub.t\\b.in1", :strip
|
239
|
+
else
|
240
|
+
assert_file_content "b.out", "sub.t/b.in1 sub.t/b.in2 sub.t/b.in1", :strip
|
241
|
+
end
|
242
|
+
ensure
|
243
|
+
Dir.chdir $testImportCommandDir
|
244
|
+
Rant::Sys.rm_rf "sub.t"
|
245
|
+
end
|
246
|
+
def test_do_not_ignore_non_symbolic_node_var_changes
|
247
|
+
Rant::Sys.mkdir "sub.t"
|
248
|
+
Rant::Sys.touch ["sub.t/b.in1", "sub.t/b.in2"]
|
249
|
+
out, err = assert_rant "sub.t/b.out"
|
250
|
+
assert err.empty?
|
251
|
+
assert !out.empty?
|
252
|
+
if Rant::Env.on_windows?
|
253
|
+
assert_file_content "sub.t/b.out", "sub.t\\b.in1 sub.t\\b.in2 sub.t\\b.in1", :strip
|
254
|
+
else
|
255
|
+
assert_file_content "sub.t/b.out", "sub.t/b.in1 sub.t/b.in2 sub.t/b.in1", :strip
|
256
|
+
end
|
257
|
+
out, err = assert_rant "sub.t/b.out"
|
258
|
+
assert err.empty?
|
259
|
+
assert out.empty?
|
260
|
+
Dir.chdir "sub.t"
|
261
|
+
out, err = assert_rant "-u", "b.out"
|
262
|
+
assert err.empty?
|
263
|
+
assert !out.empty?
|
264
|
+
lines = out.split(/\n/)
|
265
|
+
assert_equal 2, lines.size
|
266
|
+
assert_match(/\(root\b.*\bsub\.t\)/, lines.first)
|
267
|
+
assert_match(/\bb\.out\b/, lines[1])
|
268
|
+
assert_file_content "b.out", "b.in1 b.in2 b.in1", :strip
|
269
|
+
ensure
|
270
|
+
Dir.chdir $testImportCommandDir
|
271
|
+
Rant::Sys.rm_rf "sub.t"
|
272
|
+
end
|
273
|
+
def test_with_space
|
274
|
+
Rant::Sys.mkdir "with space"
|
275
|
+
Rant::Sys.write_to_file "with space/b.t", "content"
|
276
|
+
out, err = assert_rant "with space/a.t"
|
277
|
+
assert err.empty?
|
278
|
+
assert !out.empty?
|
279
|
+
content = Rant::Env.on_windows? ?
|
280
|
+
"b.t\nwith space\\b.t\n" :
|
281
|
+
"b.t\nwith space/b.t\n"
|
282
|
+
assert_file_content "with space/a.t", content
|
283
|
+
out, err = assert_rant "with space/a.t"
|
284
|
+
assert err.empty?
|
285
|
+
assert out.empty?
|
286
|
+
assert_rant "autoclean"
|
287
|
+
["with space/a.t", "with space/a.t",
|
288
|
+
"with space/.rant.meta", "b.t"].each { |fn|
|
289
|
+
assert !test(?e, fn)
|
290
|
+
}
|
291
|
+
ensure
|
292
|
+
Rant::Sys.rm_rf "with space"
|
293
|
+
end
|
294
|
+
def test_sp_var_inline
|
295
|
+
out, err = assert_rant "f.t"
|
296
|
+
assert err.empty?
|
297
|
+
assert !out.empty?
|
298
|
+
assert_file_content "f.t", "/Ia bc\n"
|
299
|
+
out, err = assert_rant "f.t"
|
300
|
+
assert err.empty?
|
301
|
+
assert out.empty?
|
302
|
+
end
|
303
|
+
def test_sp_var_inline_path
|
304
|
+
out, err = assert_rant "e.t"
|
305
|
+
assert err.empty?
|
306
|
+
assert !out.empty?
|
307
|
+
content = Rant::Env.on_windows? ? "/Ia b\\c\\\n" : "/Ia b/c/\n"
|
308
|
+
assert_file_content "e.t", content
|
309
|
+
out, err = assert_rant "e.t"
|
310
|
+
assert err.empty?
|
311
|
+
assert out.empty?
|
312
|
+
end
|
313
|
+
def test_sp_var_inline_escaped
|
314
|
+
out, err = assert_rant "g.t"
|
315
|
+
assert err.empty?
|
316
|
+
assert !out.empty?
|
317
|
+
assert_file_content "g.t", "/Ia b/c/\n"
|
318
|
+
out, err = assert_rant "g.t"
|
319
|
+
assert err.empty?
|
320
|
+
assert out.empty?
|
321
|
+
end
|
322
|
+
def test_sp_var_inline_escaped_md5
|
323
|
+
out, err = assert_rant "-imd5", "g.t"
|
324
|
+
assert err.empty?
|
325
|
+
assert !out.empty?
|
326
|
+
assert_file_content "g.t", "/Ia b/c/\n"
|
327
|
+
out, err = assert_rant "-imd5", "g.t"
|
328
|
+
assert err.empty?
|
329
|
+
assert out.empty?
|
330
|
+
end
|
331
|
+
def test_rant_import
|
332
|
+
run_import("-q", "--auto", "-imd5", "ant.t")
|
333
|
+
assert_exit
|
334
|
+
out = run_ruby("ant.t", "-imd5", "e.t")
|
335
|
+
assert_exit
|
336
|
+
assert !out.empty?
|
337
|
+
content = Rant::Env.on_windows? ? "/Ia b\\c\\\n" : "/Ia b/c/\n"
|
338
|
+
assert_file_content "e.t", content
|
339
|
+
out = run_ruby("ant.t", "-imd5", "e.t")
|
340
|
+
assert out.empty?
|
341
|
+
ensure
|
342
|
+
Rant::Sys.rm_f "ant.t"
|
343
|
+
end
|
344
|
+
def test_multiple_commands
|
345
|
+
out, err = assert_rant "h.t"
|
346
|
+
assert err.empty?
|
347
|
+
assert !out.empty?
|
348
|
+
assert_file_content "h.t1", "1\n"
|
349
|
+
assert_file_content "h.t2", "2\n"
|
350
|
+
assert_file_content "h.t", "1\n2\n"
|
351
|
+
meta = File.read ".rant.meta"
|
352
|
+
out, err = assert_rant "h.t"
|
353
|
+
assert err.empty?
|
354
|
+
assert out.empty?
|
355
|
+
assert_equal meta, File.read(".rant.meta")
|
356
|
+
ensure
|
357
|
+
Rant::Sys.rm_f ["h.t1", "h.t2"]
|
358
|
+
end
|
359
|
+
def test_multiple_commands_md5
|
360
|
+
out, err = assert_rant "-imd5", "h.t"
|
361
|
+
assert err.empty?
|
362
|
+
assert !out.empty?
|
363
|
+
assert_file_content "h.t1", "1\n"
|
364
|
+
assert_file_content "h.t2", "2\n"
|
365
|
+
assert_file_content "h.t", "1\n2\n"
|
366
|
+
meta = File.read ".rant.meta"
|
367
|
+
out, err = assert_rant "-imd5", "h.t"
|
368
|
+
assert err.empty?
|
369
|
+
assert out.empty?
|
370
|
+
assert_equal meta, File.read(".rant.meta")
|
371
|
+
ensure
|
372
|
+
Rant::Sys.rm_f ["h.t1", "h.t2"]
|
373
|
+
end
|
374
|
+
def test_block_sys_instead_of_string
|
375
|
+
out, err = assert_rant :fail, "f_a.t"
|
376
|
+
lines = err.split(/\n/)
|
377
|
+
assert lines.size < 5
|
378
|
+
assert_match(/\[ERROR\]/, err)
|
379
|
+
rf_path = File.join($testImportCommandDir, "Rantfile")
|
380
|
+
assert_match(/#{Regexp.escape rf_path}\b.*\b13\b/, err)
|
381
|
+
assert_match(/block has to return command string/i, err)
|
382
|
+
assert_match(/\bf_a\.t\b/, err)
|
383
|
+
end
|
384
|
+
def test_only_one_arg
|
385
|
+
in_local_temp_dir do
|
386
|
+
Rant::Sys.write_to_file "root.rant", <<-EOF
|
387
|
+
import "command"
|
388
|
+
gen Command, "a"
|
389
|
+
EOF
|
390
|
+
out, err = assert_rant :fail
|
391
|
+
lines = err.split(/\n/)
|
392
|
+
assert lines.size < 4
|
393
|
+
assert_match(/\[ERROR\]/, err)
|
394
|
+
assert_match(/\broot\.rant\b.*\b2\b/, err)
|
395
|
+
assert_match(/argument/, err)
|
396
|
+
assert_match(/\bname\b.*\bcommand\b/, err)
|
397
|
+
old_out, old_err = out, err
|
398
|
+
out, err = assert_rant :fail, "-T"
|
399
|
+
assert_equal old_out, out
|
400
|
+
assert_equal old_err, err
|
401
|
+
end
|
402
|
+
end
|
403
|
+
def test_dep_rebuild_no_change_md5
|
404
|
+
out, err = assert_rant "-imd5", "t1.t", "t2.t"
|
405
|
+
assert err.empty?
|
406
|
+
assert !out.empty?
|
407
|
+
assert_file_content "dep1.t", "a\n"
|
408
|
+
assert_file_content "t1.t", "making t1\n"
|
409
|
+
assert_file_content "t2.t", "making t2\n"
|
410
|
+
out, err = assert_rant "-imd5", "t1.t", "t2.t"
|
411
|
+
assert err.empty?
|
412
|
+
assert out.empty?
|
413
|
+
out, err = assert_rant "-imd5", "rc_dep=print 'a'; puts", "t1.t", "t2.t"
|
414
|
+
assert err.empty?
|
415
|
+
assert out.include?("print")
|
416
|
+
assert !out.include?("making t2")
|
417
|
+
assert !out.include?("making t1")
|
418
|
+
end
|
419
|
+
def test_dep_rebuild_same_content_md5
|
420
|
+
out, err = assert_rant "-imd5", "t1.t", "t2.t"
|
421
|
+
assert err.empty?
|
422
|
+
assert !out.empty?
|
423
|
+
assert_file_content "dep1.t", "a\n"
|
424
|
+
assert_file_content "t1.t", "making t1\n"
|
425
|
+
assert_file_content "t2.t", "making t2\n"
|
426
|
+
out, err = assert_rant "-imd5", "t1.t", "t2.t"
|
427
|
+
assert err.empty?
|
428
|
+
assert out.empty?
|
429
|
+
out, err = assert_rant "-imd5", "rc_dep=print 'b'; puts", "dep1.t"
|
430
|
+
out, err = assert_rant "-imd5", "rc_dep=print 'a'; puts", "t1.t", "t2.t"
|
431
|
+
assert err.empty?
|
432
|
+
assert out.include?("print")
|
433
|
+
assert !out.include?("making t2")
|
434
|
+
assert !out.include?("making t1")
|
435
|
+
end
|
436
|
+
def test_in_subdir
|
437
|
+
out, err = assert_rant :fail, "sub1.t/a"
|
438
|
+
Rant::Sys.mkdir "sub1.t"
|
439
|
+
out, err = assert_rant "sub1.t/a"
|
440
|
+
assert err.empty?
|
441
|
+
assert !out.empty?
|
442
|
+
assert_file_content "sub1.t/a", "sub1.t/a\n"
|
443
|
+
out, err = assert_rant "sub1.t/a"
|
444
|
+
assert err.empty?
|
445
|
+
assert out.empty?
|
446
|
+
out, err = assert_rant "autoclean"
|
447
|
+
assert !test(?e, "sub1.t/a")
|
448
|
+
assert test(?d, "sub1.t")
|
449
|
+
ensure
|
450
|
+
Rant::Sys.rm_rf "sub1.t"
|
451
|
+
end
|
452
|
+
def test_in_subdir_with_dirtask
|
453
|
+
out, err = assert_rant "sub2.t/a"
|
454
|
+
assert err.empty?
|
455
|
+
assert !out.empty?
|
456
|
+
assert test(?d, "sub2.t")
|
457
|
+
assert_file_content "sub2.t/a", "sub2.t/a\n"
|
458
|
+
out, err = assert_rant "sub2.t/a"
|
459
|
+
assert err.empty?
|
460
|
+
assert out.empty?
|
461
|
+
assert_rant "autoclean"
|
462
|
+
assert !test(?e, "sub2.t")
|
463
|
+
end
|
464
|
+
def test_in_subdir_with_task
|
465
|
+
out, err = assert_rant :fail, "sub3/a"
|
466
|
+
assert out !~ /task sub3/
|
467
|
+
Rant::Sys.mkdir "sub3"
|
468
|
+
out, err = assert_rant "sub3/a"
|
469
|
+
assert err.empty?
|
470
|
+
assert !out.empty?
|
471
|
+
assert out !~ /task sub3/
|
472
|
+
assert_file_content "sub3/a", "sub3/a\n"
|
473
|
+
out, err = assert_rant "sub3/a"
|
474
|
+
assert err.empty?
|
475
|
+
assert out.empty?
|
476
|
+
out, err = assert_rant "autoclean"
|
477
|
+
assert !test(?e, "sub3/a")
|
478
|
+
assert test(?d, "sub3")
|
479
|
+
out, err = assert_rant "sub3"
|
480
|
+
assert err.empty?
|
481
|
+
assert_match(/task sub3/, out)
|
482
|
+
ensure
|
483
|
+
Rant::Sys.rm_rf "sub3"
|
484
|
+
end
|
485
|
+
def test_in_subdir_with_task_md5
|
486
|
+
out, err = assert_rant :fail, "-imd5", "sub3/a"
|
487
|
+
assert out !~ /task sub3/
|
488
|
+
Rant::Sys.mkdir "sub3"
|
489
|
+
out, err = assert_rant "-imd5", "sub3/a"
|
490
|
+
assert err.empty?
|
491
|
+
assert !out.empty?
|
492
|
+
assert out !~ /task sub3/
|
493
|
+
assert_file_content "sub3/a", "sub3/a\n"
|
494
|
+
out, err = assert_rant "-imd5", "sub3/a"
|
495
|
+
assert err.empty?
|
496
|
+
assert out.empty?
|
497
|
+
out, err = assert_rant "-imd5", "autoclean"
|
498
|
+
assert !test(?e, "sub3/a")
|
499
|
+
assert test(?d, "sub3")
|
500
|
+
out, err = assert_rant "-imd5", "sub3"
|
501
|
+
assert err.empty?
|
502
|
+
assert_match(/task sub3/, out)
|
503
|
+
ensure
|
504
|
+
Rant::Sys.rm_rf "sub3"
|
505
|
+
end
|
506
|
+
def test_ignore_for_sig
|
507
|
+
out, err = assert_rant "x.t", "a=1", "b=2"
|
508
|
+
assert err.empty?
|
509
|
+
assert !out.empty?
|
510
|
+
assert_file_content "x.t", "1\n2\n"
|
511
|
+
out, err = assert_rant "x.t", "a=1", "b=2"
|
512
|
+
assert err.empty?
|
513
|
+
assert out.empty?
|
514
|
+
out, err = assert_rant "x.t", "a=1", "b=3"
|
515
|
+
assert err.empty?
|
516
|
+
assert !out.empty?
|
517
|
+
assert_file_content "x.t", "1\n3\n"
|
518
|
+
out, err = assert_rant "x.t", "a=1", "b=3"
|
519
|
+
assert err.empty?
|
520
|
+
assert out.empty?
|
521
|
+
out, err = assert_rant "x.t", "a=3", "b=3"
|
522
|
+
assert err.empty?
|
523
|
+
assert out.empty?
|
524
|
+
assert_file_content "x.t", "1\n3\n"
|
525
|
+
end
|
526
|
+
def test_proc_var_with_arg
|
527
|
+
out, err = assert_rant "p1.t"
|
528
|
+
assert err.empty?
|
529
|
+
assert !out.empty?
|
530
|
+
assert_file_content "p1.t", "p1.t foo value\n"
|
531
|
+
out, err = assert_rant "p1.t"
|
532
|
+
assert err.empty?
|
533
|
+
assert out.empty?
|
534
|
+
end
|
535
|
+
def test_proc_var_with_arg_md5
|
536
|
+
out, err = assert_rant "-imd5", "p1.t"
|
537
|
+
assert err.empty?
|
538
|
+
assert !out.empty?
|
539
|
+
assert_file_content "p1.t", "p1.t foo value\n"
|
540
|
+
out, err = assert_rant "-imd5", "p1.t"
|
541
|
+
assert err.empty?
|
542
|
+
assert out.empty?
|
543
|
+
out, err = assert_rant "-imd5", "change_foo", "p1.t"
|
544
|
+
assert err.empty?
|
545
|
+
assert !out.empty?
|
546
|
+
assert_file_content "p1.t", "p1.t changed\n"
|
547
|
+
out, err = assert_rant "-imd5", "change_foo", "p1.t"
|
548
|
+
assert err.empty?
|
549
|
+
assert out.empty?
|
550
|
+
end
|
551
|
+
def test_proc_var_without_arg
|
552
|
+
out, err = assert_rant "p2.t", "p3.t"
|
553
|
+
assert err.empty?
|
554
|
+
assert !out.empty?
|
555
|
+
assert_file_content "p2.t", "foo value.\n"
|
556
|
+
assert_file_content "p3.t", "foo value..\n"
|
557
|
+
out, err = assert_rant "p2.t", "p3.t"
|
558
|
+
assert err.empty?
|
559
|
+
assert out.empty?
|
560
|
+
out, err = assert_rant "p2.t", "p3.t", "inc_foo=on"
|
561
|
+
assert err.empty?
|
562
|
+
assert !out.empty?
|
563
|
+
assert_file_content "p2.t", "foo value..\n"
|
564
|
+
assert_file_content "p3.t", "foo value...\n"
|
565
|
+
out, err = assert_rant "p2.t", "p3.t", "inc_foo=on"
|
566
|
+
assert err.empty?
|
567
|
+
assert out.empty?
|
568
|
+
end
|
569
|
+
def test_delayed_var_interpolation
|
570
|
+
out, err = assert_rant "delay.t"
|
571
|
+
assert err.empty?
|
572
|
+
assert !out.empty?
|
573
|
+
assert_file_content "delay.t", "foo value\n"
|
574
|
+
out, err = assert_rant "delay.t"
|
575
|
+
assert err.empty?
|
576
|
+
assert out.empty?
|
577
|
+
out, err = assert_rant "delay.t"
|
578
|
+
assert err.empty?
|
579
|
+
assert out.empty?
|
580
|
+
out, err = assert_rant "change_foo", "delay.t"
|
581
|
+
assert err.empty?
|
582
|
+
assert !out.empty?
|
583
|
+
assert_file_content "delay.t", "changed\n"
|
584
|
+
out, err = assert_rant "change_foo", "delay.t"
|
585
|
+
assert err.empty?
|
586
|
+
assert out.empty?
|
587
|
+
end
|
588
|
+
# will probably change
|
589
|
+
def test_warn_about_hash
|
590
|
+
out, err = assert_rant "hash.t"
|
591
|
+
assert !out.empty?
|
592
|
+
assert err.split(/\n/).size < 3
|
593
|
+
assert_match(/\[WARNING\].*`h'/, err)
|
594
|
+
assert_match(/\bhash(es)?\b/i, err)
|
595
|
+
assert_file_content "hash.t", "", :strip
|
596
|
+
end
|
597
|
+
end
|
@@ -27,6 +27,20 @@ class TestRantImport < Test::Unit::TestCase
|
|
27
27
|
assert out.include?("Options are")
|
28
28
|
assert out.include?("--help")
|
29
29
|
end
|
30
|
+
def test_option_version_and_V
|
31
|
+
out, err = capture_std do
|
32
|
+
assert_equal(0, Rant::RantImport.new("--version").run)
|
33
|
+
end
|
34
|
+
assert err.empty?
|
35
|
+
lines = out.split(/\n/)
|
36
|
+
assert_equal 1, lines.size
|
37
|
+
assert_equal "rant-import #{Rant::VERSION}", lines.first
|
38
|
+
out2, err = capture_std do
|
39
|
+
assert_equal(0, Rant::RantImport.new("-V").run)
|
40
|
+
end
|
41
|
+
assert err.empty?
|
42
|
+
assert_equal out, out2
|
43
|
+
end
|
30
44
|
def test_no_import
|
31
45
|
run_import("--quiet", "make.rb")
|
32
46
|
assert(test(?f, "make.rb"))
|
@@ -152,12 +166,20 @@ class TestRantImport < Test::Unit::TestCase
|
|
152
166
|
gen Sub2::T, "hello", "test" do end
|
153
167
|
EOF
|
154
168
|
out, err = assert_rant
|
169
|
+
n_out = out.dup
|
170
|
+
n_err = err.dup
|
155
171
|
assert_match(/hellotest/, out)
|
156
172
|
run_import("--quiet", "--auto", "ant.rb")
|
173
|
+
run_import("--quiet", "--auto", "--zip", "make.rb")
|
157
174
|
assert(test(?f, "ant.rb"))
|
158
175
|
FileUtils.rm_r "lib.t"
|
159
176
|
out = run_ruby("ant.rb")
|
160
|
-
|
177
|
+
assert_equal(n_out, out)
|
178
|
+
FileUtils.rm "ant.rb"
|
179
|
+
assert(test(?f, "make.rb"))
|
180
|
+
assert(test(?f, "make.rb.gz"))
|
181
|
+
out = run_ruby("make.rb")
|
182
|
+
assert_equal(n_out, out)
|
161
183
|
ensure
|
162
184
|
Dir.chdir old_pwd
|
163
185
|
FileUtils.rm_rf "sub2.t"
|
data/test/rule.rf
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
require 'test/unit'
|
3
|
+
require 'tutil'
|
4
|
+
|
5
|
+
$testDir ||= File.expand_path(File.dirname(__FILE__))
|
6
|
+
|
7
|
+
class TestDynamicDependencies < Test::Unit::TestCase
|
8
|
+
#include Rant::TestUtil
|
9
|
+
def setup
|
10
|
+
# Ensure we run in test directory.
|
11
|
+
Dir.chdir($testDir)
|
12
|
+
end
|
13
|
+
def teardown
|
14
|
+
assert_rant "-fdyn_dependencies.rf", "autoclean"
|
15
|
+
assert Dir["*.t"].empty?
|
16
|
+
end
|
17
|
+
def test_task
|
18
|
+
out, err = assert_rant "-fdyn_dependencies.rf"
|
19
|
+
assert err.empty?
|
20
|
+
lines = out.split(/\n/)
|
21
|
+
assert_equal %w(B C D A), lines
|
22
|
+
end
|
23
|
+
def test_file
|
24
|
+
out, err = assert_rant "-fdyn_dependencies.rf", "a.t"
|
25
|
+
assert err.empty?
|
26
|
+
assert !out.empty?
|
27
|
+
assert test(?f, "a.t")
|
28
|
+
assert test(?f, "b.t")
|
29
|
+
assert test(?f, "c.t")
|
30
|
+
assert test(?f, "d.t")
|
31
|
+
out, err = assert_rant "-fdyn_dependencies.rf", "a.t"
|
32
|
+
assert err.empty?
|
33
|
+
assert out.empty?
|
34
|
+
end
|
35
|
+
def test_file_md5
|
36
|
+
out, err = assert_rant "-imd5", "-fdyn_dependencies.rf", "a.t"
|
37
|
+
assert err.empty?
|
38
|
+
assert !out.empty?
|
39
|
+
assert test(?f, "a.t")
|
40
|
+
assert test(?f, "b.t")
|
41
|
+
assert test(?f, "c.t")
|
42
|
+
assert test(?f, "d.t")
|
43
|
+
assert_rant "-imd5", "-fdyn_dependencies.rf", "autoclean"
|
44
|
+
end
|
45
|
+
end
|