rant 0.4.6 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/INSTALL +44 -0
  2. data/NEWS +30 -0
  3. data/README +6 -46
  4. data/Rantfile +38 -7
  5. data/doc/c.rdoc +2 -0
  6. data/doc/command.rdoc +210 -0
  7. data/doc/examples/c_dependencies/Rantfile +1 -1
  8. data/doc/examples/directedrule/Rantfile +1 -1
  9. data/doc/homepage/index.html +12 -1
  10. data/doc/rant-import.rdoc +5 -0
  11. data/doc/rant_vs_rake.rdoc +107 -0
  12. data/doc/rantfile.rdoc +17 -17
  13. data/doc/rubyproject.rdoc +45 -45
  14. data/doc/subdirs.rdoc +1 -1
  15. data/lib/rant/coregen.rb +62 -22
  16. data/lib/rant/import/archive.rb +1 -0
  17. data/lib/rant/import/command.rb +206 -0
  18. data/lib/rant/import/nodes/default.rb +12 -6
  19. data/lib/rant/import/nodes/signed.rb +3 -3
  20. data/lib/rant/import/signedfile.rb +14 -15
  21. data/lib/rant/import/win32/rubycmdwrapper.rb +1 -0
  22. data/lib/rant/import.rb +52 -4
  23. data/lib/rant/metautils.rb +119 -0
  24. data/lib/rant/node.rb +11 -2
  25. data/lib/rant/rantenv.rb +5 -2
  26. data/lib/rant/rantlib.rb +30 -46
  27. data/lib/rant/rantsys.rb +81 -13
  28. data/lib/rant/rantvar.rb +1 -76
  29. data/lib/rant.rb +2 -2
  30. data/misc/TODO +21 -0
  31. data/test/deprecated/test_0_5_2.rb +28 -0
  32. data/test/deprecated/test_0_6_0.rb +24 -0
  33. data/test/dyn_dependencies.rf +25 -0
  34. data/test/import/command/Rantfile +102 -0
  35. data/test/import/command/test_command.rb +597 -0
  36. data/test/rant-import/test_rant-import.rb +23 -1
  37. data/test/rule.rf +2 -0
  38. data/test/test_dyn_dependencies.rb +45 -0
  39. data/test/test_env.rb +5 -4
  40. data/test/test_filelist.rb +60 -3
  41. data/test/test_rant_interface.rb +5 -0
  42. data/test/test_sys.rb +53 -2
  43. data/test/tutil.rb +14 -6
  44. metadata +17 -6
  45. data/test/deprecated/test_0_4_8.rb +0 -41
data/test/test_env.rb CHANGED
@@ -13,16 +13,17 @@ class TestRantEnv < Test::Unit::TestCase
13
13
  end
14
14
  def test_on_windows
15
15
  # rather primitive test, but should catch obvious programming
16
- # errors when making changes in when in hurry ;)
16
+ # errors when making changes when in hurry ;)
17
17
  if Rant::Env.on_windows?
18
18
  assert(File::ALT_SEPARATOR,
19
19
  "Env says we're on windows, but there is no ALT_SEPARATOR")
20
20
  end
21
21
  end
22
22
  def test_find_bin
23
- assert(Rant::Env.find_bin(Rant::Env::RUBY),
24
- "RUBY_INSTALL_NAME should be found by Env.find_bin, " +
25
- "doesn't need to be a bug of Rant")
23
+ # not required since Rant 0.4.7
24
+ #assert(Rant::Env.find_bin(Rant::Env::RUBY),
25
+ # "RUBY_INSTALL_NAME should be found by Env.find_bin, " +
26
+ # "doesn't need to be a bug of Rant")
26
27
  # let's check for the `echo' command which should be on most
27
28
  # systems:
28
29
  have_echo = false
@@ -1,12 +1,12 @@
1
1
 
2
2
  require 'test/unit'
3
- require 'rant/rantlib'
4
- require 'fileutils'
5
3
  require 'tutil'
6
4
 
7
5
  $testDir ||= File.expand_path(File.dirname(__FILE__))
8
6
 
9
7
  class TestFileList < Test::Unit::TestCase
8
+ include Rant::TestUtil
9
+
10
10
  def fl(*args, &block)
11
11
  Rant::FileList.new(*args, &block)
12
12
  end
@@ -421,7 +421,64 @@ if Rant::Env.on_windows?
421
421
  else
422
422
  def test_to_s_quoting_spaces
423
423
  cx = Rant::RantApp.new.cx
