drake 0.9.0.0.3.0 → 0.9.1.0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/CHANGES +9 -8
  2. data/CHANGES-drake +4 -0
  3. data/Rakefile +14 -49
  4. data/Rakefile-drake +2 -1
  5. data/bin/drake +4 -3
  6. data/doc/release_notes/rake-0.9.1.rdoc +52 -0
  7. data/lib/rake/dsl_definition.rb +19 -0
  8. data/lib/rake/version.rb +1 -1
  9. data/test/data/access/Rakefile +3 -1
  10. data/test/data/default/Rakefile +0 -2
  11. data/test/data/file_creation_task/Rakefile +0 -2
  12. data/test/data/multidesc/Rakefile +0 -2
  13. data/test/data/namespace/Rakefile +0 -2
  14. data/test/data/statusreturn/Rakefile +0 -2
  15. data/test/file_creation.rb +0 -2
  16. data/test/helper.rb +63 -0
  17. data/test/in_environment.rb +4 -1
  18. data/test/{parallel_setup.rb → setup_parallel.rb} +0 -0
  19. data/test/{serial_setup.rb → setup_serial.rb} +0 -0
  20. data/test/{lib/parallel_test.rb → test_parallel.rb} +3 -1
  21. data/test/{lib/rake_test.rb → test_rake.rb} +2 -5
  22. data/test/test_rake_application.rb +365 -0
  23. data/test/test_rake_application_options.rb +383 -0
  24. data/test/test_rake_clean.rb +14 -0
  25. data/test/{lib/definitions_test.rb → test_rake_definitions.rb} +5 -10
  26. data/test/test_rake_directory_task.rb +55 -0
  27. data/test/test_rake_dsl.rb +53 -0
  28. data/test/{lib/earlytime_test.rb → test_rake_early_time.rb} +2 -5
  29. data/test/{lib/extension_test.rb → test_rake_extension.rb} +2 -6
  30. data/test/{lib/file_creation_task_test.rb → test_rake_file_creation_task.rb} +7 -7
  31. data/test/{lib/filelist_test.rb → test_rake_file_list.rb} +18 -22
  32. data/test/test_rake_file_list_path_map.rb +8 -0
  33. data/test/{lib/file_task_test.rb → test_rake_file_task.rb} +22 -61
  34. data/test/{lib/fileutils_test.rb → test_rake_file_utils.rb} +11 -15
  35. data/test/{lib/ftp_test.rb → test_rake_ftp_file.rb} +5 -5
  36. data/test/{functional/session_based_tests.rb → test_rake_functional.rb} +35 -24
  37. data/test/test_rake_invocation_chain.rb +52 -0
  38. data/test/{lib/makefile_loader_test.rb → test_rake_makefile_loader.rb} +2 -5
  39. data/test/{lib/multitask_test.rb → test_rake_multi_task.rb} +5 -7
  40. data/test/{lib/namespace_test.rb → test_rake_name_space.rb} +4 -16
  41. data/test/{lib/package_task_test.rb → test_rake_package_task.rb} +2 -6
  42. data/test/{lib/pathmap_test.rb → test_rake_path_map.rb} +4 -58
  43. data/test/test_rake_path_map_explode.rb +31 -0
  44. data/test/test_rake_path_map_partial.rb +18 -0
  45. data/test/{lib/pseudo_status_test.rb → test_rake_pseudo_status.rb} +2 -8
  46. data/test/{lib/rdoc_task_test.rb → test_rake_rdoc_task.rb} +4 -7
  47. data/test/{lib/require_test.rb → test_rake_require.rb} +3 -9
  48. data/test/{lib/rules_test.rb → test_rake_rules.rb} +11 -13
  49. data/test/{lib/task_test.rb → test_rake_task.rb} +16 -183
  50. data/test/test_rake_task_argument_parsing.rb +126 -0
  51. data/test/{lib/task_arguments_test.rb → test_rake_task_arguments.rb} +2 -5
  52. data/test/{lib/tasklib_test.rb → test_rake_task_lib.rb} +2 -5
  53. data/test/{lib/task_manager_test.rb → test_rake_task_manager.rb} +7 -45
  54. data/test/test_rake_task_manager_argument_resolution.rb +36 -0
  55. data/test/test_rake_task_with_arguments.rb +162 -0
  56. data/test/{lib/test_task_test.rb → test_rake_test_task.rb} +52 -7
  57. data/test/{lib/top_level_functions_test.rb → test_rake_top_level_functions.rb} +8 -20
  58. data/test/{lib/win32_test.rb → test_rake_win32.rb} +5 -12
  59. data/test/{contrib/test_sys.rb → test_sys.rb} +2 -6
  60. metadata +62 -47
  61. data/lib/rake/dsl.rb +0 -2
  62. data/test/capture_stdout.rb +0 -26
  63. data/test/functional/functional_test.rb +0 -25
  64. data/test/lib/application_test.rb +0 -871
  65. data/test/lib/clean_test.rb +0 -15
  66. data/test/lib/dsl_test.rb +0 -52
  67. data/test/lib/invocation_chain_test.rb +0 -81
  68. data/test/lib/testtask_test.rb +0 -49
  69. data/test/rake_test_setup.rb +0 -41
  70. data/test/ruby_version_test.rb +0 -3
  71. data/test/test_helper.rb +0 -19
@@ -1,23 +1,10 @@
1
- #!/usr/bin/env ruby
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
- begin
4
- require 'rubygems'
5
- rescue LoadError
6
- # got no gems
7
- end
8
-
9
- require 'test/unit'
10
- require 'flexmock/test_unit'
11
- require 'test/capture_stdout'
12
- require 'test/rake_test_setup'
13
- require 'rake'
14
-
15
- class TestTopLevelFunctions < Test::Unit::TestCase
16
- include CaptureStdout
17
- include TestMethods
3
+ class TestRakeTopLevelFunctions < Rake::TestCase
18
4
 
