rant 0.3.4 → 0.3.6

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.
@@ -28,7 +28,7 @@ task :gem_attrs do
28
28
  end
29
29
 
30
30
  file "bench-rant" do |t|
31
- c = 500
31
+ c = 2000
32
32
  if var["TC"]
33
33
  c = Integer(var["TC"])
34
34
  end
@@ -53,7 +53,7 @@ file "bench-rant" do |t|
53
53
  end
54
54
 
55
55
  file "bench-depsearch" do |t|
56
- c = 500
56
+ c = 2000
57
57
  if var["TC"]
58
58
  c = Integer var["TC"]
59
59
  end
@@ -1,4 +1,8 @@
1
1
 
2
+ gen Action do
3
+ puts "running action" if var[:act_verbose]
4
+ end
5
+
2
6
  task :do_nothing
3
7
 
4
8
  file "auto.rf" do |t|
@@ -11,8 +15,38 @@ file "auto.rf" do |t|
11
15
  }
12
16
  end
13
17
 
18
+ file "version.t" do |t|
19
+ open(t.name, "w") { |f| f.puts "1.0" }
20
+ end
21
+
22
+ gen Action do
23
+ rac.build "version.t"
24
+ end
25
+
14
26
  source "auto.rf"
15
27
 
16
28
  task :clean do
17
- sys.rm_f %w(auto.t auto.rf)
29
+ sys.rm_f %w(auto.t auto.rf version.t)
18
30
  end
