rant 0.3.6 → 0.3.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.
Files changed (75) hide show
  1. data/NEWS +13 -0
  2. data/README +7 -1
  3. data/Rantfile +10 -14
  4. data/TODO +3 -0
  5. data/devel-notes +5 -0
  6. data/doc/advanced.rdoc +46 -0
  7. data/doc/c.rdoc +64 -0
  8. data/doc/examples/c_dependencies/Rantfile +27 -0
  9. data/doc/examples/c_dependencies/include/hello.h +7 -0
  10. data/doc/examples/c_dependencies/include/util.h +7 -0
  11. data/doc/examples/c_dependencies/src/main.c +9 -0
  12. data/doc/examples/c_dependencies/src/util.c +9 -0
  13. data/doc/examples/directedrule/Rantfile +0 -1
  14. data/doc/rantfile.rdoc +12 -9
  15. data/doc/rubyproject.rdoc +26 -0
  16. data/lib/rant/c/include.rb +51 -0
  17. data/lib/rant/import/autoclean.rb +16 -9
  18. data/lib/rant/import/c/dependencies.rb +127 -0
  19. data/lib/rant/import/directedrule.rb +8 -4
  20. data/lib/rant/import/rubypackage.rb +2 -1
  21. data/lib/rant/import/subfile.rb +41 -0
  22. data/lib/rant/import/truth.rb +6 -1
  23. data/lib/rant/import/win32/rubycmdwrapper.rb +37 -0
  24. data/lib/rant/import.rb +26 -3
  25. data/lib/rant/rantenv.rb +0 -32
  26. data/lib/rant/rantfile.rb +207 -194
  27. data/lib/rant/rantlib.rb +83 -150
  28. data/lib/rant/rantsys.rb +7 -10
  29. data/lib/rant/rantvar.rb +4 -6
  30. data/lib/rant.rb +57 -0
  31. data/rantmethods.rb +1 -47
  32. data/setup.rb +2 -2
  33. data/test/Rantfile +6 -1
  34. data/test/c/source.c +23 -0
  35. data/test/c/test_parse_includes.rb +41 -0
  36. data/test/import/c/dependencies/Rantfile +34 -0
  37. data/test/import/c/dependencies/bar.h +2 -0
  38. data/test/import/c/dependencies/foo.h +5 -0
  39. data/test/import/c/dependencies/hello.c +7 -0
  40. data/test/import/c/dependencies/include/foo.h +0 -0
  41. data/test/import/c/dependencies/include/sub/sub.h +8 -0
  42. data/test/import/c/dependencies/include/with space.h +7 -0
  43. data/test/import/c/dependencies/src/abc +5 -0
  44. data/test/import/c/dependencies/src/abc.c +5 -0
  45. data/test/import/c/dependencies/src/bar.c +11 -0
  46. data/test/import/c/dependencies/test_c_dependencies.rb +92 -0
  47. data/test/import/c/dependencies/test_on_the_fly.rb +44 -0
  48. data/test/import/directedrule/Rantfile +7 -2
  49. data/test/import/directedrule/test_directedrule.rb +6 -0
  50. data/test/import/subfile/Rantfile +28 -0
  51. data/test/import/subfile/autoclean.rf +16 -0
  52. data/test/import/subfile/test_subfile.rb +91 -0
  53. data/test/import/truth/Rantfile +7 -0
  54. data/test/import/truth/test_truth.rb +3 -0
  55. data/test/project2/buildfile +2 -0
  56. data/test/project2/test_project.rb +5 -3
  57. data/test/rant-import/Rantfile +4 -0
  58. data/test/rant-import/test_rant-import.rb +104 -1
  59. data/test/rule.rf +6 -0
  60. data/test/test_autosubfiletask.rb +59 -0
  61. data/test/test_clean.rb +48 -5
  62. data/test/test_dirtask.rb +45 -1
  63. data/test/test_examples.rb +25 -3
  64. data/test/test_filelist.rb +14 -2
  65. data/test/test_lighttask.rb +4 -6
  66. data/test/test_rant_interface.rb +8 -8
  67. data/test/test_rantfile_api.rb +37 -1
  68. data/test/test_rule.rb +6 -3
  69. data/test/test_source.rb +28 -1
  70. data/test/test_sourcenode.rb +163 -0
  71. data/test/test_task.rb +2 -2
  72. data/test/test_var.rb +3 -3
  73. data/test/tutil.rb +23 -2
  74. metadata +45 -3
  75. data/test/test_metatask.rb +0 -29
