rake 0.8.7 → 0.9.0
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/.gemtest +0 -0
- data/CHANGES +77 -9
- data/{README → README.rdoc} +14 -10
- data/Rakefile +129 -118
- data/TODO +1 -1
- data/doc/command_line_usage.rdoc +18 -6
- data/doc/glossary.rdoc +2 -2
- data/doc/jamis.rb +2 -2
- data/doc/proto_rake.rdoc +22 -22
- data/doc/rake.1.gz +0 -0
- data/doc/rakefile.rdoc +55 -32
- data/doc/rational.rdoc +6 -6
- data/doc/release_notes/rake-0.4.15.rdoc +1 -1
- data/doc/release_notes/rake-0.5.0.rdoc +1 -1
- data/doc/release_notes/rake-0.7.0.rdoc +1 -1
- data/doc/release_notes/rake-0.7.2.rdoc +3 -3
- data/doc/release_notes/rake-0.7.3.rdoc +2 -2
- data/doc/release_notes/rake-0.8.0.rdoc +1 -1
- data/doc/release_notes/rake-0.8.2.rdoc +3 -3
- data/doc/release_notes/rake-0.8.3.rdoc +2 -2
- data/doc/release_notes/rake-0.8.4.rdoc +1 -1
- data/doc/release_notes/rake-0.8.5.rdoc +1 -1
- data/doc/release_notes/rake-0.8.6.rdoc +1 -1
- data/doc/release_notes/rake-0.8.7.rdoc +1 -1
- data/doc/release_notes/rake-0.9.0.rdoc +112 -0
- data/install.rb +14 -12
- data/lib/rake/alt_system.rb +7 -6
- data/lib/rake/application.rb +589 -0
- data/lib/rake/classic_namespace.rb +1 -0
- data/lib/rake/clean.rb +2 -4
- data/lib/rake/cloneable.rb +25 -0
- data/lib/rake/contrib/compositepublisher.rb +2 -5
- data/lib/rake/contrib/ftptools.rb +5 -8
- data/lib/rake/contrib/publisher.rb +2 -8
- data/lib/rake/contrib/rubyforgepublisher.rb +2 -4
- data/lib/rake/contrib/sshpublisher.rb +4 -6
- data/lib/rake/contrib/sys.rb +7 -25
- data/lib/rake/default_loader.rb +10 -0
- data/lib/rake/dsl.rb +2 -0
- data/lib/rake/dsl_definition.rb +143 -0
- data/lib/rake/early_time.rb +18 -0
- data/lib/rake/ext/core.rb +27 -0
- data/lib/rake/ext/module.rb +39 -0
- data/lib/rake/ext/string.rb +167 -0
- data/lib/rake/ext/time.rb +14 -0
- data/lib/rake/file_creation_task.rb +24 -0
- data/lib/rake/file_list.rb +403 -0
- data/lib/rake/file_task.rb +47 -0
- data/lib/rake/file_utils.rb +112 -0
- data/lib/rake/file_utils_ext.rb +142 -0
- data/lib/rake/gempackagetask.rb +6 -90
- data/lib/rake/invocation_chain.rb +51 -0
- data/lib/rake/invocation_exception_mixin.rb +16 -0
- data/lib/rake/loaders/makefile.rb +13 -15
- data/lib/rake/multi_task.rb +16 -0
- data/lib/rake/name_space.rb +25 -0
- data/lib/rake/packagetask.rb +13 -12
- data/lib/rake/pathmap.rb +1 -0
- data/lib/rake/pseudo_status.rb +24 -0
- data/lib/rake/rake_module.rb +29 -0
- data/lib/rake/rake_test_loader.rb +10 -2
- data/lib/rake/rdoctask.rb +211 -190
- data/lib/rake/ruby182_test_unit_fix.rb +9 -7
- data/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/lib/rake/runtest.rb +4 -6
- data/lib/rake/task.rb +327 -0
- data/lib/rake/task_argument_error.rb +7 -0
- data/lib/rake/task_arguments.rb +74 -0
- data/lib/rake/task_manager.rb +307 -0
- data/lib/rake/tasklib.rb +1 -2
- data/lib/rake/testtask.rb +57 -27
- data/lib/rake/version.rb +10 -0
- data/lib/rake/win32.rb +4 -4
- data/lib/rake.rb +29 -2470
- data/test/contrib/test_sys.rb +8 -31
- data/test/data/access/Rakefile +33 -0
- data/test/data/comments/Rakefile +18 -0
- data/test/data/default/Rakefile +1 -1
- data/test/data/deprecated_import/Rakefile +1 -0
- data/test/data/dryrun/Rakefile +1 -1
- data/test/data/file_creation_task/Rakefile +1 -1
- data/test/data/namespace/Rakefile +9 -0
- data/test/data/rakelib/test1.rb +1 -0
- data/test/data/verbose/Rakefile +34 -0
- data/test/{filecreation.rb → file_creation.rb} +11 -7
- data/test/functional/functional_test.rb +25 -0
- data/test/{session_functional.rb → functional/session_based_tests.rb} +141 -23
- data/test/in_environment.rb +7 -5
- data/test/{test_application.rb → lib/application_test.rb} +331 -143
- data/test/{test_clean.rb → lib/clean_test.rb} +1 -0
- data/test/{test_definitions.rb → lib/definitions_test.rb} +3 -3
- data/test/lib/dsl_test.rb +52 -0
- data/test/{test_earlytime.rb → lib/earlytime_test.rb} +1 -2
- data/test/{test_extension.rb → lib/extension_test.rb} +2 -2
- data/test/{test_file_creation_task.rb → lib/file_creation_task_test.rb} +1 -1
- data/test/{test_file_task.rb → lib/file_task_test.rb} +4 -4
- data/test/{test_filelist.rb → lib/filelist_test.rb} +38 -24
- data/test/{test_fileutils.rb → lib/fileutils_test.rb} +27 -22
- data/test/{test_multitask.rb → lib/multitask_test.rb} +14 -6
- data/test/lib/package_task_test.rb +82 -0
- data/test/{test_pathmap.rb → lib/pathmap_test.rb} +3 -2
- data/test/{test_rake.rb → lib/rake_test.rb} +1 -1
- data/test/{test_rdoc_task.rb → lib/rdoc_task_test.rb} +19 -23
- data/test/{test_require.rb → lib/require_test.rb} +8 -2
- data/test/{test_rules.rb → lib/rules_test.rb} +2 -3
- data/test/{test_task_arguments.rb → lib/task_arguments_test.rb} +5 -5
- data/test/{test_task_manager.rb → lib/task_manager_test.rb} +15 -5
- data/test/{test_tasks.rb → lib/task_test.rb} +84 -21
- data/test/{test_test_task.rb → lib/test_task_test.rb} +3 -3
- data/test/lib/testtask_test.rb +49 -0
- data/test/{test_top_level_functions.rb → lib/top_level_functions_test.rb} +5 -3
- data/test/{test_win32.rb → lib/win32_test.rb} +19 -0
- data/test/rake_test_setup.rb +5 -9
- data/test/ruby_version_test.rb +3 -0
- data/test/test_helper.rb +19 -0
- metadata +108 -49
- data/test/functional.rb +0 -15
- data/test/test_package_task.rb +0 -118
- /data/test/{test_ftp.rb → lib/ftp_test.rb} +0 -0
- /data/test/{test_invocation_chain.rb → lib/invocation_chain_test.rb} +0 -0
- /data/test/{test_makefile_loader.rb → lib/makefile_loader_test.rb} +0 -0
- /data/test/{test_namespace.rb → lib/namespace_test.rb} +0 -0
- /data/test/{test_pseudo_status.rb → lib/pseudo_status_test.rb} +0 -0
- /data/test/{test_tasklib.rb → lib/tasklib_test.rb} +0 -0
data/test/contrib/test_sys.rb
CHANGED
|
@@ -1,41 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
require 'test/unit'
|
|
4
|
-
require 'test/
|
|
5
|
-
|
|
4
|
+
require 'test/file_creation'
|
|
5
|
+
begin
|
|
6
|
+
old_verbose = $VERBOSE
|
|
7
|
+
$VERBOSE = nil
|
|
8
|
+
require 'rake/contrib/sys'
|
|
9
|
+
ensure
|
|
10
|
+
$VERBOSE = old_verbose
|
|
11
|
+
end
|
|
6
12
|
|
|
7
13
|
class TestSys < Test::Unit::TestCase
|
|
8
14
|
include FileCreation
|
|
9
15
|
|
|
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
16
|
def test_split_all
|
|
40
17
|
assert_equal ['a'], Sys.split_all('a')
|
|
41
18
|
assert_equal ['..'], Sys.split_all('..')
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
TOP_LEVEL_CONSTANT = 0
|
|
2
|
+
|
|
3
|
+
def a_top_level_function
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
task :default => [:work, :obj, :const]
|
|
7
|
+
|
|
8
|
+
task :work do
|
|
9
|
+
begin
|
|
10
|
+
a_top_level_function
|
|
11
|
+
puts "GOOD:M Top level methods can be called in tasks"
|
|
12
|
+
rescue NameError => ex
|
|
13
|
+
puts "BAD:M Top level methods can not be called in tasks"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
task :obj do
|
|
18
|
+
begin
|
|
19
|
+
Object.new.instance_eval { task :xyzzy }
|
|
20
|
+
puts "BAD:D Rake DSL are polluting objects"
|
|
21
|
+
rescue StandardError => ex
|
|
22
|
+
puts "GOOD:D Rake DSL are not polluting objects"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
task :const do
|
|
27
|
+
begin
|
|
28
|
+
TOP_LEVEL_CONSTANT
|
|
29
|
+
puts "GOOD:C Top level constants are available in tasks"
|
|
30
|
+
rescue StandardError => ex
|
|
31
|
+
puts "BAD:C Top level constants are NOT available in tasks"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# comment for t1
|
|
2
|
+
task :t1 do
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
# no comment or task because there's a blank line
|
|
6
|
+
|
|
7
|
+
task :t2 do
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
desc "override comment for t3"
|
|
11
|
+
# this is not the description
|
|
12
|
+
multitask :t3 do
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# this is not the description
|
|
16
|
+
desc "override comment for t4"
|
|
17
|
+
file :t4 do
|
|
18
|
+
end
|
data/test/data/default/Rakefile
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "a"
|
data/test/data/dryrun/Rakefile
CHANGED
data/test/data/rakelib/test1.rb
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
task :standalone_verbose_true do
|
|
3
|
+
verbose true
|
|
4
|
+
sh "ruby -e '0'"
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
task :standalone_verbose_false do
|
|
8
|
+
verbose false
|
|
9
|
+
sh "ruby -e '0'"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
task :inline_verbose_default do
|
|
13
|
+
sh "ruby -e '0'"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
task :inline_verbose_false do
|
|
17
|
+
sh "ruby -e '0'", :verbose => false
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
task :inline_verbose_true do
|
|
21
|
+
sh "ruby -e '0'", :verbose => true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
task :block_verbose_true do
|
|
25
|
+
verbose(true) do
|
|
26
|
+
sh "ruby -e '0'"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
task :block_verbose_false do
|
|
31
|
+
verbose(false) do
|
|
32
|
+
sh "ruby -e '0'"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -5,13 +5,16 @@ module FileCreation
|
|
|
5
5
|
NEWFILE = "testdata/new"
|
|
6
6
|
|
|
7
7
|
def create_timed_files(oldfile, *newfiles)
|
|
8
|
-
return if File.exist?(oldfile) &&
|
|
9
|
-
|
|
8
|
+
return if (File.exist?(oldfile) &&
|
|
9
|
+
newfiles.all? { |newfile|
|
|
10
|
+
File.exist?(newfile) && File.stat(newfile).mtime > File.stat(oldfile).mtime
|
|
11
|
+
})
|
|
12
|
+
now = Time.now
|
|
13
|
+
|
|
14
|
+
create_file(oldfile, now - 60)
|
|
15
|
+
|
|
10
16
|
newfiles.each do |newfile|
|
|
11
|
-
|
|
12
|
-
sleep(0.1)
|
|
13
|
-
File.delete(newfile) rescue nil
|
|
14
|
-
end
|
|
17
|
+
create_file(newfile, now)
|
|
15
18
|
end
|
|
16
19
|
end
|
|
17
20
|
|
|
@@ -20,9 +23,10 @@ module FileCreation
|
|
|
20
23
|
File.stat(dirname).mtime
|
|
21
24
|
end
|
|
22
25
|
|
|
23
|
-
def create_file(name)
|
|
26
|
+
def create_file(name, file_time=nil)
|
|
24
27
|
create_dir(File.dirname(name))
|
|
25
28
|
FileUtils.touch(name) unless File.exist?(name)
|
|
29
|
+
File.utime(file_time, file_time, name) unless file_time.nil?
|
|
26
30
|
File.stat(name).mtime
|
|
27
31
|
end
|
|
28
32
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
begin
|
|
4
|
+
old_verbose = $VERBOSE
|
|
5
|
+
require 'rubygems'
|
|
6
|
+
$VERBOSE = nil
|
|
7
|
+
gem 'session'
|
|
8
|
+
require 'session'
|
|
9
|
+
rescue LoadError
|
|
10
|
+
if File::ALT_SEPARATOR
|
|
11
|
+
puts "Unable to run functional tests on MS Windows. Skipping."
|
|
12
|
+
else
|
|
13
|
+
puts "Unable to run functional tests -- please run \"gem install session\""
|
|
14
|
+
end
|
|
15
|
+
ensure
|
|
16
|
+
$VERBOSE = old_verbose
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
if defined?(Session)
|
|
20
|
+
if File::ALT_SEPARATOR
|
|
21
|
+
puts "Unable to run functional tests on MS Windows. Skipping."
|
|
22
|
+
else
|
|
23
|
+
require 'test/functional/session_based_tests.rb'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
begin
|
|
4
4
|
require 'rubygems'
|
|
5
|
-
rescue LoadError
|
|
5
|
+
rescue LoadError
|
|
6
6
|
end
|
|
7
7
|
require 'test/unit'
|
|
8
8
|
require 'fileutils'
|
|
9
9
|
require 'session'
|
|
10
10
|
require 'test/in_environment'
|
|
11
11
|
require 'test/rake_test_setup'
|
|
12
|
+
require 'rake'
|
|
12
13
|
|
|
13
14
|
# Version 2.1.9 of session has a bug where the @debug instance
|
|
14
15
|
# variable is not initialized, causing warning messages. This snippet
|
|
@@ -23,7 +24,7 @@ module Session
|
|
|
23
24
|
end
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
class
|
|
27
|
+
class SessionBasedTests < Test::Unit::TestCase
|
|
27
28
|
include InEnvironment
|
|
28
29
|
include TestMethods
|
|
29
30
|
|
|
@@ -32,7 +33,7 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
32
33
|
def setup
|
|
33
34
|
@rake_path = File.expand_path("bin/rake")
|
|
34
35
|
lib_path = File.expand_path("lib")
|
|
35
|
-
@ruby_options = "-I#{lib_path} -I."
|
|
36
|
+
@ruby_options = ["-I#{lib_path}", "-I."]
|
|
36
37
|
@verbose = ! ENV['VERBOSE'].nil?
|
|
37
38
|
if @verbose
|
|
38
39
|
puts
|
|
@@ -55,13 +56,13 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
55
56
|
assert_status(1)
|
|
56
57
|
end
|
|
57
58
|
|
|
58
|
-
def
|
|
59
|
+
def test_env_available_at_top_scope
|
|
59
60
|
Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end
|
|
60
61
|
assert_match(/^TOPSCOPE$/, @out)
|
|
61
62
|
assert_status
|
|
62
63
|
end
|
|
63
64
|
|
|
64
|
-
def
|
|
65
|
+
def test_env_available_at_task_scope
|
|
65
66
|
Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end
|
|
66
67
|
assert_match(/^TASKSCOPE$/, @out)
|
|
67
68
|
assert_status
|
|
@@ -79,7 +80,7 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
79
80
|
assert_no_match %r{^rake c}, @out
|
|
80
81
|
assert_match %r{^rake d *# x{65}\.\.\.$}, @out
|
|
81
82
|
end
|
|
82
|
-
|
|
83
|
+
|
|
83
84
|
def test_long_description
|
|
84
85
|
in_environment("PWD" => "test/data/multidesc") do
|
|
85
86
|
rake "--describe"
|
|
@@ -90,6 +91,13 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
90
91
|
assert_no_match %r{^rake c\n}m, @out
|
|
91
92
|
end
|
|
92
93
|
|
|
94
|
+
def test_proper_namespace_access
|
|
95
|
+
in_environment("PWD" => "test/data/access") do
|
|
96
|
+
rake
|
|
97
|
+
end
|
|
98
|
+
assert_not_match %r{^BAD:}, @out
|
|
99
|
+
end
|
|
100
|
+
|
|
93
101
|
def test_rbext
|
|
94
102
|
in_environment("PWD" => "test/data/rbext") do
|
|
95
103
|
rake "-N"
|
|
@@ -111,7 +119,7 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
111
119
|
assert_no_match %r{extra:extra}, @out
|
|
112
120
|
end
|
|
113
121
|
|
|
114
|
-
def
|
|
122
|
+
def test_by_default_rakelib_files_are_included
|
|
115
123
|
in_environment('RAKE_SYSTEM' => 'test/data/sys') do
|
|
116
124
|
rake '-T', 'extra'
|
|
117
125
|
end
|
|
@@ -156,10 +164,66 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
156
164
|
assert_match %r{^No Rakefile found}, @err
|
|
157
165
|
end
|
|
158
166
|
|
|
167
|
+
def test_invalid_command_line_options
|
|
168
|
+
in_environment("PWD" => "test/data/default") do
|
|
169
|
+
rake "--bad-options"
|
|
170
|
+
end
|
|
171
|
+
assert_match %r{invalid +option}i, @err
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def test_inline_verbose_default_should_show_command
|
|
175
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
176
|
+
rake "inline_verbose_default"
|
|
177
|
+
end
|
|
178
|
+
assert_match(/ruby -e/, @err)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def test_inline_verbose_true_should_show_command
|
|
182
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
183
|
+
rake "inline_verbose_true"
|
|
184
|
+
end
|
|
185
|
+
assert_match(/ruby -e/, @err)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def test_inline_verbose_false_should_not_show_command
|
|
189
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
190
|
+
rake "inline_verbose_false"
|
|
191
|
+
end
|
|
192
|
+
assert_no_match(/ruby -e/, @err)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def test_block_verbose_false_should_not_show_command
|
|
196
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
197
|
+
rake "block_verbose_false"
|
|
198
|
+
end
|
|
199
|
+
assert_no_match(/ruby -e/, @err)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_block_verbose_true_should_show_command
|
|
203
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
204
|
+
rake "block_verbose_true"
|
|
205
|
+
end
|
|
206
|
+
assert_match(/ruby -e/, @err)
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def test_standalone_verbose_true_should_show_command
|
|
210
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
211
|
+
rake "standalone_verbose_true"
|
|
212
|
+
end
|
|
213
|
+
assert_match(/ruby -e/, @err)
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def test_standalone_verbose_false_should_not_show_command
|
|
217
|
+
in_environment("PWD" => "test/data/verbose") do
|
|
218
|
+
rake "standalone_verbose_false"
|
|
219
|
+
end
|
|
220
|
+
assert_no_match(/ruby -e/, @err)
|
|
221
|
+
end
|
|
222
|
+
|
|
159
223
|
def test_dry_run
|
|
160
224
|
in_environment("PWD" => "test/data/default") do rake "-n", "other" end
|
|
161
|
-
assert_match %r{Execute \(dry run\) default}, @
|
|
162
|
-
assert_match %r{Execute \(dry run\) other}, @
|
|
225
|
+
assert_match %r{Execute \(dry run\) default}, @err
|
|
226
|
+
assert_match %r{Execute \(dry run\) other}, @err
|
|
163
227
|
assert_no_match %r{DEFAULT}, @out
|
|
164
228
|
assert_no_match %r{OTHER}, @out
|
|
165
229
|
end
|
|
@@ -284,7 +348,16 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
284
348
|
assert_match(/^XYZ1\nXYZ2$/m, @out)
|
|
285
349
|
end
|
|
286
350
|
end
|
|
287
|
-
|
|
351
|
+
|
|
352
|
+
def test_file_task_dependencies_scoped_by_namespaces
|
|
353
|
+
in_environment("PWD" => "test/data/namespace") do
|
|
354
|
+
rake "scopedep.rb"
|
|
355
|
+
assert_match(/^PREPARE\nSCOPEDEP$/m, @out)
|
|
356
|
+
end
|
|
357
|
+
ensure
|
|
358
|
+
remove_namespace_files
|
|
359
|
+
end
|
|
360
|
+
|
|
288
361
|
def test_rake_returns_status_error_values
|
|
289
362
|
in_environment("PWD" => "test/data/statusreturn") do
|
|
290
363
|
rake "exit5"
|
|
@@ -299,30 +372,75 @@ class FunctionalTest < Test::Unit::TestCase
|
|
|
299
372
|
end
|
|
300
373
|
end
|
|
301
374
|
|
|
375
|
+
def test_comment_before_task_acts_like_desc
|
|
376
|
+
in_environment("PWD" => "test/data/comments") do
|
|
377
|
+
rake "-T"
|
|
378
|
+
end
|
|
379
|
+
assert_no_match(/comment for t1/, @out)
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
def test_comment_separated_from_task_by_blank_line_is_not_picked_up
|
|
383
|
+
Dir.chdir("test/data/comments") { rake("-T")}
|
|
384
|
+
assert_not_match("t2", @out)
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
def test_comment_after_desc_is_ignored
|
|
388
|
+
Dir.chdir("test/data/comments") { rake("-T")}
|
|
389
|
+
assert_match("override comment for t3", @out)
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
def test_comment_before_desc_is_ignored
|
|
393
|
+
Dir.chdir("test/data/comments") { rake("-T")}
|
|
394
|
+
assert_match("override comment for t4", @out)
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
def test_correct_number_of_tasks_reported
|
|
398
|
+
Dir.chdir("test/data/comments") { rake("-T")}
|
|
399
|
+
assert_equal(2, @out.split(/\n/).grep(/t\d/).size)
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
def test_file_list_is_requirable_separately
|
|
403
|
+
ruby "-rrake/file_list", "-e 'puts Rake::FileList[\"a\"].size'"
|
|
404
|
+
assert_equal "1\n", @out
|
|
405
|
+
assert_equal 0, @status
|
|
406
|
+
end
|
|
407
|
+
|
|
302
408
|
private
|
|
303
409
|
|
|
410
|
+
def assert_not_match(pattern, string, comment="'#{pattern}' was found (incorrectly) in '#{string}.inspect")
|
|
411
|
+
assert_nil Regexp.new(pattern).match(string), comment
|
|
412
|
+
end
|
|
413
|
+
|
|
304
414
|
def remove_chaining_files
|
|
305
415
|
%w(play.scpt play.app base).each do |fn|
|
|
306
416
|
FileUtils.rm_f File.join("test/data/chains", fn)
|
|
307
417
|
end
|
|
308
418
|
end
|
|
309
419
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
"ruby #{ruby_options} #{rake_path} #{options}"
|
|
314
|
-
}
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
def format_command=(fmt_command)
|
|
318
|
-
@format_command = fmt_command
|
|
420
|
+
def remove_namespace_files
|
|
421
|
+
%w(scopedep.rb).each do |fn|
|
|
422
|
+
FileUtils.rm_f File.join("test/data/namespace", fn)
|
|
319
423
|
end
|
|
320
424
|
end
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
425
|
+
|
|
426
|
+
# Run a shell Ruby command with command line options (using the
|
|
427
|
+
# default test options). Output is captured in @out, @err and
|
|
428
|
+
# @status.
|
|
429
|
+
def ruby(*option_list)
|
|
430
|
+
run_ruby(@ruby_options + option_list)
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
# Run a command line rake with the give rake options. Default
|
|
434
|
+
# command line ruby options are included. Output is captured in
|
|
435
|
+
# @out, @err and @status.
|
|
436
|
+
def rake(*rake_options)
|
|
437
|
+
run_ruby @ruby_options + [@rake_path] + rake_options
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
# Low level ruby command runner ...
|
|
441
|
+
def run_ruby(option_list)
|
|
324
442
|
shell = Session::Shell.new
|
|
325
|
-
command =
|
|
443
|
+
command = "#{RUBY_COMMAND} " + option_list.join(' ')
|
|
326
444
|
puts "COMMAND: [#{command}]" if @verbose
|
|
327
445
|
@out, @err = shell.execute command
|
|
328
446
|
@status = shell.exit_status
|
data/test/in_environment.rb
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
module InEnvironment
|
|
2
2
|
private
|
|
3
|
-
|
|
3
|
+
|
|
4
4
|
# Create an environment for a test. At the completion of the yielded
|
|
5
5
|
# block, the environment is restored to its original conditions.
|
|
6
|
-
def in_environment(settings)
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
def in_environment(settings=nil)
|
|
7
|
+
settings ||= {}
|
|
8
|
+
full_settings = {"RAKEOPT" => nil}.merge(settings)
|
|
9
|
+
original_settings = set_env(full_settings)
|
|
10
|
+
yield
|
|
9
11
|
ensure
|
|
10
|
-
set_env(original_settings)
|
|
12
|
+
set_env(original_settings) rescue nil
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
# Set the environment according to the settings hash.
|