31
+
32
+ gen Directory, "tmp.t"
33
+ task "tmp.t/Rantfile" => "tmp.t" do |t|
34
+ open(t.name, "w") { |f|
35
+ f << <<-EOF
36
+ file "test.t" do |t| sys.touch t.name end
37
+ EOF
38
+ }
39
+ end
40
+
41
+ task :subdir_tmp do
42
+ subdirs %w(tmp.t)
43
+ end
44
+
45
+ task :build_test_t do |t|
46
+ rac.build "tmp.t/test.t"
47
+ # just ensure we're NOT in the tmp.t directory
48
+ #STDERR.puts Dir.pwd
49
+ test(?d, "tmp.t") or t.fail
50
+ end
51
+
52
+ # vim: ft=ruby
@@ -0,0 +1,27 @@
1
+
2
+ import %w(directedrule autoclean)
3
+
4
+ task :mk_src => %w(src.t/1.b src.t/2.b src.t/3.b)
5
+ gen Directory, "src.t"
6
+ %w(src.t/1.b src.t/2.b src.t/3.b).each { |f|
7
+ file f => "src.t" do |t| sys.touch t.name end
8
+ }
9
+
10
+ file "foo.t" => %w(build.t/1.a build.t/2.a) do |t|
11
+ t.fail unless test(?f, "build.t/1.a") && test(?f, "build.t/2.a")
12
+ sys.touch t.name
13
+ end
14
+
15
+ gen Directory, "build.t"
16
+
17
+ gen Action do
18
+ rac.build "build.t"
19
+ end
20
+
21
+ ro_tt = gen DirectedRule, "build.t" => ["src.t"], :a => :b do |t|
22
+ sys.touch t.name
23
+ end
24
+
25
+ gen AutoClean
26
+
27
+ # vim:ft=ruby
@@ -0,0 +1,31 @@
1
+
2
+ require 'test/unit'
3
+ require 'tutil'
4
+
5
+ $testImportDrDir ||= File.expand_path(File.dirname(__FILE__))
6
+
7
+ class TestDirectedRule < Test::Unit::TestCase
8
+ def setup
9
+ # Ensure we run in test directory.
10
+ Dir.chdir($testImportDrDir) unless Dir.pwd == $testImportDrDir
11
+ end
12
+ def teardown
13
+ assert_rant("autoclean")
14
+ assert_equal(0, Dir["**/*.t"].size)
15
+ end
16
+ def rant(*args)
17
+ Rant::RantApp.new(*args).run
18
+ end
19
+ def test_cmd_target
20
+ assert_rant
21
+ assert_rant("build.t/3.a")
22
+ assert(test(?d, "build.t"))
23
+ assert(test(?f, "build.t/3.a"))
24
+ assert(!test(?e, "build.t/1.a"))
25
+ end
26
+ def test_dependencies
27
+ assert_rant
28
+ assert_rant("foo.t")
29
+ assert(test(?f, "foo.t"))
30
+ end
31
+ end
@@ -0,0 +1,16 @@
1
+
2
+ import %w(truth)
3
+
4
+ task(:hello) {
5
+ puts "hello"
6
+ } % "print hello"
7
+
8
+ file("rm.t") { |t|
9
+ sys.touch t.name
10
+ } %
11
+ "touch rm.t" %
12
+ "this file is useless"
13
+
14
+ drag :AutoClean, :clean
15
+
16
+ # vim:ft=ruby
@@ -0,0 +1,23 @@
1
+
2
+ require 'test/unit'
3
+ require 'tutil'
4
+
5
+ $testImportTruthDir ||= File.expand_path(File.dirname(__FILE__))
6
+
7
+ class TestTruth < Test::Unit::TestCase
8
+ def setup
9
+ # Ensure we run in test directory.
10
+ Dir.chdir($testImportTruthDir) unless Dir.pwd == $testImportTruthDir
11
+ end
12
+ def test_opt_tasks
13
+ out, err = assert_rant("--tasks")
14
+ assert_match(
15
+ /print hello.*\n.*touch rm\.t.*\n.*this file is useless/, out)
16
+ end
17
+ def test_drag
18
+ assert_rant("rm.t")
19
+ assert(test(?f, "rm.t"))
20
+ assert_rant("clean")
21
+ assert(!test(?e, "rm.t"))
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+
2
+ gen Action do
3
+ sys.touch "action.t"
4
+ end
5
+
6
+ desc "Print hello."
7
+ task :hello do |t|
8
+ puts t.name
9
+ end
10
+
11
+ task :private do |t|
12
+ puts t.name
13
+ end
14
+
15
+ # vim: ft=ruby
@@ -0,0 +1,65 @@
1
+
2
+ require 'test/unit'
3
+ require 'rant/rantlib'
4
+ require 'tutil'
5
+ require 'fileutils'
6
+
7
+ $testRantImportDir ||= File.expand_path(File.dirname(__FILE__))
8
+
9
+ class TestRantImport < Test::Unit::TestCase
10
+ def setup
11
+ # Ensure we run in test directory.
12
+ Dir.chdir($testRantImportDir) unless Dir.pwd == $testRantImportDir
13
+ end
14
+ def teardown
15
+ FileUtils.rm_f Dir["ant*"]
16
+ FileUtils.rm_f Dir["make*"]
17
+ FileUtils.rm_rf Dir["*.t"]
18
+ end
19
+ def test_no_import
20
+ run_import("--quiet", "make.rb")
21
+ assert(test(?f, "make.rb"))
22
+ assert(!test(?f, "action.t"))
23
+ assert_equal(run_rant("hello"), run_ruby("make.rb", "hello"))
24
+ assert(test(?f, "action.t"))
25
+ end
26
+ def test_import_from_custom_lib
27
+ FileUtils.mkpath "mylib.t/rant/import"
28
+ open("mylib.t/rant/import/mygen.rb", "w") { |f|
29
+ f << <<-EOF
30
+ mygen = Object.new
31
+ def mygen.rant_generate(rac, ch, args, &block)
32
+ tn = args.first || "mygen"
33
+ rac.task(:__caller__ => ch, tn => []) do |t|
34
+ puts "Greetings from `" + t.name + "', generated by MyGen."
35
+ rac.cx.sys.touch t.name
36
+ end
37
+ end
38
+ Rant::Generators::MyGen = mygen
39
+ EOF
40
+ }
41
+ open("mygen.rf.t", "w") { |f|
42
+ f << <<-EOF
43
+ $:.unshift "mylib.t"
44
+ import "mygen"
45
+ desc "task created by mygen"
46
+ gen MyGen
47
+ EOF
48
+ }
49
+ out, err = capture_std do
50
+ assert_equal(0, Rant::RantApp.new("-fmygen.rf.t").run)
51
+ end
52
+ assert_match(/Greetings.*mygen/, out)
53
+ assert(test(?f, "mygen"))
54
+ FileUtils.rm_f "mygen"
55
+ assert(!test(?e, "mygen"))
56
+ run_import("--quiet", "-fmygen.rf.t", "ant")
57
+ assert(test(?f, "ant"))
58
+ FileUtils.rm_r "mylib.t"
59
+ out = run_ruby("ant", "-fmygen.rf.t")
60
+ assert_match(/Greetings.*mygen/, out)
61
+ assert(test(?f, "mygen"))
62
+ ensure
63
+ FileUtils.rm_f "mygen"
64
+ end
65
+ end
@@ -0,0 +1,134 @@
1
+
2
+ require 'test/unit'
3
+ require 'rant/rantlib'
4
+ require 'tutil'
5
+ require 'fileutils'
6
+
7
+ $testDir ||= File.expand_path(File.dirname(__FILE__))
8
+
9
+ class TestClean < Test::Unit::TestCase
10
+ def setup
11
+ # Ensure we run in test directory.
12
+ Dir.chdir($testDir) unless Dir.pwd == $testDir
13
+ end
14
+ def teardown
15
+ end
16
+ def layout_project1
17
+ FileUtils.mkdir "p1.t"
18
+ Dir.chdir "p1.t" do
19
+ open("Rantfile", "w") { |f|
20
+ f << <<-EOF
21
+ import "clean"
22
+ task :mk_junk => "sub1.t/mk_junk" do
23
+ sys.touch %w(a1.t a2.t b1.t b2.t)
24
+ sys.mkdir %w(sa.t sb.t)
25
+ sys.touch %w(sa.t/1 sb.t/1)
26
+ end
27
+ gen Clean
28
+ var[:clean].include "*a*.t"
29
+ subdirs "sub1.t"
30
+ EOF
31
+ }
32
+ end
33
+ FileUtils.mkdir "p1.t/sub1.t"
34
+ Dir.chdir "p1.t/sub1.t" do
35
+ open("Rantfile", "w") { |f|
36
+ f << <<-EOF
37
+ import "clean"
38
+ task :mk_junk do
39
+ sys.touch %w(a1.t a2.t b1.t b2.t)
40
+ sys.mkdir %w(sa.t sb.t)
41
+ end
42
+ gen Clean
43
+ var[:clean].include "*b*.t"
44
+ EOF
45
+ }
46
+ end
47
+ end
48
+ def cleanup_project1
49
+ FileUtils.rm_rf "p1.t"
50
+ end
51
+ def test_project1
52
+ layout_project1
53
+ assert(test(?d, "p1.t"))
54
+ Dir.chdir "p1.t"
55
+ assert(test(?f, "Rantfile"))
56
+ assert(test(?d, "sub1.t"))
57
+ assert(test(?f, "sub1.t/Rantfile"))
58
+
59
+ capture_std do
60
+ assert_equal(0, Rant::RantApp.new.run)
61
+ end
62
+ files = %w(a1.t a2.t b1.t b2.t sub1.t/a1.t
63
+ sub1.t/a2.t sub1.t/b1.t sub1.t/b2.t)
64
+ dirs = %w(sa.t sb.t)
65
+ files.each { |f| assert(test(?f, f)) }
66
+ dirs.each { |f| assert(test(?d, f)) }
67
+ capture_std do
68
+ assert_equal(0, Rant::RantApp.new("clean").run)
69
+ end
70
+ %w(sa.t a1.t a2.t sub1.t/b1.t sub1.t/b2.t).each { |f|
71
+ assert(!test(?e, f))
72
+ }
73
+ %w(sb.t b1.t b2.t sub1.t/a1.t sub1.t/a2.t).each { |f|
74
+ assert(test(?e, f))
75
+ }
76
+ Dir.chdir "sub1.t"
77
+ FileUtils.rm_rf %w(sa.t sb.t)
78
+ capture_std do
79
+ assert_equal(0, Rant::RantApp.new.run)
80
+ end
81
+ %w(a1.t a2.t b1.t b2.t).each { |f| assert(test(?f, f)) }
82
+ %w(sa.t sb.t).each { |f| assert(test(?d, f)) }
83
+ capture_std do
84
+ assert_equal(0, Rant::RantApp.new("clean").run)
85
+ end
86
+ %w(b1.t b2.t sb.t).each { |f| assert(!test(?e, f)) }
87
+ %w(a1.t a2.t sa.t).each { |f| assert(test(?e, f)) }
88
+
89
+ ensure
90
+ Dir.chdir $testDir
91
+ cleanup_project1
92
+ end
93
+ def layout_project2
94
+ FileUtils.mkdir "p2.t"
95
+ Dir.chdir "p2.t"
96
+ open("Rantfile", "w") { |f|
97
+ f << <<-EOF
98
+ import "autoclean"
99
+ task :mk_junk => %w(a.t b.t/c.t/d.t) do
100
+ sys.touch "mk_junk.t"
101
+ end
102
+ gen AutoClean
103
+ file "a.t" do |t|
104
+ sys.touch t.name
105
+ end
106
+ gen Directory, "b.t/c.t"
107
+ file "b.t/c.t/d.t" => "b.t/c.t" do |t|
108
+ sys.touch t.name
109
+ end
110
+ var[:autoclean].include "mk_junk.t"
111
+ var[:autoclean].include "nix.t"
112
+ EOF
113
+ }
114
+ end
115
+ def cleanup_project2
116
+ FileUtils.rm_rf "p2.t"
117
+ end
118
+ def test_project2_autoclean
119
+ layout_project2
120
+ capture_std do
121
+ assert_equal(0, Rant::RantApp.new.run)
122
+ end
123
+ %w(a.t b.t/c.t/d.t mk_junk.t).each { |f| assert(test(?e, f)) }
124
+ capture_std do
125
+ assert_equal(0, Rant::RantApp.new("autoclean").run)
126
+ end
127
+ %w(a.t b.t/c.t/d.t mk_junk.t).each { |f| assert(!test(?e, f)) }
128
+ capture_std do
129
+ assert_equal(1, Rant::RantApp.new("clean").run)
130
+ end
131
+ ensure
132
+ cleanup_project2
133
+ end
134
+ end
@@ -0,0 +1,47 @@
1
+
2
+ require 'test/unit'
3
+ require 'rant/rantlib'
4
+ require 'tutil'
5
+
6
+ $examplesDir ||= File.expand_path(
7
+ File.join(File.dirname(File.dirname(__FILE__)), "doc", "examples"))
8
+
9
+ $cc_is_gcc ||= Rant::Env.find_bin("cc") && Rant::Env.find_bin("gcc")
10
+ class TestExamples < Test::Unit::TestCase
11
+ def setup
12
+ # Ensure we run in test directory.
13
+ Dir.chdir($examplesDir) unless Dir.pwd == $examplesDir
14
+ end
15
+ def teardown
16
+ end
17
+ def test_myprog
18
+ Dir.chdir "myprog"
19
+ assert_match(/Build myprog.*\n.*Remove compiler products/,
20
+ run_rant("--tasks"))
21
+ assert(!test(?f, "myprog"))
22
+ if $cc_is_gcc
23
+ # Warning: we're assuming cc is actually gcc
24
+ run_rant
25
+ assert(test(?f, "myprog"))
26
+ else
27
+ $stderr.puts "*** cc isn't gcc, less example testing ***"
28
+ # less myprog testing
29
+ end
30
+ run_rant("clean")
31
+ assert(!test(?e, "myprog"))
32
+ assert(!test(?e, "src/myprog"))
33
+ assert(!test(?e, "src/lib.o"))
34
+ assert(!test(?e, "src/main.o"))
35
+ end
36
+ def test_directedrule
37
+ Dir.chdir "directedrule"
38
+ assert_match(/Build foo/, run_rant("-T"))
39
+ assert(!test(?f, "foo"))
40
+ if $cc_is_gcc
41
+ run_rant
42
+ assert(test(?f, "foo"))
43
+ end
44
+ run_rant("clean")
45
+ Dir["**/*.o"].each { |f| assert(!test(?e, f)) }
46
+ end
47
+ end
@@ -221,4 +221,62 @@ class TestFileList < Test::Unit::TestCase
221
221
  ensure
