rake 0.4.11 → 0.8.7

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 (101) hide show
  1. data/CHANGES +288 -1
  2. data/README +101 -114
  3. data/Rakefile +269 -54
  4. data/TODO +1 -0
  5. data/bin/rake +26 -3
  6. data/doc/command_line_usage.rdoc +102 -0
  7. data/doc/jamis.rb +133 -106
  8. data/doc/rake.1.gz +0 -0
  9. data/doc/rakefile.rdoc +304 -4
  10. data/doc/release_notes/rake-0.4.14.rdoc +23 -0
  11. data/doc/release_notes/rake-0.4.15.rdoc +35 -0
  12. data/doc/release_notes/rake-0.5.0.rdoc +53 -0
  13. data/doc/release_notes/rake-0.5.3.rdoc +78 -0
  14. data/doc/release_notes/rake-0.5.4.rdoc +46 -0
  15. data/doc/release_notes/rake-0.6.0.rdoc +141 -0
  16. data/doc/release_notes/rake-0.7.0.rdoc +119 -0
  17. data/doc/release_notes/rake-0.7.1.rdoc +59 -0
  18. data/doc/release_notes/rake-0.7.2.rdoc +121 -0
  19. data/doc/release_notes/rake-0.7.3.rdoc +47 -0
  20. data/doc/release_notes/rake-0.8.0.rdoc +114 -0
  21. data/doc/release_notes/rake-0.8.2.rdoc +165 -0
  22. data/doc/release_notes/rake-0.8.3.rdoc +112 -0
  23. data/doc/release_notes/rake-0.8.4.rdoc +147 -0
  24. data/doc/release_notes/rake-0.8.5.rdoc +53 -0
  25. data/doc/release_notes/rake-0.8.6.rdoc +55 -0
  26. data/doc/release_notes/rake-0.8.7.rdoc +55 -0
  27. data/lib/rake/alt_system.rb +108 -0
  28. data/lib/rake/classic_namespace.rb +8 -0
  29. data/lib/rake/clean.rb +3 -1
  30. data/lib/rake/contrib/ftptools.rb +40 -26
  31. data/lib/rake/contrib/publisher.rb +1 -1
  32. data/lib/rake/contrib/rubyforgepublisher.rb +3 -3
  33. data/lib/rake/contrib/sshpublisher.rb +1 -1
  34. data/lib/rake/contrib/sys.rb +25 -23
  35. data/lib/rake/gempackagetask.rb +14 -15
  36. data/lib/rake/loaders/makefile.rb +42 -0
  37. data/lib/rake/packagetask.rb +65 -33
  38. data/lib/rake/rake_test_loader.rb +5 -0
  39. data/lib/rake/rdoctask.rb +112 -31
  40. data/lib/rake/ruby182_test_unit_fix.rb +23 -0
  41. data/lib/rake/runtest.rb +4 -4
  42. data/lib/rake/tasklib.rb +11 -12
  43. data/lib/rake/testtask.rb +67 -24
  44. data/lib/rake/win32.rb +55 -0
  45. data/lib/rake.rb +2087 -578
  46. data/test/capture_stdout.rb +26 -0
  47. data/test/check_expansion.rb +5 -0
  48. data/test/check_no_expansion.rb +5 -0
  49. data/test/data/chains/Rakefile +15 -0
  50. data/test/data/default/Rakefile +19 -0
  51. data/test/data/dryrun/Rakefile +22 -0
  52. data/test/data/file_creation_task/Rakefile +33 -0
  53. data/test/data/imports/Rakefile +19 -0
  54. data/test/data/imports/deps.mf +1 -0
  55. data/test/data/multidesc/Rakefile +17 -0
  56. data/test/data/namespace/Rakefile +57 -0
  57. data/test/data/rakelib/test1.rb +3 -0
  58. data/test/data/sample.mf +14 -0
  59. data/test/data/statusreturn/Rakefile +8 -0
  60. data/test/data/unittest/Rakefile +1 -0
  61. data/test/filecreation.rb +18 -12
  62. data/test/functional.rb +6 -73
  63. data/test/in_environment.rb +30 -0
  64. data/test/rake_test_setup.rb +24 -0
  65. data/test/reqfile.rb +3 -0
  66. data/test/reqfile2.rb +3 -0
  67. data/test/session_functional.rb +339 -0
  68. data/test/shellcommand.rb +0 -0
  69. data/test/test_application.rb +675 -0
  70. data/test/{testclean.rb → test_clean.rb} +1 -0
  71. data/test/test_definitions.rb +85 -0
  72. data/test/test_earlytime.rb +35 -0
  73. data/test/test_extension.rb +63 -0
  74. data/test/test_file_creation_task.rb +62 -0
  75. data/test/test_file_task.rb +143 -0
  76. data/test/test_filelist.rb +623 -0
  77. data/test/test_fileutils.rb +251 -0
  78. data/test/{testftp.rb → test_ftp.rb} +5 -1
  79. data/test/test_invocation_chain.rb +81 -0
  80. data/test/test_makefile_loader.rb +26 -0
  81. data/test/test_multitask.rb +45 -0
  82. data/test/test_namespace.rb +55 -0
  83. data/test/{testpackagetask.rb → test_package_task.rb} +49 -12
  84. data/test/test_pathmap.rb +210 -0
  85. data/test/test_pseudo_status.rb +26 -0
  86. data/test/test_rake.rb +41 -0
  87. data/test/test_rdoc_task.rb +88 -0
  88. data/test/test_require.rb +35 -0
  89. data/test/test_rules.rb +349 -0
  90. data/test/test_task_arguments.rb +89 -0
  91. data/test/test_task_manager.rb +173 -0
  92. data/test/test_tasklib.rb +12 -0
  93. data/test/test_tasks.rb +374 -0
  94. data/test/{testtesttask.rb → test_test_task.rb} +8 -2
  95. data/test/test_top_level_functions.rb +86 -0
  96. data/test/test_win32.rb +72 -0
  97. metadata +184 -84
  98. data/test/testfilelist.rb +0 -255
  99. data/test/testfileutils.rb +0 -83
  100. data/test/testtasks.rb +0 -371
  101. /data/test/contrib/{testsys.rb → test_sys.rb} +0 -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,5 @@
