rake 0.4.8 → 0.7.3

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 (77) hide show
  1. data/CHANGES +183 -0
  2. data/README +47 -14
  3. data/Rakefile +212 -44
  4. data/bin/rake +2 -3
  5. data/doc/jamis.rb +591 -0
  6. data/doc/rake.1.gz +0 -0
  7. data/doc/rakefile.rdoc +180 -3
  8. data/doc/release_notes/rake-0.4.14.rdoc +23 -0
  9. data/doc/release_notes/rake-0.4.15.rdoc +35 -0
  10. data/doc/release_notes/rake-0.5.0.rdoc +53 -0
  11. data/doc/release_notes/rake-0.5.3.rdoc +78 -0
  12. data/doc/release_notes/rake-0.5.4.rdoc +46 -0
  13. data/doc/release_notes/rake-0.6.0.rdoc +141 -0
  14. data/doc/release_notes/rake-0.7.0.rdoc +119 -0
  15. data/doc/release_notes/rake-0.7.1.rdoc +59 -0
  16. data/doc/release_notes/rake-0.7.2.rdoc +121 -0
  17. data/doc/release_notes/rake-0.7.3.rdoc +47 -0
  18. data/lib/rake/classic_namespace.rb +8 -0
  19. data/lib/rake/clean.rb +3 -1
  20. data/lib/rake/contrib/ftptools.rb +21 -21
  21. data/lib/rake/contrib/rubyforgepublisher.rb +3 -3
  22. data/lib/rake/contrib/sshpublisher.rb +1 -1
  23. data/lib/rake/contrib/sys.rb +20 -21
  24. data/lib/rake/gempackagetask.rb +12 -9
  25. data/lib/rake/loaders/makefile.rb +40 -0
  26. data/lib/rake/packagetask.rb +65 -33
  27. data/lib/rake/rake_test_loader.rb +5 -0
  28. data/lib/rake/rdoctask.rb +34 -15
  29. data/lib/rake/ruby182_test_unit_fix.rb +23 -0
  30. data/lib/rake/runtest.rb +4 -4
  31. data/lib/rake/tasklib.rb +3 -9
  32. data/lib/rake/testtask.rb +67 -24
  33. data/lib/rake.rb +1600 -552
  34. data/test/capture_stdout.rb +26 -0
  35. data/test/data/chains/Rakefile +15 -0
  36. data/test/data/default/Rakefile +19 -0
  37. data/test/data/dryrun/Rakefile +22 -0
  38. data/test/data/file_creation_task/Rakefile +30 -0
  39. data/test/data/imports/Rakefile +19 -0
  40. data/test/data/imports/deps.mf +1 -0
  41. data/test/data/multidesc/Rakefile +14 -0
  42. data/test/data/namespace/Rakefile +57 -0
  43. data/test/data/rakelib/test1.rb +3 -0
  44. data/test/data/sample.mf +9 -0
  45. data/test/data/unittest/Rakefile +1 -0
  46. data/test/filecreation.rb +18 -10
  47. data/test/functional.rb +3 -72
  48. data/test/reqfile.rb +3 -0
  49. data/test/reqfile2.rb +3 -0
  50. data/test/session_functional.rb +218 -0
  51. data/test/shellcommand.rb +3 -0
  52. data/test/test_application.rb +425 -0
  53. data/test/{testclean.rb → test_clean.rb} +1 -0
  54. data/test/test_definitions.rb +82 -0
  55. data/test/test_earlytime.rb +35 -0
  56. data/test/test_file_creation_task.rb +62 -0
  57. data/test/test_file_task.rb +139 -0
  58. data/test/test_filelist.rb +574 -0
  59. data/test/test_fileutils.rb +230 -0
  60. data/test/test_makefile_loader.rb +23 -0
  61. data/test/test_multitask.rb +45 -0
  62. data/test/test_namespace.rb +32 -0
  63. data/test/test_package_task.rb +130 -0
  64. data/test/test_pathmap.rb +188 -0
  65. data/test/test_rake.rb +34 -0
  66. data/test/test_require.rb +33 -0
  67. data/test/test_rules.rb +305 -0
  68. data/test/test_task_manager.rb +148 -0
  69. data/test/test_tasks.rb +146 -0
  70. data/test/{testtesttask.rb → test_test_task.rb} +5 -0
  71. data/test/test_top_level_functions.rb +79 -0
  72. metadata +134 -68
  73. data/test/testfilelist.rb +0 -255
  74. data/test/testfileutils.rb +0 -55
  75. data/test/testpackagetask.rb +0 -81
  76. data/test/testtasks.rb +0 -371
  77. /data/test/{testftp.rb → test_ftp.rb} +0 -0
