jimweirich-rake 0.8.1.5

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 (94) hide show
  1. data/CHANGES +364 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +242 -0
  4. data/Rakefile +413 -0
  5. data/TODO +20 -0
  6. data/bin/rake +31 -0
  7. data/doc/example/Rakefile1 +38 -0
  8. data/doc/example/Rakefile2 +35 -0
  9. data/doc/example/a.c +6 -0
  10. data/doc/example/b.c +6 -0
  11. data/doc/example/main.c +11 -0
  12. data/doc/glossary.rdoc +51 -0
  13. data/doc/jamis.rb +591 -0
  14. data/doc/proto_rake.rdoc +127 -0
  15. data/doc/rake.1.gz +0 -0
  16. data/doc/rakefile.rdoc +411 -0
  17. data/doc/rational.rdoc +151 -0
  18. data/doc/release_notes/rake-0.4.14.rdoc +23 -0
  19. data/doc/release_notes/rake-0.4.15.rdoc +35 -0
  20. data/doc/release_notes/rake-0.5.0.rdoc +53 -0
  21. data/doc/release_notes/rake-0.5.3.rdoc +78 -0
  22. data/doc/release_notes/rake-0.5.4.rdoc +46 -0
  23. data/doc/release_notes/rake-0.6.0.rdoc +141 -0
  24. data/doc/release_notes/rake-0.7.0.rdoc +119 -0
  25. data/doc/release_notes/rake-0.7.1.rdoc +59 -0
  26. data/doc/release_notes/rake-0.7.2.rdoc +121 -0
  27. data/doc/release_notes/rake-0.7.3.rdoc +47 -0
  28. data/doc/release_notes/rake-0.8.0.rdoc +114 -0
  29. data/install.rb +88 -0
  30. data/lib/rake/classic_namespace.rb +8 -0
  31. data/lib/rake/clean.rb +33 -0
  32. data/lib/rake/contrib/compositepublisher.rb +24 -0
  33. data/lib/rake/contrib/ftptools.rb +153 -0
  34. data/lib/rake/contrib/publisher.rb +75 -0
  35. data/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  36. data/lib/rake/contrib/sshpublisher.rb +47 -0
  37. data/lib/rake/contrib/sys.rb +209 -0
  38. data/lib/rake/gempackagetask.rb +103 -0
  39. data/lib/rake/loaders/makefile.rb +40 -0
  40. data/lib/rake/packagetask.rb +184 -0
  41. data/lib/rake/rake_test_loader.rb +5 -0
  42. data/lib/rake/rdoctask.rb +147 -0
  43. data/lib/rake/ruby182_test_unit_fix.rb +23 -0
  44. data/lib/rake/runtest.rb +23 -0
  45. data/lib/rake/tasklib.rb +18 -0
  46. data/lib/rake/testtask.rb +161 -0
  47. data/lib/rake.rb +2312 -0
  48. data/test/capture_stdout.rb +26 -0
  49. data/test/contrib/testsys.rb +47 -0
  50. data/test/data/chains/Rakefile +15 -0
  51. data/test/data/default/Rakefile +19 -0
  52. data/test/data/dryrun/Rakefile +22 -0
  53. data/test/data/file_creation_task/Rakefile +30 -0
  54. data/test/data/imports/Rakefile +19 -0
  55. data/test/data/imports/deps.mf +1 -0
  56. data/test/data/multidesc/Rakefile +17 -0
  57. data/test/data/namespace/Rakefile +57 -0
  58. data/test/data/rakelib/test1.rb +3 -0
  59. data/test/data/rbext/rakefile.rb +3 -0
  60. data/test/data/sample.mf +9 -0
  61. data/test/data/statusreturn/Rakefile +8 -0
  62. data/test/data/unittest/Rakefile +1 -0
  63. data/test/filecreation.rb +32 -0
  64. data/test/functional.rb +15 -0
  65. data/test/rake_test_setup.rb +5 -0
  66. data/test/reqfile.rb +3 -0
  67. data/test/reqfile2.rb +3 -0
  68. data/test/session_functional.rb +267 -0
  69. data/test/shellcommand.rb +3 -0
  70. data/test/test_application.rb +504 -0
  71. data/test/test_clean.rb +14 -0
  72. data/test/test_definitions.rb +82 -0
  73. data/test/test_earlytime.rb +35 -0
  74. data/test/test_extension.rb +63 -0
  75. data/test/test_file_creation_task.rb +62 -0
  76. data/test/test_file_task.rb +139 -0
  77. data/test/test_filelist.rb +618 -0
  78. data/test/test_fileutils.rb +239 -0
  79. data/test/test_ftp.rb +59 -0
  80. data/test/test_invocation_chain.rb +75 -0
  81. data/test/test_makefile_loader.rb +23 -0
  82. data/test/test_multitask.rb +45 -0
  83. data/test/test_namespace.rb +36 -0
  84. data/test/test_package_task.rb +116 -0
  85. data/test/test_pathmap.rb +209 -0
  86. data/test/test_rake.rb +34 -0
  87. data/test/test_require.rb +33 -0
  88. data/test/test_rules.rb +347 -0
  89. data/test/test_task_arguments.rb +76 -0
  90. data/test/test_task_manager.rb +148 -0
  91. data/test/test_tasks.rb +372 -0
  92. data/test/test_test_task.rb +75 -0
  93. data/test/test_top_level_functions.rb +84 -0
  94. metadata +173 -0
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'stringio'
4
+
5
+ # Mix-in for capturing standard output.
6
+ module CaptureStdout
7
+ def capture_stdout
8
+ s = StringIO.new
9
+ oldstdout = $stdout
10
+ $stdout = s
11
+ yield
12
+ s.string
13
+ ensure
14
+ $stdout = oldstdout
15
+ end
16
+
17
+ def capture_stderr
18
+ s = StringIO.new
19
+ oldstderr = $stderr
20
+ $stderr = s
21
+ yield
22
+ s.string
23
+ ensure
24
+ $stderr = oldstderr
25
+ end
26
+ end
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'test/filecreation'
5
+ require 'rake/contrib/sys'
6
+
7
+ class TestSys < Test::Unit::TestCase
8
+ include FileCreation
9
+
10
+ # def test_delete
11
+ # create_file("testdata/a")
12
+ # Sys.delete_all("testdata/a")
13
+ # assert ! File.exist?("testdata/a")
14
+ # end
15
+
16
+ # def test_copy
17
+ # create_file("testdata/a")
18
+ # Sys.copy("testdata/a", "testdata/b")
19
+ # assert File.exist?("testdata/b")
20
+ # end
21
+
22
+ # def test_for_files
23
+ # test_files = ["testdata/a.pl", "testdata/c.pl", "testdata/b.rb"]
24
+ # test_files.each { |fn| create_file(fn) }
25
+ # list = []
26
+ # Sys.for_files("testdata/*.pl", "testdata/*.rb") { |fn|
27
+ # list << fn
28
+ # }
29
+ # assert_equal test_files.sort, list.sort
30
+ # end
31
+
32
+ # def test_indir
33
+ # here = Dir.pwd
34
+ # Sys.makedirs("testdata/dir")
35
+ # assert_equal "#{here}/testdata/dir", Sys.indir("testdata/dir") { Dir.pwd }
36
+ # assert_equal here, Dir.pwd
37
+ # end
38
+
39
+ def test_split_all
40
+ assert_equal ['a'], Sys.split_all('a')
41
+ assert_equal ['..'], Sys.split_all('..')
42
+ assert_equal ['/'], Sys.split_all('/')
43
+ assert_equal ['a', 'b'], Sys.split_all('a/b')
44
+ assert_equal ['/', 'a', 'b'], Sys.split_all('/a/b')
45
+ assert_equal ['..', 'a', 'b'], Sys.split_all('../a/b')
46
+ end
47
+ end
@@ -0,0 +1,15 @@
1
+ # -*- ruby -*-
2
+
3
+ task :default => "play.app"
4
+
5
+ file "play.scpt" => "base" do |t|
6
+ cp t.prerequisites.first, t.name
7
+ end
8
+
9
+ rule ".app" => ".scpt" do |t|
10
+ cp t.source, t.name
11
+ end
12
+
13
+ file 'base' do
14
+ touch 'base'
15
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if ENV['TESTTOPSCOPE']
4
+ puts "TOPSCOPE"
5
+ end
6
+
7
+ task :default do
8
+ puts "DEFAULT"
9
+ end
10
+
11
+ task :other => [:default] do
12
+ puts "OTHER"
13
+ end
14
+
15
+ task :task_scope do
16
+ if ENV['TESTTASKSCOPE']
17
+ puts "TASKSCOPE"
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ #
2
+
3
+ task :default => ["temp_main"]
4
+
5
+ file "temp_main" => [:all_apps] do touch "temp_main" end
6
+
7
+ task :all_apps => [:one, :two]
8
+ task :one => ["temp_one"]
9
+ task :two => ["temp_two"]
10
+
11
+ file "temp_one" do |t|
12
+ touch "temp_one"
13
+ end
14
+ file "temp_two" do |t|
15
+ touch "temp_two"
16
+ end
17
+
18
+ task :clean do
19
+ ["temp_one", "temp_two", "temp_main"].each do |file|
20
+ rm_f file
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ N = 2
2
+
3
+ task :default => :run
4
+
5
+ BUILD_DIR = 'build'
6
+ task :clean do
7
+ rm_rf 'build'
8
+ rm_rf 'src'
9
+ end
10
+
11
+ task :run
12
+
13
+ TARGET_DIR = 'build/copies'
14
+
15
+ FileList['src/*'].each do |src|
16
+ directory TARGET_DIR
17
+ target = File.join TARGET_DIR, File.basename(src)
18
+ file target => [src, TARGET_DIR] do
19
+ cp src, target
20
+ sleep 3 if src !~ /foo#{N-1}$/
21
+ end
22
+ task :run => target
23
+ end
24
+
25
+ task :prep => :clean do
26
+ mkdir_p 'src'
27
+ N.times do |n|
28
+ touch "src/foo#{n}"
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rake/loaders/makefile'
4
+
5
+ task :default
6
+
7
+ task :other do
8
+ puts "OTHER"
9
+ end
10
+
11
+ file "dynamic_deps" do |t|
12
+ open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end
13
+ end
14
+
15
+ import "dynamic_deps"
16
+ import "static_deps"
17
+ import "static_deps"
18
+ import "deps.mf"
19
+ puts "FIRST"
@@ -0,0 +1 @@
1
+ default: other
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ task :b
4
+
5
+ desc "A"
6
+ task :a
7
+
8
+ desc "B"
9
+ task :b
10
+
11
+ desc "A2"
12
+ task :a
13
+
14
+ task :c
15
+
16
+ desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
17
+ task :d
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ desc "copy"
4
+ task :copy do
5
+ puts "COPY"
6
+ end
7
+
8
+ namespace "nest" do
9
+ desc "nest copy"
10
+ task :copy do
11
+ puts "NEST COPY"
12
+ end
13
+ task :xx => :copy
14
+ end
15
+
16
+ anon_ns = namespace do
17
+ desc "anonymous copy task"
18
+ task :copy do
19
+ puts "ANON COPY"
20
+ end
21
+ end
22
+
23
+ desc "Top level task to run the anonymous version of copy"
24
+ task :anon => anon_ns[:copy]
25
+
26
+ namespace "very" do
27
+ namespace "nested" do
28
+ task "run" => "rake:copy"
29
+ end
30
+ end
31
+
32
+ namespace "a" do
33
+ desc "Run task in the 'a' namespace"
34
+ task "run" do
35
+ puts "IN A"
36
+ end
37
+ end
38
+
39
+ namespace "b" do
40
+ desc "Run task in the 'b' namespace"
41
+ task "run" => "a:run" do
42
+ puts "IN B"
43
+ end
44
+ end
45
+
46
+ namespace "file1" do
47
+ file "xyz.rb" do
48
+ puts "XYZ1"
49
+ end
50
+ end
51
+
52
+ namespace "file2" do
53
+ file "xyz.rb" do
54
+ puts "XYZ2"
55
+ end
56
+ end
57
+
@@ -0,0 +1,3 @@
1
+ task :default do
2
+ puts "TEST1"
3
+ end
@@ -0,0 +1,3 @@
1
+ task :default do
2
+ puts "OK"
3
+ end
@@ -0,0 +1,9 @@
1
+ # Comments
2
+ a: a1 a2 a3 a4
3
+ b: b1 b2 b3 \
4
+ b4 b5 b6\
5
+ # Mid: Comment
6
+ b7
7
+ a: a5 a6 a7
8
+ c: c1
9
+ d: d1 d2 \
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ task :exit5 do
4
+ exit(5)
5
+ end
6
+
7
+ task :normal do
8
+ end
@@ -0,0 +1 @@
1
+ # Empty Rakefile for Unit Test
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ module FileCreation
4
+ OLDFILE = "testdata/old"
5
+ NEWFILE = "testdata/new"
6
+
7
+ def create_timed_files(oldfile, *newfiles)
8
+ return if File.exist?(oldfile) && newfiles.all? { |newfile| File.exist?(newfile) }
9
+ old_time = create_file(oldfile)
10
+ newfiles.each do |newfile|
11
+ while create_file(newfile) <= old_time
12
+ sleep(0.1)
13
+ File.delete(newfile) rescue nil
14
+ end
15
+ end
16
+ end
17
+
18
+ def create_dir(dirname)
19
+ FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
20
+ File.stat(dirname).mtime
21
+ end
22
+
23
+ def create_file(name)
24
+ create_dir(File.dirname(name))
25
+ FileUtils.touch(name) unless File.exist?(name)
26
+ File.stat(name).mtime
27
+ end
28
+
29
+ def delete_file(name)
30
+ File.delete(name) rescue nil
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'rubygems'
5
+ gem 'session'
6
+ require 'session'
7
+ rescue LoadError
8
+ puts "UNABLE TO RUN FUNCTIONAL TESTS"
9
+ puts "No Session Found"
10
+ end
11
+
12
+ if defined?(Session)
13
+ puts "RUNNING WITH SESSIONS"
14
+ require 'test/session_functional'
15
+ end
@@ -0,0 +1,5 @@
1
+ # Common setup for all test files.
2
+
3
+ require 'rubygems'
4
+ gem 'flexmock'
5
+ require 'flexmock/test_unit'
data/test/reqfile.rb ADDED
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 1
data/test/reqfile2.rb ADDED
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 2
@@ -0,0 +1,267 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'fileutils'
5
+ require 'session'
6
+
7
+ # Version 2.1.9 of session has a bug where the @debug instance
8
+ # variable is not initialized, causing warning messages. This snippet
9
+ # of code fixes that problem.
10
+ module Session
11
+ class AbstractSession
12
+ alias old_initialize initialize
13
+ def initialize(*args)
14
+ @debug = nil
15
+ old_initialize(*args)
16
+ end
17
+ end
18
+ end
19
+
20
+ class FunctionalTest < Test::Unit::TestCase
21
+
22
+ RUBY_COMMAND = 'ruby'
23
+
24
+ def setup
25
+ @rake_path = File.expand_path("bin/rake")
26
+ @coverage_aggregate_file = File.expand_path("rcov_aggregate")
27
+ @rcov_dir = File.expand_path("coverage")
28
+ lib_path = File.expand_path("lib")
29
+ @ruby_options = "-I#{lib_path} -I."
30
+ @verbose = ! ENV['VERBOSE'].nil?
31
+ if @verbose
32
+ puts
33
+ puts
34
+ puts "--------------------------------------------------------------------"
35
+ puts name
36
+ puts "--------------------------------------------------------------------"
37
+ end
38
+ end
39
+
40
+ def test_rake_default
41
+ Dir.chdir("test/data/default") do rake end
42
+ assert_match(/^DEFAULT$/, @out)
43
+ assert_status
44
+ end
45
+
46
+ def test_rake_error_on_bad_task
47
+ Dir.chdir("test/data/default") do rake "xyz" end
48
+ assert_match(/rake aborted/, @err)
49
+ assert_status(1)
50
+ end
51
+
52
+ def test_env_availabe_at_top_scope
53
+ Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end
54
+ assert_match(/^TOPSCOPE$/, @out)
55
+ assert_status
56
+ end
57
+
58
+ def test_env_availabe_at_task_scope
59
+ Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end
60
+ assert_match(/^TASKSCOPE$/, @out)
61
+ assert_status
62
+ end
63
+
64
+ def test_multi_desc
65
+ ENV['RAKE_COLUMNS'] = '80'
66
+ Dir.chdir("test/data/multidesc") do rake "-T" end
67
+ assert_match %r{^rake a *# A / A2 *$}, @out
68
+ assert_match %r{^rake b *# B *$}, @out
69
+ assert_no_match %r{^rake c}, @out
70
+ assert_match %r{^rake d *# x{65}\.\.\.$}, @out
71
+ ensure
72
+ ENV['RAKE_COLUMNS'] = nil
73
+ end
74
+
75
+ def test_long_description
76
+ Dir.chdir("test/data/multidesc") do rake "--describe" end
77
+ assert_match %r{^rake a\n *A / A2 *$}m, @out
78
+ assert_match %r{^rake b\n *B *$}m, @out
79
+ assert_match %r{^rake d\n *x{80}}m, @out
80
+ assert_no_match %r{^rake c\n}m, @out
81
+ end
82
+
83
+ def test_rbext
84
+ Dir.chdir("test/data/rbext") do rake "-N" end
85
+ assert_match %r{^OK$}, @out
86
+ end
87
+
88
+ def test_nosearch
89
+ mkdir_p "test/data/nosearch", :verbose => false rescue nil
90
+ Dir.chdir("test/data/nosearch") do rake "-N" end
91
+ assert_match %r{^No Rakefile found}, @err
92
+ end
93
+
94
+ def test_dry_run
95
+ Dir.chdir("test/data/default") do rake "-n", "other" end
96
+ assert_match %r{Execute \(dry run\) default}, @out
97
+ assert_match %r{Execute \(dry run\) other}, @out
98
+ assert_no_match %r{DEFAULT}, @out
99
+ assert_no_match %r{OTHER}, @out
100
+ end
101
+
102
+ # Test for the trace/dry_run bug found by Brian Chandler
103
+ def test_dry_run_bug
104
+ Dir.chdir("test/data/dryrun") do rake end
105
+ FileUtils.rm_f "test/data/dryrun/temp_one"
106
+ Dir.chdir("test/data/dryrun") do rake "--dry-run" end
107
+ assert_no_match(/No such file/, @out)
108
+ assert_status
109
+ end
110
+
111
+ # Test for the trace/dry_run bug found by Brian Chandler
112
+ def test_trace_bug
113
+ Dir.chdir("test/data/dryrun") do rake end
114
+ FileUtils.rm_f "test/data/dryrun/temp_one"
115
+ Dir.chdir("test/data/dryrun") do rake "--trace" end
116
+ assert_no_match(/No such file/, @out)
117
+ assert_status
118
+ end
119
+
120
+ def test_imports
121
+ open("test/data/imports/static_deps", "w") do |f|
122
+ f.puts 'puts "STATIC"'
123
+ end
124
+ FileUtils.rm_f "test/data/imports/dynamic_deps"
125
+ Dir.chdir("test/data/imports") do rake end
126
+ assert File.exist?("test/data/imports/dynamic_deps"),
127
+ "'dynamic_deps' file should exist"
128
+ assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out)
129
+ assert_status
130
+ FileUtils.rm_f "test/data/imports/dynamic_deps"
131
+ FileUtils.rm_f "test/data/imports/static_deps"
132
+ end
133
+
134
+ def test_rules_chaining_to_file_task
135
+ remove_chaining_files
136
+ Dir.chdir("test/data/chains") do rake end
137
+ assert File.exist?("test/data/chains/play.app"),
138
+ "'play.app' file should exist"
139
+ assert_status
140
+ remove_chaining_files
141
+ end
142
+
143
+ def test_file_creation_task
144
+ Dir.chdir("test/data/file_creation_task") do
145
+ rake "prep"
146
+ rake "run"
147
+ rake "run"
148
+ assert(@err !~ /^cp src/, "Should not recopy data")
149
+ end
150
+ end
151
+
152
+ def test_dash_f_with_no_arg_foils_rakefile_lookup
153
+ rake "-I test/data/rakelib -rtest1 -f"
154
+ assert_match(/^TEST1$/, @out)
155
+ end
156
+
157
+ def test_dot_rake_files_can_be_laoded_with_dash_r
158
+ rake "-I test/data/rakelib -rtest2 -f"
159
+ assert_match(/^TEST2$/, @out)
160
+ end
161
+
162
+ def test_can_invoke_task_in_toplevel_namespace
163
+ Dir.chdir("test/data/namespace") do
164
+ rake "copy"
165
+ assert_match(/^COPY$/, @out)
166
+ end
167
+ end
168
+
169
+ def test_can_invoke_task_in_nested_namespace
170
+ Dir.chdir("test/data/namespace") do
171
+ rake "nest:copy"
172
+ assert_match(/^NEST COPY$/, @out)
173
+ end
174
+ end
175
+
176
+ def test_tasks_can_reference_task_in_same_namespace
177
+ Dir.chdir("test/data/namespace") do
178
+ rake "nest:xx"
179
+ assert_match(/^NEST COPY$/m, @out)
180
+ end
181
+ end
182
+
183
+ def test_tasks_can_reference_task_in_other_namespaces
184
+ Dir.chdir("test/data/namespace") do
185
+ rake "b:run"
186
+ assert_match(/^IN A\nIN B$/m, @out)
187
+ end
188
+ end
189
+
190
+ def test_anonymous_tasks_can_be_invoked_indirectly
191
+ Dir.chdir("test/data/namespace") do
192
+ rake "anon"
193
+ assert_match(/^ANON COPY$/m, @out)
194
+ end
195
+ end
196
+
197
+ def test_rake_namespace_refers_to_toplevel
198
+ Dir.chdir("test/data/namespace") do
199
+ rake "very:nested:run"
200
+ assert_match(/^COPY$/m, @out)
201
+ end
202
+ end
203
+
204
+ def test_file_task_are_not_scoped_by_namespaces
205
+ Dir.chdir("test/data/namespace") do
206
+ rake "xyz.rb"
207
+ assert_match(/^XYZ1\nXYZ2$/m, @out)
208
+ end
209
+ end
210
+
211
+ def test_rake_returns_status_error_values
212
+ Dir.chdir("test/data/statusreturn") do
213
+ rake "exit5"
214
+ assert_status(5)
215
+ end
216
+ end
217
+
218
+ def test_rake_returns_no_status_error_on_normal_exit
219
+ Dir.chdir("test/data/statusreturn") do
220
+ rake "normal"
221
+ assert_status(0)
222
+ end
223
+ end
224
+
225
+ private
226
+
227
+ def remove_chaining_files
228
+ %w(play.scpt play.app base).each do |fn|
229
+ FileUtils.rm_f File.join("test/data/chains", fn)
230
+ end
231
+ end
232
+
233
+ class << self
234
+ def format_command
235
+ @format_command ||= lambda { |ruby_options, rake_path, options|
236
+ "ruby #{ruby_options} #{rake_path} #{options}"
237
+ }
238
+ end
239
+
240
+ def format_command=(fmt_command)
241
+ @format_command = fmt_command
242
+ end
243
+ end
244
+
245
+ def rake(*option_list)
246
+ # self.class.format_command = lambda { |ruby_options, rake_path, options|
247
+ # "rcov --output=#{@rcov_dir} --aggregate=#{@coverage_aggregate_file} #{ruby_options} #{rake_path} -- #{options}"
248
+ # }
249
+
250
+ options = option_list.join(' ')
251
+ shell = Session::Shell.new
252
+ command = self.class.format_command[@ruby_options, @rake_path, options]
253
+ puts "COMMAND: [#{command}]" if @verbose
254
+ @out, @err = shell.execute command
255
+ @status = shell.exit_status
256
+ puts "STATUS: [#{@status}]" if @verbose
257
+ puts "OUTPUT: [#{@out}]" if @verbose
258
+ puts "ERROR: [#{@err}]" if @verbose
259
+ puts "PWD: [#{Dir.pwd}]" if @verbose
260
+ shell.close
261
+ end
262
+
263
+ def assert_status(expected_status=0)
264
+ assert_equal expected_status, @status
265
+ end
266
+
267
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ exit((ARGV[0] || "0").to_i)