rant 0.5.6 → 0.5.7
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/NEWS +12 -0
- data/README +3 -3
- data/Rantfile +7 -1
- data/doc/Untitled-1~ +7 -0
- data/doc/command.rdoc +1 -1
- data/doc/csharp.rdoc +49 -72
- data/doc/csharp.rdoc~ +37 -0
- data/doc/csharp_deprecated.rdoc +73 -0
- data/doc/homepage/index.html +5 -8
- data/doc/homepage/index.html~ +134 -0
- data/doc/sys.rdoc +14 -0
- data/lib/rant/coregen.rb~ +262 -0
- data/lib/rant/csharp/base_compiler_adapter.rb +125 -0
- data/lib/rant/csharp/base_compiler_adapter.rb~ +105 -0
- data/lib/rant/csharp/compiler_adapter_factory.rb +40 -0
- data/lib/rant/csharp/compiler_adapter_factory.rb~ +39 -0
- data/lib/rant/csharp/csc_compiler.rb +15 -0
- data/lib/rant/csharp/csc_compiler.rb~ +39 -0
- data/lib/rant/csharp/gmcs_compiler.rb +9 -0
- data/lib/rant/csharp/gmcs_compiler.rb~ +10 -0
- data/lib/rant/csharp/mcs_compiler.rb +13 -0
- data/lib/rant/csharp/mcs_compiler.rb~ +40 -0
- data/lib/rant/csharp/msc_compiler.rb~ +39 -0
- data/lib/rant/import/csharp.rb +48 -0
- data/lib/rant/import/csharp.rb~ +58 -0
- data/lib/rant/import/nunittest.rb +32 -0
- data/lib/rant/import/resgen.rb +21 -0
- data/lib/rant/import/resgen.rb~ +20 -0
- data/lib/rant/init.rb +1 -1
- data/lib/rant/rantlib.rb +1 -0
- data/lib/rant/rantlib.rb~ +1376 -0
- data/lib/rant/rantsys.rb +6 -0
- data/run_import +1 -1
- data/run_rant +1 -1
- data/test/import/package/test_package.rb~ +628 -0
- data/test/rule.rf +4 -0
- data/test/test_filetask.rb~ +97 -0
- data/test/test_rule.rb +10 -0
- data/test/test_sys_methods.rb +22 -0
- data/test/units/csharp/test_base_compiler_adapter.rb +107 -0
- data/test/units/csharp/test_base_compiler_adapter.rb~ +73 -0
- data/test/units/csharp/test_compiler_adapter_factory.rb +66 -0
- data/test/units/csharp/test_compiler_adapter_factory.rb~ +66 -0
- data/test/units/csharp/test_csc_compiler.rb +23 -0
- data/test/units/csharp/test_csc_compiler.rb~ +23 -0
- data/test/units/csharp/test_gmsc_compiler.rb +19 -0
- data/test/units/csharp/test_gmsc_compiler.rb~ +19 -0
- data/test/units/csharp/test_msc_compiler.rb +23 -0
- data/test/units/csharp/test_msc_compiler.rb~ +23 -0
- data/test/units/csharp_test_helper.rb +6 -0
- data/test/units/import/test_csharp.rb +127 -0
- data/test/units/import/test_csharp.rb~ +126 -0
- data/test/units/import/test_nunittest.rb +122 -0
- data/test/units/import/test_resgen.rb +107 -0
- data/test/units/import/test_resgen.rb~ +88 -0
- metadata +269 -224
data/lib/rant/rantsys.rb
CHANGED
@@ -257,10 +257,16 @@ module Rant
|
|
257
257
|
# how many drive letters are really allowed on
|
258
258
|
# windows?
|
259
259
|
end
|
260
|
+
def absolute_path?(path)
|
261
|
+
path =~ %r{\A([a-zA-Z]+:)?(/|\\)}
|
262
|
+
end
|
260
263
|
else
|
261
264
|
def root_dir?(path)
|
262
265
|
path == "/"
|
263
266
|
end
|
267
|
+
def absolute_path?(path)
|
268
|
+
path =~ %r{\A/}
|
269
|
+
end
|
264
270
|
end
|
265
271
|
|
266
272
|
extend self
|
data/run_import
CHANGED
data/run_rant
CHANGED
@@ -0,0 +1,628 @@
|
|
1
|
+
|
2
|
+
require 'test/unit'
|
3
|
+
require 'tutil'
|
4
|
+
require 'rant/import/sys/tgz'
|
5
|
+
|
6
|
+
$testIPackageDir ||= File.expand_path(File.dirname(__FILE__))
|
7
|
+
|
8
|
+
class TestImportPackage < Test::Unit::TestCase
|
9
|
+
include Rant::TestUtil
|
10
|
+
def setup
|
11
|
+
# Ensure we run in test directory.
|
12
|
+
Dir.chdir $testIPackageDir
|
13
|
+
@pkg_dir = nil
|
14
|
+
@contents = {}
|
15
|
+
end
|
16
|
+
def teardown
|
17
|
+
assert_rant("autoclean")
|
18
|
+
Dir["*.{tgz,zip,t}"].each { |f|
|
19
|
+
assert(false, "#{f} should be removed by AutoClean")
|
20
|
+
}
|
21
|
+
end
|
22
|
+
def check_contents(atype, archive, files, dirs = [], manifest_file = nil)
|
23
|
+
old_pwd = Dir.pwd
|
24
|
+
FileUtils.mkdir "u.t"
|
25
|
+
FileUtils.cp archive, "u.t"
|
26
|
+
FileUtils.cd "u.t"
|
27
|
+
archive = File.basename archive
|
28
|
+
case atype
|
29
|
+
when :tgz: Rant::Sys.unpack_tgz(archive)
|
30
|
+
when :zip: Rant::Sys.unpack_zip(archive)
|
31
|
+
else
|
32
|
+
raise "unknown archive type -- #{atype}"
|
33
|
+
end
|
34
|
+
if @pkg_dir
|
35
|
+
assert(test(?d, @pkg_dir))
|
36
|
+
FileUtils.cd @pkg_dir
|
37
|
+
end
|
38
|
+
files.each { |f|
|
39
|
+
assert(test(?f, f), "file #{f} is missing in archive")
|
40
|
+
content = @contents[f]
|
41
|
+
if content
|
42
|
+
assert_equal(content, File.read(f))
|
43
|
+
end
|
44
|
+
}
|
45
|
+
dirs.each { |f|
|
46
|
+
assert(test(?d, f), "dir #{f} is missing in archive")
|
47
|
+
}
|
48
|
+
count = files.size + dirs.size
|
49
|
+
# + 1 because of the archive file
|
50
|
+
count += 1 unless @pkg_dir
|
51
|
+
assert_equal(count, Rant::FileList.glob_all("**/*").size)
|
52
|
+
if manifest_file
|
53
|
+
check_manifest(manifest_file, files)
|
54
|
+
end
|
55
|
+
yield if block_given?
|
56
|
+
ensure
|
57
|
+
FileUtils.cd old_pwd
|
58
|
+
FileUtils.rm_r "u.t"
|
59
|
+
end
|
60
|
+
def check_manifest(file, entries)
|
61
|
+
assert(test(?f, file))
|
62
|
+
m_entries = IO.read(file).split("\n")
|
63
|
+
assert_equal(entries.size, m_entries.size)
|
64
|
+
entries.each { |f|
|
65
|
+
assert(m_entries.include?(f),
|
66
|
+
"#{f} missing in manifest")
|
67
|
+
}
|
68
|
+
end
|
69
|
+
def test_tgz_from_manifest
|
70
|
+
assert_rant
|
71
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
72
|
+
dirs = %w(sub sub2)
|
73
|
+
check_contents(:tgz, "t1.tgz", mf, dirs, "MANIFEST")
|
74
|
+
end
|
75
|
+
def test_tgz_sync_manifest
|
76
|
+
assert_rant("t2.tgz")
|
77
|
+
mf = %w(sub/f1 sub2/f1 m2.tgz.t)
|
78
|
+
dirs = %w(sub sub2)
|
79
|
+
check_manifest("m2.tgz.t", mf)
|
80
|
+
check_contents(:tgz, "t2.tgz", mf, dirs, "m2.tgz.t")
|
81
|
+
out, err = assert_rant("t2.tgz")
|
82
|
+
assert(out.strip.empty?)
|
83
|
+
#assert(err.strip.empty?)
|
84
|
+
FileUtils.touch "sub/f5"
|
85
|
+
out, err = assert_rant("t2.tgz")
|
86
|
+
assert_match(/writing m2\.tgz\.t.*\n.*tar/m, out)
|
87
|
+
check_contents(:tgz, "t2.tgz", mf + %w(sub/f5), dirs, "m2.tgz.t")
|
88
|
+
timeout
|
89
|
+
FileUtils.rm "sub/f5"
|
90
|
+
out, err = assert_rant("t2.tgz")
|
91
|
+
assert_match(/writing m2\.tgz\.t.*\n.*tar/m, out)
|
92
|
+
check_contents(:tgz, "t2.tgz", mf, dirs, "m2.tgz.t")
|
93
|
+
# test autoclean
|
94
|
+
assert_rant("autoclean")
|
95
|
+
assert(!test(?e, "m2.tgz.t"))
|
96
|
+
# hmm.. the tgz will be removed by check_contents anyway...
|
97
|
+
assert(!test(?e, "t2.tgz"))
|
98
|
+
ensure
|
99
|
+
FileUtils.rm_rf "sub/f5"
|
100
|
+
end
|
101
|
+
def test_tgz_sync_manifest_md5
|
102
|
+
assert_rant("-imd5", "t2.tgz")
|
103
|
+
mf = %w(sub/f1 sub2/f1 m2.tgz.t)
|
104
|
+
dirs = %w(sub sub2)
|
105
|
+
check_manifest("m2.tgz.t", mf)
|
106
|
+
check_contents(:tgz, "t2.tgz", mf, dirs, "m2.tgz.t")
|
107
|
+
out, err = assert_rant("t2.tgz")
|
108
|
+
assert(out.strip.empty?)
|
109
|
+
assert(err.strip.empty?)
|
110
|
+
FileUtils.touch "sub/f5"
|
111
|
+
out, err = assert_rant("-imd5", "t2.tgz")
|
112
|
+
assert_match(/writing m2\.tgz\.t.*\n.*tar/m, out)
|
113
|
+
check_contents(:tgz, "t2.tgz", mf + %w(sub/f5), dirs, "m2.tgz.t")
|
114
|
+
FileUtils.rm "sub/f5"
|
115
|
+
out, err = assert_rant("-imd5", "t2.tgz")
|
116
|
+
assert_match(/writing m2\.tgz\.t.*\n.*tar/m, out)
|
117
|
+
check_contents(:tgz, "t2.tgz", mf, dirs, "m2.tgz.t")
|
118
|
+
# test autoclean
|
119
|
+
assert_rant("-imd5", "autoclean")
|
120
|
+
assert(!test(?e, "m2.tgz.t"))
|
121
|
+
# hmm.. the tgz will be removed by check_contents anyway...
|
122
|
+
assert(!test(?e, "t2.tgz"))
|
123
|
+
assert(!test(?e, ".rant.meta"))
|
124
|
+
ensure
|
125
|
+
FileUtils.rm_rf "sub/f5"
|
126
|
+
end
|
127
|
+
def test_tgz_files_array
|
128
|
+
assert_rant("t3.tgz")
|
129
|
+
mf = %w(Rantfile sub/f1)
|
130
|
+
dirs = %w(sub)
|
131
|
+
check_contents(:tgz, "t3.tgz", mf, dirs)
|
132
|
+
end
|
133
|
+
def test_tgz_version_and_dir
|
134
|
+
assert_rant("pkg.t/t4-1.0.0.tgz")
|
135
|
+
assert(test(?d, "pkg.t"))
|
136
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
137
|
+
dirs = %w(sub sub2)
|
138
|
+
check_contents(:tgz, "pkg.t/t4-1.0.0.tgz", mf, dirs, "MANIFEST")
|
139
|
+
ensure
|
140
|
+
FileUtils.rm_rf "pkg.t"
|
141
|
+
end
|
142
|
+
def test_tgz_package_manifest
|
143
|
+
assert(!test(?e, "pkg2.t"))
|
144
|
+
assert_rant("pkg2.t.tgz")
|
145
|
+
assert(?d, "pkg2.t")
|
146
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
147
|
+
dirs = %w(sub sub2)
|
148
|
+
@pkg_dir = "pkg2.t"
|
149
|
+
check_contents(:tgz, "pkg2.t.tgz", mf, dirs, "MANIFEST")
|
150
|
+
assert(test(?d, "pkg2.t"))
|
151
|
+
assert_rant("autoclean")
|
152
|
+
assert(!test(?e, "pkg2.t"))
|
153
|
+
end
|
154
|
+
def test_tgz_package_basedir_manifest_extension
|
155
|
+
assert_rant("sub/pkg.t/pkg-0.1.tar.gz")
|
156
|
+
assert(test(?f, "sub/pkg.t/pkg-0.1.tar.gz"))
|
157
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
158
|
+
dirs = %w(sub sub2)
|
159
|
+
@pkg_dir = "pkg-0.1"
|
160
|
+
check_contents(:tgz,
|
161
|
+
"sub/pkg.t/pkg-0.1.tar.gz", mf, dirs, "MANIFEST")
|
162
|
+
assert(test(?f, "sub/f1"))
|
163
|
+
assert_rant("autoclean")
|
164
|
+
assert(!test(?e, "sub/pkg.t-0.1"))
|
165
|
+
assert(test(?d, "sub"))
|
166
|
+
assert(test(?f, "sub/f1"))
|
167
|
+
end
|
168
|
+
def test_tgz_package_basedir_with_slash
|
169
|
+
assert(!test(?d, "sub.t"))
|
170
|
+
assert_rant(:fail, "sub.t/pkg.tgz")
|
171
|
+
assert(!test(?d, "sub.t"))
|
172
|
+
FileUtils.mkdir "sub.t"
|
173
|
+
FileUtils.touch "sub.t/a.t"
|
174
|
+
out, err = assert_rant("sub.t/pkg.tgz")
|
175
|
+
assert(!out.empty?)
|
176
|
+
out, err = assert_rant("sub.t/pkg.tgz")
|
177
|
+
assert(out.strip.empty?)
|
178
|
+
assert(test(?d, "sub.t/pkg"))
|
179
|
+
@pkg_dir = "pkg"
|
180
|
+
mf = %w(sub/f1)
|
181
|
+
dirs = %w(sub)
|
182
|
+
check_contents(:tgz, "sub.t/pkg.tgz", mf, dirs)
|
183
|
+
assert_rant("autoclean")
|
184
|
+
assert(!test(?e, "sub.t/pkg.tgz"))
|
185
|
+
assert(!test(?e, "sub.t/pkg"))
|
186
|
+
assert(test(?d, "sub.t"))
|
187
|
+
assert(test(?f, "sub.t/a.t"))
|
188
|
+
ensure
|
189
|
+
FileUtils.rm_rf "sub.t"
|
190
|
+
end
|
191
|
+
def test_tgz_import_archive
|
192
|
+
open "rf.t", "w" do |f|
|
193
|
+
f << <<-EOF
|
194
|
+
import "archive/tgz", "autoclean"
|
195
|
+
gen Archive::Tgz, "rf", :files => sys["deep/sub/sub/f1"]
|
196
|
+
gen AutoClean
|
197
|
+
EOF
|
198
|
+
end
|
199
|
+
assert_rant("-frf.t")
|
200
|
+
mf = %w(deep/sub/sub/f1)
|
201
|
+
dirs = %w(deep deep/sub deep/sub/sub)
|
202
|
+
check_contents(:tgz, "rf.tgz", mf, dirs)
|
203
|
+
assert(test(?f, "rf.tgz"))
|
204
|
+
assert_rant("-frf.t", "autoclean")
|
205
|
+
assert(!test(?e, "rf.tgz"))
|
206
|
+
run_import("-frf.t", "-q", "--auto", "ant.t")
|
207
|
+
assert_equal(0, $?.exitstatus)
|
208
|
+
out = run_ruby("ant.t", "-frf.t")
|
209
|
+
assert(!out.empty?)
|
210
|
+
out = run_ruby("ant.t", "-frf.t")
|
211
|
+
assert(out.empty?)
|
212
|
+
check_contents(:tgz, "rf.tgz", mf, dirs)
|
213
|
+
assert(test(?f, "rf.tgz"))
|
214
|
+
assert_rant("-frf.t", "autoclean")
|
215
|
+
assert(!test(?e, "rf.tgz"))
|
216
|
+
ensure
|
217
|
+
FileUtils.rm_rf %w(rf.t ant.t)
|
218
|
+
end
|
219
|
+
def test_tgz_package_empty_dir
|
220
|
+
FileUtils.mkdir "sub6.t"
|
221
|
+
assert_rant("t6.tgz")
|
222
|
+
@pkg_dir = "t6"
|
223
|
+
mf = %w()
|
224
|
+
dirs = %w(sub6.t)
|
225
|
+
check_contents(:tgz, "t6.tgz", mf, dirs)
|
226
|
+
ensure
|
227
|
+
FileUtils.rm_rf %w(sub6.t)
|
228
|
+
end
|
229
|
+
def test_tgz_files_manifest_desc
|
230
|
+
out, err = assert_rant("--tasks")
|
231
|
+
assert_match(/rant\s+t2\.tgz\s+#\s+Create t2\.tgz/, out)
|
232
|
+
end
|
233
|
+
def test_tgz_package_files_contains_manifest
|
234
|
+
assert_rant("t5.tgz")
|
235
|
+
@pkg_dir = "t5"
|
236
|
+
mf = %w(Rantfile mf5.t)
|
237
|
+
dirs = %w()
|
238
|
+
check_contents(:tgz, "t5.tgz", mf, dirs, "mf5.t")
|
239
|
+
assert_rant("autoclean")
|
240
|
+
assert(!test(?e, "t5"))
|
241
|
+
end
|
242
|
+
def test_tgz_package_non_recursive
|
243
|
+
FileUtils.mkdir "sub6.t"
|
244
|
+
FileUtils.touch "sub6.t/.t"
|
245
|
+
FileUtils.touch "sub6.t/a.t"
|
246
|
+
assert_rant("t6.tgz")
|
247
|
+
@pkg_dir = "t6"
|
248
|
+
mf = %w()
|
249
|
+
dirs = %w(sub6.t)
|
250
|
+
check_contents(:tgz, "t6.tgz", mf, dirs)
|
251
|
+
assert_rant("autoclean")
|
252
|
+
assert(!test(?e, "t6"))
|
253
|
+
ensure
|
254
|
+
FileUtils.rm_rf "sub6.t"
|
255
|
+
end
|
256
|
+
def test_tgz_non_recursive
|
257
|
+
FileUtils.mkdir "sub7.t"
|
258
|
+
FileUtils.touch "sub7.t/a"
|
259
|
+
assert_rant("t7.tgz")
|
260
|
+
mf = %w()
|
261
|
+
dirs = %w(sub7.t)
|
262
|
+
check_contents(:tgz, "t7.tgz", mf, dirs)
|
263
|
+
ensure
|
264
|
+
FileUtils.rm_rf "sub7.t"
|
265
|
+
end
|
266
|
+
def test_tgz_follow_symlink
|
267
|
+
have_symlinks = true
|
268
|
+
FileUtils.mkdir "subs.t"
|
269
|
+
open "target.t", "w" do |f|
|
270
|
+
f.print "symlink test target file"
|
271
|
+
end
|
272
|
+
begin
|
273
|
+
File.symlink "../target.t", "subs.t/symlink"
|
274
|
+
rescue NotImplementedError
|
275
|
+
have_symlinks = false
|
276
|
+
end
|
277
|
+
if have_symlinks
|
278
|
+
assert(File.symlink?("subs.t/symlink"))
|
279
|
+
assert(File.exist?("subs.t/symlink"))
|
280
|
+
assert_rant("sym.tgz")
|
281
|
+
mf = %w(subs.t/symlink)
|
282
|
+
dirs = %w(subs.t)
|
283
|
+
@contents["subs.t/symlink"] = "symlink test target file"
|
284
|
+
check_contents(:tgz, "sym.tgz", mf, dirs)
|
285
|
+
else
|
286
|
+
STDERR.puts "*** platform doesn't support symbolic links ***"
|
287
|
+
end
|
288
|
+
ensure
|
289
|
+
FileUtils.rm_f %w(target.t sym.tgz)
|
290
|
+
FileUtils.rm_rf "subs.t"
|
291
|
+
end
|
292
|
+
def test_tgz_package_follow_symlink_dir
|
293
|
+
have_symlinks = true
|
294
|
+
FileUtils.mkdir "subs.t"
|
295
|
+
begin
|
296
|
+
File.symlink "subs.t", "sub6.t"
|
297
|
+
rescue NotImplementedError
|
298
|
+
have_symlinks = false
|
299
|
+
end
|
300
|
+
if have_symlinks
|
301
|
+
assert_rant("t6.tgz")
|
302
|
+
@pkg_dir = "t6"
|
303
|
+
mf = %w()
|
304
|
+
dirs = %w(sub6.t)
|
305
|
+
check_contents(:tgz, "t6.tgz", mf, dirs)
|
306
|
+
end
|
307
|
+
ensure
|
308
|
+
FileUtils.rm_rf %w(subs.t sub6.t)
|
309
|
+
end
|
310
|
+
def test_tgz_package_double
|
311
|
+
assert_rant("pkg.t/double.tgz")
|
312
|
+
out, err = assert_rant("pkg.t/double.tgz")
|
313
|
+
assert(out.empty?)
|
314
|
+
assert(err.empty?)
|
315
|
+
mf = %w(Rantfile)
|
316
|
+
dirs = %w()
|
317
|
+
@pkg_dir = "double"
|
318
|
+
check_contents(:tgz, "pkg.t/double.tgz", mf, dirs)
|
319
|
+
end
|
320
|
+
def test_zip_follow_symlink
|
321
|
+
have_symlinks = true
|
322
|
+
FileUtils.mkdir "subs.t"
|
323
|
+
open "target.t", "w" do |f|
|
324
|
+
f.print "symlink test target file"
|
325
|
+
end
|
326
|
+
begin
|
327
|
+
File.symlink "../target.t", "subs.t/symlink"
|
328
|
+
rescue NotImplementedError
|
329
|
+
have_symlinks = false
|
330
|
+
end
|
331
|
+
if have_symlinks
|
332
|
+
assert(File.symlink?("subs.t/symlink"))
|
333
|
+
assert(File.exist?("subs.t/symlink"))
|
334
|
+
assert_rant("sym.zip")
|
335
|
+
mf = %w(subs.t/symlink)
|
336
|
+
dirs = %w(subs.t)
|
337
|
+
@contents["subs.t/symlink"] = "symlink test target file"
|
338
|
+
check_contents(:zip, "sym.zip", mf, dirs)
|
339
|
+
else
|
340
|
+
STDERR.puts "*** platform doesn't support symbolic links ***"
|
341
|
+
end
|
342
|
+
ensure
|
343
|
+
FileUtils.rm_f %w(target.t sym.zip)
|
344
|
+
FileUtils.rm_rf "subs.t"
|
345
|
+
end
|
346
|
+
def test_zip_package_follow_symlink_dir
|
347
|
+
have_symlinks = true
|
348
|
+
FileUtils.mkdir "subs.t"
|
349
|
+
begin
|
350
|
+
File.symlink "subs.t", "sub6.t"
|
351
|
+
rescue NotImplementedError
|
352
|
+
have_symlinks = false
|
353
|
+
end
|
354
|
+
if have_symlinks
|
355
|
+
assert_rant("t6.zip")
|
356
|
+
@pkg_dir = "t6"
|
357
|
+
mf = %w()
|
358
|
+
dirs = %w(sub6.t)
|
359
|
+
check_contents(:zip, "t6.zip", mf, dirs)
|
360
|
+
end
|
361
|
+
ensure
|
362
|
+
FileUtils.rm_rf %w(subs.t sub6.t)
|
363
|
+
end
|
364
|
+
def test_zip_non_recursive
|
365
|
+
FileUtils.mkdir "sub7.t"
|
366
|
+
FileUtils.touch "sub7.t/a"
|
367
|
+
assert_rant("t7.zip")
|
368
|
+
mf = %w()
|
369
|
+
dirs = %w(sub7.t)
|
370
|
+
check_contents(:zip, "t7.zip", mf, dirs)
|
371
|
+
ensure
|
372
|
+
FileUtils.rm_rf "sub7.t"
|
373
|
+
end
|
374
|
+
def test_zip_package_non_recursive
|
375
|
+
FileUtils.mkdir "sub6.t"
|
376
|
+
FileUtils.touch "sub6.t/.t"
|
377
|
+
FileUtils.touch "sub6.t/a.t"
|
378
|
+
assert_rant("t6.zip")
|
379
|
+
@pkg_dir = "t6"
|
380
|
+
mf = %w()
|
381
|
+
dirs = %w(sub6.t)
|
382
|
+
check_contents(:zip, "t6.zip", mf, dirs)
|
383
|
+
assert_rant("autoclean")
|
384
|
+
assert(!test(?e, "t6"))
|
385
|
+
ensure
|
386
|
+
FileUtils.rm_rf "sub6.t"
|
387
|
+
end
|
388
|
+
def test_zip_package_empty_dir
|
389
|
+
FileUtils.mkdir "sub6.t"
|
390
|
+
assert_rant("t6.zip")
|
391
|
+
@pkg_dir = "t6"
|
392
|
+
mf = %w()
|
393
|
+
dirs = %w(sub6.t)
|
394
|
+
check_contents(:zip, "t6.zip", mf, dirs)
|
395
|
+
ensure
|
396
|
+
FileUtils.rm_rf %w(sub6.t)
|
397
|
+
end
|
398
|
+
def test_zip_manifest_desc
|
399
|
+
out, err = assert_rant("--tasks")
|
400
|
+
assert_match(/rant\s+t1\.zip\s+#\s+Create t1\.zip/, out)
|
401
|
+
end
|
402
|
+
def test_zip_rant_import
|
403
|
+
run_import("-q", "--auto", "ant.t")
|
404
|
+
assert_equal(0, $?.exitstatus)
|
405
|
+
assert(test(?f, "ant.t"))
|
406
|
+
out = run_ruby("ant.t", "pkg.t/pkg.zip")
|
407
|
+
assert_equal(0, $?.exitstatus)
|
408
|
+
assert(!out.empty?)
|
409
|
+
out = run_ruby("ant.t", "pkg.t/pkg.zip")
|
410
|
+
assert(out.empty?)
|
411
|
+
mf = %w(deep/sub/sub/f1 CONTENTS)
|
412
|
+
dirs = %w(deep deep/sub deep/sub/sub)
|
413
|
+
@pkg_dir = "pkg"
|
414
|
+
check_contents(:zip, "pkg.t/pkg.zip", mf, dirs, "CONTENTS")
|
415
|
+
assert(test(?f, "CONTENTS"))
|
416
|
+
run_ruby("ant.t", "autoclean")
|
417
|
+
assert(!test(?f, "CONTENTS"))
|
418
|
+
ensure
|
419
|
+
FileUtils.rm_f "ant.t"
|
420
|
+
end
|
421
|
+
def test_zip_package_write_manifest
|
422
|
+
assert(!test(?f, "CONTENTS"))
|
423
|
+
assert_rant(:x, "pkg.t/pkg.zip")
|
424
|
+
assert(test(?f, "CONTENTS"))
|
425
|
+
mf = %w(deep/sub/sub/f1 CONTENTS)
|
426
|
+
dirs = %w(deep deep/sub deep/sub/sub)
|
427
|
+
@pkg_dir = "pkg"
|
428
|
+
check_contents(:zip, "pkg.t/pkg.zip", mf, dirs, "CONTENTS")
|
429
|
+
assert(test(?f, "CONTENTS"))
|
430
|
+
assert_rant("autoclean")
|
431
|
+
assert(!test(?f, "CONTENTS"))
|
432
|
+
end
|
433
|
+
def test_zip_with_basedir
|
434
|
+
assert_rant(:fail, "zip.t/t4-1.0.0.zip")
|
435
|
+
assert(!test(?d, "zip.t"))
|
436
|
+
FileUtils.mkdir "zip.t"
|
437
|
+
assert_rant(:x, "zip.t/t4-1.0.0.zip")
|
438
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
439
|
+
dirs = %w(sub sub2)
|
440
|
+
check_contents(:zip, "zip.t/t4-1.0.0.zip", mf, dirs, "MANIFEST")
|
441
|
+
assert_rant("autoclean")
|
442
|
+
assert(test(?d, "zip.t"))
|
443
|
+
assert(!test(?e, "zip.t/t4-1.0.0.zip"))
|
444
|
+
ensure
|
445
|
+
FileUtils.rm_rf "zip.t"
|
446
|
+
end
|
447
|
+
def test_zip_with_basedir_md5
|
448
|
+
assert_rant(:fail, "-imd5", "zip.t/t4-1.0.0.zip")
|
449
|
+
assert(!test(?d, "zip.t"))
|
450
|
+
FileUtils.mkdir "zip.t"
|
451
|
+
assert_rant(:x, "-imd5", "zip.t/t4-1.0.0.zip")
|
452
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
453
|
+
dirs = %w(sub sub2)
|
454
|
+
check_contents(:zip, "zip.t/t4-1.0.0.zip", mf, dirs, "MANIFEST")
|
455
|
+
out, err = assert_rant("-imd5", "zip.t/t4-1.0.0.zip")
|
456
|
+
assert(err.empty?)
|
457
|
+
assert(out.empty?)
|
458
|
+
assert_rant("-imd5", "autoclean")
|
459
|
+
assert(test(?d, "zip.t"))
|
460
|
+
assert(!test(?e, ".rant.meta"))
|
461
|
+
assert(!test(?e, "zip.t/t4-1.0.0.zip"))
|
462
|
+
ensure
|
463
|
+
FileUtils.rm_rf "zip.t"
|
464
|
+
end
|
465
|
+
def test_zip_from_manifest
|
466
|
+
assert_rant(:x, "t1.zip")
|
467
|
+
mf = %w(Rantfile sub/f1 sub2/f1 MANIFEST)
|
468
|
+
dirs = %w(sub sub2)
|
469
|
+
check_contents(:zip, "t1.zip", mf, dirs, "MANIFEST")
|
470
|
+
end
|
471
|
+
def test_zip_sync_manifest
|
472
|
+
assert_rant(:x, "t2.zip")
|
473
|
+
mf = %w(sub/f1 sub2/f1 m2.zip.t)
|
474
|
+
dirs = %w(sub sub2)
|
475
|
+
check_manifest("m2.zip.t", mf)
|
476
|
+
check_contents(:zip, "t2.zip", mf, dirs, "m2.zip.t")
|
477
|
+
ensure
|
478
|
+
FileUtils.rm_f "m2.zip.t"
|
479
|
+
end
|
480
|
+
def test_zip_filelist
|
481
|
+
assert_rant(:x, "t3.zip")
|
482
|
+
mf = %w(Rantfile sub/f1)
|
483
|
+
dirs = %w(sub)
|
484
|
+
check_contents(:zip, "t3.zip", mf, dirs)
|
485
|
+
end
|
486
|
+
def write(fn, str)
|
487
|
+
open fn, "w" do |f|
|
488
|
+
f.write str
|
489
|
+
end
|
490
|
+
end
|
491
|
+
def test_md5_zip_package
|
492
|
+
write("sub/pkg.t", "abc\n")
|
493
|
+
write("sub2/a.t", "a\n")
|
494
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.zip")
|
495
|
+
assert(err.empty?)
|
496
|
+
mf = %w(sub/f1 sub2/f1 sub2/a.t)
|
497
|
+
dirs = %w(sub sub2)
|
498
|
+
@pkg_dir = "m1"
|
499
|
+
check_contents(:zip, "pkg.t/m1.zip", mf, dirs)
|
500
|
+
FileUtils.rm "sub/pkg.t"
|
501
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.zip")
|
502
|
+
assert(err.empty?)
|
503
|
+
assert(out.empty?)
|
504
|
+
FileUtils.rm "sub2/a.t"
|
505
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.zip")
|
506
|
+
assert(err.empty?)
|
507
|
+
assert(!out.empty?)
|
508
|
+
mf = %w(sub/f1 sub2/f1)
|
509
|
+
dirs = %w(sub sub2)
|
510
|
+
@pkg_dir = "m1"
|
511
|
+
check_contents(:zip, "pkg.t/m1.zip", mf, dirs)
|
512
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.zip")
|
513
|
+
assert(err.empty?)
|
514
|
+
assert(out.empty?)
|
515
|
+
assert_rant("-fmd5.rf", "clean")
|
516
|
+
assert(!test(?e, "pkg.t"))
|
517
|
+
assert(!test(?e, ".rant.meta"))
|
518
|
+
ensure
|
519
|
+
FileUtils.rm_f %w(.rant.meta sub1/pkg.t sub2/a.t)
|
520
|
+
end
|
521
|
+
def test_md5_tgz_package
|
522
|
+
write("sub/pkg.t", "abc\n")
|
523
|
+
write("sub2/a.t", "a\n")
|
524
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.tgz")
|
525
|
+
assert(err.empty?)
|
526
|
+
mf = %w(sub/f1 sub2/f1 sub2/a.t)
|
527
|
+
dirs = %w(sub sub2)
|
528
|
+
@pkg_dir = "m1"
|
529
|
+
check_contents(:tgz, "pkg.t/m1.tgz", mf, dirs)
|
530
|
+
FileUtils.rm "sub/pkg.t"
|
531
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.tgz")
|
532
|
+
assert(err.empty?)
|
533
|
+
assert(out.empty?)
|
534
|
+
FileUtils.rm "sub2/a.t"
|
535
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.tgz")
|
536
|
+
assert(err.empty?)
|
537
|
+
assert(!out.empty?)
|
538
|
+
mf = %w(sub/f1 sub2/f1)
|
539
|
+
dirs = %w(sub sub2)
|
540
|
+
@pkg_dir = "m1"
|
541
|
+
check_contents(:tgz, "pkg.t/m1.tgz", mf, dirs)
|
542
|
+
out, err = assert_rant("-fmd5.rf", "pkg.t/m1.tgz")
|
543
|
+
assert(err.empty?)
|
544
|
+
assert(out.empty?)
|
545
|
+
assert_rant("-fmd5.rf", "clean")
|
546
|
+
assert(!test(?e, "pkg.t"))
|
547
|
+
assert(!test(?e, ".rant.meta"))
|
548
|
+
ensure
|
549
|
+
FileUtils.rm_f %w(.rant.meta sub1/pkg.t sub2/a.t)
|
550
|
+
end
|
551
|
+
def test_rant_import_md5_empty_archive_tgz
|
552
|
+
write("empty.rf", <<-EOF)
|
553
|
+
import "md5", "archive/tgz"
|
554
|
+
gen Archive::Tgz, "empty.t", :files => []
|
555
|
+
EOF
|
556
|
+
run_import("-q", "-fempty.rf", "--auto", "make.t")
|
557
|
+
assert_exit
|
558
|
+
out = run_ruby("make.t", "-fempty.rf", "empty.t.tgz")
|
559
|
+
assert_exit
|
560
|
+
mf = %w()
|
561
|
+
dirs = %w()
|
562
|
+
check_contents(:tgz, "empty.t.tgz", mf, dirs)
|
563
|
+
out = run_ruby("make.t", "-fempty.rf", "empty.t.tgz")
|
564
|
+
assert(out.empty?)
|
565
|
+
ensure
|
566
|
+
FileUtils.rm_f %w(make.t empty.rf empty.t.tgz)
|
567
|
+
end
|
568
|
+
def test_package_tgz_flag_manifest_opt_files
|
569
|
+
in_local_temp_dir do
|
570
|
+
write_to_file "root.rant", <<-EOF
|
571
|
+
import "md5", "package/tgz", "autoclean"
|
572
|
+
gen Package::Tgz, "a-b", :manifest, :files => sys["*"].exclude("u", "*.tgz")
|
573
|
+
gen AutoClean
|
574
|
+
EOF
|
575
|
+
write_to_file "a", "a\n"
|
576
|
+
out, err = assert_rant "a-b.tgz"
|
577
|
+
assert err.empty?
|
578
|
+
assert !out.empty?
|
579
|
+
assert(test(?f, "a-b.tgz"))
|
580
|
+
assert(test(?f, "MANIFEST"))
|
581
|
+
Rant::Sys.unpack_tgz "a-b.tgz", :in => "u"
|
582
|
+
assert_nothing_raised do
|
583
|
+
assert Rant::Sys.compare_file("root.rant", "u/a-b/root.rant")
|
584
|
+
assert_equal "a\n", File.read("u/a-b/a")
|
585
|
+
entries = File.read("u/a-b/MANIFEST").split(/\n/)
|
586
|
+
assert_equal 3, entries.size
|
587
|
+
assert entries.include?("MANIFEST")
|
588
|
+
assert entries.include?("a")
|
589
|
+
assert entries.include?("root.rant")
|
590
|
+
end
|
591
|
+
out, err = assert_rant "a-b.tgz"
|
592
|
+
assert err.empty?
|
593
|
+
assert out.empty?
|
594
|
+
assert_rant "autoclean"
|
595
|
+
assert !test(?e, "a-b.tgz")
|
596
|
+
assert !test(?e, "a-b")
|
597
|
+
assert !test(?e, ".rant.meta")
|
598
|
+
end
|
599
|
+
end
|
600
|
+
def test_package_zip_exclude_package_dir
|
601
|
+
in_local_temp_dir do
|
602
|
+
write_to_file "root.rant", <<-EOF
|
603
|
+
import "md5", "package/zip", "autoclean"
|
604
|
+
gen Package::Zip, "pkg", :files => sys["**/*.t"]
|
605
|
+
gen AutoClean
|
606
|
+
EOF
|
607
|
+
write_to_file "a.t", "a\n"
|
608
|
+
Rant::Sys.mkdir "dir"
|
609
|
+
write_to_file "dir/a.t", "dir_a\n"
|
610
|
+
write_to_file "pkg.t", "pkg\n"
|
611
|
+
out, err = assert_rant "pkg.zip"
|
612
|
+
assert err.empty?
|
613
|
+
assert !out.empty?
|
614
|
+
mf = %w(a.t dir/a.t pkg.t)
|
615
|
+
dirs = %w(dir)
|
616
|
+
@pkg_dir = "pkg"
|
617
|
+
check_contents(:zip, "pkg.zip", mf, dirs)
|
618
|
+
out, err = assert_rant "pkg.zip"
|
619
|
+
check_contents(:zip, "pkg.zip", mf, dirs)
|
620
|
+
assert err.empty?
|
621
|
+
assert out.empty?
|
622
|
+
|
623
|
+
assert_rant "autoclean"
|
624
|
+
assert Rant::FileList["**/*.zip"].empty?
|
625
|
+
assert !test(?e, ".rant.meta")
|
626
|
+
end
|
627
|
+
end
|
628
|
+
end
|