@@ -0,0 +1,163 @@
1
+
2
+ require 'test/unit'
3
+ require 'tutil'
4
+
5
+ $testDir ||= File.expand_path(File.dirname(__FILE__))
6
+
7
+ class TestSourceNode < Test::Unit::TestCase
8
+ def setup
9
+ # Ensure we run in test directory.
10
+ Dir.chdir $testDir
11
+ end
12
+ def teardown
13
+ Dir.chdir $testDir
14
+ FileUtils.rm_rf Dir["*.t"]
15
+ end
16
+ def tmp_rf(content = @rf, fn = "rf.t")
17
+ open(fn, "w") { |f| f.write content }
18
+ yield
19
+ ensure
20
+ FileUtils.rm_f fn
21
+ end
22
+ def test_invoke
23
+ @rf = <<-EOF
24
+ gen SourceNode, "a.t"
25
+ EOF
26
+ tmp_rf do
27
+ out, err = assert_rant("-frf.t")
28
+ assert(!test(?f, "a.t"))
29
+ assert(out.strip.empty?)
30
+ assert(err.strip.empty?)
31
+ end
32
+ tmp_rf do
33
+ out, err = assert_rant("-frf.t", "a.t")
34
+ assert(out.strip.empty?)
35
+ assert(err.strip.empty?)
36
+ end
37
+ end
38
+ def test_deps_empty_array
39
+ @rf = <<-EOF
40
+ gen SourceNode, "a.t" => []
41
+ EOF
42
+ tmp_rf do
43
+ assert_rant("-frf.t")
44
+ end
45
+ end
46
+ def test_with_deps
47
+ @rf = <<-EOF
48
+ gen SourceNode, "a.t" => %w(b.t c.t)
49
+ EOF
50
+ tmp_rf do
51
+ assert_rant("-frf.t")
52
+ end
53
+ tmp_rf do
54
+ assert_rant(:fail, "-frf.t", "b.t")
55
+ end
56
+ end
57
+ def test_as_dependency
58
+ @rf = <<-EOF
59
+ file "a.t" => "b.t" do |t|
60
+ sys.touch t.name
61
+ end
62
+ gen SourceNode, "b.t" => "c.t"
63
+ EOF
64
+ tmp_rf do
65
+ out, err = assert_rant(:fail, "-frf.t")
66
+ assert(out.strip.empty?)
67
+ assert_match(/\[ERROR\].*no such file.*b\.t/m, err)
68
+ end
69
+ assert(!test(?e, "a.t"))
70
+ FileUtils.touch "b.t"
71
+ tmp_rf do
72
+ out, err = assert_rant(:fail, "-frf.t")
73
+ assert(out.strip.empty?)
74
+ assert_match(/\[ERROR\].*no such file.*c\.t/m, err)
75
+ end
76
+ assert(!test(?e, "a.t"))
77
+ FileUtils.touch "c.t"
78
+ tmp_rf do
79
+ out, err = assert_rant("-frf.t")
80
+ end
81
+ assert(test(?f, "a.t"))
82
+ end
83
+ def test_timestamps
84
+ @rf = <<-EOF
85
+ file "a.t" => "b.t" do |t|
86
+ sys.touch t.name
87
+ end
88
+ gen SourceNode, "b.t" => %w(c.t d.t)
89
+ EOF
90
+ FileUtils.touch %w(b.t c.t d.t)
91
+ tmp_rf do
92
+ assert_rant("-frf.t")
93
+ assert(test(?f, "a.t"))
94
+ out, err = assert_rant("-frf.t")
95
+ assert(out.strip.empty?,
96
+ "no source changed, no update required")
97
+ old_mtime = File.mtime "a.t"
98
+ timeout
99
+ FileUtils.touch "b.t"
100
+ assert_rant("-frf.t")
101
+ assert(File.mtime("a.t") > old_mtime)
102
+ old_mtime = File.mtime "a.t"
103
+ timeout
104
+ FileUtils.touch "c.t"
105
+ assert_rant("-frf.t")
106
+ assert(File.mtime("a.t") > old_mtime)
107
+ end
108
+ end
109
+ def test_with_block
110
+ @rf = <<-EOF
111
+ gen SourceNode, "a.t" do end
112
+ EOF
113
+ tmp_rf do
114
+ out, err = assert_rant(:fail, "-frf.t")
115
+ assert_match(/\[ERROR\].*SourceNode.*block/m, err)
116
+ end
117
+ end
118
+ def test_with_autoclean
119
+ @rf = <<-EOF
120
+ import "autoclean"
121
+ gen SourceNode, "a.t" => %w(b.t c.t)
122
+ gen AutoClean
123
+ EOF
124
+ tmp_rf do
125
+ assert_rant("-frf.t", "autoclean")
126
+ FileUtils.touch %w(a.t b.t c.t)
127
+ assert_rant("-frf.t", "autoclean")
128
+ assert(test(?f, "a.t"))
129
+ assert(test(?f, "b.t"))
130
+ assert(test(?f, "c.t"))
131
+ end
132
+ end
133
+ def test_sourcenode_depends_on_sourcenode
134
+ @rf = <<-EOF
135
+ file "a.t" => "b.t" do |t|
136
+ sys.touch t.name
137
+ end
138
+ gen SourceNode, "b.t" => %w(c.t d.t)
139
+ gen SourceNode, "d.t" => "e.t"
140
+ EOF
141
+ FileUtils.touch %w(b.t c.t d.t e.t)
142
+ tmp_rf do
143
+ assert_rant("-frf.t")
144
+ assert(test(?f, "a.t"))
145
+ timeout
146
+ FileUtils.touch "e.t"
147
+ old_mtime = File.mtime "a.t"
148
+ assert_rant("-frf.t")
149
+ assert(File.mtime("a.t") > old_mtime)
150
+ end
151
+ end
152
+ def test_circular_dep
153
+ @rf = <<-EOF
154
+ gen SourceNode, "a.t" => "b.t"
155
+ gen SourceNode, "b.t" => "a.t"
156
+ EOF
157
+ FileUtils.touch %w(a.t b.t)
158
+ tmp_rf do
159
+ th = Thread.new{ assert_rant("-frf.t") }
160
+ assert_equal(th, th.join(0.5))
161
+ end
162
+ end
163
+ end
data/test/test_task.rb CHANGED
@@ -45,7 +45,7 @@ class TestTask < Test::Unit::TestCase
45
45
  assert(task.invoked?, "although task failed, it was invoked")
