rake 11.1.2 → 11.2.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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rubocop.yml +0 -9
  4. data/.travis.yml +28 -0
  5. data/CONTRIBUTING.rdoc +3 -5
  6. data/Gemfile +3 -0
  7. data/History.rdoc +1770 -273
  8. data/Rakefile +15 -68
  9. data/appveyor.yml +24 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +6 -0
  12. data/doc/release_notes/README.md +4 -0
  13. data/doc/release_notes/rake-0.7.3.rdoc +0 -0
  14. data/{bin → exe}/rake +0 -6
  15. data/lib/rake.rb +1 -3
  16. data/lib/rake/application.rb +3 -6
  17. data/lib/rake/cpu_counter.rb +3 -17
  18. data/lib/rake/file_utils.rb +22 -6
  19. data/lib/rake/packagetask.rb +12 -1
  20. data/lib/rake/rake_test_loader.rb +0 -1
  21. data/lib/rake/rule_recursion_overflow_error.rb +0 -1
  22. data/lib/rake/task.rb +3 -3
  23. data/lib/rake/task_arguments.rb +2 -1
  24. data/lib/rake/testtask.rb +5 -1
  25. data/lib/rake/thread_pool.rb +0 -1
  26. data/lib/rake/version.rb +2 -0
  27. data/rake.gemspec +30 -0
  28. metadata +21 -110
  29. data/.autotest +0 -7
  30. data/.togglerc +0 -7
  31. data/Manifest.txt +0 -154
  32. data/lib/rake/contrib/.document +0 -1
  33. data/rakelib/test_times.rake +0 -25
  34. data/test/file_creation.rb +0 -34
  35. data/test/helper.rb +0 -134
  36. data/test/support/rakefile_definitions.rb +0 -476
  37. data/test/support/ruby_runner.rb +0 -34
  38. data/test/test_private_reader.rb +0 -42
  39. data/test/test_rake.rb +0 -40
  40. data/test/test_rake_application.rb +0 -659
  41. data/test/test_rake_application_options.rb +0 -468
  42. data/test/test_rake_backtrace.rb +0 -119
  43. data/test/test_rake_clean.rb +0 -61
  44. data/test/test_rake_cpu_counter.rb +0 -68
  45. data/test/test_rake_definitions.rb +0 -84
  46. data/test/test_rake_directory_task.rb +0 -76
  47. data/test/test_rake_dsl.rb +0 -40
  48. data/test/test_rake_early_time.rb +0 -31
  49. data/test/test_rake_extension.rb +0 -59
  50. data/test/test_rake_file_creation_task.rb +0 -56
  51. data/test/test_rake_file_list.rb +0 -687
  52. data/test/test_rake_file_list_path_map.rb +0 -15
  53. data/test/test_rake_file_task.rb +0 -197
  54. data/test/test_rake_file_utils.rb +0 -318
  55. data/test/test_rake_ftp_file.rb +0 -74
  56. data/test/test_rake_functional.rb +0 -484
  57. data/test/test_rake_invocation_chain.rb +0 -64
  58. data/test/test_rake_late_time.rb +0 -18
  59. data/test/test_rake_linked_list.rb +0 -84
  60. data/test/test_rake_makefile_loader.rb +0 -46
  61. data/test/test_rake_multi_task.rb +0 -64
  62. data/test/test_rake_name_space.rb +0 -57
  63. data/test/test_rake_package_task.rb +0 -79
  64. data/test/test_rake_path_map.rb +0 -168
  65. data/test/test_rake_path_map_explode.rb +0 -34
  66. data/test/test_rake_path_map_partial.rb +0 -18
  67. data/test/test_rake_pathname_extensions.rb +0 -15
  68. data/test/test_rake_pseudo_status.rb +0 -21
  69. data/test/test_rake_rake_test_loader.rb +0 -20
  70. data/test/test_rake_reduce_compat.rb +0 -26
  71. data/test/test_rake_require.rb +0 -40
  72. data/test/test_rake_rules.rb +0 -388
  73. data/test/test_rake_scope.rb +0 -44
  74. data/test/test_rake_task.rb +0 -430
  75. data/test/test_rake_task_argument_parsing.rb +0 -119
  76. data/test/test_rake_task_arguments.rb +0 -134
  77. data/test/test_rake_task_manager.rb +0 -178
  78. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  79. data/test/test_rake_task_with_arguments.rb +0 -172
  80. data/test/test_rake_test_task.rb +0 -130
  81. data/test/test_rake_thread_pool.rb +0 -145
  82. data/test/test_rake_top_level_functions.rb +0 -71
  83. data/test/test_rake_win32.rb +0 -72
  84. data/test/test_thread_history_display.rb +0 -101
  85. data/test/test_trace_output.rb +0 -52