19
5
  def setup
20
6
  super
7
+
21
8
  @app = Rake.application
22
9
  Rake.application = flexmock("app")
23
10
  Rake.application.should_receive(:deprecate).
@@ -26,6 +13,7 @@ class TestTopLevelFunctions < Test::Unit::TestCase
26
13
 
27
14
  def teardown
28
15
  Rake.application = @app
16
+
29
17
  super
30
18
  end
31
19
 
@@ -42,7 +30,7 @@ class TestTopLevelFunctions < Test::Unit::TestCase
42
30
  end
43
31
 
44
32
  def test_when_writing
45
- out = capture_stdout do
33
+ out, = capture_io do
46
34
  when_writing("NOTWRITING") do
47
35
  puts "WRITING"
48
36
  end
@@ -52,12 +40,12 @@ class TestTopLevelFunctions < Test::Unit::TestCase
52
40
 
53
41
  def test_when_not_writing
54
42
  Rake::FileUtilsExt.nowrite_flag = true
55
- out = capture_stderr do
43
+ _, err = capture_io do
56
44
  when_writing("NOTWRITING") do
57
45
  puts "WRITING"
58
46
  end
59
47
  end
60
- assert_equal "DRYRUN: NOTWRITING\n", out
48
+ assert_equal "DRYRUN: NOTWRITING\n", err
61
49
  ensure
62
50
  Rake::FileUtilsExt.nowrite_flag = false
63
51
  end
@@ -83,6 +71,6 @@ class TestTopLevelFunctions < Test::Unit::TestCase
83
71
  end
84
72
 
85
73
  def test_missing_other_constant
86
- assert_exception(NameError) do Object.const_missing(:Xyz) end
74
+ assert_raises(NameError) do Object.const_missing(:Xyz) end
87
75
  end
88
76
  end
@@ -1,15 +1,7 @@
1
- #!/usr/bin/env ruby
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
- require 'test/unit'
4
- require 'test/rake_test_setup'
5
- require 'test/in_environment'
6
-
7
- require 'rake'
8
-
9
- class TestWin32 < Test::Unit::TestCase
3
+ class TestRakeWin32 < Rake::TestCase
10
4
  include InEnvironment
11
- include TestMethods
12
- include CaptureStdout
13
5
 
14
6
  Win32 = Rake::Win32
15
7
 
@@ -64,7 +56,7 @@ class TestWin32 < Test::Unit::TestCase
64
56
  'APPDATA' => nil,
65
57
  "USERPROFILE" => nil
66
58
  ) do
67
- assert_exception(Rake::Win32::Win32HomeError) do
59
+ assert_raises(Rake::Win32::Win32HomeError) do
68
60
  Win32.win32_system_dir
69
61
  end
70
62
  end
@@ -80,10 +72,11 @@ class TestWin32 < Test::Unit::TestCase
80
72
  ex.set_backtrace ['abc', 'rakefile']
81
73
 
82
74
  rake = Rake::Application.new
75
+ rake.options.threads = Rake.application.options.threads
83
76
  rake.options.trace = true
84
77
  rake.instance_variable_set(:@rakefile, 'Rakefile')
85
78
 
86
- err = capture_stderr { rake.display_error_message(ex) }
79
+ _, err = capture_io { rake.display_error_message(ex) }
87
80
 
88
81
  assert_match(/rakefile/, err)
89
82
  end
@@ -1,7 +1,4 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
- require 'test/file_creation'
1
+ require File.expand_path('../helper', __FILE__)
5
2
  begin
6
3
  old_verbose = $VERBOSE
7
4
  $VERBOSE = nil
@@ -10,8 +7,7 @@ ensure
10
7
  $VERBOSE = old_verbose
11
8
  end
12
9
 
13
- class TestSys < Test::Unit::TestCase
14
- include FileCreation
10
+ class TestSys < Rake::TestCase
15
11
 
16
12
  def test_split_all
17
13
  assert_equal ['a'], Sys.split_all('a')
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: drake
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.0.0.3.0
5
+ version: 0.9.1.0.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - James M. Lawrence
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-21 00:00:00 Z
13
+ date: 2011-06-01 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: comp_tree
@@ -24,27 +24,38 @@ dependencies:
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
27
- name: session
27
+ name: minitest
28
28
  prerelease: false
29
29
  requirement: &id002 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: "2.4"
34
+ version: "2.1"
35
35
  type: :development
36
36
  version_requirements: *id002
37
37
  - !ruby/object:Gem::Dependency
38
- name: flexmock
38
+ name: session
39
39
  prerelease: false
40
40
  requirement: &id003 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.8.11
45
+ version: "2.4"
46
46
  type: :development
47
47
  version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: flexmock
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.8.11
57
+ type: :development
58
+ version_requirements: *id004
48
59
  description: " Drake is an auto-parallelizing branch of Rake, a Make-like program\n implemented in Ruby. Tasks and dependencies are specified in standard\n Ruby syntax.\n"
49
60
  email: quixoticsycophant@gmail.com
50
61
  executables:
@@ -81,6 +92,7 @@ extra_rdoc_files:
81
92
  - doc/release_notes/rake-0.8.6.rdoc
82
93
  - doc/release_notes/rake-0.8.7.rdoc
83
94
  - doc/release_notes/rake-0.9.0.rdoc
95
+ - doc/release_notes/rake-0.9.1.rdoc
84
96
  files:
85
97
  - .gemtest
86
98
  - install.rb
@@ -104,7 +116,6 @@ files:
104
116
  - lib/rake/contrib/sshpublisher.rb