46
46
  end
47
47
 
48
- def test_dependant
48
+ def test_dependent
49
49
  r1 = r2 = false
50
50
  t1 = Rant::Task.new(nil, :t1) { r1 = true }
51
51
  t2 = Rant::Task.new(nil, :t2) { r2 = true }
@@ -59,7 +59,7 @@ class TestTask < Test::Unit::TestCase
59
59
  assert(!t2.needed?)
60
60
  end
61
61
 
62
- def test_dependance_fails
62
+ def test_dependency_fails
63
63
  t1 = Rant::Task.new(nil, :t1) { true }
64
64
  t2 = Rant::Task.new(nil, :t2) { |t| t.fail }
65
65
  t1 << t2
data/test/test_var.rb CHANGED
@@ -85,7 +85,7 @@ class TestVar < Test::Unit::TestCase
85
85
  assert(test(?f, "default_1.t"))
86
86
  assert(test(?f, "default_2.t"))
87
87
  capture_std do
88
- assert_equal(0, Rant::RantApp.new(%w(-fvar.rf clean)).run)
88
+ assert_equal(0, Rant::RantApp.new.run(%w(-fvar.rf clean)))
89
89
  end
90
90
  end
91
91
  def test_override
@@ -96,7 +96,7 @@ class TestVar < Test::Unit::TestCase
96
96
  assert(test(?f, "val1.t"))
97
97
  assert(test(?f, "default_2.t"))
98
98
  capture_std do
99
- assert_equal(0, Rant::RantApp.new(%w(-fvar.rf clean)).run)
99
+ assert_equal(0, Rant::RantApp.new.run(%w(-fvar.rf clean)))
100
100
  end
101
101
  end
102
102
  def test_is_string
@@ -273,6 +273,6 @@ class TestVar < Test::Unit::TestCase
273
273
  assert_match(
274
274
  /source_err\.rf\.t.+2.*\n.*11.+constraint.+integer/i, err)