@@ -1,172 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeTaskWithArguments < Rake::TestCase
4
- include Rake
5
-
6
- def setup
7
- super
8
-
9
- Task.clear
10
- Rake::TaskManager.record_task_metadata = true
11
- end
12
-
13
- def teardown
14
- Rake::TaskManager.record_task_metadata = false
15
- Rake.application.thread_pool.join
16
-
17
- super
18
- end
19
-
20
- def test_no_args_given
21
- t = task :t
22
- assert_equal [], t.arg_names
23
- end
24
-
25
- def test_args_given
26
- t = task :t, :a, :b
27
- assert_equal [:a, :b], t.arg_names
28
- end
29
-
30
- def test_name_and_needs
31
- t = task(:t => [:pre])
32
- assert_equal "t", t.name
33
- assert_equal [], t.arg_names
34
- assert_equal ["pre"], t.prerequisites
35
- end
36
-
37
- def test_name_args_and_prereqs
38
- t = task(:t, [:x, :y] => [:pre])
39
- assert_equal "t", t.name
40
- assert_equal [:x, :y], t.arg_names
41
- assert_equal ["pre"], t.prerequisites
42
- end
43
-
44
- def test_arg_list_is_empty_if_no_args_given
45
- t = task(:t) { |tt, args| assert_equal({}, args.to_hash) }
46
- t.invoke(1, 2, 3)
47
- end
48
-
49
- def test_tasks_can_access_arguments_as_hash
50
- t = task :t, :a, :b, :c do |tt, args|
51
- assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash)
52
- assert_equal 1, args[:a]
53
- assert_equal 2, args[:b]
54
- assert_equal 3, args[:c]
55
- assert_equal 1, args.a
56
- assert_equal 2, args.b
57
- assert_equal 3, args.c
58
- end
59
- t.invoke(1, 2, 3)
60
- end
61
-
62
- def test_actions_of_various_arity_are_ok_with_args
63
- notes = []
64
- t = task(:t, :x) do
65
- notes << :a
66
- end
67
- t.enhance do | |
68
- notes << :b
69
- end
70
- t.enhance do |task|
71
- notes << :c
72
- assert_kind_of Task, task
73
- end
74
- t.enhance do |t2, args|
75
- notes << :d
76
- assert_equal t, t2
77
- assert_equal({:x => 1}, args.to_hash)
78
- end
79
- t.invoke(1)
80
- assert_equal [:a, :b, :c, :d], notes
81
- end
82
-
83
- def test_arguments_are_passed_to_block
84
- t = task(:t, :a, :b) { |tt, args|
85
- assert_equal({ :a => 1, :b => 2 }, args.to_hash)
86
- }
87
- t.invoke(1, 2)
88
- end
89
-
90
- def test_extra_parameters_are_ignored
91
- t = task(:t, :a) { |tt, args|
92
- assert_equal 1, args.a
93
- assert_nil args.b
94
- }
95
- t.invoke(1, 2)
96
- end
97
-
98
- def test_arguments_are_passed_to_all_blocks
99
- counter = 0
100
- t = task :t, :a
101
- task :t do |tt, args|
102
- assert_equal 1, args.a
103
- counter += 1
104
- end
105
- task :t do |tt, args|
106
- assert_equal 1, args.a
107
- counter += 1
108
- end
109
- t.invoke(1)
110
- assert_equal 2, counter
111
- end
112
-
113
- def test_block_with_no_parameters_is_ok
114
- t = task(:t) { }
115
- t.invoke(1, 2)
116
- end
117
-
118
- def test_name_with_args
119
- desc "T"
120
- t = task(:tt, :a, :b)
121
- assert_equal "tt", t.name
122
- assert_equal "T", t.comment
123
- assert_equal "[a,b]", t.arg_description
124
- assert_equal "tt[a,b]", t.name_with_args
125
- assert_equal [:a, :b], t.arg_names
126
- end
127
-
128
- def test_named_args_are_passed_to_prereqs
129
- value = nil
130
- task(:pre, :rev) { |t, args| value = args.rev }
131
- t = task(:t, [:name, :rev] => [:pre])
132
- t.invoke("bill", "1.2")
133
- assert_equal "1.2", value
134
- end
135
-
136
- def test_args_not_passed_if_no_prereq_names_on_task
137
- task(:pre) { |t, args|
138
- assert_equal({}, args.to_hash)
139
- assert_equal "bill", args.name
140
- }
141
- t = task(:t, [:name, :rev] => [:pre])
142
- t.invoke("bill", "1.2")
143
- end
144
-
145
- def test_args_not_passed_if_no_prereq_names_on_multitask
146
- task(:pre) { |t, args|
147
- assert_equal({}, args.to_hash)
148
- assert_equal "bill", args.name
149
- }
150
- t = multitask(:t, [:name, :rev] => [:pre])
151
- t.invoke("bill", "1.2")
152
- end
153
-
154
- def test_args_not_passed_if_no_arg_names
155
- task(:pre, :rev) { |t, args|
156
- assert_equal({}, args.to_hash)
157
- }
158
- t = task(:t => [:pre])
159
- t.invoke("bill", "1.2")
160
- end
161
-
162
- def test_values_at
163
- t = task(:pre, [:a, :b, :c]) { |task, args|
164
- a, b, c = args.values_at(:a, :b, :c)
165
- assert_equal %w[1 2 3], [a, b, c]
166
- }
167
-
168
- t.invoke(*%w[1 2 3])
169
-
170
- # HACK no assertions
171
- end
172
- end
@@ -1,130 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'rake/testtask'
3
-
4
- class TestRakeTestTask < Rake::TestCase
5
- include Rake
6
-
7
- def test_initialize
8
- tt = Rake::TestTask.new do |t| end
9
- refute_nil tt
10
- assert_equal :test, tt.name
11
- assert_equal ['lib'], tt.libs
12
- assert_equal 'test/test*.rb', tt.pattern
13
- assert_equal false, tt.verbose
14
- assert_equal true, tt.warning
15
- assert Task.task_defined?(:test)
16
- end
17
-
18
- def test_initialize_override
19
- tt = Rake::TestTask.new(:example) do |t|
20
- t.description = "Run example tests"
21
- t.libs = ['src', 'ext']
22
- t.pattern = 'test/tc_*.rb'
23
- t.warning = true
24
- t.verbose = true
25
- end
26
- refute_nil tt
27
- assert_equal "Run example tests", tt.description
28
- assert_equal :example, tt.name
29
- assert_equal ['src', 'ext'], tt.libs
30
- assert_equal 'test/tc_*.rb', tt.pattern
31
- assert_equal true, tt.warning
32
- assert_equal true, tt.verbose
33
- assert_match(/-w/, tt.ruby_opts_string)
34
- assert Task.task_defined?(:example)
35
- end
36
-
37
- def test_file_list_env_test
38
- ENV['TEST'] = 'testfile.rb'
39
- tt = Rake::TestTask.new do |t|
40
- t.pattern = '*'
41
- end
42
-
43
- assert_equal ["testfile.rb"], tt.file_list.to_a
44
- ensure
45
- ENV.delete 'TEST'
46
- end
47
-
48
- def test_libs_equals
49
- test_task = Rake::TestTask.new do |t|
50
- t.libs << ["A", "B"]
51
- end
52
-
53
- path = %w[lib A B].join File::PATH_SEPARATOR
54
-
55
- assert_equal "-w -I\"#{path}\"", test_task.ruby_opts_string
56
- end
57
-
58
- def test_libs_equals_empty
59
- test_task = Rake::TestTask.new do |t|
60
- t.libs = []
61
- t.warning = false
62
- end
63
-
64
- assert_equal '', test_task.ruby_opts_string
65
- end
66
-
67
- def test_pattern_equals
68
- tt = Rake::TestTask.new do |t|
69
- t.pattern = '*.rb'
70
- end
71
- assert_equal ['*.rb'], tt.file_list.to_a
72
- end
73
-
74
- def test_pattern_equals_test_files_equals
75
- tt = Rake::TestTask.new do |t|
76
- t.test_files = FileList['a.rb', 'b.rb']
77
- t.pattern = '*.rb'
78
- end
79
- assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a
80
- end
81
-
82
- def test_run_code_direct
83
- test_task = Rake::TestTask.new do |t|
84
- t.loader = :direct
85
- end
86
-
87
- assert_equal '-e "ARGV.each{|f| require f}"', test_task.run_code
88
- end
89
-
90
- def test_run_code_rake
91
- spec = Gem::Specification.new 'rake', 0
92
- spec.loaded_from = File.join Gem::Specification.dirs.last, 'rake-0.gemspec'
93
- rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], spec
94
-
95
- test_task = Rake::TestTask.new do |t|
96
- t.loader = :rake
97
- end
98
-
99
- assert_match(/\A-I".*?" ".*?"\Z/, test_task.run_code)
100
- ensure
101
- Gem.loaded_specs['rake'] = rake
102
- end
103
-
104
- def test_run_code_rake_default_gem
105
- skip 'this ruby does not have default gems' unless
106
- Gem::Specification.method_defined? :default_specifications_dir
107
-
108
- default_spec = Gem::Specification.new 'rake', 0
109
- default_spec.loaded_from = File.join Gem::Specification.default_specifications_dir, 'rake-0.gemspec'
110
- begin
111
- rake, Gem.loaded_specs['rake'] = Gem.loaded_specs['rake'], default_spec
112
-
113
- test_task = Rake::TestTask.new do |t|
114
- t.loader = :rake
115
- end
116
-
117
- assert_match(/\A(-I".*?" *)* ".*?"\Z/, test_task.run_code)
118
- ensure
119
- Gem.loaded_specs['rake'] = rake
120
- end
121
- end
122
-
123
- def test_test_files_equals
124
- tt = Rake::TestTask.new do |t|
125
- t.test_files = FileList['a.rb', 'b.rb']
126
- end
127
-
128
- assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a
129
- end
130
- end
@@ -1,145 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'rake/thread_pool'
3
-
4
- class TestRakeTestThreadPool < Rake::TestCase
5
- include Rake
6
-
7
- def test_pool_executes_in_current_thread_for_zero_threads
8
- pool = ThreadPool.new(0)
9
- f = pool.future { Thread.current }
10
- pool.join
11
- assert_equal Thread.current, f.value
12
- end
13
-
14
- def test_pool_executes_in_other_thread_for_pool_of_size_one
15
- pool = ThreadPool.new(1)
16
- f = pool.future { Thread.current }
17
- pool.join
18
- refute_equal Thread.current, f.value
19
- end
20
-
21
- def test_pool_executes_in_two_other_threads_for_pool_of_size_two
22
- pool = ThreadPool.new(2)
23
- threads = 2.times.map {
24
- pool.future {
25
- sleep 0.1
26
- Thread.current
27
- }
28
- }.each { |f|
29
- f.value
30
- }
31
-
32
- refute_equal threads[0], threads[1]
33
- refute_equal Thread.current, threads[0]
34
- refute_equal Thread.current, threads[1]
35
- ensure
36
- pool.join
37
- end
38
-
39
- def test_pool_creates_the_correct_number_of_threads
40
- pool = ThreadPool.new(2)
41
- threads = Set.new
42
- t_mutex = Mutex.new
43
- 10.times.each do
44
- pool.future do
45
- sleep 0.02
46
- t_mutex.synchronize { threads << Thread.current }
47
- end
48
- end
49
- pool.join
50
- assert_equal 2, threads.count
51
- end
52
-
53
- def test_pool_future_does_not_duplicate_arguments
54
- pool = ThreadPool.new(2)
55
- obj = Object.new
56
- captured = nil
57
- pool.future(obj) { |var| captured = var }
58
- pool.join
59
- assert_equal obj, captured
60
- end
61
-
62
- def test_pool_join_empties_queue
63
- pool = ThreadPool.new(2)
64
- repeat = 25
65
- repeat.times {
66
- pool.future do
67
- repeat.times {
68
- pool.future do
69
- repeat.times {
70
- pool.future do end
71
- }
72
- end
73
- }
74
- end
75
- }
76
-
77
- pool.join
78
- assert_equal(
79
- true,
80
- pool.__send__(:__queue__).empty?,
81
- "queue should be empty")
82
- end
83
-
84
- CustomError = Class.new(StandardError)
85
-
86
- # test that throwing an exception way down in the blocks propagates
87
- # to the top
88
- def test_exceptions
89
- pool = ThreadPool.new(10)
90
-
91
- deep_exception_block = lambda do |count|
92
- raise CustomError if count < 1
93
- pool.future(count - 1, &deep_exception_block).value
94
- end
95
-
96
- assert_raises(CustomError) do
97
- pool.future(2, &deep_exception_block).value
98
- end
99
- ensure
100
- pool.join
101
- end
102
-
103
- def test_pool_prevents_deadlock
104
- pool = ThreadPool.new(5)
105
-
106
- common_dependency_a = pool.future { sleep 0.2 }
107
- futures_a = 10.times.map {
108
- pool.future {
109
- common_dependency_a.value
110
- sleep(rand() * 0.01)
111
- }
112
- }
113
-
114
- common_dependency_b = pool.future { futures_a.each { |f| f.value } }
115
- futures_b = 10.times.map {
116
- pool.future {
117
- common_dependency_b.value
118
- sleep(rand() * 0.01)
119
- }
120
- }
121
-
122
- futures_b.each { |f| f.value }
123
- pool.join
124
- end
125
-
126
- def test_pool_reports_correct_results
127
- pool = ThreadPool.new(7)
128
-
129
- a = 18
130
- b = 5
131
- c = 3
132
-
133
- result = a.times.map do
134
- pool.future do
135
- b.times.map do
136
- pool.future { sleep rand * 0.001; c }
137
- end.reduce(0) { |m, f| m + f.value }
138
- end
139
- end.reduce(0) { |m, f| m + f.value }
140
-
141
- assert_equal a * b * c, result
142
- pool.join
143
- end
144
-
145
- end
@@ -1,71 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeTopLevelFunctions < Rake::TestCase
4
-
5
- def setup
6
- super
7
-
8
- @app = Object.new
9
-
10
- def @app.called
11
- @called
12
- end
13
-
14
- def @app.method_missing(*a, &b)
15
- @called ||= []
16
- @called << [a, b]
17
- nil
18
- end
19
-
20
- Rake.application = @app
21
- end
22
-
23
- def test_namespace
24
- block = proc do end
25
-
26
- namespace("xyz", &block)
27
-
28
- expected = [
29
- [[:in_namespace, 'xyz'], block]
30
- ]
31
-
32
- assert_equal expected, @app.called
33
- end
34
-
35
- def test_import
36
- import('x', 'y', 'z')
37
-
38
- expected = [
39
- [[:add_import, 'x'], nil],
40
- [[:add_import, 'y'], nil],
41
- [[:add_import, 'z'], nil],
42
- ]
43
-
44
- assert_equal expected, @app.called
45
- end
46
-
47
- def test_when_writing
48
- out, = capture_io do
49
- when_writing("NOTWRITING") do
50
- puts "WRITING"
51
- end
52
- end
53
- assert_equal "WRITING\n", out
54
- end
55
-
56
- def test_when_not_writing
57
- Rake::FileUtilsExt.nowrite_flag = true
58
- _, err = capture_io do
59
- when_writing("NOTWRITING") do
60
- puts "WRITING"
61
- end
62
- end
63
- assert_equal "DRYRUN: NOTWRITING\n", err
64
- ensure
65
- Rake::FileUtilsExt.nowrite_flag = false
66
- end
67
-
68
- def test_missing_other_constant
69
- assert_raises(NameError) do Object.const_missing(:Xyz) end
70
- end
71
- end