drake 0.8.3.1.0.14 → 0.8.4.1.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGES +27 -0
  2. data/CHANGES.drake +4 -0
  3. data/README +98 -198
  4. data/Rakefile +2 -4
  5. data/Rakefile.drake +0 -4
  6. data/doc/command_line_usage.rdoc +102 -0
  7. data/doc/rakefile.rdoc +4 -4
  8. data/doc/release_notes/rake-0.8.4.rdoc +147 -0
  9. data/lib/rake.rb +94 -60
  10. data/lib/rake/alt_system.rb +108 -0
  11. data/lib/rake/contrib/publisher.rb +1 -1
  12. data/lib/rake/contrib/sys.rb +1 -1
  13. data/lib/rake/gempackagetask.rb +0 -6
  14. data/lib/rake/loaders/makefile.rb +8 -1
  15. data/lib/rake/packagetask.rb +0 -1
  16. data/lib/rake/rdoctask.rb +79 -17
  17. data/lib/rake/testtask.rb +1 -1
  18. data/lib/rake/win32.rb +11 -10
  19. data/test/Rakefile.seq +1 -1
  20. data/test/Rakefile.simple +14 -25
  21. data/test/check_no_expansion.rb +5 -0
  22. data/test/data/sample.mf +2 -0
  23. data/test/rake_test_setup.rb +14 -0
  24. data/test/session_functional.rb +2 -0
  25. data/test/test_application.rb +25 -44
  26. data/test/test_definitions.rb +4 -1
  27. data/test/test_file_task.rb +20 -16
  28. data/test/test_filelist.rb +8 -3
  29. data/test/test_fileutils.rb +45 -44
  30. data/test/test_invocation_chain.rb +8 -2
  31. data/test/test_makefile_loader.rb +2 -1
  32. data/test/test_namespace.rb +30 -11
  33. data/test/test_package_task.rb +3 -1
  34. data/test/test_parallel.rb +4 -15
  35. data/test/test_pathmap.rb +3 -2
  36. data/test/test_pseudo_status.rb +26 -0
  37. data/test/test_rdoc_task.rb +88 -0
  38. data/test/test_require.rb +3 -1
  39. data/test/test_rules.rb +7 -5
  40. data/test/test_task_manager.rb +4 -1
  41. data/test/test_tasks.rb +7 -4
  42. data/test/test_test_task.rb +2 -0
  43. data/test/test_top_level_functions.rb +4 -2
  44. data/test/test_win32.rb +29 -14
  45. metadata +12 -4
@@ -0,0 +1,5 @@
1
+ if ARGV[0] != ARGV[1]
2
+ exit 0
3
+ else
4
+ exit 1
5
+ end
data/test/data/sample.mf CHANGED
@@ -10,3 +10,5 @@ c: c1
10
10
  d: d1 d2 \
11
11
 
12
12
  e f : e1 f1
13
+
14
+ g\ 0: g1 g\ 2 g\ 3 g4
@@ -8,3 +8,17 @@ rescue LoadError
8
8
  end
9
9
 
10
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
@@ -8,6 +8,7 @@ require 'test/unit'
8
8
  require 'fileutils'
9
9
  require 'session'
10
10
  require 'test/in_environment'
11
+ require 'test/rake_test_setup'
11
12
 
12
13
  # Version 2.1.9 of session has a bug where the @debug instance
13
14
  # variable is not initialized, causing warning messages. This snippet
@@ -24,6 +25,7 @@ end
24
25
 
25
26
  class FunctionalTest < Test::Unit::TestCase
26
27
  include InEnvironment
28
+ include TestMethods
27
29
 
28
30
  RUBY_COMMAND = 'ruby'
29
31
 
@@ -18,6 +18,7 @@ TESTING_REQUIRE = [ ]
18
18
  class TestApplication < Test::Unit::TestCase
19
19
  include CaptureStdout
20
20
  include InEnvironment
21
+ include TestMethods
21
22
 
22
23
  def setup
23
24
  @app = Rake::Application.new
@@ -109,7 +110,7 @@ class TestApplication < Test::Unit::TestCase
109
110
  end
110
111
 
111
112
  def test_finding_rakefile
112
- assert_match(/[Rr]akefile/, @app.instance_eval { have_rakefile })
113
+ assert_match(/Rakefile/i, @app.instance_eval { have_rakefile })
113
114
  end
114
115
 
115
116
  def test_not_finding_rakefile