275
275
  ensure
276
- assert_equal(0, Rant::RantApp.new("-fvar.rf", "clean", "-q").run)
276
+ assert_equal(0, Rant::RantApp.new.run("-fvar.rf", "clean", "-q"))
277
277
  end
278
278
  end
data/test/tutil.rb CHANGED
@@ -8,8 +8,29 @@ module Test
8
8
  module Unit
9
9
  class TestCase
10
10
  def assert_rant(*args)
11
- capture_std do
12
- assert_equal(0, ::Rant::RantApp.new(*args).run)
11
+ res = 0
12
+ capture = true
13
+ args.flatten!
14
+ args.reject! { |arg|
15
+ if Symbol === arg
16
+ case arg
17
+ when :fail: res = 1
18
+ when :v: capture = false
19
+ when :verbose: capture = false
20
+ else
21
+ raise "No such option -- #{arg}"
22
+ end
23
+ true
24
+ else
25
+ false
26
+ end
27
+ }
28
+ if capture
29
+ capture_std do
30
+ assert_equal(res, ::Rant::RantApp.new.run(*args))
31
+ end
32
+ else
33
+ assert_equal(res, ::Rant::RantApp.new.run(*args))
13
34
  end
14
35
  end
15
36
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: rant
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.6
7
- date: 2005-05-02
6
+ version: 0.3.8
7
+ date: 2005-05-15
8
8
  summary: Rant is a Ruby based build tool.
9
9
  require_paths:
10
10
  - lib
@@ -44,6 +44,7 @@ files:
44
44
  - bin/rant-import
45
45
  - lib/rant
46
46
  - lib/rant.rb
47
+ - lib/rant/c
47
48
  - lib/rant/rantfile.rb
48
49
  - lib/rant/rantenv.rb
49
50
  - lib/rant/cs_compiler.rb
@@ -54,32 +55,40 @@ files:
54
55
  - lib/rant/plugin_methods.rb
55
56
  - lib/rant/plugin
56
57
  - lib/rant/import.rb
58
+ - lib/rant/c/include.rb
59
+ - lib/rant/import/c
57
60
  - lib/rant/import/directedrule.rb
61
+ - lib/rant/import/win32
58
62
  - lib/rant/import/truth.rb
59
63
  - lib/rant/import/rubydoc.rb
60
64
  - lib/rant/import/rubytest.rb
61
65
  - lib/rant/import/rubypackage.rb
66
+ - lib/rant/import/subfile.rb
62
67
  - lib/rant/import/package.rb
63
68
  - lib/rant/import/clean.rb
64
69
  - lib/rant/import/autoclean.rb
70
+ - lib/rant/import/c/dependencies.rb
71
+ - lib/rant/import/win32/rubycmdwrapper.rb
65
72
  - lib/rant/plugin/README
66
73
  - lib/rant/plugin/configure.rb
67
74
  - lib/rant/plugin/csharp.rb
75
+ - test/c
68
76
  - test/test_filetask.rb
69
77
  - test/test_lighttask.rb
70
78
  - test/test_examples.rb
71
79
  - test/Rantfile
72
80
  - test/ts_all.rb
73
81
  - test/test_rule.rb
82
+ - test/test_sourcenode.rb
74
83
  - test/test_task.rb
75
84
  - test/project_rb1
76
85
  - test/rule.rf
77
86
  - test/subdirs
78
- - test/test_metatask.rb
79
87
  - test/test_rantfile_api.rb
80
88
  - test/test_env.rb
81
89
  - test/toplevel.rf
82
90
  - test/test_source.rb
91
+ - test/test_autosubfiletask.rb
83
92
  - test/import
84
93
  - test/plugin
85
94
  - test/test_rac.rb
@@ -95,6 +104,8 @@ files:
95
104
  - test/test_clean.rb
96
105
  - test/test_filelist.rb
97
106
  - test/standalone.rf
107
+ - test/c/source.c
108
+ - test/c/test_parse_includes.rb
98
109
  - test/project_rb1/bin
99
110
  - test/project_rb1/lib
100
111
  - test/project_rb1/test
@@ -113,10 +124,31 @@ files:
113
124
  - test/subdirs/sub2/sub
114
125
  - test/subdirs/sub2/rantfile.rb
