rant 0.3.6 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
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