105
117
  - lib/rake/contrib/sys.rb
106
118
  - lib/rake/default_loader.rb
107
- - lib/rake/dsl.rb
108
119
  - lib/rake/dsl_definition.rb
109
120
  - lib/rake/early_time.rb
110
121
  - lib/rake/ext/core.rb
@@ -141,55 +152,58 @@ files:
141
152
  - lib/rake/version.rb
142
153
  - lib/rake/win32.rb
143
154
  - lib/rake.rb
144
- - test/capture_stdout.rb
145
155
  - test/check_expansion.rb
146
156
  - test/check_no_expansion.rb
147
- - test/contrib/test_sys.rb
148
157
  - test/data/rakelib/test1.rb
149
158
  - test/data/rbext/rakefile.rb
150
159
  - test/file_creation.rb
151
- - test/functional/functional_test.rb
152
- - test/functional/session_based_tests.rb
160
+ - test/helper.rb
153
161
  - test/in_environment.rb
154
- - test/lib/application_test.rb
155
- - test/lib/clean_test.rb
156
- - test/lib/definitions_test.rb
157
- - test/lib/dsl_test.rb
158
- - test/lib/earlytime_test.rb
159
- - test/lib/extension_test.rb
160
- - test/lib/file_creation_task_test.rb
161
- - test/lib/file_task_test.rb
162
- - test/lib/filelist_test.rb
163
- - test/lib/fileutils_test.rb
164
- - test/lib/ftp_test.rb
165
- - test/lib/invocation_chain_test.rb
166
- - test/lib/makefile_loader_test.rb
167
- - test/lib/multitask_test.rb
168
- - test/lib/namespace_test.rb
169
- - test/lib/package_task_test.rb
170
- - test/lib/parallel_test.rb
171
- - test/lib/pathmap_test.rb
172
- - test/lib/pseudo_status_test.rb
173
- - test/lib/rake_test.rb
174
- - test/lib/rdoc_task_test.rb
175
- - test/lib/require_test.rb
176
- - test/lib/rules_test.rb
177
- - test/lib/task_arguments_test.rb
178
- - test/lib/task_manager_test.rb
179
- - test/lib/task_test.rb
180
- - test/lib/tasklib_test.rb
181
- - test/lib/test_task_test.rb
182
- - test/lib/testtask_test.rb
183
- - test/lib/top_level_functions_test.rb
184
- - test/lib/win32_test.rb
185
- - test/parallel_setup.rb
186
- - test/rake_test_setup.rb
187
162
  - test/reqfile.rb
188
163
  - test/reqfile2.rb
189
- - test/ruby_version_test.rb
190
- - test/serial_setup.rb
164
+ - test/setup_parallel.rb
165
+ - test/setup_serial.rb
191
166
  - test/shellcommand.rb
192
- - test/test_helper.rb
167
+ - test/test_parallel.rb
168
+ - test/test_rake.rb
169
+ - test/test_rake_application.rb
170
+ - test/test_rake_application_options.rb
171
+ - test/test_rake_clean.rb
172
+ - test/test_rake_definitions.rb
173
+ - test/test_rake_directory_task.rb
174
+ - test/test_rake_dsl.rb
175
+ - test/test_rake_early_time.rb
176
+ - test/test_rake_extension.rb
177
+ - test/test_rake_file_creation_task.rb
178
+ - test/test_rake_file_list.rb
179
+ - test/test_rake_file_list_path_map.rb
180
+ - test/test_rake_file_task.rb
181
+ - test/test_rake_file_utils.rb
182
+ - test/test_rake_ftp_file.rb
183
+ - test/test_rake_functional.rb
184
+ - test/test_rake_invocation_chain.rb
185
+ - test/test_rake_makefile_loader.rb
186
+ - test/test_rake_multi_task.rb
187
+ - test/test_rake_name_space.rb
188
+ - test/test_rake_package_task.rb
189
+ - test/test_rake_path_map.rb
190
+ - test/test_rake_path_map_explode.rb
191
+ - test/test_rake_path_map_partial.rb
192
+ - test/test_rake_pseudo_status.rb
193
+ - test/test_rake_rdoc_task.rb
194
+ - test/test_rake_require.rb
195
+ - test/test_rake_rules.rb
196
+ - test/test_rake_task.rb
197
+ - test/test_rake_task_argument_parsing.rb
198
+ - test/test_rake_task_arguments.rb
199
+ - test/test_rake_task_lib.rb
200
+ - test/test_rake_task_manager.rb
201
+ - test/test_rake_task_manager_argument_resolution.rb
202
+ - test/test_rake_task_with_arguments.rb
203
+ - test/test_rake_test_task.rb
204
+ - test/test_rake_top_level_functions.rb
205
+ - test/test_rake_win32.rb
206
+ - test/test_sys.rb
193
207
  - test/data/imports/deps.mf
194
208
  - test/data/sample.mf
195
209
  - test/data/access/Rakefile
@@ -236,6 +250,7 @@ files:
236
250
  - doc/release_notes/rake-0.8.6.rdoc
237
251
  - doc/release_notes/rake-0.8.7.rdoc
238
252
  - doc/release_notes/rake-0.9.0.rdoc
253
+ - doc/release_notes/rake-0.9.1.rdoc
239
254
  homepage: http://quix.github.com/rake
240
255
  licenses: []
241
256
 