@@ -27,12 +27,18 @@ module Rake
27
27
  # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tgz"</b>]
28
28
  # Create a gzipped tar package (if <em>need_tar</em> is true).
29
29
  #
30
+ # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.gz"</b>]
31
+ # Create a gzipped tar package (if <em>need_tar_gz</em> is true).
32
+ #
33
+ # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.bz2"</b>]
34
+ # Create a bzip2'd tar package (if <em>need_tar_bz2</em> is true).
35
+ #
30
36
  # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.zip"</b>]
31
37
  # Create a zip package archive (if <em>need_zip</em> is true).
32
38
  #
33
39
  # Example:
34
40
  #
35
- # PackageTask.new("rake", "1.2.3") do |p|
41
+ # Rake::PackageTask.new("rake", "1.2.3") do |p|
36
42
  # p.need_tar = true
37
43
  # p.package_files.include("lib/**/*.rb")
38
44
  # end
@@ -47,15 +53,27 @@ module Rake
47
53
  # Directory used to store the package files (default is 'pkg').
48
54
  attr_accessor :package_dir
49
55
 
50
- # True if a gzipped tar file should be produced (default is false).
56
+ # True if a gzipped tar file (tgz) should be produced (default is false).
51
57
  attr_accessor :need_tar
52
58
 
59
+ # True if a gzipped tar file (tar.gz) should be produced (default is false).
60
+ attr_accessor :need_tar_gz
61
+
62
+ # True if a bzip2'd tar file (tar.bz2) should be produced (default is false).
63
+ attr_accessor :need_tar_bz2
64
+
53
65
  # True if a zip file should be produced (default is false)
54
66
  attr_accessor :need_zip
55
67
 
56
68
  # List of files to be included in the package.
57
69
  attr_accessor :package_files
58
70
 
71
+ # Tar command for gzipped or bzip2ed archives. The default is 'tar'.
72
+ attr_accessor :tar_command
73
+
74
+ # Zip command for zipped archives. The default is 'zip'.
75
+ attr_accessor :zip_command
76
+
59
77
  # Create a Package Task with the given name and version.
60
78
  def initialize(name=nil, version=nil)
61
79
  init(name, version)
@@ -70,7 +88,11 @@ module Rake
70
88
  @package_files = Rake::FileList.new
71
89
  @package_dir = 'pkg'
72
90
  @need_tar = false
91
+ @need_tar_gz = false
92
+ @need_tar_bz2 = false
73
93
  @need_zip = false
94
+ @tar_command = 'tar'
95
+ @zip_command = 'zip'
74
96
  end
75
97
 
76
98
  # Create the tasks defined by this task library.
@@ -86,50 +108,54 @@ module Rake
86
108
 
87
109
  desc "Remove package products"
88
110
  task :clobber_package do
89
- rm_r package_dir rescue nil
111
+ rm_r package_dir rescue nil
90
112
  end
91
113
 
92
114
  task :clobber => [:clobber_package]
93
115
 
94
- if need_tar
95
- task :package => ["#{package_dir}/#{tgz_file}"]
96
- file "#{package_dir}/#{tgz_file}" => [package_dir_path] + package_files do
97
- chdir(package_dir) do
98
- sh %{tar zcvf #{tgz_file} #{package_name}}
99
- end
100
- end
116
+ [
117
+ [need_tar, tgz_file, "z"],
118
+ [need_tar_gz, tar_gz_file, "z"],
119
+ [need_tar_bz2, tar_bz2_file, "j"]
120
+ ].each do |(need, file, flag)|
121
+ if need
122
+ task :package => ["#{package_dir}/#{file}"]
123
+ file "#{package_dir}/#{file}" => [package_dir_path] + package_files do
124
+ chdir(package_dir) do
125
+ sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}}
126
+ end
127
+ end
128
+ end
101
129
  end
102
-
130
+
103
131
  if need_zip