424
- assert_equal("'a a' b", "#{cx.sys[].concat(["a a", "b"])}")
424
+ # changed in 0.4.7
425
+ #assert_equal("'a a' b", "#{cx.sys[].concat(["a a", "b"])}")
426
+ assert_equal("a\\ a b", "#{cx.sys[].concat(["a a", "b"])}")
425
427
  end
426
428
  end
429
+ def test_dotfiles
430
+ in_local_temp_dir do
431
+ Rant::Sys.touch %w(a.t .a.t)
432
+ Rant::Sys.mkdir %w(d.t .d.t)
433
+ Rant::Sys.touch %w(d.t/a.t d.t/.a.t)
434
+ Rant::Sys.touch %w(.d.t/a.t .d.t/.a.t)
435
+ Rant::Sys.mkdir %w(d.t/d.t)
436
+ Rant::Sys.touch %w(d.t/d.t/a.t d.t/d.t/.a.t)
437
+ cx = Rant::RantApp.new.cx
438
+ files = cx.sys["**/*.t"]
439
+ %w(a.t d.t d.t/a.t d.t/d.t d.t/d.t/a.t).each { |fn|
440
+ assert files.include?(fn), "#{fn} missing"
441
+ }
442
+ #p files.sort.to_a
443
+ assert_equal 5, files.size
444
+ files = cx.sys.glob_all "**/*.t"
445
+ %w(a.t .a.t d.t .d.t d.t/a.t d.t/.a.t .d.t/a.t .d.t/.a.t d.t/d.t d.t/d.t/a.t d.t/d.t/.a.t).each { |fn|
446
+ assert files.include?(fn), "#{fn} missing"
447
+ }
448
+ assert_equal 11, files.size
449
+ files = cx.sys.glob_all("**/*.t").exclude(".a.*")
450
+ %w(a.t d.t .d.t d.t/a.t d.t/.a.t .d.t/a.t .d.t/.a.t d.t/d.t d.t/d.t/a.t d.t/d.t/.a.t).each { |fn|
451
+ assert files.include?(fn), "#{fn} missing"
452
+ }
453
+ assert_equal 10, files.size
454
+ files = cx.sys.glob_all("**/*.t").shun(".d.t")
455
+ %w(a.t .a.t d.t d.t/a.t d.t/.a.t d.t/d.t d.t/d.t/a.t d.t/d.t/.a.t).each { |fn|
456
+ assert files.include?(fn), "#{fn} missing"
457
+ }
458
+ assert_equal 8, files.size
459
+ files.include("**/*.t").uniq!
460
+ %w(a.t .a.t d.t d.t/a.t d.t/.a.t d.t/d.t d.t/d.t/a.t d.t/d.t/.a.t).each { |fn|
461
+ assert files.include?(fn), "#{fn} missing"
462
+ }
463
+ assert_equal 11, files.size
464
+ # redundant, just to emphasize
465
+ assert !files.include?(".")
466
+ assert !files.include?("..")
467
+ assert !files.include?("d.t/.")
468
+ assert !files.include?("d.t/..")
469
+ assert !files.include?(".d.t/.")
470
+ assert !files.include?(".d.t/..")
471
+ end
472
+ end
473
+ def test_dotdirs
474
+ in_local_temp_dir do
475
+ cx = Rant::RantApp.new.cx
476
+ Rant::Sys.mkdir ["d", ".d", "d/d", "d/.d", ".d/.d", ".d/d", "d/.d/d"]
477
+ files = cx.sys["**/*"]
478
+ %w(d d/d).each { |fn|
479
+ files.include?(fn)
480
+ }
481
+ assert_equal 2, files.size
482
+ end
483
+ end
427
484
  end
@@ -87,4 +87,9 @@ class TestRantInterface < Test::Unit::TestCase
87
87
  assert lines.size < 3
88
88
  assert_match(/\[ERROR\].*option.*\bnix\b/, lines.first)
89
89
  end
90
+ def test_opt_rantfile_no_such_file
91
+ out, err = assert_rant :fail, "-fdoesnt_exist.rf"
92
+ assert out.empty?
93
+ assert err =~ /\bdoesnt_exist\.rf\b/
94
+ end
90
95
  end
data/test/test_sys.rb CHANGED
@@ -162,7 +162,7 @@ class TestSys < Test::Unit::TestCase
162
162
  end
163
163
  # ...
164
164
  def test_standalone