1
+ if ARGV[0] != ARGV[1]
2
+ exit 1
3
+ else
4
+ exit 0
5
+ end
@@ -0,0 +1,5 @@
1
+ if ARGV[0] != ARGV[1]
2
+ exit 0
3
+ else
4
+ exit 1
5
+ 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,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ N = 2
4
+
5
+ task :default => :run
6
+
7
+ BUILD_DIR = 'build'
8
+ task :clean do
9
+ rm_rf 'build'
10
+ rm_rf 'src'
11
+ end
12
+
13
+ task :run
14
+
15
+ TARGET_DIR = 'build/copies'
16
+
17
+ FileList['src/*'].each do |src|
18
+ directory TARGET_DIR
19
+ target = File.join TARGET_DIR, File.basename(src)
20
+ file target => [src, TARGET_DIR] do
21
+ cp src, target
22
+ # sleep 3 if src !~ /foo#{N-1}$/ # I'm commenting out this sleep, it doesn't seem to do anything.
23
+ end
24
+ task :run => target
25
+ end
26
+
27
+ task :prep => :clean do
28
+ mkdir_p 'src'
29
+ N.times do |n|
30
+ puts "DBG: Touching src/foo#{n}"
31
+ touch "src/foo#{n}"
32
+ end
33
+ 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,17 @@
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
15
+
16
+ desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
17
+ task :d
@@ -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
+
@@ -0,0 +1,3 @@
1
+ task :default do
2
+ puts "TEST1"
3
+ end
@@ -0,0 +1,14 @@
1
+ # Comments
2
+ a: a1 a2 a3 a4
3
+ b: b1 b2 b3 \
4
+ b4 b5 b6\
5
+ # Mid: Comment
6
+ b7
7
+
8
+ a : a5 a6 a7
9
+ c: c1
10
+ d: d1 d2 \
11
+
12
+ e f : e1 f1
13
+
14
+ g\ 0: g1 g\ 2 g\ 3 g4
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ task :exit5 do
4
+ exit(5)
5
+ end
6
+
7
+ task :normal do
8
+ end
@@ -0,0 +1 @@
1
+ # Empty Rakefile for Unit Test
data/test/filecreation.rb CHANGED
@@ -1,26 +1,32 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'ftools'
4
-
5
3
  module FileCreation
6
- def create_timed_files(oldfile, newfile)
7
- return if File.exist?(oldfile) && File.exist?(newfile)
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) }
8
9
  old_time = create_file(oldfile)
9
- while create_file(newfile) <= old_time
10
- sleep(0.1)
11
- File.delete(newfile) rescue nil
10
+ newfiles.each do |newfile|
11
+ while create_file(newfile) <= old_time
12
+ sleep(0.1)
13
+ File.delete(newfile) rescue nil
14
+ end
12
15
  end
13
16
  end
14
17
 
15
- def create_file(name)
16
- dirname = File.dirname(name)
18
+ def create_dir(dirname)
17
19
  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
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
20
27
  end
21
28
 
22
29
  def delete_file(name)
23
30
  File.delete(name) rescue nil
24
31
  end
25
32
  end
26
-
data/test/functional.rb CHANGED
@@ -2,81 +2,14 @@
2
2
 
