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.
- data/CHANGES +364 -0
- data/MIT-LICENSE +21 -0
- data/README +242 -0
- data/Rakefile +413 -0
- data/TODO +20 -0
- data/bin/rake +31 -0
- data/doc/example/Rakefile1 +38 -0
- data/doc/example/Rakefile2 +35 -0
- data/doc/example/a.c +6 -0
- data/doc/example/b.c +6 -0
- data/doc/example/main.c +11 -0
- data/doc/glossary.rdoc +51 -0
- data/doc/jamis.rb +591 -0
- data/doc/proto_rake.rdoc +127 -0
- data/doc/rake.1.gz +0 -0
- data/doc/rakefile.rdoc +411 -0
- data/doc/rational.rdoc +151 -0
- data/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/install.rb +88 -0
- data/lib/rake/classic_namespace.rb +8 -0
- data/lib/rake/clean.rb +33 -0
- data/lib/rake/contrib/compositepublisher.rb +24 -0
- data/lib/rake/contrib/ftptools.rb +153 -0
- data/lib/rake/contrib/publisher.rb +75 -0
- data/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/lib/rake/contrib/sshpublisher.rb +47 -0
- data/lib/rake/contrib/sys.rb +209 -0
- data/lib/rake/gempackagetask.rb +103 -0
- data/lib/rake/loaders/makefile.rb +40 -0
- data/lib/rake/packagetask.rb +184 -0
- data/lib/rake/rake_test_loader.rb +5 -0
- data/lib/rake/rdoctask.rb +147 -0
- data/lib/rake/ruby182_test_unit_fix.rb +23 -0
- data/lib/rake/runtest.rb +23 -0
- data/lib/rake/tasklib.rb +18 -0
- data/lib/rake/testtask.rb +161 -0
- data/lib/rake.rb +2312 -0
- data/test/capture_stdout.rb +26 -0
- data/test/contrib/testsys.rb +47 -0
- data/test/data/chains/Rakefile +15 -0
- data/test/data/default/Rakefile +19 -0
- data/test/data/dryrun/Rakefile +22 -0
- data/test/data/file_creation_task/Rakefile +30 -0
- data/test/data/imports/Rakefile +19 -0
- data/test/data/imports/deps.mf +1 -0
- data/test/data/multidesc/Rakefile +17 -0
- data/test/data/namespace/Rakefile +57 -0
- data/test/data/rakelib/test1.rb +3 -0
- data/test/data/rbext/rakefile.rb +3 -0
- data/test/data/sample.mf +9 -0
- data/test/data/statusreturn/Rakefile +8 -0
- data/test/data/unittest/Rakefile +1 -0
- data/test/filecreation.rb +32 -0
- data/test/functional.rb +15 -0
- data/test/rake_test_setup.rb +5 -0
- data/test/reqfile.rb +3 -0
- data/test/reqfile2.rb +3 -0
- data/test/session_functional.rb +267 -0
- data/test/shellcommand.rb +3 -0
- data/test/test_application.rb +504 -0
- data/test/test_clean.rb +14 -0
- data/test/test_definitions.rb +82 -0
- data/test/test_earlytime.rb +35 -0
- data/test/test_extension.rb +63 -0
- data/test/test_file_creation_task.rb +62 -0
- data/test/test_file_task.rb +139 -0
- data/test/test_filelist.rb +618 -0
- data/test/test_fileutils.rb +239 -0
- data/test/test_ftp.rb +59 -0
- data/test/test_invocation_chain.rb +75 -0
- data/test/test_makefile_loader.rb +23 -0
- data/test/test_multitask.rb +45 -0
- data/test/test_namespace.rb +36 -0
- data/test/test_package_task.rb +116 -0
- data/test/test_pathmap.rb +209 -0
- data/test/test_rake.rb +34 -0
- data/test/test_require.rb +33 -0
- data/test/test_rules.rb +347 -0
- data/test/test_task_arguments.rb +76 -0
- data/test/test_task_manager.rb +148 -0
- data/test/test_tasks.rb +372 -0
- data/test/test_test_task.rb +75 -0
- data/test/test_top_level_functions.rb +84 -0
- 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,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,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
|
+
|
data/test/data/sample.mf
ADDED
@@ -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
|
data/test/functional.rb
ADDED
@@ -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
|
data/test/reqfile.rb
ADDED
data/test/reqfile2.rb
ADDED
@@ -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
|