115
126
  - test/subdirs/sub2/sub/rantfile
127
+ - test/import/c
116
128
  - test/import/truth
129
+ - test/import/subfile
117
130
  - test/import/directedrule
131
+ - test/import/c/dependencies
132
+ - test/import/c/dependencies/src
133
+ - test/import/c/dependencies/bar.h
134
+ - test/import/c/dependencies/foo.h
135
+ - test/import/c/dependencies/Rantfile
136
+ - test/import/c/dependencies/test_on_the_fly.rb
137
+ - test/import/c/dependencies/test_c_dependencies.rb
138
+ - test/import/c/dependencies/hello.c
139
+ - test/import/c/dependencies/include
140
+ - test/import/c/dependencies/src/abc
141
+ - test/import/c/dependencies/src/abc.c
142
+ - test/import/c/dependencies/src/bar.c
143
+ - test/import/c/dependencies/include/sub
144
+ - test/import/c/dependencies/include/foo.h
145
+ - test/import/c/dependencies/include/with space.h
146
+ - test/import/c/dependencies/include/sub/sub.h
118
147
  - test/import/truth/Rantfile
119
148
  - test/import/truth/test_truth.rb
149
+ - test/import/subfile/Rantfile
150
+ - test/import/subfile/test_subfile.rb
151
+ - test/import/subfile/autoclean.rf
120
152
  - test/import/directedrule/Rantfile
121
153
  - test/import/directedrule/test_directedrule.rb
122
154
  - test/plugin/configure
@@ -145,6 +177,7 @@ files:
145
177
  - doc/configure.rdoc
146
178
  - doc/advanced.rdoc
147
179
  - doc/rubyproject.rdoc
180
+ - doc/c.rdoc
148
181
  - doc/rant.rdoc
149
182
  - doc/jamis.rb
150
183
  - doc/csharp.rdoc
@@ -152,6 +185,7 @@ files:
152
185
  - doc/examples
153
186
  - doc/examples/directedrule
154
187
  - doc/examples/myprog
188
+ - doc/examples/c_dependencies
155
189
  - doc/examples/directedrule/src_a
156
190
  - doc/examples/directedrule/src_b
157
191
  - doc/examples/directedrule/Rantfile
@@ -165,6 +199,13 @@ files:
165
199
  - doc/examples/myprog/src/lib.h
166
200
  - doc/examples/myprog/src/Rantfile
167
201
  - doc/examples/myprog/src/main.c
202
+ - doc/examples/c_dependencies/src
203
+ - doc/examples/c_dependencies/Rantfile
204
+ - doc/examples/c_dependencies/include
205
+ - doc/examples/c_dependencies/src/main.c
206
+ - doc/examples/c_dependencies/src/util.c
207
+ - doc/examples/c_dependencies/include/hello.h
208
+ - doc/examples/c_dependencies/include/util.h
168
209
  test_files: []
169
210
  rdoc_options:
170
211
  - "-S"
@@ -179,6 +220,7 @@ extra_rdoc_files:
179
220
  - doc/configure.rdoc
180
221
  - doc/advanced.rdoc
181
222
  - doc/rubyproject.rdoc
223
+ - doc/c.rdoc
182
224
  - doc/rant.rdoc
183
225
  - doc/csharp.rdoc
184
226
  - doc/rant-import.rdoc
@@ -1,29 +0,0 @@
1
-
2
- require 'test/unit'
3
- require 'rant/rantlib'
4
- require 'tutil'
5
-
6
- class TestMetaTask < Test::Unit::TestCase
7
- def setup
8
- @app = Rant::RantApp.new %w()
9
- end
10
- def teardown
11
- end
12
- def test_with_single_task
13
- run = false
14
- t = @app.task :t do run = true end
15
- mt = Rant::MetaTask.for_task t
16
- assert_equal(t.name, mt.name,
17
- "MetaTask should have name of contained task(s).")
18
- if t.needed?
19
- assert(mt.needed?,
20
- "MetaTask should be needed? if only contained task is needed?")
21
- mt.invoke
22
- assert(run,
23
- "only contained task was needed?, so it should get invoked")
24
- else
25
- assert(!mt.needed?,
26
- "MetaTask should return false from needed? because the only contained task does also.")
27
- end
28
- end
29
- end