@@ -1,2 +0,0 @@
1
- require 'rake'
2
- include Rake::DSL
@@ -1,26 +0,0 @@
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
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- begin
4
- old_verbose = $VERBOSE
5
- require 'rubygems'
6
- $VERBOSE = nil
7
- gem 'session'
8
- require 'session'
9
- rescue LoadError
10
- if File::ALT_SEPARATOR
11
- puts "Unable to run functional tests on MS Windows. Skipping."
12
- else
13
- puts "Unable to run functional tests -- please run \"gem install session\""
14
- end
15
- ensure
16
- $VERBOSE = old_verbose
17
- end
18
-
19
- if defined?(Session)
20
- if File::ALT_SEPARATOR
21
- puts "Unable to run functional tests on MS Windows. Skipping."
22
- else
23
- require 'test/functional/session_based_tests.rb'
24
- end
25
- end
@@ -1,871 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- begin
4
- require 'rubygems'
5
- rescue LoadError
6
- # got no gems
7
- end
8
-
9
- require 'test/unit'
10
- require 'rake'
11
- require 'test/rake_test_setup'
12
- require 'test/capture_stdout'
13
- require 'test/in_environment'
14
-
15
- TESTING_REQUIRE = [ ]
16
-
17
- ######################################################################
18
- class TestApplication < Test::Unit::TestCase
19
- include CaptureStdout
20
- include InEnvironment
21
- include TestMethods
22
-
23
- def setup
24
- super
25
- @app = Rake::Application.new
26
- @app.options.threads = Rake.application.options.threads
27
- @app.options.rakelib = []
28
- Rake::TaskManager.record_task_metadata = true
29
- end
30
-
31
- def teardown
32
- Rake::TaskManager.record_task_metadata = false
33
- super
34
- end
35
-
36
- def test_constant_warning
37
- error_messages = capture_stderr do @app.instance_eval { const_warning("Task") } end
38
- assert_match(/warning/i, error_messages)
39
- assert_match(/deprecated/i, error_messages)
40
- assert_match(/Task/i, error_messages)
41
- end
42
-
43
- def test_display_tasks
44
- @app.options.show_tasks = :tasks
45
- @app.options.show_task_pattern = //
46
- @app.last_description = "COMMENT"
47
- @app.define_task(Rake::Task, "t")
48
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
49
- assert_match(/^rake t/, out)
50
- assert_match(/# COMMENT/, out)
51
- end
52
-
53
- def test_display_tasks_with_long_comments
54
- in_environment('RAKE_COLUMNS' => '80') do
55
- @app.options.show_tasks = :tasks
56
- @app.options.show_task_pattern = //
57
- @app.last_description = "1234567890" * 8
58
- @app.define_task(Rake::Task, "t")
59
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
60
- assert_match(/^rake t/, out)
61
- assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out)
62
- end
63
- end
64
-
65
- def test_display_tasks_with_task_name_wider_than_tty_display
66
- in_environment('RAKE_COLUMNS' => '80') do
67
- @app.options.show_tasks = :tasks
68
- @app.options.show_task_pattern = //
69
- task_name = "task name" * 80
70
- @app.last_description = "something short"
71
- @app.define_task(Rake::Task, task_name )
72
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
73
- # Ensure the entire task name is output and we end up showing no description
74
- assert_match(/rake #{task_name} # .../, out)
75
- end
76
- end
77
-
78
- def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment
79
- @app.options.show_tasks = :tasks
80
- @app.options.show_task_pattern = //
81
- @app.tty_output = false
82
- description = "something short"
83
- task_name = "task name" * 80
84
- @app.last_description = "something short"
85
- @app.define_task(Rake::Task, task_name )
86
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
87
- # Ensure the entire task name is output and we end up showing no description
88
- assert_match(/rake #{task_name} # #{description}/, out)
89
- end
90
-
91
- def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment
92
- @app.options.show_tasks = :tasks
93
- @app.options.show_task_pattern = //
94
- @app.tty_output = false
95
- @app.last_description = "1234567890" * 8
96
- @app.define_task(Rake::Task, "t")
97
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
98
- assert_match(/^rake t/, out)
99
- assert_match(/# #{@app.last_description}/, out)
100
- end
101
-
102
- def test_display_tasks_with_long_comments_to_a_non_tty_with_columns_set_truncates_comments
103
- in_environment("RAKE_COLUMNS" => '80') do
104
- @app.options.show_tasks = :tasks
105
- @app.options.show_task_pattern = //
106
- @app.tty_output = false
107
- @app.last_description = "1234567890" * 8
108
- @app.define_task(Rake::Task, "t")
109
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
110
- assert_match(/^rake t/, out)
111
- assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out)
112
- end
113
- end
114
-
115
- def test_describe_tasks
116
- @app.options.show_tasks = :describe
117
- @app.options.show_task_pattern = //
118
- @app.last_description = "COMMENT"
119
- @app.define_task(Rake::Task, "t")
120
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
121
- assert_match(/^rake t$/, out)
122
- assert_match(/^ {4}COMMENT$/, out)
123
- end
124
-
125
- def test_show_lines
126
- @app.options.show_tasks = :lines
127
- @app.options.show_task_pattern = //
128
- @app.last_description = "COMMENT"
129
- @app.define_task(Rake::Task, "t")
130
- @app['t'].locations << "HERE:1"
131
- out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end
132
- assert_match(/^rake t +[^:]+:\d+ *$/, out)
133
- end
134
-
135
- def test_finding_rakefile
136
- assert_match(/Rakefile/i, @app.instance_eval { have_rakefile })
137
- end
138
-
139
- def test_not_finding_rakefile
140
- @app.instance_eval { @rakefiles = ['NEVER_FOUND'] }
141
- assert( ! @app.instance_eval do have_rakefile end )
142
- assert_nil @app.rakefile
143
- end
144
-
145
- def test_load_rakefile
146
- in_environment("PWD" => "test/data/unittest") do
147
- @app.instance_eval do
148
- handle_options
149
- options.silent = true
150
- load_rakefile
151
- end
152
- assert_equal "rakefile", @app.rakefile.downcase
153
- assert_match(%r(unittest$), Dir.pwd)
154
- end
155
- end
156
-
157
- def test_load_rakefile_doesnt_print_rakefile_directory_from_same_dir
158
- in_environment("PWD" => "test/data/unittest") do
159
- error_messages = capture_stderr do
160
- @app.instance_eval do
161
- @original_dir = File.expand_path(".") # pretend we started from the unittest dir
162
- raw_load_rakefile
163
- end
164
- end
165
- _, location = @app.find_rakefile_location
166
- assert_no_match(/\(in #{location}\)/, error_messages)
167
- end
168
- end
169
-
170
- def test_load_rakefile_from_subdir
171
- in_environment("PWD" => "test/data/unittest/subdir") do
172
- @app.instance_eval do
173
- handle_options
174
- options.silent = true
175
- load_rakefile
176
- end
177
- assert_equal "rakefile", @app.rakefile.downcase
178
- assert_match(%r(unittest$), Dir.pwd)
179
- end
180
- end
181
-
182
- def test_load_rakefile_prints_rakefile_directory_from_subdir
183
- in_environment("PWD" => "test/data/unittest/subdir") do
184
- error_messages = capture_stderr do
185
- @app.instance_eval do
186
- raw_load_rakefile
187
- end
188
- end
189
- _, location = @app.find_rakefile_location
190
- assert_match(/\(in #{location}\)/, error_messages)
191
- end
192
- end
193
-
194
- def test_load_rakefile_doesnt_print_rakefile_directory_from_subdir_if_silent
195
- in_environment("PWD" => "test/data/unittest/subdir") do
196
- error_messages = capture_stderr do
197
- @app.instance_eval do
198
- handle_options
199
- options.silent = true
200
- raw_load_rakefile
201
- end
202
- end
203
- _, location = @app.find_rakefile_location
204
- assert_no_match(/\(in #{location}\)/, error_messages)
205
- end
206
- end
207
-
208
- def test_load_rakefile_not_found
209
- in_environment("PWD" => "/", "RAKE_SYSTEM" => 'not_exist') do
210
- @app.instance_eval do
211
- handle_options
212
- options.silent = true
213
- end
214
- ex = assert_exception(RuntimeError) do
215
- @app.instance_eval do raw_load_rakefile end
216
- end
217
- assert_match(/no rakefile found/i, ex.message)
218
- end
219
- end
220
-
221
- def test_load_from_system_rakefile
222
- in_environment('RAKE_SYSTEM' => 'test/data/sys') do
223
- @app.options.rakelib = []
224
- @app.instance_eval do
225
- handle_options
226
- options.silent = true
227
- options.load_system = true
228
- options.rakelib = []
229
- load_rakefile
230
- end
231
- assert_equal "test/data/sys", @app.system_dir
232
- assert_nil @app.rakefile
233
- end
234
- end
235
-
236
- def test_load_from_calculated_system_rakefile
237
- flexmock(@app, :standard_system_dir => "__STD_SYS_DIR__")
238
- in_environment('RAKE_SYSTEM' => nil) do
239
- @app.options.rakelib = []
240
- @app.instance_eval do
241
- handle_options
242
- options.silent = true
243
- options.load_system = true
244
- options.rakelib = []
245
- load_rakefile
246
- end
247
- assert_equal "__STD_SYS_DIR__", @app.system_dir
248
- end
249
- end
250
-
251
- def test_windows
252
- assert ! (@app.windows? && @app.unix?)
253
- end
254
-
255
- def test_loading_imports
256
- mock = flexmock("loader")
257
- mock.should_receive(:load).with("x.dummy").once
258
- @app.instance_eval do
259
- add_loader("dummy", mock)
260
- add_import("x.dummy")
261
- load_imports
262
- end
263
- end
264
-
265
- def test_building_imported_files_on_demand
266
- mock = flexmock("loader")
267
- mock.should_receive(:load).with("x.dummy").once
268
- mock.should_receive(:make_dummy).with_no_args.once
269
- @app.instance_eval do
270
- intern(Rake::Task, "x.dummy").enhance do mock.make_dummy end
271
- add_loader("dummy", mock)
272
- add_import("x.dummy")
273
- load_imports
274
- end
275
- end
276
-
277
- def test_handle_options_should_strip_options_from_ARGV
278
- assert !@app.options.trace
279
-
280
- valid_option = '--trace'
281
- ARGV.clear
282
- ARGV << valid_option
283
-
284
- @app.handle_options
285
-
286
- assert !ARGV.include?(valid_option)
287
- assert @app.options.trace
288
- end
289
-
290
- def test_good_run
291
- ran = false
292
- ARGV.clear
293
- ARGV << '--rakelib=""'
294
- @app.options.silent = true
295
- @app.instance_eval do
296
- intern(Rake::Task, "default").enhance { ran = true }
297
- end
298
- in_environment("PWD" => "test/data/default") do
299
- @app.run
300
- end
301
- assert ran
302
- end
303
-
304
- def test_display_task_run
305
- ran = false
306
- ARGV.clear
307
- ARGV << '-f' << '-s' << '--tasks' << '--rakelib=""'
308
- @app.last_description = "COMMENT"
309
- @app.define_task(Rake::Task, "default")
310
- out = capture_stdout { @app.run }
311
- assert @app.options.show_tasks
312
- assert ! ran
313
- assert_match(/rake default/, out)
314
- assert_match(/# COMMENT/, out)
315
- end
316
-
317
- def test_display_prereqs
318
- ran = false
319
- ARGV.clear
320
- ARGV << '-f' << '-s' << '--prereqs' << '--rakelib=""'
321
- @app.last_description = "COMMENT"
322
- t = @app.define_task(Rake::Task, "default")
323
- t.enhance([:a, :b])
324
- @app.define_task(Rake::Task, "a")
325
- @app.define_task(Rake::Task, "b")
326
- out = capture_stdout { @app.run }
327
- assert @app.options.show_prereqs
328
- assert ! ran
329
- assert_match(/rake a$/, out)
330
- assert_match(/rake b$/, out)
331
- assert_match(/rake default\n( *(a|b)\n){2}/m, out)
332
- end
333
-
334
- def test_bad_run
335
- @app.intern(Rake::Task, "default").enhance { fail }
336
- ARGV.clear
337
- ARGV << '-f' << '-s' << '--rakelib=""'
338
- assert_exception(SystemExit) {
339
- error_messages = capture_stderr { @app.run }
340
- assert_match(/see full trace/, error_messages)
341
- }
342
- ensure
343
- ARGV.clear
344
- end
345
-
346
- def test_bad_run_with_trace
347
- @app.intern(Rake::Task, "default").enhance { fail }
348
- ARGV.clear
349
- ARGV << '-f' << '-s' << '-t'
350
- assert_exception(SystemExit) {
351
- error_messages = capture_stderr { capture_stdout { @app.run } }
352
- assert_no_match(/see full trace/, error_messages)
353
- }
354
- ensure
355
- ARGV.clear
356
- end
357
-
358
- def test_run_with_bad_options
359
- @app.intern(Rake::Task, "default").enhance { fail }
360
- ARGV.clear
361
- ARGV << '-f' << '-s' << '--xyzzy'
362
- assert_exception(SystemExit) {
363
- capture_stderr { capture_stdout { @app.run } }
364
- }
365
- ensure
366
- ARGV.clear
367
- end
368
-
369
- def test_deprecation_message
370
- in_environment do
371
- error_messages = capture_stderr do
372
- @app.deprecate("a", "b", "c")
373
- end
374
- assert_match(/'a' is deprecated/i, error_messages)
375
- assert_match(/use 'b' instead/i, error_messages)
376
- assert_match(/at c$/i, error_messages)
377
- end
378
- end
379
- end
380
-
381
-
382
- ######################################################################
383
- class TestApplicationOptions < Test::Unit::TestCase
384
- include CaptureStdout
385
- include TestMethods
386
- include InEnvironment
387
-
388
- def setup
389
- clear_argv
390
- Rake::FileUtilsExt.verbose_flag = false
391
- Rake::FileUtilsExt.nowrite_flag = false
392
- TESTING_REQUIRE.clear
393
- end
394
-
395
- def teardown
396
- clear_argv
397
- Rake::FileUtilsExt.verbose_flag = false
398
- Rake::FileUtilsExt.nowrite_flag = false
399
- end
400
-
401
- def clear_argv
402
- while ! ARGV.empty?
403
- ARGV.pop
404
- end
405
- end
406
-
407
- def test_default_options
408
- in_environment("RAKEOPT" => nil) do
409
- opts = command_line
410
- assert_nil opts.classic_namespace
411
- assert_nil opts.dryrun
412
- assert_nil opts.ignore_system
413
- assert_nil opts.load_system
414
- assert_nil opts.nosearch
415
- assert_equal ['rakelib'], opts.rakelib
416
- assert_nil opts.show_prereqs
417
- assert_nil opts.show_task_pattern
418
- assert_nil opts.show_tasks
419
- assert_nil opts.silent
420
- assert_nil opts.trace
421
- assert_equal ['rakelib'], opts.rakelib
422
- assert ! Rake::FileUtilsExt.verbose_flag
423
- assert ! Rake::FileUtilsExt.nowrite_flag
424
- end
425
- end
426
-
427
- def test_dry_run
428
- in_environment do
429
- flags('--dry-run', '-n') do |opts|
430
- assert opts.dryrun
431
- assert opts.trace
432
- assert Rake::FileUtilsExt.verbose_flag
433
- assert Rake::FileUtilsExt.nowrite_flag
434
- end
435
- end
436
- end
437
-
438
- def test_describe
439
- in_environment do
440
- flags('--describe') do |opts|
441
- assert_equal :describe, opts.show_tasks
442
- assert_equal(//.to_s, opts.show_task_pattern.to_s)
443
- end
444
- end
445
- end
446
-
447
- def test_describe_with_pattern
448
- in_environment do
449
- flags('--describe=X') do |opts|
450
- assert_equal :describe, opts.show_tasks
451
- assert_equal(/X/.to_s, opts.show_task_pattern.to_s)
452
- end
453
- end
454
- end
455
-
456
- def test_execute
457
- in_environment do
458
- $xyzzy = 0
459
- flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts|
460
- assert_equal 1, $xyzzy
461
- assert_equal :exit, @exit
462
- $xyzzy = 0
463
- end
464
- end
465
- end
466
-
467
- def test_execute_and_continue
468
- in_environment do
469
- $xyzzy = 0
470
- flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts|
471
- assert_equal 1, $xyzzy
472
- assert_not_equal :exit, @exit
473
- $xyzzy = 0
474
- end
475
- end
476
- end
477
-
478
- def test_execute_and_print
479
- in_environment do
480
- $xyzzy = 0
481
- flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts|
482
- assert_equal 'pugh', $xyzzy
483
- assert_equal :exit, @exit
484
- assert_match(/^pugh$/, @out)
485
- $xyzzy = 0
486
- end
487
- end
488
- end
489
-
490
- def test_help
491
- in_environment do
492
- flags('--help', '-H', '-h') do |opts|
493
- assert_match(/\Adrake/, @out)
494
- assert_match(/\boptions\b/, @out)
495
- assert_match(/\btargets\b/, @out)
496
- assert_equal :exit, @exit
497
- assert_equal :exit, @exit
498
- end
499
- end
500
- end
501
-
502
- def test_libdir
503
- in_environment do
504
- flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts|
505
- $:.include?('xx')
506
- end
507
- end
508
- ensure
509
- $:.delete('xx')
510
- end
511
-
512
- def test_rakefile
513
- in_environment do
514
- flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts|
515
- assert_equal ['RF'], @app.instance_eval { @rakefiles }
516
- end
517
- end
518
- end
519
-
520
- def test_rakelib
521
- in_environment do
522
- flags(['--rakelibdir', 'A:B:C'], ['--rakelibdir=A:B:C'], ['-R', 'A:B:C'], ['-RA:B:C']) do |opts|
523
- assert_equal ['A', 'B', 'C'], opts.rakelib
524
- end
525
- end
526
- end
527
-
528
- def test_require
529
- in_environment do
530
- flags(['--require', 'test/reqfile'], '-rtest/reqfile2', '-rtest/reqfile3') do |opts|
531
- end
532
- assert TESTING_REQUIRE.include?(1)
533
- assert TESTING_REQUIRE.include?(2)
534
- assert TESTING_REQUIRE.include?(3)
535
- assert_equal 3, TESTING_REQUIRE.size
536
- end
537
- end
538
-
539
- def test_missing_require
540
- in_environment do
541
- ex = assert_exception(LoadError) do
542
- flags(['--require', 'test/missing']) do |opts|
543
- end
544
- end
545
- assert_match(/such file/, ex.message)
546
- assert_match(/test\/missing/, ex.message)
547
- end
548
- end
549
-
550
- def test_prereqs
551
- in_environment do
552
- flags('--prereqs', '-P') do |opts|
553
- assert opts.show_prereqs
554
- end
555
- end
556
- end
557
-
558
- def test_quiet
559
- in_environment do
560
- flags('--quiet', '-q') do |opts|
561
- assert ! Rake::FileUtilsExt.verbose_flag
562
- assert ! opts.silent
563
- end
564
- end
565
- end
566
-
567
- def test_no_search
568
- in_environment do
569
- flags('--nosearch', '--no-search', '-N') do |opts|
570
- assert opts.nosearch
571
- end
572
- end
573
- end
574
-
575
- def test_silent
576
- in_environment do
577
- flags('--silent', '-s') do |opts|
578
- assert ! Rake::FileUtilsExt.verbose_flag
579
- assert opts.silent
580
- end
581
- end
582
- end
583
-
584
- def test_system
585
- in_environment do
586
- flags('--system', '-g') do |opts|
587
- assert opts.load_system
588
- end
589
- end
590
- end
591
-
592
- def test_no_system
593
- in_environment do
594
- flags('--no-system', '-G') do |opts|
595
- assert opts.ignore_system
596
- end
597
- end
598
- end
599
-
600
- def test_trace
601
- in_environment do
602
- flags('--trace', '-t') do |opts|
603
- assert opts.trace
604
- assert Rake::FileUtilsExt.verbose_flag
605
- assert ! Rake::FileUtilsExt.nowrite_flag
606
- end
607
- end
608
- end
609
-
610
- def test_trace_rules
611
- in_environment do
612
- flags('--rules') do |opts|
613
- assert opts.trace_rules
614
- end
615
- end
616
- end
617
-
618
- def test_tasks
619
- in_environment do
620
- flags('--tasks', '-T') do |opts|
621
- assert_equal :tasks, opts.show_tasks
622
- assert_equal(//.to_s, opts.show_task_pattern.to_s)
623
- end
624
- flags(['--tasks', 'xyz'], ['-Txyz']) do |opts|
625
- assert_equal :tasks, opts.show_tasks
626
- assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s)
627
- end
628
- end
629
- end
630
-
631
- def test_where
632
- in_environment do
633
- flags('--where', '-W') do |opts|
634
- assert_equal :lines, opts.show_tasks
635
- assert_equal(//.to_s, opts.show_task_pattern.to_s)
636
- end
637
- flags(['--where', 'xyz'], ['-Wxyz']) do |opts|
638
- assert_equal :lines, opts.show_tasks
639
- assert_equal(/xyz/.to_s, opts.show_task_pattern.to_s)
640
- end
641
- end
642
- end
643
-
644
- def test_no_deprecated_messages
645
- in_environment do
646
- flags('--no-deprecation-warnings', '-X') do |opts|
647
- assert opts.ignore_deprecate
648
- end
649
- end
650
- end
651
-
652
- def test_verbose
653
- in_environment do
654
- flags('--verbose', '-V') do |opts|
655
- assert Rake::FileUtilsExt.verbose_flag
656
- assert ! opts.silent
657
- end
658
- end
659
- end
660
-
661
- def test_version
662
- in_environment do
663
- flags('--version', '-V') do |opts|
664
- assert_match(/\bversion\b/, @out)
665
- assert_match(/\b#{RAKEVERSION}\b/, @out)
666
- assert_equal :exit, @exit
667
- end
668
- end
669
- end
670
-
671
- def test_classic_namespace
672
- in_environment do
673
- error_messages = capture_stderr do
674
- flags(['--classic-namespace'], ['-C', '-T', '-P', '-n', '-s', '-t']) do |opts|
675
- assert opts.classic_namespace
676
- assert_equal opts.show_tasks, $show_tasks
677
- assert_equal opts.show_prereqs, $show_prereqs
678
- assert_equal opts.trace, $trace
679
- assert_equal opts.dryrun, $dryrun
680
- assert_equal opts.silent, $silent
681
- end
682
- end
683
- assert_match(/deprecated/, error_messages)
684
- end
685
- end
686
-
687
- def test_bad_option
688
- in_environment do
689
- error_messages = capture_stderr do
690
- ex = assert_exception(OptionParser::InvalidOption) do
691
- flags('--bad-option')
692
- end
693
- if ex.message =~ /^While/ # Ruby 1.9 error message
694
- assert_match(/while parsing/i, ex.message)
695
- else # Ruby 1.8 error message
696
- assert_match(/(invalid|unrecognized) option/i, ex.message)
697
- assert_match(/--bad-option/, ex.message)
698
- end
699
- end
700
- assert_equal '', error_messages
701
- end
702
- end
703
-
704
- def test_task_collection
705
- command_line("a", "b")
706
- assert_equal ["a", "b"], @tasks.sort
707
- end
708
-
709
- def test_default_task_collection
710
- command_line()
711
- assert_equal ["default"], @tasks
712
- end
713
-
714
- def test_environment_definition
715
- ENV.delete('TESTKEY')
716
- command_line("a", "TESTKEY=12")
717
- assert_equal ["a"], @tasks.sort
718
- assert '12', ENV['TESTKEY']
719
- end
720
-
721
- private
722
-
723
- def flags(*sets)
724
- sets.each do |set|
725
- ARGV.clear
726
- @out = capture_stdout {
727
- @exit = catch(:system_exit) { command_line(*set) }
728
- }
729
- yield(@app.options) if block_given?
730
- end
731
- end
732
-
733
- def command_line(*options)
734
- options.each do |opt| ARGV << opt end
735
- @app = Rake::Application.new
736
- @app.options.threads = Rake.application.options.threads
737
- def @app.exit(*args)
738
- throw :system_exit, :exit
739
- end
740
- @app.instance_eval do
741
- handle_options
742
- collect_tasks
743
- end
744
- @tasks = @app.top_level_tasks
745
- @app.options
746
- end
747
- end
748
-
749
- class TestTaskArgumentParsing < Test::Unit::TestCase
750
- def setup
751
- @app = Rake::Application.new
752
- @app.options.threads = Rake.application.options.threads
753
- end
754
-
755
- def test_name_only
756
- name, args = @app.parse_task_string("name")
757
- assert_equal "name", name
758
- assert_equal [], args
759
- end
760
-
761
- def test_empty_args
762
- name, args = @app.parse_task_string("name[]")
763
- assert_equal "name", name
764
- assert_equal [], args
765
- end
766
-
767
- def test_one_argument
768
- name, args = @app.parse_task_string("name[one]")
769
- assert_equal "name", name
770
- assert_equal ["one"], args
771
- end
772
-
773
- def test_two_arguments
774
- name, args = @app.parse_task_string("name[one,two]")
775
- assert_equal "name", name
776
- assert_equal ["one", "two"], args
777
- end
778
-
779
- def test_can_handle_spaces_between_args
780
- name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]")
781
- assert_equal "name", name
782
- assert_equal ["one", "two", "three", "four"], args
783
- end
784
-
785
- def test_keeps_embedded_spaces
786
- name, args = @app.parse_task_string("name[a one ana, two]")
787
- assert_equal "name", name
788
- assert_equal ["a one ana", "two"], args
789
- end
790
-
791
- end
792
-
793
- class TestTaskArgumentParsing < Test::Unit::TestCase
794
- include InEnvironment
795
-
796
- def test_terminal_width_using_env
797
- app = Rake::Application.new
798
- app.options.threads = Rake.application.options.threads
799
- in_environment('RAKE_COLUMNS' => '1234') do
800
- assert_equal 1234, app.terminal_width
801
- end
802
- end
803
-
804
- def test_terminal_width_using_stty
805
- app = Rake::Application.new
806
- app.options.threads = Rake.application.options.threads
807
- flexmock(app,
808
- :unix? => true,
809
- :dynamic_width_stty => 1235,
810
- :dynamic_width_tput => 0)
811
- in_environment('RAKE_COLUMNS' => nil) do
812
- assert_equal 1235, app.terminal_width
813
- end
814
- end
815
-
816
- def test_terminal_width_using_tput
817
- app = Rake::Application.new
818
- app.options.threads = Rake.application.options.threads
819
- flexmock(app,
820
- :unix? => true,
821
- :dynamic_width_stty => 0,
822
- :dynamic_width_tput => 1236)
823
- in_environment('RAKE_COLUMNS' => nil) do
824
- assert_equal 1236, app.terminal_width
825
- end
826
- end
827
-
828
- def test_terminal_width_using_hardcoded_80
829
- app = Rake::Application.new
830
- app.options.threads = Rake.application.options.threads
831
- flexmock(app, :unix? => false)
832
- in_environment('RAKE_COLUMNS' => nil) do
833
- assert_equal 80, app.terminal_width
834
- end
835
- end
836
-
837
- def test_terminal_width_with_failure
838
- app = Rake::Application.new
839
- app.options.threads = Rake.application.options.threads
840
- flexmock(app).should_receive(:unix?).and_throw(RuntimeError)
841
- in_environment('RAKE_COLUMNS' => nil) do
842
- assert_equal 80, app.terminal_width
843
- end
844
- end
845
-
846
- def test_no_rakeopt
847
- in_environment do
848
- ARGV << '--trace'
849
- app = Rake::Application.new
850
- app.init
851
- assert !app.options.silent
852
- end
853
- end
854
-
855
- def test_rakeopt_with_blank_options
856
- in_environment("RAKEOPT" => "") do
857
- ARGV << '--trace'
858
- app = Rake::Application.new
859
- app.init
860
- assert !app.options.silent
861
- end
862
- end
863
-
864
- def test_rakeopt_with_silent_options
865
- in_environment("RAKEOPT" => "-s") do
866
- app = Rake::Application.new
867
- app.init
868
- assert app.options.silent
869
- end
870
- end
871
- end