222
222
  FileUtils.rm_rf "fl.t"
223
223
  end
224
+ def test_return_from_array_method
225
+ touch_temp "a.t" do
226
+ l = fl("a.t", "a.t")
227
+ ul = l.uniq
228
+ assert(Array === ul)
229
+ assert_equal(1, ul.size)
230
+ end
231
+ end
232
+ def test_return_self_from_array_method
233
+ touch_temp "a.t", "b.t" do
234
+ l = fl("*.t")
235
+ sl = l.sort!
236
+ assert_same(l, sl)
237
+ assert_equal("a.t", l.first)
238
+ assert_equal("b.t", l[1])
239
+ end
240
+ end
241
+ def test_sys_with_cd
242
+ FileUtils.mkdir "sub.t"
243
+ open("sys_cd.rf.t", "w") { |f|
244
+ f << <<-EOF
245
+ file "sub.t/a.t" => "sub.t/b.t" do |t|
246
+ sys.touch t.name
247
+ end
248
+ file "sub.t/b.t" do |t|
249
+ sys.touch t.name
250
+ end
251
+ task :clean do
252
+ sys.cd "sub.t"
253
+ sys.rm_f sys["*.t"]
254
+ end
255
+ EOF
256
+ }
257
+ capture_std do
258
+ Rant::RantApp.new("-fsys_cd.rf.t", "sub.t/a.t").run
259
+ end
260
+ assert(test(?f, "sub.t/a.t"))
261
+ assert(test(?f, "sub.t/b.t"))
262
+ capture_std do
263
+ Rant::RantApp.new("-fsys_cd.rf.t", "clean").run
264
+ end
265
+ assert(!test(?e, "sub.t/a.t"))
266
+ assert(!test(?e, "sub.t/b.t"))
267
+ ensure
268
+ FileUtils.rm_rf %w(sub.t sys_cd.rf.t)
269
+ end
270
+ def test_sys_select
271
+ cx = Rant::RantApp.new.cx
272
+ touch_temp %w(a.t b.t) do
273
+ l1 = cx.sys["*.t"]
274
+ l2 = l1.select { |f| f =~ /^b/ }
275
+ assert_equal(2, l1.size)
276
+ assert(l1.include("a.t"))
277
+ assert(l1.include("b.t"))
278
+ assert_equal(1, l2.size)
279
+ assert(l1.include("b.t"))
280
+ end
281
+ end
224
282
  end