3
3
  begin
4
4
  require 'rubygems'
5
- require_gem 'session'
5
+ gem 'session'
6
+ require 'session'
6
7
  rescue LoadError
7
8
  puts "UNABLE TO RUN FUNCTIONAL TESTS"
8
- puts "No Session Found"
9
+ puts "No Session Found (gem install session)"
9
10
  end
10
11
 
11
- require 'test/unit'
12
- require 'fileutils'
13
-
14
- class FunctionalTest < Test::Unit::TestCase
15
- def setup
16
- @rake_path = File.expand_path("bin/rake")
17
- lib_path = File.expand_path("lib")
18
- @ruby_options = "-I#{lib_path} -I."
19
- @verbose = true if ENV['VERBOSE']
20
- end
21
-
22
- def test_rake_default
23
- Dir.chdir("test/data/default") do rake end
24
- assert_match /^DEFAULT$/, @out
25
- assert_status
26
- end
27
-
28
- def test_rake_error_on_bad_task
29
- Dir.chdir("test/data/default") do rake "xyz" end
30
- assert_match /rake aborted/, @out
31
- assert_status(1)
32
- end
33
-
34
- def test_env_availabe_at_top_scope
35
- Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end
36
- assert_match /^TOPSCOPE$/, @out
37
- assert_status
38
- end
39
-
40
- def test_env_availabe_at_task_scope
41
- Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end
42
- assert_match /^TASKSCOPE$/, @out
43
- assert_status
44
- end
45
-
46
- def test_multi_desc
47
- Dir.chdir("test/data/multidesc") do rake "-T" end
48
- assert_match %r{^rake a *# A / A2 *$}, @out
49
- assert_match %r{^rake b *# B *$}, @out
50
- assert_no_match %r{^rake c}, @out
51
- end
52
-
53
- def test_rbext
54
- Dir.chdir("test/data/rbext") do rake "-N" end
55
- assert_match %r{^OK$}, @out
56
- end
57
-
58
- def test_nosearch
59
- Dir.chdir("test/data/nosearch") do rake "-N" end
60
- assert_match %r{^No Rakefile found}, @out
61
- end
62
-
63
- private
64
-
65
- def rake(options="")
66
- shell = Session::Shell.new
67
- command = "ruby #{@ruby_options} #{@rake_path} #{options}"
68
- puts "COMMAND: [#{command}]" if @verbose
69
- @out, @err = shell.execute command
70
- @status = shell.exit_status
71
- puts "STATUS: [#{@status}]" if @verbose
72
- puts "OUTPUT: [#{@out}]" if @verbose
73
- puts "ERROR: [#{@err}]" if @verbose
74
- puts "PWD: [#{Dir.pwd}]" if @verbose
75
- shell.close
76
- end
77
-
78
- def assert_status(expected_status=0)
79
- assert_equal expected_status, @status
80
- end
81
-
12
+ if defined?(Session)
13
+ puts "RUNNING WITH SESSIONS"
14
+ require 'test/session_functional'
82
15
  end
@@ -0,0 +1,30 @@
1
+ module InEnvironment
2
+ private
3
+
4
+ # Create an environment for a test. At the completion of the yielded
5
+ # block, the environment is restored to its original conditions.
6
+ def in_environment(settings)
7
+ original_settings = set_env(settings)
8
+ yield
9
+ ensure
10
+ set_env(original_settings)
11
+ end
12
+
13
+ # Set the environment according to the settings hash.
14
+ def set_env(settings) # :nodoc:
15
+ result = {}
16
+ settings.each do |k, v|
17
+ result[k] = ENV[k]
18
+ if k == 'PWD'
19
+ result[k] = Dir.pwd
20
+ Dir.chdir(v)
21
+ elsif v.nil?
22
+ ENV.delete(k)
23
+ else
24
+ ENV[k] = v
25
+ end
26
+ end
27
+ result
28
+ end
29
+
30
+ end
@@ -0,0 +1,24 @@
1
+ # Common setup for all test files.
2
+
3
+ begin
4
+ require 'rubygems'
5
+ gem 'flexmock'
6
+ rescue LoadError
7
+ # got no gems
8
+ end
9
+
10
+ require 'flexmock/test_unit'
11
+
12
+ if RUBY_VERSION >= "1.9.0"
13
+ class Test::Unit::TestCase
14
+ # def passed?
15
+ # true
16
+ # end
17
+ end
18
+ end
19
+
20
+ module TestMethods
21
+ def assert_exception(ex, msg=nil, &block)
22
+ assert_raise(ex, msg, &block)
23
+ end
24
+ end
data/test/reqfile.rb ADDED
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 1
data/test/reqfile2.rb ADDED
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 2