@@ -148,7 +149,7 @@ class TestApplication < Test::Unit::TestCase
148
149
  handle_options
149
150
  options.silent = true
150
151
  end
151
- ex = assert_raise(RuntimeError) do
152
+ ex = assert_exception(RuntimeError) do
152
153
  @app.instance_eval do raw_load_rakefile end
153
154
  end
154
155
  assert_match(/no rakefile found/i, ex.message)
@@ -162,6 +163,7 @@ class TestApplication < Test::Unit::TestCase
162
163
  handle_options
163
164
  options.silent = true
164
165
  options.load_system = true
166
+ options.rakelib = []
165
167
  load_rakefile
166
168
  end
167
169
  assert_equal "test/data/sys", @app.system_dir
@@ -169,46 +171,10 @@ class TestApplication < Test::Unit::TestCase
169
171
  end
170
172
  end
171
173
 
172
- def test_load_from_system_rakefile_on_unix
173
- flexmock(@app, :windows? => false,
174
- :win32_system_dir => nil,
175
- :load => nil)
176
- flexmock(File).should_receive(:expand_path).with("~").and_return("/HOME")
177
- flexmock(File).should_receive(:expand_path).and_return { |fn| fn }
178
-
179
- in_environment('RAKE_SYSTEM' => nil) do
180
- @app.options.rakelib = []
181
- @app.instance_eval do
182
- handle_options
183
- options.silent = true
184
- options.load_system = true
185
- load_rakefile
186
- end
187
- assert_equal "/HOME/.rake", @app.system_dir
188
- end
189
- end
190
-
191
174
  def test_windows
192
175
  assert ! (@app.windows? && @app.unix?)
193
176
  end
194
177
 
195
- def test_load_from_system_rakefile_on_windows
196
- flexmock(Rake::Win32, :windows? => true)
197
- flexmock(@app, :standard_system_dir => "XX")
198
- flexmock(@app).should_receive(:directory?).with("/AD/Rake").and_return(true)
199
- flexmock(@app).should_receive(:load).and_return(nil)
200
- in_environment('RAKE_SYSTEM' => nil, 'APPDATA' => '/AD') do
201
- @app.options.rakelib = []
202
- @app.instance_eval do
203
- handle_options
204
- options.silent = true
205
- options.load_system = true
206
- load_rakefile
207
- end
208
- assert_equal "/AD/Rake", @app.system_dir
209
- end
210
- end
211
-
212
178
  def test_loading_imports
213
179
  mock = flexmock("loader")
214
180
  mock.should_receive(:load).with("x.dummy").once
@@ -231,6 +197,19 @@ class TestApplication < Test::Unit::TestCase
231
197
  end
232
198
  end
233
199
 
200
+ def test_handle_options_should_strip_options_from_ARGV
201
+ assert !@app.options.trace
202
+
203
+ valid_option = '--trace'
204
+ ARGV.clear
205
+ ARGV << valid_option
206
+
207
+ @app.handle_options
208
+
209
+ assert !ARGV.include?(valid_option)
210
+ assert @app.options.trace
211
+ end
212
+
234
213
  def test_good_run
235
214
  ran = false
236
215
  ARGV.clear
@@ -279,7 +258,7 @@ class TestApplication < Test::Unit::TestCase
279
258
  @app.intern(Rake::Task, "default").enhance { fail }
280
259
  ARGV.clear
281
260
  ARGV << '-f' << '-s' << '--rakelib=""'
