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.

Files changed (42) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGES +24 -0
  3. data/README +28 -11
  4. data/Rakefile +22 -30
  5. data/bin/rake +1 -1
  6. data/doc/jamis.rb +132 -105
  7. data/doc/release_notes/rake-0.6.0.rdoc +141 -0
  8. data/lib/rake.rb +661 -455
  9. data/lib/rake/classic_namespace.rb +8 -0
  10. data/lib/rake/gempackagetask.rb +5 -3
  11. data/lib/rake/packagetask.rb +0 -2
  12. data/lib/rake/rake_test_loader.rb +1 -1
  13. data/lib/rake/testtask.rb +8 -2
  14. data/test/data/chains/Rakefile +15 -0
  15. data/test/data/default/Rakefile +19 -0
  16. data/test/data/dryrun/Rakefile +22 -0
  17. data/test/data/file_creation_task/Rakefile +30 -0
  18. data/test/data/imports/Rakefile +19 -0
  19. data/test/data/imports/deps.mf +1 -0
  20. data/test/data/multidesc/Rakefile +14 -0
  21. data/test/data/sample.mf +9 -0
  22. data/test/filecreation.rb +18 -9
  23. data/test/functional.rb +2 -130
  24. data/test/session_functional.rb +159 -0
  25. data/test/{testclean.rb → test_clean.rb} +1 -0
  26. data/test/test_definitions.rb +82 -0
  27. data/test/test_earlytime.rb +31 -0
  28. data/test/test_file_creation_task.rb +56 -0
  29. data/test/test_file_task.rb +140 -0
  30. data/test/{testfilelist.rb → test_filelist.rb} +17 -2
  31. data/test/{testfileutils.rb → test_fileutils.rb} +10 -2
  32. data/test/{testftp.rb → test_ftp.rb} +0 -0
  33. data/test/test_makefile_loader.rb +2 -0
  34. data/test/{testpackagetask.rb → test_package_task.rb} +45 -0
  35. data/test/test_rake.rb +21 -0
  36. data/test/test_rules.rb +206 -0
  37. data/test/test_tasks.rb +77 -0
  38. data/test/{testtesttask.rb → test_test_task.rb} +5 -0
  39. metadata +72 -12
  40. metadata.gz.sig +2 -0
  41. data/TAGS +0 -126
  42. 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
@@ -88,10 +88,12 @@ module Rake
88
88
  end
89
89
  end
90
90
 
91
- private
92
-
93
91
  def gem_file
94
- "#{package_name}.gem"
92
+ if @gem_spec.platform == Gem::Platform::RUBY
93
+ "#{package_name}.gem"
94
+ else
95
+ "#{package_name}-#{@gem_spec.platform}.gem"
96
+ end
95
97
  end
96
98
 
97
99
  end
@@ -148,8 +148,6 @@ module Rake
148
148
  self
149
149
  end
150
150
 
151
- private
152
-
153
151
  def package_name
154
152
  @version ? "#{@name}-#{@version}" : @name
155
153
  end
@@ -2,4 +2,4 @@
2
2
 
3
3
  # Load the test files from the command line.
4
4
 
5
- ARGV.each { |f| load f }
5
+ ARGV.each { |f| load f unless f =~ /^-/ }
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
- ruby "-I#{lib_path} #{warning_flag}\"#{run_code}\" " +
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,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,14 @@
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
@@ -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 \
data/test/filecreation.rb CHANGED
@@ -3,20 +3,29 @@
3
3
  require 'ftools'
4
4
 
5
5
  module FileCreation
6
- def create_timed_files(oldfile, newfile)
7
- return if File.exist?(oldfile) && File.exist?(newfile)
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
- while create_file(newfile) <= old_time
10
- sleep(0.1)
11
- File.delete(newfile) rescue nil
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 create_file(name)
16
- dirname = File.dirname(name)
20
+ def create_dir(dirname)
17
21
  FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
18
- open(name, "w") {|f| f.puts "HI" } unless File.exist?(name)
19
- File.new(name).mtime
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
- require 'test/unit'
12
- require 'fileutils'
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