165
- out = `#{Rant::Sys.sp(Rant::Env::RUBY)} -I#{Rant::Sys.sp(RANT_DEV_LIB_DIR)} standalone.rf`
165
+ out = `#{Rant::Sys.sp(Rant::Env::RUBY_EXE)} -I#{Rant::Sys.sp(RANT_DEV_LIB_DIR)} standalone.rf`
166
166
  assert_exit
167
167
  assert_match(/^t_standalone/, out)
168
168
  end
@@ -193,7 +193,7 @@ class TestSys < Test::Unit::TestCase
193
193
  open "rf.t", "w" do |f|
194
194
  f << <<-EOF
195
195
  task :rbexit1_block do
196
- sys Env::RUBY, "exit_1.t" do |status|
196
+ sys Env::RUBY_EXE, "exit_1.t" do |status|
197
197
  puts "no success" if status != 0
198
198
  puts status.exitstatus
199
199
  end
@@ -210,4 +210,55 @@ class TestSys < Test::Unit::TestCase
210
210
  ensure
211
211
  FileUtils.rm_f %w(exit_1.t rf.t)
212
212
  end
213
+ def test_escape
214
+ assert_equal "abc", Rant::Sys.escape("abc")
215
+ assert_equal "", Rant::Sys.escape("")
216
+ # might change
217
+ assert_equal "", Rant::Sys.escape(nil)
218
+ if Rant::Env.on_windows?
219
+ assert_equal '"a b"', Rant::Sys.escape("a b")
220
+ assert_equal '" "', Rant::Sys.escape(" ")
221
+ assert_equal '" a b "', Rant::Sys.escape(" a b ")
222
+ o = Object.new
223
+ def o.to_s; "to s"; end
224
+ assert_equal '"to s"', Rant::Sys.escape(o)
225
+ else
226
+ assert_equal "a\\ b", Rant::Sys.escape("a b")
227
+ assert_equal "\\ ", Rant::Sys.escape(" ")
228
+ assert_equal "\\ a\\ b\\ ", Rant::Sys.escape(" a b ")
229
+ o = Object.new
230
+ def o.to_s; "to s"; end
231
+ assert_equal "to\\ s", Rant::Sys.escape(o)
232
+ end
233
+ end
234
+ def test_escape_array
235
+ assert_equal "a b", Rant::Sys.escape(%w(a b))
236
+ assert_equal "", Rant::Sys.escape([])
237
+ assert_equal "", Rant::Sys.escape([[]])
238
+ res = Rant::Sys.escape(["", []])
239
+ assert_equal "", res.strip
240
+ assert res.length < 2
241
+ if Rant::Env.on_windows?
242
+ assert_equal '"a b" c d " e"', Rant::Sys.escape([["a b"], "c", ["d", " e"]])
243
+ else
244
+ assert_equal "a\\ \\ b c d \\ e", Rant::Sys.escape([["a b"], "c", ["d", " e"]])
245
+ end
246
+ end
247
+ def test_sp
248
+ assert_equal "a", Rant::Sys.sp("a")
249
+ assert_equal "", Rant::Sys.sp("")
250
+ if Rant::Env.on_windows?
251
+ assert_equal '"a b"', Rant::Sys.sp("a b")
252
+ assert_equal '" " a b "c " d', Rant::Sys.sp([" ", ["a", "b", "c ", ["d"]]])
253
+ assert_equal "a\\b", Rant::Sys.sp("a/b")
254
+ assert_equal '"a\ b" c\d', Rant::Sys.sp(["a/ b", "c/d"])
255
+ assert_equal "a\\b\\c\\", Rant::Sys.sp("a/b/c/")
256
+ assert_equal "\"a b\\c\\\\\"", Rant::Sys.sp("a b/c/")
257
+ else
258
+ assert_equal "a\\ b", Rant::Sys.sp("a b")
259
+ assert_equal "\\ a b c\\ d", Rant::Sys.sp([" ", ["a", "b", "c ", ["d"]]])
260
+ assert_equal "a/b", Rant::Sys.sp("a/b")
261
+ assert_equal "a/\\ b c/d", Rant::Sys.sp(["a/ b", "c/d"])
262
+ end
263
+ end
213
264
  end
data/test/tutil.rb CHANGED
@@ -32,10 +32,10 @@ module Test
32
32
  if newproc
33
33
  if capture
34
34
  # TODO: stderr
35
- `#{Rant::Sys.sp(Rant::Env::RUBY)} #{Rant::Sys.sp(RANT_BIN)} #{args.flatten.join(' ')}`
35
+ `#{Rant::Sys.sp(Rant::Env::RUBY_EXE)} #{Rant::Sys.sp(RANT_BIN)} #{args.flatten.join(' ')}`
36
36
  else