282
- assert_raise(SystemExit) {
261
+ assert_exception(SystemExit) {
283
262
  err = capture_stderr { @app.run }
284
263
  assert_match(/see full trace/, err)
285
264
  }
@@ -291,7 +270,7 @@ class TestApplication < Test::Unit::TestCase
291
270
  @app.intern(Rake::Task, "default").enhance { fail }
292
271
  ARGV.clear
293
272
  ARGV << '-f' << '-s' << '-t'
294
- assert_raise(SystemExit) {
273
+ assert_exception(SystemExit) {
295
274
  err = capture_stderr { capture_stdout { @app.run } }
296
275
  assert_no_match(/see full trace/, err)
297
276
  }
@@ -303,7 +282,7 @@ class TestApplication < Test::Unit::TestCase
303
282
  @app.intern(Rake::Task, "default").enhance { fail }
304
283
  ARGV.clear
305
284
  ARGV << '-f' << '-s' << '--xyzzy'
306
- assert_raise(SystemExit) {
285
+ assert_exception(SystemExit) {
307
286
  err = capture_stderr { capture_stdout { @app.run } }
308
287
  }
309
288
  ensure
@@ -315,6 +294,7 @@ end
315
294
  ######################################################################
316
295
  class TestApplicationOptions < Test::Unit::TestCase
317
296
  include CaptureStdout
297
+ include TestMethods
318
298
 
319
299
  def setup
320
300
  clear_argv
@@ -447,7 +427,7 @@ class TestApplicationOptions < Test::Unit::TestCase
447
427
  end
448
428
 
449
429
  def test_missing_require
450
- ex = assert_raises(LoadError) do
430
+ ex = assert_exception(LoadError) do
451
431
  flags(['--require', 'test/missing']) do |opts|
452
432
  end
453
433
  end
@@ -546,7 +526,7 @@ class TestApplicationOptions < Test::Unit::TestCase
546
526
 
547
527
  def test_bad_option
548
528
  capture_stderr do
549
- ex = assert_raise(OptionParser::InvalidOption) do
529
+ ex = assert_exception(OptionParser::InvalidOption) do
550
530
  flags('--bad-option')
551
531
  end
552
532
  if ex.message =~ /^While/ # Ruby 1.9 error message
@@ -594,7 +574,8 @@ class TestApplicationOptions < Test::Unit::TestCase
594
574
  throw :system_exit, :exit
595
575
  end
596
576
  @app.instance_eval do
597
- collect_tasks handle_options
577
+ handle_options
578
+ collect_tasks
598
579
  end
599
580
  @tasks = @app.top_level_tasks
600
581
  @app.options
@@ -4,10 +4,13 @@ require 'test/unit'
4
4
  require 'fileutils'
5
5
  require 'rake'
6
6
  require 'test/filecreation'
7
+ require 'test/rake_test_setup'
7
8
 
8
9
  ######################################################################
9
10
  class TestDefinitions < Test::Unit::TestCase
10
11
  include Rake
12
+ include TestMethods
13
+
11
14
  EXISTINGFILE = "testdata/existing"
12
15
 
13
16
  def setup
@@ -58,7 +61,7 @@ class TestDefinitions < Test::Unit::TestCase
58
61
 
59
62
  def test_missing_dependencies
60
63
  task :x => ["testdata/missing"]
61
- assert_raises(RuntimeError) { Task[:x].invoke }
64
+ assert_exception(RuntimeError) { Task[:x].invoke }
62
65
  end
63
66
 
64
67
  def test_implicit_file_dependencies
@@ -4,11 +4,13 @@ require 'test/unit'
4
4
  require 'fileutils'
5
5
  require 'rake'
6
6
  require 'test/filecreation'
7
+ require 'test/rake_test_setup'
7
8
 
8
9
  ######################################################################
9
10
  class TestFileTask < Test::Unit::TestCase
10
11
  include Rake
11
12
  include FileCreation
13
+ include TestMethods
12
14
 
13
15
  def setup
14
16
  Task.clear
@@ -118,22 +120,24 @@ class TestDirectoryTask < Test::Unit::TestCase
118
120
  assert ! File.exist?("testdata/a/b/c")
119
121
  end
120
122
 
121
- def test_directory_win32
122
- desc "WIN32 DESC"
123
- FileUtils.mkdir_p("testdata")
124
- Dir.chdir("testdata") do
125
- directory 'c:/testdata/a/b/c'
126
- assert_equal FileCreationTask, Task['c:/testdata'].class
127
- assert_equal FileCreationTask, Task['c:/testdata/a'].class
128
- assert_equal FileCreationTask, Task['c:/testdata/a/b/c'].class
129
- assert_nil Task['c:/testdata'].comment
130
- assert_equal "WIN32 DESC", Task['c:/testdata/a/b/c'].comment
131
- assert_nil Task['c:/testdata/a/b'].comment
132
- verbose(false) {
133
- Task['c:/testdata/a/b'].invoke
134
- }
135
- assert File.exist?('c:/testdata/a/b')
136
- assert ! File.exist?('c:/testdata/a/b/c')
123
+ if Rake::Win32.windows?
124
+ def test_directory_win32
125
+ desc "WIN32 DESC"
126
+ FileUtils.mkdir_p("testdata")
127
+ Dir.chdir("testdata") do
128
+ directory 'c:/testdata/a/b/c'
129
+ assert_equal FileCreationTask, Task['c:/testdata'].class
130
+ assert_equal FileCreationTask, Task['c:/testdata/a'].class
131
+ assert_equal FileCreationTask, Task['c:/testdata/a/b/c'].class
132
+ assert_nil Task['c:/testdata'].comment
133
+ assert_equal "WIN32 DESC", Task['c:/testdata/a/b/c'].comment
134
+ assert_nil Task['c:/testdata/a/b'].comment
135
+ verbose(false) {
136
+ Task['c:/testdata/a/b'].invoke
137
+ }
138
+ assert File.exist?('c:/testdata/a/b')
139
+ assert ! File.exist?('c:/testdata/a/b/c')
140
+ end
137
141
  end
138
142
  end
139
143
  end
@@ -4,10 +4,12 @@ require 'test/unit'
4
4
  require 'rake'
5
5
 
6
6
  require 'test/capture_stdout'
7
+ require 'test/rake_test_setup'
7
8
 
8
9
  class TestFileList < Test::Unit::TestCase
9
10
  FileList = Rake::FileList
10
11
  include CaptureStdout
12
+ include TestMethods
11
13
 
12
14
  def setup
13
15
  create_test_data
@@ -283,9 +285,7 @@ class TestFileList < Test::Unit::TestCase
283
285
  assert_equal "one.two.net", "one.two.c".ext(".net")
284
286
  assert_equal "one/two.net", "one/two.c".ext(".net")
285
287
  assert_equal "one.x/two.net", "one.x/two.c".ext(".net")
286
- assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net")
287
288
  assert_equal "one.x/two.net", "one.x/two".ext(".net")
288
- assert_equal "one.x\\two.net", "one.x\\two".ext(".net")
289
289
  assert_equal ".onerc.net", ".onerc.dot".ext("net")
290
290
  assert_equal ".onerc.net", ".onerc".ext("net")
291
291
  assert_equal ".a/.onerc.net", ".a/.onerc".ext("net")
@@ -295,6 +295,11 @@ class TestFileList < Test::Unit::TestCase
295
295
  assert_equal ".one", ".one".ext
296
296
  assert_equal ".", ".".ext("c")
297
297
  assert_equal "..", "..".ext("c")
298
+ # These only need to work in windows
299
+ if Rake::Win32.windows?
300
+ assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net")
301
+ assert_equal "one.x\\two.net", "one.x\\two".ext(".net")
302
+ end
298
303
  end
299
304
 
300
305
  def test_filelist_ext
@@ -442,7 +447,7 @@ class TestFileList < Test::Unit::TestCase
442
447
  a = FileList['a', 'b', 'c']
443
448
  a.freeze
444
449
  c = a.clone
445
- assert_raise(TypeError, RuntimeError) do
450
+ assert_exception(TypeError, RuntimeError) do
446
451
  c << 'more'
447
452
  end
448
453
  end
@@ -5,9 +5,11 @@ require 'test/unit'
5
5
  require 'test/filecreation'
6
6
  require 'fileutils'
7
7
  require 'stringio'
8
+ require 'test/rake_test_setup'
8
9
 
9
10
  class TestFileUtils < Test::Unit::TestCase
10
11
  include FileCreation
12
+ include TestMethods
11
13
 
12
14
  def setup
13
15
  File.chmod(0750,"test/shellcommand.rb")
@@ -81,7 +83,7 @@ class TestFileUtils < Test::Unit::TestCase
81
83
  def test_safe_ln_fails_on_script_error
82
84
  FileUtils::LN_SUPPORTED[0] = true
83
85
  c = BadLink.new(ScriptError)
84
- assert_raise(ScriptError) do c.safe_ln "a", "b" end
86
+ assert_exception(ScriptError) do c.safe_ln "a", "b" end
85
87
  end
86
88
 
87
89
  def test_verbose
@@ -114,8 +116,8 @@ class TestFileUtils < Test::Unit::TestCase
114
116
 
115
117
  def test_fileutils_methods_dont_leak
116
118
  obj = Object.new
117
- assert_raise(NoMethodError) { obj.copy } # from FileUtils
118
- assert_raise(NoMethodError) { obj.ruby } # from RubyFileUtils
119
+ assert_exception(NoMethodError) { obj.copy } # from FileUtils
120
+ assert_exception(NoMethodError) { obj.ruby } # from RubyFileUtils
119
121
  end
120
122
 
121
123
  def test_sh
@@ -123,21 +125,37 @@ class TestFileUtils < Test::Unit::TestCase
123
125
  assert true, "should not fail"
124
126
  end
125
127
 
126
- def test_sh_multiple_arguments
128
+ # If the :sh method is invoked directly from a test unit instance
129
+ # (under mini/test), the mini/test version of fail is invoked rather
130
+ # than the kernel version of fail. So we run :sh from within a
131
+ # non-test class to avoid the problem.
132
+ class Sh
133
+ include FileUtils
134
+ def run(*args)
135
+ sh(*args)
136
+ end
137
+ def self.run(*args)
138
+ new.run(*args)
139
+ end
140
+ end
141
+
142
+ def test_sh_with_a_single_string_argument
127
143
  ENV['RAKE_TEST_SH'] = 'someval'
128
- expanded = windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH'
129
- # This one gets expanded by the shell
130
- verbose(false) { sh %{ruby test/check_expansion.rb #{expanded} someval} }
131
- assert true, "should not fail"
132
- assert_raises(RuntimeError) {
133
- # This one does not get expanded
134
- verbose(false) { sh 'ruby', 'test/check_expansion.rb', expanded, 'someval' }
144
+ verbose(false) {
145
+ sh %{ruby test/check_expansion.rb #{env_var} someval}
146
+ }
147
+ end
148
+
149
+ def test_sh_with_multiple_arguments
150
+ ENV['RAKE_TEST_SH'] = 'someval'
151
+ verbose(false) {
152
+ Sh.run 'ruby', 'test/check_no_expansion.rb', env_var, 'someval'
135
153
  }
136
154
  end
137
155
 
138
156
  def test_sh_failure
139
- assert_raises(RuntimeError) {
140
- verbose(false) { sh %{ruby test/shellcommand.rb 1} }
157
+ assert_exception(RuntimeError) {
158
+ verbose(false) { Sh.run %{ruby test/shellcommand.rb 1} }
141
159
  }
142
160
  end
143
161
 
@@ -164,7 +182,7 @@ class TestFileUtils < Test::Unit::TestCase
164
182
  end
165
183
 
166
184
  def test_sh_bad_option
167
- ex = assert_raise(ArgumentError) {
185
+ ex = assert_exception(ArgumentError) {
168
186
  verbose(false) { sh %{test/shellcommand.rb}, :bad_option=>true }
169
187
  }
170
188
  assert_match(/bad_option/, ex.message)
@@ -188,39 +206,18 @@ class TestFileUtils < Test::Unit::TestCase
188
206
  assert_equal '', out
189
207
  end
190
208
 
191
- def test_sh_default_is_no_verbose
192
- out = redirect_stderr {
193
- sh %{test/shellcommand.rb}, :noop=>true
209
+ def test_ruby_with_a_single_string_argument
210
+ ENV['RAKE_TEST_SH'] = 'someval'
211
+ verbose(false) {
212
+ ruby %{test/check_expansion.rb #{env_var} someval}
194
213
  }
195
- assert_equal '', out
196
214
  end
197
215
 
198
- def test_ruby
199
- verbose(false) do
200
- ENV['RAKE_TEST_RUBY'] = "123"
201
- block_run = false
202
- # This one gets expanded by the shell
203
- env_var = windows? ? '%RAKE_TEST_RUBY%' : '$RAKE_TEST_RUBY'
204
- ruby %{-e "exit #{env_var}"} do |ok, status| # " (emacs wart)
205
- assert(!ok)
206
- assert_equal 123, status.exitstatus
207
- block_run = true
208
- end
209
- assert block_run, "The block must be run"
210
-
211
- if windows?
212
- puts "SKIPPING test_ruby/part 2 when in windows"
213
- else
214
- # This one does not get expanded
215
- block_run = false
216
- ruby '-e', %{exit "#{env_var}".length} do |ok, status| # " (emacs wart)
217
- assert(!ok)
218
- assert_equal 15, status.exitstatus
219
- block_run = true
220
- end
221
- assert block_run, "The block must be run"
222
- end
223
- end
216
+ def test_ruby_with_multiple_arguments
217
+ ENV['RAKE_TEST_SH'] = 'someval'
218
+ verbose(false) {
219
+ ruby 'test/check_no_expansion.rb', env_var, 'someval'
220
+ }
224
221
  end
225
222
 
226
223
  def test_split_all
@@ -247,4 +244,8 @@ class TestFileUtils < Test::Unit::TestCase
247
244
  ! File::ALT_SEPARATOR.nil?
248
245
  end
249
246
 
247
+ def env_var
248
+ windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH'
249
+ end
250
+
250
251
  end