tap 0.7.9 → 0.8.0
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.
- data/History +28 -0
- data/MIT-LICENSE +1 -1
- data/README +71 -43
- data/Rakefile +81 -64
- data/Tutorial +235 -0
- data/bin/tap +80 -44
- data/lib/tap.rb +41 -12
- data/lib/tap/app.rb +243 -246
- data/lib/tap/file_task.rb +357 -118
- data/lib/tap/generator.rb +88 -29
- data/lib/tap/generator/generators/config/config_generator.rb +4 -2
- data/lib/tap/generator/generators/config/templates/config.erb +1 -2
- data/lib/tap/generator/generators/file_task/file_task_generator.rb +3 -18
- data/lib/tap/generator/generators/file_task/templates/task.erb +22 -15
- data/lib/tap/generator/generators/file_task/templates/test.erb +13 -2
- data/{test/test/inference_methods/test_assert_files_exist/input/input_1.txt → lib/tap/generator/generators/generator/USAGE} +0 -0
- data/lib/tap/generator/generators/generator/generator_generator.rb +21 -0
- data/lib/tap/generator/generators/generator/templates/generator.erb +23 -0
- data/lib/tap/generator/generators/generator/templates/usage.erb +1 -0
- data/{test/test/inference_methods/test_assert_files_exist/input/input_2.txt → lib/tap/generator/generators/package/USAGE} +0 -0
- data/lib/tap/generator/generators/package/package_generator.rb +38 -0
- data/lib/tap/generator/generators/package/templates/package.erb +186 -0
- data/lib/tap/generator/generators/root/root_generator.rb +14 -9
- data/lib/tap/generator/generators/root/templates/Rakefile +20 -14
- data/{test/test/inference_methods/test_infer_glob/expected/file.yml → lib/tap/generator/generators/root/templates/ReadMe.txt} +0 -0
- data/lib/tap/generator/generators/root/templates/tap.yml +82 -0
- data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +0 -1
- data/lib/tap/generator/generators/root/templates/test/tap_test_suite.rb +2 -1
- data/{test/test/inference_methods/test_infer_glob/expected/file_1.txt → lib/tap/generator/generators/script/USAGE} +0 -0
- data/lib/tap/generator/generators/script/script_generator.rb +17 -0
- data/lib/tap/generator/generators/script/templates/script.erb +42 -0
- data/lib/tap/generator/generators/task/task_generator.rb +1 -1
- data/lib/tap/generator/generators/task/templates/task.erb +24 -16
- data/lib/tap/generator/generators/task/templates/test.erb +13 -17
- data/lib/tap/generator/generators/workflow/templates/task.erb +10 -10
- data/lib/tap/generator/generators/workflow/templates/test.erb +1 -1
- data/lib/tap/generator/generators/workflow/workflow_generator.rb +3 -18
- data/lib/tap/root.rb +108 -146
- data/lib/tap/script.rb +362 -0
- data/lib/tap/script/console.rb +28 -0
- data/lib/tap/script/destroy.rb +13 -1
- data/lib/tap/script/generate.rb +13 -1
- data/lib/tap/script/run.rb +100 -57
- data/lib/tap/support/batch_queue.rb +0 -3
- data/lib/tap/support/logger.rb +6 -3
- data/lib/tap/support/rake.rb +54 -0
- data/lib/tap/support/task_configuration.rb +169 -0
- data/lib/tap/support/tdoc.rb +198 -0
- data/lib/tap/support/tdoc/config_attr.rb +338 -0
- data/lib/tap/support/tdoc/tdoc_html_generator.rb +38 -0
- data/lib/tap/support/tdoc/tdoc_html_template.rb +42 -0
- data/lib/tap/support/versions.rb +33 -1
- data/lib/tap/task.rb +339 -227
- data/lib/tap/test.rb +86 -128
- data/lib/tap/test/env_vars.rb +16 -5
- data/lib/tap/test/file_methods.rb +373 -0
- data/lib/tap/test/subset_methods.rb +299 -180
- data/lib/tap/version.rb +2 -1
- data/lib/tap/workflow.rb +2 -0
- data/test/app/lib/app_test_task.rb +1 -0
- data/test/app_test.rb +327 -83
- data/test/check/binding_eval.rb +23 -0
- data/test/check/define_method_check.rb +22 -0
- data/test/check/dependencies_check.rb +175 -0
- data/test/check/inheritance_check.rb +22 -0
- data/test/file_task_test.rb +524 -291
- data/test/{test/inference_methods/test_infer_glob/expected/file_2.txt → root/glob/one.txt} +0 -0
- data/test/root/glob/two.txt +0 -0
- data/test/root_test.rb +330 -262
- data/test/script_test.rb +194 -0
- data/test/support/audit_test.rb +5 -2
- data/test/support/combinator_test.rb +10 -10
- data/test/support/rake_test.rb +35 -0
- data/test/support/task_configuration_test.rb +272 -0
- data/test/support/tdoc_test.rb +363 -0
- data/test/support/templater_test.rb +2 -2
- data/test/support/versions_test.rb +32 -0
- data/test/tap_test_helper.rb +39 -0
- data/test/task_base_test.rb +115 -0
- data/test/task_class_test.rb +56 -4
- data/test/task_execute_test.rb +29 -0
- data/test/task_test.rb +89 -70
- data/test/test/env_vars_test.rb +48 -0
- data/test/test/{inference_methods → file_methods}/test_assert_expected/expected/file.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_assert_expected/expected/folder/file.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_assert_expected/input/file.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_assert_expected/input/folder/file.txt +0 -0
- data/test/test/file_methods/test_assert_files_exist/input/input_1.txt +0 -0
- data/test/test/file_methods/test_assert_files_exist/input/input_2.txt +0 -0
- data/test/test/file_methods/test_assert_output_files_equal/expected/one.txt +1 -0
- data/test/test/file_methods/test_assert_output_files_equal/expected/two.txt +1 -0
- data/test/test/file_methods/test_assert_output_files_equal/input/one.txt +1 -0
- data/test/test/file_methods/test_assert_output_files_equal/input/two.txt +1 -0
- data/test/test/{inference_methods → file_methods}/test_file_compare/expected/output_1.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_file_compare/expected/output_2.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_file_compare/input/input_1.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_file_compare/input/input_2.txt +0 -0
- data/test/test/file_methods/test_infer_glob/expected/file.yml +0 -0
- data/test/test/file_methods/test_infer_glob/expected/file_1.txt +0 -0
- data/test/test/file_methods/test_infer_glob/expected/file_2.txt +0 -0
- data/test/test/file_methods/test_method_glob/expected/file.yml +0 -0
- data/test/test/file_methods/test_method_glob/expected/file_1.txt +0 -0
- data/test/test/file_methods/test_method_glob/expected/file_2.txt +0 -0
- data/test/test/{inference_methods → file_methods}/test_yml_compare/expected/output_1.yml +0 -0
- data/test/test/{inference_methods → file_methods}/test_yml_compare/expected/output_2.yml +0 -0
- data/test/test/{inference_methods → file_methods}/test_yml_compare/input/input_1.yml +0 -0
- data/test/test/{inference_methods → file_methods}/test_yml_compare/input/input_2.yml +0 -0
- data/test/test/file_methods_test.rb +204 -0
- data/test/test/subset_methods_test.rb +93 -33
- data/test/test/test_assert_expected_result_files/expected/task/name/a.txt +1 -0
- data/test/test/test_assert_expected_result_files/expected/task/name/b.txt +1 -0
- data/test/test/test_assert_expected_result_files/input/a.txt +1 -0
- data/test/test/test_assert_expected_result_files/input/b.txt +1 -0
- data/test/test/test_file_task_test/expected/one.txt +1 -0
- data/test/test/test_file_task_test/expected/two.txt +1 -0
- data/test/test/test_file_task_test/input/one.txt +1 -0
- data/test/test/test_file_task_test/input/two.txt +1 -0
- data/test/test_test.rb +143 -3
- data/test/workflow_test.rb +2 -0
- data/vendor/rails_generator.rb +56 -0
- data/vendor/rails_generator/base.rb +263 -0
- data/vendor/rails_generator/commands.rb +581 -0
- data/vendor/rails_generator/generated_attribute.rb +42 -0
- data/vendor/rails_generator/lookup.rb +209 -0
- data/vendor/rails_generator/manifest.rb +53 -0
- data/vendor/rails_generator/options.rb +143 -0
- data/vendor/rails_generator/scripts.rb +83 -0
- data/vendor/rails_generator/scripts/destroy.rb +7 -0
- data/vendor/rails_generator/scripts/generate.rb +7 -0
- data/vendor/rails_generator/scripts/update.rb +12 -0
- data/vendor/rails_generator/simple_logger.rb +46 -0
- data/vendor/rails_generator/spec.rb +44 -0
- metadata +180 -196
- data/lib/tap/generator/generators/root/templates/app.yml +0 -19
- data/lib/tap/generator/generators/root/templates/config/process_tap_request.yml +0 -4
- data/lib/tap/generator/generators/root/templates/lib/process_tap_request.rb +0 -26
- data/lib/tap/generator/generators/root/templates/public/images/nav.jpg +0 -0
- data/lib/tap/generator/generators/root/templates/public/stylesheets/color.css +0 -57
- data/lib/tap/generator/generators/root/templates/public/stylesheets/layout.css +0 -108
- data/lib/tap/generator/generators/root/templates/public/stylesheets/normalize.css +0 -40
- data/lib/tap/generator/generators/root/templates/public/stylesheets/typography.css +0 -21
- data/lib/tap/generator/generators/root/templates/server/config/environment.rb +0 -60
- data/lib/tap/generator/generators/root/templates/server/lib/tasks/clear_database_prerequisites.rake +0 -5
- data/lib/tap/generator/generators/root/templates/server/test/test_helper.rb +0 -53
- data/lib/tap/script/server.rb +0 -12
- data/lib/tap/support/rap.rb +0 -38
- data/lib/tap/test/inference_methods.rb +0 -298
- data/test/task/config/task_with_config.yml +0 -1
- data/test/test/inference_methods_test.rb +0 -311
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'tap_test_helper')
|
|
2
|
+
require 'tap/task'
|
|
3
|
+
|
|
4
|
+
class TaskBaseTest < Test::Unit::TestCase
|
|
5
|
+
include Tap
|
|
6
|
+
include Benchmark
|
|
7
|
+
|
|
8
|
+
acts_as_tap_test :root => File.dirname(__FILE__) + "/task"
|
|
9
|
+
attr_accessor :t
|
|
10
|
+
|
|
11
|
+
class ObjectWithProcess
|
|
12
|
+
def process(input)
|
|
13
|
+
input
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
super
|
|
19
|
+
@t = ObjectWithProcess.new
|
|
20
|
+
@t.extend Tap::Task::Base
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# extend tests
|
|
25
|
+
#
|
|
26
|
+
|
|
27
|
+
def test_initialization_of_variables_on_extend
|
|
28
|
+
assert_equal [], t.results
|
|
29
|
+
assert_equal [t], t.batch
|
|
30
|
+
assert_nil t.condition_block
|
|
31
|
+
assert_nil t.on_complete_block
|
|
32
|
+
assert !t.multithread
|
|
33
|
+
assert !t.iterate
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
#
|
|
37
|
+
# multithread test
|
|
38
|
+
#
|
|
39
|
+
|
|
40
|
+
def test_multithread_returns_value_of_multithread
|
|
41
|
+
t.multithread = false
|
|
42
|
+
assert !t.multithread?
|
|
43
|
+
t.multithread = true
|
|
44
|
+
assert t.multithread?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
#
|
|
48
|
+
# iterate test
|
|
49
|
+
#
|
|
50
|
+
|
|
51
|
+
def test_iterate_can_be_set
|
|
52
|
+
t.iterate = false
|
|
53
|
+
assert !t.iterate?
|
|
54
|
+
t.iterate = true
|
|
55
|
+
assert t.iterate?
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
#
|
|
59
|
+
# executable? test
|
|
60
|
+
#
|
|
61
|
+
|
|
62
|
+
def test_executable_evaluates_condition_block_with_inputs
|
|
63
|
+
t.condition do |task, inputs|
|
|
64
|
+
inputs == [1,2,3]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
assert t.executable?([1,2,3])
|
|
68
|
+
assert !t.executable?(1)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_executable_returns_true_if_condition_block_is_nil
|
|
72
|
+
assert_nil t.condition_block
|
|
73
|
+
assert t.executable?(nil)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
#
|
|
77
|
+
# on_complete block test
|
|
78
|
+
#
|
|
79
|
+
|
|
80
|
+
def test_on_complete_sets_on_complete_block
|
|
81
|
+
block = lambda {}
|
|
82
|
+
t.on_complete(&block)
|
|
83
|
+
assert_equal block, t.on_complete_block
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_on_complete_can_only_be_set_once
|
|
87
|
+
t.on_complete {}
|
|
88
|
+
assert_raise(RuntimeError) { t.on_complete {} }
|
|
89
|
+
assert_raise(RuntimeError) { t.on_complete }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
#
|
|
93
|
+
# condition block test
|
|
94
|
+
#
|
|
95
|
+
|
|
96
|
+
def test_condition_sets_condition_block
|
|
97
|
+
block = lambda {}
|
|
98
|
+
t.condition(&block)
|
|
99
|
+
assert_equal block, t.condition_block
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def test_condition_can_only_be_set_once
|
|
103
|
+
t.condition {}
|
|
104
|
+
assert_raise(RuntimeError) { t.condition {} }
|
|
105
|
+
assert_raise(RuntimeError) { t.condition }
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
#
|
|
109
|
+
# process test
|
|
110
|
+
#
|
|
111
|
+
|
|
112
|
+
def test_process_returns_input
|
|
113
|
+
assert_equal 1, t.process(1)
|
|
114
|
+
end
|
|
115
|
+
end
|
data/test/task_class_test.rb
CHANGED
|
@@ -8,11 +8,34 @@ class TaskClassTest < Test::Unit::TestCase
|
|
|
8
8
|
#
|
|
9
9
|
|
|
10
10
|
class TaskWithDefaultConfig < Tap::Task
|
|
11
|
-
|
|
11
|
+
declare_config
|
|
12
|
+
|
|
13
|
+
config :one, 1
|
|
14
|
+
config :two, 2
|
|
15
|
+
config :three, 3
|
|
16
|
+
|
|
12
17
|
config_accessor :one
|
|
13
18
|
config_writer :two
|
|
14
19
|
config_reader :three
|
|
15
20
|
end
|
|
21
|
+
|
|
22
|
+
class SomeTask < Tap::Task
|
|
23
|
+
config :key, 'value' # a sample config
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_class_configurations_doc
|
|
27
|
+
t = SomeTask.new
|
|
28
|
+
assert_equal 'value', t.key
|
|
29
|
+
t.key = 'another'
|
|
30
|
+
assert_equal({:key => 'another'}, t.config)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_task_class_configurations_and_default_config_set_by_class_configurations
|
|
34
|
+
assert_equal(
|
|
35
|
+
{TaskWithDefaultConfig => [0, :one, :two, :three]},
|
|
36
|
+
TaskWithDefaultConfig.configurations.declarations)
|
|
37
|
+
assert_equal({:one => 1, :two => 2, :three => 3}, TaskWithDefaultConfig.configurations.default)
|
|
38
|
+
end
|
|
16
39
|
|
|
17
40
|
def test_task_default_config_set_by_default_config
|
|
18
41
|
t = TaskWithDefaultConfig.new
|
|
@@ -54,12 +77,32 @@ class TaskClassTest < Test::Unit::TestCase
|
|
|
54
77
|
assert_equal "two", t.config[:two]
|
|
55
78
|
end
|
|
56
79
|
|
|
80
|
+
# class ConfigFormats < Tap::Task
|
|
81
|
+
# config :a, [:b, 'b']
|
|
82
|
+
# config_accessor [:d, 'd'], :e
|
|
83
|
+
# end
|
|
84
|
+
#
|
|
85
|
+
# def test_config_formats_create_configs_as_expected
|
|
86
|
+
# assert_equal({:a => nil, :b => 'b', :d => 'd', :e => nil}, ConfigFormats.configurations.hash)
|
|
87
|
+
#
|
|
88
|
+
# t = ConfigFormats.new
|
|
89
|
+
# assert !t.respond_to?(:a)
|
|
90
|
+
# assert !t.respond_to?(:b)
|
|
91
|
+
# assert t.respond_to?(:d)
|
|
92
|
+
# assert t.respond_to?(:e)
|
|
93
|
+
# assert_nil t.config[:a]
|
|
94
|
+
# assert_equal 'b', t.config[:b]
|
|
95
|
+
# assert_equal 'd', t.d
|
|
96
|
+
# assert_nil t.e
|
|
97
|
+
# end
|
|
98
|
+
|
|
57
99
|
#
|
|
58
100
|
# test subclass behavior
|
|
59
101
|
#
|
|
60
102
|
|
|
61
103
|
class SubclassedTask < TaskWithDefaultConfig
|
|
62
|
-
|
|
104
|
+
config :one, "one"
|
|
105
|
+
config :four, 4
|
|
63
106
|
end
|
|
64
107
|
|
|
65
108
|
def test_config_accessors_are_inherited
|
|
@@ -72,10 +115,19 @@ class TaskClassTest < Test::Unit::TestCase
|
|
|
72
115
|
assert t.respond_to?(:three)
|
|
73
116
|
assert !t.respond_to?("three=")
|
|
74
117
|
|
|
75
|
-
assert
|
|
76
|
-
assert
|
|
118
|
+
assert t.respond_to?(:four)
|
|
119
|
+
assert t.respond_to?("four=")
|
|
77
120
|
end
|
|
78
121
|
|
|
122
|
+
def test_class_configurations_are_inherited_but_can_be_overridden
|
|
123
|
+
assert_equal({
|
|
124
|
+
TaskWithDefaultConfig => [0, :one, :two, :three],
|
|
125
|
+
SubclassedTask => [1, :four]},
|
|
126
|
+
SubclassedTask.configurations.declarations)
|
|
127
|
+
|
|
128
|
+
assert_equal({:one => 1, :two => 2, :three => 3}, TaskWithDefaultConfig.configurations.default)
|
|
129
|
+
end
|
|
130
|
+
|
|
79
131
|
def test_default_configs_are_inherited_but_can_be_overridden
|
|
80
132
|
s = SubclassedTask.new
|
|
81
133
|
assert_equal({:one => "one", :two => 2, :three => 3, :four => 4}, s.config)
|
data/test/task_execute_test.rb
CHANGED
|
@@ -3,6 +3,7 @@ require 'tap/task'
|
|
|
3
3
|
|
|
4
4
|
class TaskExecuteTest < Test::Unit::TestCase
|
|
5
5
|
include Tap
|
|
6
|
+
include TapTestMethods
|
|
6
7
|
|
|
7
8
|
acts_as_tap_test
|
|
8
9
|
|
|
@@ -165,6 +166,34 @@ class TaskExecuteTest < Test::Unit::TestCase
|
|
|
165
166
|
t.results,
|
|
166
167
|
0 => [ [[nil, nil], [[1,2], 3]], [t, [[1,2], 3]] ])
|
|
167
168
|
end
|
|
169
|
+
|
|
170
|
+
def test_non_iterative_execute_without_inputs
|
|
171
|
+
was_in_block = false
|
|
172
|
+
t = NonIterativeTask.new do |task, input|
|
|
173
|
+
assert_nil input
|
|
174
|
+
was_in_block = true
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
t.execute
|
|
178
|
+
assert was_in_block
|
|
179
|
+
|
|
180
|
+
was_in_block = false
|
|
181
|
+
t.app.run(t)
|
|
182
|
+
assert was_in_block
|
|
183
|
+
|
|
184
|
+
was_in_block = false
|
|
185
|
+
t = NonIterativeTask.new do
|
|
186
|
+
was_in_block = true
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
t.execute
|
|
190
|
+
assert was_in_block
|
|
191
|
+
|
|
192
|
+
was_in_block = false
|
|
193
|
+
t.app.run(t)
|
|
194
|
+
assert was_in_block
|
|
195
|
+
end
|
|
196
|
+
|
|
168
197
|
|
|
169
198
|
#
|
|
170
199
|
# non iterative audit tests
|
data/test/task_test.rb
CHANGED
|
@@ -3,12 +3,14 @@ require 'tap/task'
|
|
|
3
3
|
|
|
4
4
|
# used in documentation test
|
|
5
5
|
class ConfiguredTask < Tap::Task
|
|
6
|
-
|
|
6
|
+
config :one, 'one'
|
|
7
|
+
config :two, 'two'
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
class TaskTest < Test::Unit::TestCase
|
|
10
11
|
include Tap
|
|
11
12
|
include Benchmark
|
|
13
|
+
include TapTestMethods
|
|
12
14
|
|
|
13
15
|
acts_as_tap_test
|
|
14
16
|
attr_accessor :t
|
|
@@ -39,11 +41,18 @@ class TaskTest < Test::Unit::TestCase
|
|
|
39
41
|
t1.enq 1
|
|
40
42
|
t1.enq 2,3
|
|
41
43
|
t1.app.run
|
|
42
|
-
|
|
43
44
|
assert_equal([1,2,3], runlist)
|
|
44
45
|
|
|
46
|
+
runlist = []
|
|
47
|
+
t1.iterate = false
|
|
48
|
+
t1.enq 1
|
|
49
|
+
t1.enq 2,3
|
|
50
|
+
t1.app.run
|
|
51
|
+
assert_equal([[1,2,3]], runlist)
|
|
52
|
+
|
|
45
53
|
###
|
|
46
54
|
runlist = []
|
|
55
|
+
t1 = Task.new {|task, input| runlist << input}
|
|
47
56
|
assert_equal([t1], t1.batch)
|
|
48
57
|
t2 = t1.create_batch_task
|
|
49
58
|
assert_equal([t1, t2], t1.batch)
|
|
@@ -181,7 +190,7 @@ class TaskTest < Test::Unit::TestCase
|
|
|
181
190
|
|
|
182
191
|
def test_create_batch_task_uses_input_template_and_overrides
|
|
183
192
|
t = TaskWithDefaultConfig.new "overriding", :three => 3
|
|
184
|
-
assert_equal({:one => 'one', :two => 'two', :three => 'three'}, t.class.
|
|
193
|
+
assert_equal({:one => 'one', :two => 'two', :three => 'three'}, t.class.configurations.default)
|
|
185
194
|
assert_equal({:two => 'TWO', :three => 'THREE'}, t.config_template)
|
|
186
195
|
assert_equal({:one => 'one', :two => 'TWO', :three => 3}, t.config)
|
|
187
196
|
|
|
@@ -228,17 +237,6 @@ class TaskTest < Test::Unit::TestCase
|
|
|
228
237
|
assert_equal File.join(t.app['config'], t.name + ".yml"), t.config_file
|
|
229
238
|
end
|
|
230
239
|
|
|
231
|
-
#
|
|
232
|
-
# multithread test
|
|
233
|
-
#
|
|
234
|
-
|
|
235
|
-
def test_multithread_returns_value_of_multithread
|
|
236
|
-
t.multithread = false
|
|
237
|
-
assert !t.multithread?
|
|
238
|
-
t.multithread = true
|
|
239
|
-
assert t.multithread?
|
|
240
|
-
end
|
|
241
|
-
|
|
242
240
|
#
|
|
243
241
|
# iterate test
|
|
244
242
|
#
|
|
@@ -247,20 +245,33 @@ class TaskTest < Test::Unit::TestCase
|
|
|
247
245
|
assert Task.iterative
|
|
248
246
|
assert t.iterate?
|
|
249
247
|
end
|
|
250
|
-
|
|
251
|
-
def test_iterate_can_be_set
|
|
252
|
-
t.iterate = false
|
|
253
|
-
assert !t.iterate?
|
|
254
|
-
t.iterate = true
|
|
255
|
-
assert t.iterate?
|
|
256
|
-
end
|
|
257
248
|
|
|
258
249
|
#
|
|
259
|
-
#
|
|
250
|
+
# config tests
|
|
260
251
|
#
|
|
261
252
|
|
|
253
|
+
class ConfigDocSampleTask < Tap::Task
|
|
254
|
+
config :key, 'value'
|
|
255
|
+
|
|
256
|
+
config_reader
|
|
257
|
+
config :reader_only
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
def test_config_doc
|
|
261
|
+
t = ConfigDocSampleTask.new
|
|
262
|
+
assert t.respond_to?(:reader_only)
|
|
263
|
+
assert !t.respond_to?(:reader_only=)
|
|
264
|
+
|
|
265
|
+
assert_equal({:key => 'value', :reader_only => nil}, t.config)
|
|
266
|
+
assert_equal 'value', t.key
|
|
267
|
+
t.key = 'another'
|
|
268
|
+
assert_equal({:key => 'another', :reader_only => nil}, t.config)
|
|
269
|
+
end
|
|
270
|
+
|
|
262
271
|
class TaskWithDefaultConfig < Task
|
|
263
|
-
|
|
272
|
+
config :one, 'one'
|
|
273
|
+
config :two, 'two'
|
|
274
|
+
config :three, 'three'
|
|
264
275
|
end
|
|
265
276
|
|
|
266
277
|
def test_config_sets_config
|
|
@@ -271,7 +282,7 @@ class TaskTest < Test::Unit::TestCase
|
|
|
271
282
|
|
|
272
283
|
def test_config_merges_class_defaults_and_config_template_and_inputs_in_order
|
|
273
284
|
t = TaskWithDefaultConfig.new "overriding"
|
|
274
|
-
assert_equal({:one => 'one', :two => 'two', :three => 'three'}, t.class.
|
|
285
|
+
assert_equal({:one => 'one', :two => 'two', :three => 'three'}, t.class.configurations.default)
|
|
275
286
|
assert_equal({:two => 'TWO', :three => 'THREE'}, t.config_template)
|
|
276
287
|
|
|
277
288
|
t.config = {:three => 3}
|
|
@@ -280,7 +291,7 @@ class TaskTest < Test::Unit::TestCase
|
|
|
280
291
|
|
|
281
292
|
def test_nil_is_treated_as_empty_hash
|
|
282
293
|
t = TaskWithDefaultConfig.new "overriding"
|
|
283
|
-
assert_equal({:one => 'one', :two => 'two', :three => 'three'}, t.class.
|
|
294
|
+
assert_equal({:one => 'one', :two => 'two', :three => 'three'}, t.class.configurations.default)
|
|
284
295
|
assert_equal({:two => 'TWO', :three => 'THREE'}, t.config_template)
|
|
285
296
|
|
|
286
297
|
t.config[:three] = 3
|
|
@@ -290,54 +301,61 @@ class TaskTest < Test::Unit::TestCase
|
|
|
290
301
|
assert_equal({:one => 'one', :two => 'TWO', :three => 'THREE'}, t.config)
|
|
291
302
|
end
|
|
292
303
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
#
|
|
296
|
-
|
|
297
|
-
def test_condition_sets_condition_block
|
|
298
|
-
block = lambda {}
|
|
299
|
-
t.condition(&block)
|
|
300
|
-
assert_equal block, t.condition_block
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
def test_condition_can_only_be_set_once
|
|
304
|
-
t.condition {}
|
|
305
|
-
assert_raise(RuntimeError) { t.condition {} }
|
|
306
|
-
assert_raise(RuntimeError) { t.condition }
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
#
|
|
310
|
-
# executable? test
|
|
311
|
-
#
|
|
312
|
-
|
|
313
|
-
def test_executable_evaluates_condition_block_with_inputs
|
|
314
|
-
t.condition do |task, inputs|
|
|
315
|
-
inputs == [1,2,3]
|
|
316
|
-
end
|
|
304
|
+
class TaskWithManyConfigs < Task
|
|
305
|
+
config :one, 'one'
|
|
317
306
|
|
|
318
|
-
|
|
319
|
-
|
|
307
|
+
declare_config
|
|
308
|
+
config :two, 'two'
|
|
309
|
+
|
|
310
|
+
config_reader
|
|
311
|
+
config :three, 'three'
|
|
312
|
+
|
|
313
|
+
config_writer
|
|
314
|
+
config :four, 'four'
|
|
315
|
+
|
|
316
|
+
config_accessor
|
|
317
|
+
config :five, 'five'
|
|
318
|
+
|
|
319
|
+
declare_config :six
|
|
320
|
+
config_reader :seven
|
|
321
|
+
config_writer :eight
|
|
322
|
+
config_accessor :nine
|
|
320
323
|
end
|
|
321
|
-
|
|
322
|
-
def test_executable_returns_true_if_condition_block_is_nil
|
|
323
|
-
assert_nil t.condition_block
|
|
324
|
-
assert t.executable?(nil)
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
#
|
|
328
|
-
# on_complete block test
|
|
329
|
-
#
|
|
330
324
|
|
|
331
|
-
def
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
325
|
+
def test_config_with_many_configs
|
|
326
|
+
t = TaskWithManyConfigs.new
|
|
327
|
+
|
|
328
|
+
assert_equal({
|
|
329
|
+
:one => 'one', :six => nil,
|
|
330
|
+
:two => 'two', :seven => nil,
|
|
331
|
+
:three => 'three', :eight => nil,
|
|
332
|
+
:four => 'four', :nine => nil,
|
|
333
|
+
:five => 'five'},
|
|
334
|
+
t.config)
|
|
335
|
+
|
|
336
|
+
# readers only
|
|
337
|
+
[:three, :seven].each do |config|
|
|
338
|
+
assert t.respond_to?(config)
|
|
339
|
+
assert !t.respond_to?("#{config}=")
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# writers only
|
|
343
|
+
[:four, :eight].each do |config|
|
|
344
|
+
assert !t.respond_to?(config)
|
|
345
|
+
assert t.respond_to?("#{config}=")
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
# both
|
|
349
|
+
[:one, :five, :nine].each do |config|
|
|
350
|
+
assert t.respond_to?(config)
|
|
351
|
+
assert t.respond_to?("#{config}=")
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
# neither
|
|
355
|
+
[:two, :six].each do |config|
|
|
356
|
+
assert !t.respond_to?(config)
|
|
357
|
+
assert !t.respond_to?("#{config}=")
|
|
358
|
+
end
|
|
341
359
|
end
|
|
342
360
|
|
|
343
361
|
#
|
|
@@ -392,6 +410,7 @@ class TaskTest < Test::Unit::TestCase
|
|
|
392
410
|
assert was_in_block
|
|
393
411
|
end
|
|
394
412
|
|
|
413
|
+
# JRuby inconsistent test?
|
|
395
414
|
def test_duplicate_tasks_are_monitored_separately
|
|
396
415
|
extended_test do
|
|
397
416
|
count = 0
|