rake 0.5.4 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rake might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/CHANGES +24 -0
- data/README +28 -11
- data/Rakefile +22 -30
- data/bin/rake +1 -1
- data/doc/jamis.rb +132 -105
- data/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/lib/rake.rb +661 -455
- data/lib/rake/classic_namespace.rb +8 -0
- data/lib/rake/gempackagetask.rb +5 -3
- data/lib/rake/packagetask.rb +0 -2
- data/lib/rake/rake_test_loader.rb +1 -1
- data/lib/rake/testtask.rb +8 -2
- 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 +14 -0
- data/test/data/sample.mf +9 -0
- data/test/filecreation.rb +18 -9
- data/test/functional.rb +2 -130
- data/test/session_functional.rb +159 -0
- data/test/{testclean.rb → test_clean.rb} +1 -0
- data/test/test_definitions.rb +82 -0
- data/test/test_earlytime.rb +31 -0
- data/test/test_file_creation_task.rb +56 -0
- data/test/test_file_task.rb +140 -0
- data/test/{testfilelist.rb → test_filelist.rb} +17 -2
- data/test/{testfileutils.rb → test_fileutils.rb} +10 -2
- data/test/{testftp.rb → test_ftp.rb} +0 -0
- data/test/test_makefile_loader.rb +2 -0
- data/test/{testpackagetask.rb → test_package_task.rb} +45 -0
- data/test/test_rake.rb +21 -0
- data/test/test_rules.rb +206 -0
- data/test/test_tasks.rb +77 -0
- data/test/{testtesttask.rb → test_test_task.rb} +5 -0
- metadata +72 -12
- metadata.gz.sig +2 -0
- data/TAGS +0 -126
- data/test/testtasks.rb +0 -400
@@ -0,0 +1,8 @@
|
|
1
|
+
# The following classes used to be in the top level namespace.
|
2
|
+
# Loading this file enables compatibility with older Rakefile that
|
3
|
+
# referenced Task from the top level.
|
4
|
+
|
5
|
+
Task = Rake::Task
|
6
|
+
FileTask = Rake::FileTask
|
7
|
+
FileCreationTask = Rake::FileCreationTask
|
8
|
+
RakeApp = Rake::Application
|
data/lib/rake/gempackagetask.rb
CHANGED
data/lib/rake/packagetask.rb
CHANGED
data/lib/rake/testtask.rb
CHANGED
@@ -66,6 +66,9 @@ module Rake
|
|
66
66
|
#
|
67
67
|
attr_accessor :loader
|
68
68
|
|
69
|
+
# Array of commandline options to pass to ruby when running test loader.
|
70
|
+
attr_accessor :ruby_opts
|
71
|
+
|
69
72
|
# Explicitly define the list of test files to be included in a
|
70
73
|
# test. +list+ is expected to be an array of file names (a
|
71
74
|
# FileList is acceptable). If both +pattern+ and +test_files+ are
|
@@ -84,6 +87,7 @@ module Rake
|
|
84
87
|
@verbose = false
|
85
88
|
@warning = false
|
86
89
|
@loader = :rake
|
90
|
+
@ruby_opts = []
|
87
91
|
yield self if block_given?
|
88
92
|
@pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
|
89
93
|
define
|
@@ -92,7 +96,6 @@ module Rake
|
|
92
96
|
# Create the tasks defined by this task lib.
|
93
97
|
def define
|
94
98
|
lib_path = @libs.join(File::PATH_SEPARATOR)
|
95
|
-
warning_flag = (@warning ? "-w " : "")
|
96
99
|
desc "Run tests" + (@name==:test ? "" : " for #{@name}")
|
97
100
|
task @name do
|
98
101
|
run_code = ''
|
@@ -106,7 +109,10 @@ module Rake
|
|
106
109
|
when :rake
|
107
110
|
rake_loader
|
108
111
|
end
|
109
|
-
|
112
|
+
@ruby_opts.unshift( "-I#{lib_path}" )
|
113
|
+
@ruby_opts.unshift( "-w" ) if @warning
|
114
|
+
ruby @ruby_opts.join(" ") +
|
115
|
+
" \"#{run_code}\" " +
|
110
116
|
file_list.collect { |fn| "\"#{fn}\"" }.join(' ') +
|
111
117
|
" #{option_list}"
|
112
118
|
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
|
data/test/data/sample.mf
ADDED
data/test/filecreation.rb
CHANGED
@@ -3,20 +3,29 @@
|
|
3
3
|
require 'ftools'
|
4
4
|
|
5
5
|
module FileCreation
|
6
|
-
|
7
|
-
|
6
|
+
OLDFILE = "testdata/old"
|
7
|
+
NEWFILE = "testdata/new"
|
8
|
+
|
9
|
+
def create_timed_files(oldfile, *newfiles)
|
10
|
+
return if File.exist?(oldfile) && newfiles.all? { |newfile| File.exist?(newfile) }
|
8
11
|
old_time = create_file(oldfile)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
+
newfiles.each do |newfile|
|
13
|
+
while create_file(newfile) <= old_time
|
14
|
+
sleep(0.1)
|
15
|
+
File.delete(newfile) rescue nil
|
16
|
+
end
|
12
17
|
end
|
13
18
|
end
|
14
19
|
|
15
|
-
def
|
16
|
-
dirname = File.dirname(name)
|
20
|
+
def create_dir(dirname)
|
17
21
|
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
18
|
-
|
19
|
-
|
22
|
+
File.stat(dirname).mtime
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_file(name)
|
26
|
+
create_dir(File.dirname(name))
|
27
|
+
FileUtils.touch(name) unless File.exist?(name)
|
28
|
+
File.stat(name).mtime
|
20
29
|
end
|
21
30
|
|
22
31
|
def delete_file(name)
|
data/test/functional.rb
CHANGED
@@ -8,134 +8,6 @@ rescue LoadError
|
|
8
8
|
puts "No Session Found"
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
require '
|
13
|
-
|
14
|
-
# Version 2.1.9 of session has a bug where the @debug instance
|
15
|
-
# variable is not initialized, causing warning messages. This snippet
|
16
|
-
# of code fixes that problem.
|
17
|
-
module Session
|
18
|
-
class AbstractSession
|
19
|
-
alias old_initialize initialize
|
20
|
-
def initialize(*args)
|
21
|
-
@debug = nil
|
22
|
-
old_initialize(*args)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class FunctionalTest < Test::Unit::TestCase
|
28
|
-
def setup
|
29
|
-
@rake_path = File.expand_path("bin/rake")
|
30
|
-
lib_path = File.expand_path("lib")
|
31
|
-
@ruby_options = "-I#{lib_path} -I."
|
32
|
-
@verbose = ! ENV['VERBOSE'].nil?
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_rake_default
|
36
|
-
Dir.chdir("test/data/default") do rake end
|
37
|
-
assert_match(/^DEFAULT$/, @out)
|
38
|
-
assert_status
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_rake_error_on_bad_task
|
42
|
-
Dir.chdir("test/data/default") do rake "xyz" end
|
43
|
-
assert_match(/rake aborted/, @out)
|
44
|
-
assert_status(1)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_env_availabe_at_top_scope
|
48
|
-
Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end
|
49
|
-
assert_match(/^TOPSCOPE$/, @out)
|
50
|
-
assert_status
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_env_availabe_at_task_scope
|
54
|
-
Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end
|
55
|
-
assert_match(/^TASKSCOPE$/, @out)
|
56
|
-
assert_status
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_multi_desc
|
60
|
-
Dir.chdir("test/data/multidesc") do rake "-T" end
|
61
|
-
assert_match %r{^rake a *# A / A2 *$}, @out
|
62
|
-
assert_match %r{^rake b *# B *$}, @out
|
63
|
-
assert_no_match %r{^rake c}, @out
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_rbext
|
67
|
-
Dir.chdir("test/data/rbext") do rake "-N" end
|
68
|
-
assert_match %r{^OK$}, @out
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_nosearch
|
72
|
-
Dir.chdir("test/data/nosearch") do rake "-N" end
|
73
|
-
assert_match %r{^No Rakefile found}, @out
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_dry_run
|
77
|
-
Dir.chdir("test/data/default") do rake "-n", "other" end
|
78
|
-
assert_match %r{Execute \(dry run\) default}, @out
|
79
|
-
assert_match %r{Execute \(dry run\) other}, @out
|
80
|
-
assert_no_match %r{DEFAULT}, @out
|
81
|
-
assert_no_match %r{OTHER}, @out
|
82
|
-
end
|
83
|
-
|
84
|
-
# Test for the trace/dry_run bug found by Brian Chandler
|
85
|
-
def test_dry_run_bug
|
86
|
-
Dir.chdir("test/data/dryrun") do rake end
|
87
|
-
FileUtils.rm_f "test/data/dryrun/temp_one"
|
88
|
-
Dir.chdir("test/data/dryrun") do rake "--dry-run" end
|
89
|
-
assert_no_match(/No such file/, @out)
|
90
|
-
assert_status
|
91
|
-
end
|
92
|
-
|
93
|
-
# Test for the trace/dry_run bug found by Brian Chandler
|
94
|
-
def test_trace_bug
|
95
|
-
Dir.chdir("test/data/dryrun") do rake end
|
96
|
-
FileUtils.rm_f "test/data/dryrun/temp_one"
|
97
|
-
Dir.chdir("test/data/dryrun") do rake "--trace" end
|
98
|
-
assert_no_match(/No such file/, @out)
|
99
|
-
assert_status
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_imports
|
103
|
-
FileUtils.rm_f "test/data/imports/dynamic_deps"
|
104
|
-
Dir.chdir("test/data/imports") do rake end
|
105
|
-
assert File.exist?("test/data/imports/dynamic_deps"),
|
106
|
-
"'dynamic_deps' file should exist"
|
107
|
-
assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out)
|
108
|
-
assert_status
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_rules_chaining_to_file_task
|
112
|
-
%w(play.scpt play.app).each do |fn|
|
113
|
-
FileUtils.rm_f File.join("test/data/chains", fn)
|
114
|
-
end
|
115
|
-
Dir.chdir("test/data/chains") do rake end
|
116
|
-
assert File.exist?("test/data/chains/play.app"),
|
117
|
-
"'play.app' file should exist"
|
118
|
-
assert_status
|
119
|
-
end
|
120
|
-
|
121
|
-
private
|
122
|
-
|
123
|
-
def rake(*option_list)
|
124
|
-
options = option_list.join(' ')
|
125
|
-
shell = Session::Shell.new
|
126
|
-
command = "ruby #{@ruby_options} #{@rake_path} #{options}"
|
127
|
-
puts "COMMAND: [#{command}]" if @verbose
|
128
|
-
@out, @err = shell.execute command
|
129
|
-
@status = shell.exit_status
|
130
|
-
puts "STATUS: [#{@status}]" if @verbose
|
131
|
-
puts "OUTPUT: [#{@out}]" if @verbose
|
132
|
-
puts "ERROR: [#{@err}]" if @verbose
|
133
|
-
puts "PWD: [#{Dir.pwd}]" if @verbose
|
134
|
-
shell.close
|
135
|
-
end
|
136
|
-
|
137
|
-
def assert_status(expected_status=0)
|
138
|
-
assert_equal expected_status, @status
|
139
|
-
end
|
140
|
-
|
11
|
+
if defined?(Session)
|
12
|
+
require 'test/session_functional'
|
141
13
|
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
# Version 2.1.9 of session has a bug where the @debug instance
|
7
|
+
# variable is not initialized, causing warning messages. This snippet
|
8
|
+
# of code fixes that problem.
|
9
|
+
module Session
|
10
|
+
class AbstractSession
|
11
|
+
alias old_initialize initialize
|
12
|
+
def initialize(*args)
|
13
|
+
@debug = nil
|
14
|
+
old_initialize(*args)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class FunctionalTest < Test::Unit::TestCase
|
20
|
+
def setup
|
21
|
+
@rake_path = File.expand_path("bin/rake")
|
22
|
+
lib_path = File.expand_path("lib")
|
23
|
+
@ruby_options = "-I#{lib_path} -I."
|
24
|
+
@verbose = ! ENV['VERBOSE'].nil?
|
25
|
+
if @verbose
|
26
|
+
puts
|
27
|
+
puts
|
28
|
+
puts "--------------------------------------------------------------------"
|
29
|
+
puts name
|
30
|
+
puts "--------------------------------------------------------------------"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_rake_default
|
35
|
+
Dir.chdir("test/data/default") do rake end
|
36
|
+
assert_match(/^DEFAULT$/, @out)
|
37
|
+
assert_status
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_rake_error_on_bad_task
|
41
|
+
Dir.chdir("test/data/default") do rake "xyz" end
|
42
|
+
assert_match(/rake aborted/, @out)
|
43
|
+
assert_status(1)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_env_availabe_at_top_scope
|
47
|
+
Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end
|
48
|
+
assert_match(/^TOPSCOPE$/, @out)
|
49
|
+
assert_status
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_env_availabe_at_task_scope
|
53
|
+
Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end
|
54
|
+
assert_match(/^TASKSCOPE$/, @out)
|
55
|
+
assert_status
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_multi_desc
|
59
|
+
Dir.chdir("test/data/multidesc") do rake "-T" end
|
60
|
+
assert_match %r{^rake a *# A / A2 *$}, @out
|
61
|
+
assert_match %r{^rake b *# B *$}, @out
|
62
|
+
assert_no_match %r{^rake c}, @out
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_rbext
|
66
|
+
Dir.chdir("test/data/rbext") do rake "-N" end
|
67
|
+
assert_match %r{^OK$}, @out
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_nosearch
|
71
|
+
Dir.chdir("test/data/nosearch") do rake "-N" end
|
72
|
+
assert_match %r{^No Rakefile found}, @out
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_dry_run
|
76
|
+
Dir.chdir("test/data/default") do rake "-n", "other" end
|
77
|
+
assert_match %r{Execute \(dry run\) default}, @out
|
78
|
+
assert_match %r{Execute \(dry run\) other}, @out
|
79
|
+
assert_no_match %r{DEFAULT}, @out
|
80
|
+
assert_no_match %r{OTHER}, @out
|
81
|
+
end
|
82
|
+
|
83
|
+
# Test for the trace/dry_run bug found by Brian Chandler
|
84
|
+
def test_dry_run_bug
|
85
|
+
Dir.chdir("test/data/dryrun") do rake end
|
86
|
+
FileUtils.rm_f "test/data/dryrun/temp_one"
|
87
|
+
Dir.chdir("test/data/dryrun") do rake "--dry-run" end
|
88
|
+
assert_no_match(/No such file/, @out)
|
89
|
+
assert_status
|
90
|
+
end
|
91
|
+
|
92
|
+
# Test for the trace/dry_run bug found by Brian Chandler
|
93
|
+
def test_trace_bug
|
94
|
+
Dir.chdir("test/data/dryrun") do rake end
|
95
|
+
FileUtils.rm_f "test/data/dryrun/temp_one"
|
96
|
+
Dir.chdir("test/data/dryrun") do rake "--trace" end
|
97
|
+
assert_no_match(/No such file/, @out)
|
98
|
+
assert_status
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_imports
|
102
|
+
open("test/data/imports/static_deps", "w") do |f|
|
103
|
+
f.puts 'puts "STATIC"'
|
104
|
+
end
|
105
|
+
FileUtils.rm_f "test/data/imports/dynamic_deps"
|
106
|
+
Dir.chdir("test/data/imports") do rake end
|
107
|
+
assert File.exist?("test/data/imports/dynamic_deps"),
|
108
|
+
"'dynamic_deps' file should exist"
|
109
|
+
assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out)
|
110
|
+
assert_status
|
111
|
+
FileUtils.rm_f "test/data/imports/dynamic_deps"
|
112
|
+
FileUtils.rm_f "test/data/imports/static_deps"
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_rules_chaining_to_file_task
|
116
|
+
remove_chaining_files
|
117
|
+
Dir.chdir("test/data/chains") do rake end
|
118
|
+
assert File.exist?("test/data/chains/play.app"),
|
119
|
+
"'play.app' file should exist"
|
120
|
+
assert_status
|
121
|
+
remove_chaining_files
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_file_creation_task
|
125
|
+
Dir.chdir("test/data/file_creation_task") do
|
126
|
+
rake "prep"
|
127
|
+
rake "run"
|
128
|
+
rake "run"
|
129
|
+
assert(@err !~ /^cp src/, "Should not recopy data")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
def remove_chaining_files
|
136
|
+
%w(play.scpt play.app base).each do |fn|
|
137
|
+
FileUtils.rm_f File.join("test/data/chains", fn)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def rake(*option_list)
|
142
|
+
options = option_list.join(' ')
|
143
|
+
shell = Session::Shell.new
|
144
|
+
command = "ruby #{@ruby_options} #{@rake_path} #{options}"
|
145
|
+
puts "COMMAND: [#{command}]" if @verbose
|
146
|
+
@out, @err = shell.execute command
|
147
|
+
@status = shell.exit_status
|
148
|
+
puts "STATUS: [#{@status}]" if @verbose
|
149
|
+
puts "OUTPUT: [#{@out}]" if @verbose
|
150
|
+
puts "ERROR: [#{@err}]" if @verbose
|
151
|
+
puts "PWD: [#{Dir.pwd}]" if @verbose
|
152
|
+
shell.close
|
153
|
+
end
|
154
|
+
|
155
|
+
def assert_status(expected_status=0)
|
156
|
+
assert_equal expected_status, @status
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|