37
- system("#{Rant::Sys.sp(Rant::Env::RUBY)} " +
38
- #{Rant::Sys.sp(RANT_BIN)} " +
37
+ system("#{Rant::Sys.sp(Rant::Env::RUBY_EXE)} " +
38
+ "#{Rant::Sys.sp(RANT_BIN)} " +
39
39
  "#{args.flatten.join(' ')}")
40
40
  end
41
41
  assert_equal(res, $?.exitstatus)
@@ -51,6 +51,14 @@ module Test
51
51
  def assert_exit(status = 0)
52
52
  assert_equal(status, $?.exitstatus)
53
53
  end
54
+ def assert_file_content(fn, content, *opts)
55
+ assert(test(?f, fn), "`#{fn}' doesn't exist")
56
+ fc = File.read(fn)
57
+ fc.strip! if opts.include? :strip
58
+ assert(fc == content,
59
+ "file `#{fn}' should contain `#{content}' " +
60
+ "but contains `#{fc}'")
61
+ end
54
62
  if RUBY_VERSION < "1.8.1"
55
63
  def assert_raise(*args, &block)
56
64
  assert_raises(*args, &block)
@@ -168,15 +176,15 @@ When testing Rant: `#{Dir.pwd + "/" + errfn}' exists.
168
176
  end
169
177
 
170
178
  def run_rant(*args)
171
- `#{Rant::Sys.sp(Rant::Env::RUBY)} #{Rant::Sys.sp(RANT_BIN)} #{args.flatten.join(' ')}`
179
+ `#{Rant::Sys.sp(Rant::Env::RUBY_EXE)} #{Rant::Sys.sp(RANT_BIN)} #{args.flatten.join(' ')}`
172
180
  end
173
181
 
174
182
  def run_import(*args)
175
- `#{Rant::Sys.sp(Rant::Env::RUBY)} #{Rant::Sys.sp(RANT_IMPORT_BIN)} #{args.flatten.join(' ')}`
183
+ `#{Rant::Sys.sp(Rant::Env::RUBY_EXE)} #{Rant::Sys.sp(RANT_IMPORT_BIN)} #{args.flatten.join(' ')}`
176
184
  end
177
185
 
178
186
  def run_ruby(*args)
179
- `#{Rant::Sys.sp(Rant::Env::RUBY)} #{args.flatten.join(' ')}`
187
+ `#{Rant::Sys.sp(Rant::Env::RUBY_EXE)} #{args.flatten.join(' ')}`
180
188
  end
181
189
 
182
190
  # Returns a list with the files required by the IO object script.
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: rant
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.6
7
- date: 2005-09-25 00:00:00 +02:00
6
+ version: 0.4.8
7
+ date: 2005-10-31 00:00:00 +01:00
8
8
  summary: Rant is a Ruby based build tool.
9
9
  require_paths:
10
10
  - lib
@@ -16,7 +16,7 @@ autorequire:
16
16
  default_executable:
17
17
  bindir:
18
18
  - bin
19
- has_rdoc: true
19
+ has_rdoc: false
20
20
  required_ruby_version: !ruby/object:Gem::Version::Requirement
21
21
  requirements:
22
22
  -
@@ -38,6 +38,7 @@ files:
38
38
  - run_rant
39
39
  - run_import
40
40
  - setup.rb
41
+ - INSTALL
41
42
  - COPYING
42
43
  - bin/rant
43
44
  - bin/rant-import
@@ -57,6 +58,7 @@ files:
57
58
  - lib/rant/tempfile.rb
58
59
  - lib/rant/coregen.rb
59
60
  - lib/rant/archive
61
+ - lib/rant/metautils.rb
60
62
  - lib/rant/import.rb
61
63
  - lib/rant/c/include.rb
62
64
  - lib/rant/import/c
@@ -73,6 +75,7 @@ files:
73
75
  - lib/rant/import/archive.rb
74
76
  - lib/rant/import/md5.rb
75
77
  - lib/rant/import/package
78
+ - lib/rant/import/command.rb
76
79
  - lib/rant/import/archive
77
80
  - lib/rant/import/subfile.rb
78
81
  - lib/rant/import/signature
@@ -100,6 +103,7 @@ files:
100
103
  - lib/rant/archive/rubyzip/ioextras.rb
101
104
  - lib/rant/archive/rubyzip/tempfile_bugfixed.rb
102
105
  - test/c
106
+ - test/test_dyn_dependencies.rb
103
107
  - test/test_filetask.rb
104
108
  - test/test_examples.rb
105
109
  - test/Rantfile
@@ -128,6 +132,7 @@ files:
128
132
  - test/project2
129
133
  - test/rant-import
130
134
  - test/subdirs2
135
+ - test/dyn_dependencies.rf
131
136
  - test/test_clean.rb
132
137
  - test/test_filelist.rb
133
138
  - test/deprecated
@@ -155,6 +160,7 @@ files:
155
160
  - test/import/c
156
161
  - test/import/md5
157
162
  - test/import/sys
163
+ - test/import/command
158
164
  - test/import/metadata
159
165
  - test/import/nodes
160
166
  - test/import/truth
@@ -195,6 +201,8 @@ files:
195
201
  - test/import/sys/data/pkg/test.h
196
202
  - test/import/sys/data/pkg/bin/test
197
203
  - test/import/sys/data/pkg/bin/test.o
204
+ - test/import/command/Rantfile
205
+ - test/import/command/test_command.rb
198
206
  - test/import/metadata/sub
199
207
  - test/import/metadata/test_metadata.rb
200
208
  - test/import/metadata/Rantfile
@@ -258,8 +266,8 @@ files:
258
266
  - test/subdirs2/sub1/sub.rant
259
267
  - test/subdirs2/sub00/sub.rant
260
268
  - test/deprecated/README
261
- - test/deprecated/test_0_4_8.rb
262
269
  - test/deprecated/test_0_5_2.rb
270
+ - test/deprecated/test_0_6_0.rb
263
271
  - doc/rantfile.rdoc
264
272
  - doc/md5.rdoc
265
273
  - doc/configure.rdoc
@@ -270,11 +278,13 @@ files:
270
278
  - doc/homepage
271
279
  - doc/rant.rdoc
272
280
  - doc/jamis.rb
281
+ - doc/rant_vs_rake.rdoc
273
282
  - doc/rant.1
274
283
  - doc/csharp.rdoc
275
284
  - doc/rant-import.rdoc
276
285
  - doc/examples
277
286
  - doc/package.rdoc
287
+ - doc/command.rdoc
278
288
  - doc/homepage/index.html
279
289
  - doc/homepage/rant_home.css
280
290
  - doc/examples/c_cpp
@@ -353,9 +363,8 @@ rdoc_options:
353
363
  - README
354
364
  extra_rdoc_files:
355
365
  - README
356
- - doc/examples/myprog/README
357
- - lib/rant/plugin/README
358
366
  - NEWS
367
+ - INSTALL
359
368
  - doc/rantfile.rdoc
360
369
  - doc/md5.rdoc
361
370
  - doc/configure.rdoc
@@ -364,9 +373,11 @@ extra_rdoc_files:
364
373
  - doc/rubyproject.rdoc
365
374
  - doc/c.rdoc
366
375
  - doc/rant.rdoc
376
+ - doc/rant_vs_rake.rdoc
367
377
  - doc/csharp.rdoc
368
378
  - doc/rant-import.rdoc
369
379
  - doc/package.rdoc
380
+ - doc/command.rdoc
370
381
  executables:
371
382
  - rant
372
383
  - rant-import
@@ -1,41 +0,0 @@
1
-
2
- require 'test/unit'
3
- require 'tutil'
4
-
5
- $test_deprecated_dir ||= File.expand_path(File.dirname(__FILE__))
6
-
7
- class TestDeprecated_0_4_8 < Test::Unit::TestCase
8
- include Rant::TestUtil
9
-
10
- def setup
11
- Dir.chdir $test_deprecated_dir
12
- end
13
- def test_Rantfile_rb
14
- in_local_temp_dir do
15
- write_to_file "Rantfile.rb", <<-EOF
16
- task :a do |t|
17
- puts t.name
18
- end
19
- EOF
20
- out, err = assert_rant
21
- assert_equal("a\n", out)
22
- assert_match(/\bWARNING\b/, err)
23
- assert_match(/\bRantfile\.rb\b/, err)
24
- assert_match(/\bdeprecated\b/, err)
25
- end
26
- end
27
- def test_rantfile_rb
28
- in_local_temp_dir do
29
- write_to_file "Rantfile.rb", <<-EOF
30
- task :a do |t|
31
- puts t.name
32
- end
33
- EOF
34
- out, err = assert_rant
35
- assert_equal("a\n", out)
36
- assert_match(/\bWARNING\b/, err)
37
- assert_match(/\bRantfile\.rb\b/, err)
38
- assert_match(/\bdeprecated\b/, err)
39
- end
40
- end
41
- end