104
- task :package => ["#{package_dir}/#{zip_file}"]
105
- file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
106
- chdir(package_dir) do
107
- sh %{zip -r #{zip_file} #{package_name}}
108
- end
109
- end
132
+ task :package => ["#{package_dir}/#{zip_file}"]
133
+ file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
134
+ chdir(package_dir) do
135
+ sh %{#{@zip_command} -r #{zip_file} #{package_name}}
136
+ end
137
+ end
110
138
  end
111
139
 
112
140
  directory package_dir
113
141
 
114
142
  file package_dir_path => @package_files do
115
- mkdir_p package_dir rescue nil
116
- @package_files.each do |fn|
117
- f = File.join(package_dir_path, fn)
118
- fdir = File.dirname(f)
119
- mkdir_p(fdir) if !File.exist?(fdir)
120
- if File.directory?(fn)
121
- mkdir_p(f)
122
- else
123
- rm_f f
124
- safe_ln(fn, f)
125
- end
126
- end
143
+ mkdir_p package_dir rescue nil
144
+ @package_files.each do |fn|
145
+ f = File.join(package_dir_path, fn)
146
+ fdir = File.dirname(f)
147
+ mkdir_p(fdir) if !File.exist?(fdir)
148
+ if File.directory?(fn)
149
+ mkdir_p(f)
150
+ else
151
+ rm_f f
152
+ safe_ln(fn, f)
153
+ end
154
+ end
127
155
  end
128
156
  self
129
157
  end
130
158
 
131
- private
132
-
133
159
  def package_name
134
160
  @version ? "#{@name}-#{@version}" : @name
135
161
  end
@@ -142,11 +168,17 @@ module Rake
142
168
  "#{package_name}.tgz"
143
169
  end
144
170
 
171
+ def tar_gz_file
172
+ "#{package_name}.tar.gz"
173
+ end
174
+
175
+ def tar_bz2_file
176
+ "#{package_name}.tar.bz2"
177
+ end
178
+
145
179
  def zip_file
146
180
  "#{package_name}.zip"
147
181
  end
148
182
  end
149
183
 
150
184
  end
151
-
152
-
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Load the test files from the command line.
4
+
5
+ ARGV.each { |f| load f unless f =~ /^-/ }
data/lib/rake/rdoctask.rb CHANGED
@@ -8,22 +8,22 @@ module Rake
8
8
  # Create a documentation task that will generate the RDoc files for
9
9
  # a project.
10
10
  #
11
- # The PackageTask will create the following targets:
11
+ # The RDocTask will create the following targets:
12
12
  #
13
13
  # [<b><em>rdoc</em></b>]
14
14
  # Main task for this RDOC task.
15
15
  #
16
16
  # [<b>:clobber_<em>rdoc</em></b>]
17
- # Delete all the package files. This target is automatically
17
+ # Delete all the rdoc files. This target is automatically
18
18
  # added to the main clobber target.
19
19
  #
20
20
  # [<b>:re<em>rdoc</em></b>]
21
- # Rebuild the package files from scratch, even if they are not out
21
+ # Rebuild the rdoc files from scratch, even if they are not out
22
22
  # of date.
23
23
  #
24
24
  # Simple Example:
25
25
  #
26
- # RDocTask.new do |rd|
26
+ # Rake::RDocTask.new do |rd|
27
27
  # rd.main = "README.rdoc"
28
28
  # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
29
29
  # end
@@ -32,7 +32,7 @@ module Rake
32
32
  # generating two sets of documentation. For instance, if you want to have a
33
33
  # development set of documentation including private methods:
34
34
  #
35
- # RDocTask.new(:rdoc_dev) do |rd|
35
+ # Rake::RDocTask.new(:rdoc_dev) do |rd|
36
36
  # rd.main = "README.doc"
37
37
  # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
38
38
  # rd.options << "--all"
@@ -64,14 +64,18 @@ module Rake
64
64
  # List of options to be passed rdoc. (default is [])
65
65
  attr_accessor :options
66
66
 
67
+ # Run the rdoc process as an external shell (default is false)
68
+ attr_accessor :external
69
+
67
70
  # Create an RDoc task named <em>rdoc</em>. Default task name is +rdoc+.
68
- def initialize(name=:rdoc) # :yield: self
71
+ def initialize(name=:rdoc) # :yield: self
69
72
  @name = name
70
73
  @rdoc_files = Rake::FileList.new
71
74
  @rdoc_dir = 'html'
72
75
  @main = nil
73
76
  @title = nil
74
77
  @template = 'html'
78
+ @external = false
75
79
  @options = []
76
80
  yield self if block_given?
77
81
  define
@@ -80,7 +84,7 @@ module Rake
80
84
  # Create the tasks defined by this task lib.
81
85
  def define
82
86
  if name.to_s != "rdoc"
83
- desc "Build the RDOC HTML Files"
87
+ desc "Build the RDOC HTML Files"
84
88
  end
85
89
 
86
90
  desc "Build the #{name} HTML Files"
@@ -91,29 +95,44 @@ module Rake
91
95
 
92
96
  desc "Remove rdoc products"
93
97
  task paste("clobber_", name) do
94
- rm_r rdoc_dir rescue nil
98
+ rm_r rdoc_dir rescue nil
95
99
  end
96
100
 
97
101
  task :clobber => [paste("clobber_", name)]
98
102
 
99
103
  directory @rdoc_dir
100
104
  task name => [rdoc_target]
101
- file rdoc_target => @rdoc_files + ["Rakefile"] do
102
- rm_r @rdoc_dir rescue nil
103
- opts = option_list.join(' ')
104
- sh %{rdoc -o #{@rdoc_dir} #{opts} #{@rdoc_files}}
105
+ file rdoc_target => @rdoc_files + [$rakefile] do
106
+ rm_r @rdoc_dir rescue nil
107
+ args = option_list + @rdoc_files
108
+ if @external
109
+ argstring = args.join(' ')
110
+ sh %{ruby -Ivendor vender/rd #{argstring}}
111
+ else
112
+ require 'rdoc/rdoc'
113
+ RDoc::RDoc.new.document(args)
114
+ end
105
115
  end
106
116
  self
107
117
  end
108
118
 
109
119
  def option_list
110
120
  result = @options.dup
111
- result << "--main" << "'#{main}'" if main
112
- result << "--title" << "'#{title}'" if title
113
- result << "-T" << "'#{template}'" if template
121
+ result << "-o" << @rdoc_dir
122
+ result << "--main" << quote(main) if main
123
+ result << "--title" << quote(title) if title
124
+ result << "-T" << quote(template) if template
114
125
  result
115
126
  end
116
127
 
128
+ def quote(str)
129
+ if @external
130
+ "'#{str}'"
131
+ else
132
+ str
133
+ end
134
+ end
135
+
117
136
  def option_string
118
137
  option_list.join(' ')
119
138
  end
@@ -0,0 +1,23 @@
1
+ module Test
2
+ module Unit
3
+ module Collector
4
+ class Dir
5
+ undef collect_file
6
+ def collect_file(name, suites, already_gathered)
7
+ # loadpath = $:.dup
8
+ dir = File.dirname(File.expand_path(name))
9
+ $:.unshift(dir) unless $:.first == dir
10
+ if(@req)
11
+ @req.require(name)
12
+ else
13
+ require(name)
14
+ end
15
+ find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
16
+ ensure
17
+ # $:.replace(loadpath)
18
+ $:.delete_at $:.rindex(dir)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
data/lib/rake/runtest.rb CHANGED
@@ -10,11 +10,11 @@ module Rake
10
10
  Dir["#{pattern}"].each { |fn|
11
11
  puts fn if log_enabled
12
12
  begin
13
- load fn
13
+ load fn
14
14
  rescue Exception => ex
15
- puts "Error in #{fn}: #{ex.message}"
16
- puts ex.backtrace
17
- assert false
15
+ puts "Error in #{fn}: #{ex.message}"
16
+ puts ex.backtrace
17
+ assert false
18
18
  end
19
19
  }
20
20
  end
data/lib/rake/tasklib.rb CHANGED
@@ -1,19 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'rake'
4
+
3
5
  module Rake
4
6
 
5
7
  # Base class for Task Libraries.
6
8
  class TaskLib
7
9
 
8
- # Make a copy of a task.
9
- def clone
10
- sibling = self.class.new
11
- instance_variables.each do |ivar|
12
- value = self.instance_variable_get(ivar)
13
- sibling.instance_variable_set(ivar, value.dup) if value
14
- end
15
- sibling
16
- end
10
+ include Cloneable
17
11
 
18
12
  # Make a symbol by pasting two strings together.
19
13
  def paste(a,b)
data/lib/rake/testtask.rb CHANGED
@@ -36,8 +36,6 @@ module Rake
36
36
  #
37
37
  class TestTask < TaskLib
38
38
 
39
- SEP = ''
40
-
41
39
  # Name of test task. (default is :test)
42
40
  attr_accessor :name
43
41
 
@@ -48,12 +46,29 @@ module Rake
48
46
  # True if verbose test output desired. (default is false)
49
47
  attr_accessor :verbose
50
48
 
51
- # Test options passed to the test suite. (default is NONE)
49
+ # Test options passed to the test suite. An explicit
50
+ # TESTOPTS=opts on the command line will override this. (default
51
+ # is NONE)
52
52
  attr_accessor :options
53
53
 
54
+ # Request that the tests be run with the warning flag set.
55
+ # E.g. warning=true implies "ruby -w" used to run the tests.
56
+ attr_accessor :warning
57
+
54
58
  # Glob pattern to match test files. (default is 'test/test*.rb')
55
59
  attr_accessor :pattern
56
60
 
61
+ # Style of test loader to use. Options are:
62
+ #
63
+ # * :rake -- Rake provided test loading script (default).
64
+ # * :testrb -- Ruby provided test loading script.
65
+ # * :direct -- Load tests using command line loader.
66
+ #
67
+ attr_accessor :loader
68
+
69
+ # Array of commandline options to pass to ruby when running test loader.
70
+ attr_accessor :ruby_opts
71
+
57
72
  # Explicitly define the list of test files to be included in a
58
73
  # test. +list+ is expected to be an array of file names (a
59
74
  # FileList is acceptable). If both +pattern+ and +test_files+ are
@@ -67,8 +82,12 @@ module Rake
67
82
  @name = name
68
83
  @libs = ["lib"]
69
84
  @pattern = nil
85
+ @options = nil
70
86
  @test_files = nil
71
87
  @verbose = false
88
+ @warning = false
89
+ @loader = :rake
90
+ @ruby_opts = []
72
91
  yield self if block_given?
73
92
  @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
74
93
  define
@@ -79,40 +98,64 @@ module Rake
79
98
  lib_path = @libs.join(File::PATH_SEPARATOR)
80
99
  desc "Run tests" + (@name==:test ? "" : " for #{@name}")
81
100
  task @name do
82
- RakeFileUtils.verbose(@verbose) do
83
- ruby %{-I#{lib_path} -e0 #{SEP}#{required_files}#{option_list}}
84
- end
101
+ run_code = ''
102
+ RakeFileUtils.verbose(@verbose) do
103
+ run_code =
104
+ case @loader
105
+ when :direct
106
+ "-e 'ARGV.each{|f| load f}'"
107
+ when :testrb
108
+ "-S testrb #{fix}"
109
+ when :rake
110
+ rake_loader
111
+ end
112
+ @ruby_opts.unshift( "-I#{lib_path}" )
113
+ @ruby_opts.unshift( "-w" ) if @warning
114
+ ruby @ruby_opts.join(" ") +
115
+ " \"#{run_code}\" " +
116
+ file_list.collect { |fn| "\"#{fn}\"" }.join(' ') +
117
+ " #{option_list}"
118
+ end
85
119
  end
86
120
  self
87
121
  end
88
122
 
89
- def required_files # :nodoc:
90
- file_list.gsub(/^(.*)\.rb$/, ' -r\1').join(" #{SEP}")
91
- end
92
-
93
123
  def option_list # :nodoc:
94
- if get_options
95
- testoptions = " #{SEP} -- #{get_options}"
124
+ ENV['TESTOPTS'] || @options || ""
125
+ end
126
+
127
+ def file_list # :nodoc:
128
+ if ENV['TEST']
129
+ FileList[ ENV['TEST'] ]
96
130
  else
97
- testoptions = ''
131
+ result = []
132
+ result += @test_files.to_a if @test_files
133
+ result += FileList[ @pattern ].to_a if @pattern
134
+ FileList[result]
98
135
  end
99
136
  end
100
137
 
101
- def get_options # :nodoc:
102
- ENV['TESTOPTS'] || @options
138
+ def fix # :nodoc:
139
+ case RUBY_VERSION
140
+ when '1.8.2'
141
+ find_file 'rake/ruby182_test_unit_fix'
142
+ else
143
+ nil
144
+ end || ''
103
145
  end
104
146
 
105
- def file_list # :nodoc:
106
- if ENV['TEST']
107
- FileList[ ENV['TEST'] ]
108
- else
109
- result = []
110
- result += @test_files.to_a if @test_files
111
- result += FileList[ @pattern ].to_a if @pattern
112
- FileList[result]
147
+ def rake_loader # :nodoc:
148
+ find_file('rake/rake_test_loader') or
149
+ fail "unable to find rake test loader"
150
+ end
151
+
152
+ def find_file(fn) # :nodoc:
153
+ $LOAD_PATH.each do |path|
154
+ file_path = File.join(path, "#{fn}.rb")
155
+ return file_path if File.exist? file_path
113
156
  end
157
+ nil
114
158
  end
115
159
 
116
160
  end
117
161
  end
118
-