tap 0.8.0 → 0.9.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/Basic Overview +151 -0
- data/Command Reference +99 -0
- data/History +24 -0
- data/MIT-LICENSE +1 -1
- data/README +29 -57
- data/Rakefile +30 -37
- data/Tutorial +243 -191
- data/bin/tap +66 -35
- data/lib/tap.rb +47 -29
- data/lib/tap/app.rb +700 -342
- data/lib/tap/{script → cmd}/console.rb +0 -0
- data/lib/tap/{script → cmd}/destroy.rb +0 -0
- data/lib/tap/{script → cmd}/generate.rb +0 -0
- data/lib/tap/cmd/run.rb +156 -0
- data/lib/tap/constants.rb +4 -0
- data/lib/tap/dump.rb +57 -0
- data/lib/tap/env.rb +316 -0
- data/lib/tap/file_task.rb +106 -109
- data/lib/tap/generator.rb +4 -1
- data/lib/tap/generator/generators/command/USAGE +6 -0
- data/lib/tap/generator/generators/command/command_generator.rb +17 -0
- data/lib/tap/generator/generators/{script/templates/script.erb → command/templates/command.erb} +10 -10
- data/lib/tap/generator/generators/config/USAGE +21 -0
- data/lib/tap/generator/generators/config/config_generator.rb +17 -7
- data/lib/tap/generator/generators/file_task/USAGE +3 -0
- data/lib/tap/generator/generators/file_task/file_task_generator.rb +16 -0
- data/lib/tap/generator/generators/file_task/templates/file.txt +2 -0
- data/lib/tap/generator/generators/file_task/templates/file.yml +3 -0
- data/lib/tap/generator/generators/file_task/templates/task.erb +26 -20
- data/lib/tap/generator/generators/file_task/templates/test.erb +20 -10
- data/lib/tap/generator/generators/generator/generator_generator.rb +1 -1
- data/lib/tap/generator/generators/generator/templates/generator.erb +21 -12
- data/lib/tap/generator/generators/root/templates/Rakefile +33 -24
- data/lib/tap/generator/generators/root/templates/tap.yml +28 -31
- data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +1 -0
- data/lib/tap/generator/generators/task/USAGE +3 -0
- data/lib/tap/generator/generators/task/task_generator.rb +18 -5
- data/lib/tap/generator/generators/task/templates/task.erb +7 -12
- data/lib/tap/generator/generators/task/templates/test.erb +10 -11
- data/lib/tap/generator/generators/workflow/templates/task.erb +1 -1
- data/lib/tap/generator/generators/workflow/templates/test.erb +1 -1
- data/lib/tap/patches/rake/rake_test_loader.rb +8 -0
- data/lib/tap/patches/rake/testtask.rb +55 -0
- data/lib/tap/patches/ruby19/backtrace_filter.rb +51 -0
- data/lib/tap/patches/ruby19/parsedate.rb +16 -0
- data/lib/tap/root.rb +172 -67
- data/lib/tap/script.rb +70 -336
- data/lib/tap/support/aggregator.rb +55 -0
- data/lib/tap/support/audit.rb +281 -280
- data/lib/tap/support/batchable.rb +59 -0
- data/lib/tap/support/class_configuration.rb +279 -0
- data/lib/tap/support/configurable.rb +92 -0
- data/lib/tap/support/configurable_methods.rb +296 -0
- data/lib/tap/support/executable.rb +98 -0
- data/lib/tap/support/executable_queue.rb +82 -0
- data/lib/tap/support/logger.rb +9 -15
- data/lib/tap/support/rake.rb +43 -54
- data/lib/tap/support/run_error.rb +32 -13
- data/lib/tap/support/shell_utils.rb +47 -0
- data/lib/tap/support/tdoc.rb +9 -8
- data/lib/tap/support/tdoc/config_attr.rb +40 -16
- data/lib/tap/support/validation.rb +77 -0
- data/lib/tap/support/versions.rb +36 -36
- data/lib/tap/task.rb +276 -482
- data/lib/tap/test.rb +20 -261
- data/lib/tap/test/env_vars.rb +7 -5
- data/lib/tap/test/file_methods.rb +126 -121
- data/lib/tap/test/subset_methods.rb +86 -45
- data/lib/tap/test/tap_methods.rb +271 -0
- data/lib/tap/workflow.rb +174 -46
- data/test/app/config/another/task.yml +1 -0
- data/test/app/config/erb.yml +2 -1
- data/test/app/config/some/task.yml +1 -0
- data/test/app/config/template.yml +2 -6
- data/test/app_test.rb +1241 -1008
- data/test/env/test_configure/recurse_a.yml +2 -0
- data/test/env/test_configure/recurse_b.yml +2 -0
- data/test/env/test_configure/tap.yml +23 -0
- data/test/env/test_load_env_config/dir/tap.yml +3 -0
- data/test/env/test_load_env_config/recurse_a.yml +2 -0
- data/test/env/test_load_env_config/recurse_b.yml +2 -0
- data/test/env/test_load_env_config/tap.yml +3 -0
- data/test/env_test.rb +198 -0
- data/test/file_task_test.rb +70 -53
- data/{lib/tap/generator/generators/package/USAGE → test/root/file.txt} +0 -0
- data/test/root_test.rb +621 -454
- data/test/script_test.rb +38 -174
- data/test/support/aggregator_test.rb +99 -0
- data/test/support/audit_test.rb +409 -416
- data/test/support/batchable_test.rb +74 -0
- data/test/support/{task_configuration_test.rb → class_configuration_test.rb} +106 -47
- data/test/{task/config/overriding.yml → support/configurable/config/configured.yml} +0 -0
- data/test/support/configurable_test.rb +295 -0
- data/test/support/executable_queue_test.rb +103 -0
- data/test/support/executable_test.rb +38 -0
- data/test/support/logger_test.rb +17 -17
- data/test/support/rake_test.rb +4 -2
- data/test/support/shell_utils_test.rb +24 -0
- data/test/support/tdoc_test.rb +265 -258
- data/test/support/validation_test.rb +54 -0
- data/test/support/versions_test.rb +38 -38
- data/test/tap_test_helper.rb +19 -5
- data/test/tap_test_suite.rb +5 -2
- data/test/task_base_test.rb +13 -104
- data/test/task_syntax_test.rb +300 -0
- data/test/task_test.rb +258 -381
- data/test/test/env_vars_test.rb +40 -40
- data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/expected/one.txt +0 -0
- data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/expected/two.txt +0 -0
- data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/input/one.txt +0 -0
- data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/input/two.txt +0 -0
- data/test/test/{test_file_task_test → file_methods/test_assert_files_can_have_no_expected_files_if_specified}/input/one.txt +0 -0
- data/test/test/{test_file_task_test → file_methods/test_assert_files_can_have_no_expected_files_if_specified}/input/two.txt +0 -0
- data/test/test/file_methods/test_assert_files_fails_for_different_content/expected/one.txt +1 -0
- data/test/test/{test_file_task_test → file_methods/test_assert_files_fails_for_different_content}/expected/two.txt +0 -0
- data/test/test/file_methods/test_assert_files_fails_for_different_content/input/one.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_different_content/input/two.txt +1 -0
- data/test/test/{test_file_task_test → file_methods/test_assert_files_fails_for_missing_expected_file}/expected/one.txt +0 -0
- data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/one.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/two.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/one.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/two.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/one.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/two.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/one.txt +1 -0
- data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/two.txt +1 -0
- data/test/test/file_methods_doc/test_sub/expected/one.txt +1 -0
- data/test/test/file_methods_doc/test_sub/expected/two.txt +1 -0
- data/test/test/file_methods_doc/test_sub/input/one.txt +1 -0
- data/test/test/file_methods_doc/test_sub/input/two.txt +1 -0
- data/test/test/file_methods_doc_test.rb +29 -0
- data/test/test/file_methods_test.rb +214 -143
- data/test/test/subset_methods_test.rb +111 -115
- data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/expected/task/name/a.txt +0 -0
- data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/expected/task/name/b.txt +0 -0
- data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/input/a.txt +0 -0
- data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/input/b.txt +0 -0
- data/test/test/tap_methods_test.rb +399 -0
- data/test/workflow_test.rb +101 -91
- metadata +86 -70
- data/lib/tap/generator/generators/package/package_generator.rb +0 -38
- data/lib/tap/generator/generators/package/templates/package.erb +0 -186
- data/lib/tap/generator/generators/script/USAGE +0 -0
- data/lib/tap/generator/generators/script/script_generator.rb +0 -17
- data/lib/tap/script/run.rb +0 -154
- data/lib/tap/support/batch_queue.rb +0 -162
- data/lib/tap/support/combinator.rb +0 -114
- data/lib/tap/support/task_configuration.rb +0 -169
- data/lib/tap/support/template.rb +0 -81
- data/lib/tap/support/templater.rb +0 -155
- data/lib/tap/version.rb +0 -4
- data/test/app/config/addition_template.yml +0 -6
- data/test/app_class_test.rb +0 -33
- data/test/check/binding_eval.rb +0 -23
- data/test/check/define_method_check.rb +0 -22
- data/test/check/dependencies_check.rb +0 -175
- data/test/check/inheritance_check.rb +0 -22
- data/test/support/batch_queue_test.rb +0 -320
- data/test/support/combinator_test.rb +0 -249
- data/test/support/template_test.rb +0 -122
- data/test/support/templater/erb.txt +0 -2
- data/test/support/templater/erb.yml +0 -2
- data/test/support/templater/somefile.txt +0 -2
- data/test/support/templater_test.rb +0 -192
- data/test/task/config/template.yml +0 -4
- data/test/task_class_test.rb +0 -170
- data/test/task_execute_test.rb +0 -262
- data/test/test/file_methods/test_assert_expected/expected/file.txt +0 -1
- data/test/test/file_methods/test_assert_expected/expected/folder/file.txt +0 -1
- data/test/test/file_methods/test_assert_expected/input/file.txt +0 -1
- data/test/test/file_methods/test_assert_expected/input/folder/file.txt +0 -1
- 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_file_compare/expected/output_1.txt +0 -3
- data/test/test/file_methods/test_file_compare/expected/output_2.txt +0 -1
- data/test/test/file_methods/test_file_compare/input/input_1.txt +0 -3
- data/test/test/file_methods/test_file_compare/input/input_2.txt +0 -3
- 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_yml_compare/expected/output_1.yml +0 -6
- data/test/test/file_methods/test_yml_compare/expected/output_2.yml +0 -6
- data/test/test/file_methods/test_yml_compare/input/input_1.yml +0 -4
- data/test/test/file_methods/test_yml_compare/input/input_2.yml +0 -4
- data/test/test_test.rb +0 -373
data/test/task_class_test.rb
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'tap_test_helper')
|
|
2
|
-
require 'tap/task'
|
|
3
|
-
|
|
4
|
-
class TaskClassTest < Test::Unit::TestCase
|
|
5
|
-
|
|
6
|
-
#
|
|
7
|
-
# task config tests
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
class TaskWithDefaultConfig < Tap::Task
|
|
11
|
-
declare_config
|
|
12
|
-
|
|
13
|
-
config :one, 1
|
|
14
|
-
config :two, 2
|
|
15
|
-
config :three, 3
|
|
16
|
-
|
|
17
|
-
config_accessor :one
|
|
18
|
-
config_writer :two
|
|
19
|
-
config_reader :three
|
|
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
|
|
39
|
-
|
|
40
|
-
def test_task_default_config_set_by_default_config
|
|
41
|
-
t = TaskWithDefaultConfig.new
|
|
42
|
-
assert_equal({:one => 1, :two => 2, :three => 3}, t.config)
|
|
43
|
-
|
|
44
|
-
t = TaskWithDefaultConfig.new nil, :one => "one"
|
|
45
|
-
assert_equal({:one => "one", :two => 2, :three => 3}, t.config)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def test_config_reader_and_writer_defined_by_config_accessor
|
|
49
|
-
t = TaskWithDefaultConfig.new
|
|
50
|
-
assert t.respond_to?(:one)
|
|
51
|
-
assert t.respond_to?("one=")
|
|
52
|
-
|
|
53
|
-
assert_equal 1, t.one
|
|
54
|
-
assert_equal 1, t.config[:one]
|
|
55
|
-
|
|
56
|
-
t.one = "one"
|
|
57
|
-
assert_equal "one", t.one
|
|
58
|
-
assert_equal "one", t.config[:one]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def test_config_reader_defined_by_config_reader
|
|
62
|
-
t = TaskWithDefaultConfig.new
|
|
63
|
-
assert t.respond_to?(:three)
|
|
64
|
-
assert !t.respond_to?("three=")
|
|
65
|
-
|
|
66
|
-
assert_equal 3, t.three
|
|
67
|
-
assert_equal 3, t.config[:three]
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_config_writer_defined_by_config_writer
|
|
71
|
-
t = TaskWithDefaultConfig.new
|
|
72
|
-
assert !t.respond_to?(:two)
|
|
73
|
-
assert t.respond_to?("two=")
|
|
74
|
-
|
|
75
|
-
assert_equal 2, t.config[:two]
|
|
76
|
-
t.two = "two"
|
|
77
|
-
assert_equal "two", t.config[:two]
|
|
78
|
-
end
|
|
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
|
-
|
|
99
|
-
#
|
|
100
|
-
# test subclass behavior
|
|
101
|
-
#
|
|
102
|
-
|
|
103
|
-
class SubclassedTask < TaskWithDefaultConfig
|
|
104
|
-
config :one, "one"
|
|
105
|
-
config :four, 4
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def test_config_accessors_are_inherited
|
|
109
|
-
t = SubclassedTask.new
|
|
110
|
-
|
|
111
|
-
assert t.respond_to?(:one)
|
|
112
|
-
assert t.respond_to?("one=")
|
|
113
|
-
assert !t.respond_to?(:two)
|
|
114
|
-
assert t.respond_to?("two=")
|
|
115
|
-
assert t.respond_to?(:three)
|
|
116
|
-
assert !t.respond_to?("three=")
|
|
117
|
-
|
|
118
|
-
assert t.respond_to?(:four)
|
|
119
|
-
assert t.respond_to?("four=")
|
|
120
|
-
end
|
|
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
|
-
|
|
131
|
-
def test_default_configs_are_inherited_but_can_be_overridden
|
|
132
|
-
s = SubclassedTask.new
|
|
133
|
-
assert_equal({:one => "one", :two => 2, :three => 3, :four => 4}, s.config)
|
|
134
|
-
|
|
135
|
-
# assure subclass configs do not affect superclass
|
|
136
|
-
t = TaskWithDefaultConfig.new
|
|
137
|
-
assert_equal({:one => 1, :two => 2, :three => 3}, t.config)
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
#
|
|
141
|
-
# iterative tests
|
|
142
|
-
#
|
|
143
|
-
|
|
144
|
-
def test_iterative_is_by_default_true
|
|
145
|
-
assert Tap::Task.iterative
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
class NonIterativeTask < Tap::Task
|
|
149
|
-
do_not_iterate
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def test_do_not_iterate_sets_iterative_to_false
|
|
153
|
-
assert !NonIterativeTask.iterative
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
class AnotherNonIterativeTask < NonIterativeTask
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def test_iterative_is_inherited
|
|
160
|
-
assert !AnotherNonIterativeTask.iterative
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
class IterativeTask < NonIterativeTask
|
|
164
|
-
iterate
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
def test_iterative_can_be_reset_with_iterate
|
|
168
|
-
assert IterativeTask.iterative
|
|
169
|
-
end
|
|
170
|
-
end
|
data/test/task_execute_test.rb
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'tap_test_helper')
|
|
2
|
-
require 'tap/task'
|
|
3
|
-
|
|
4
|
-
class TaskExecuteTest < Test::Unit::TestCase
|
|
5
|
-
include Tap
|
|
6
|
-
include TapTestMethods
|
|
7
|
-
|
|
8
|
-
acts_as_tap_test
|
|
9
|
-
|
|
10
|
-
attr_accessor :t1, :t2, :t3, :t4
|
|
11
|
-
|
|
12
|
-
def setup
|
|
13
|
-
super
|
|
14
|
-
1.upto(4) do |index|
|
|
15
|
-
var = "t#{index}".to_sym
|
|
16
|
-
self.send("#{var}=", Task.new(&echo))
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
#
|
|
21
|
-
# check t1-t4 are iterative
|
|
22
|
-
#
|
|
23
|
-
|
|
24
|
-
def test_t1_to_t4_tasks_are_iterative
|
|
25
|
-
assert t1.iterate?
|
|
26
|
-
assert t2.iterate?
|
|
27
|
-
assert t3.iterate?
|
|
28
|
-
assert t4.iterate?
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
#
|
|
32
|
-
# condition and on_complete tests
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
def test_execute_raises_error_unless_condtion_block_returns_true
|
|
36
|
-
t = Task.new
|
|
37
|
-
t.condition {false}
|
|
38
|
-
assert_raise(RuntimeError) { t.execute }
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_on_complete_executes_after_execute_and_recieves_results
|
|
42
|
-
t = Task.new
|
|
43
|
-
|
|
44
|
-
recieved = nil
|
|
45
|
-
t.on_complete do |results|
|
|
46
|
-
recieved = results
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
t.execute(1,2,3)
|
|
50
|
-
|
|
51
|
-
assert_equal t.results, recieved
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
#
|
|
55
|
-
# iterative execute tests
|
|
56
|
-
#
|
|
57
|
-
|
|
58
|
-
def test_execute_without_inputs_produces_empty_results
|
|
59
|
-
t1.execute
|
|
60
|
-
|
|
61
|
-
assert_equal [], runlist
|
|
62
|
-
assert_equal [], t1.results
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_execute_iteratively_processes_and_audits_each_input
|
|
66
|
-
t1.execute([1,2], 3)
|
|
67
|
-
|
|
68
|
-
assert_equal [[1,2], 3], runlist
|
|
69
|
-
assert_inputs(t1 => [[1,2], 3])
|
|
70
|
-
assert_outputs(t1 => [[1,2], 3])
|
|
71
|
-
assert_audits(
|
|
72
|
-
t1.results,
|
|
73
|
-
0 => [[nil, [1,2]], [t1, [1,2]]],
|
|
74
|
-
1 => [[nil, 3], [t1, 3]])
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
#
|
|
78
|
-
# iterative audit tests
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
def test_each_result_is_an_audit
|
|
82
|
-
t1.execute 1,2
|
|
83
|
-
|
|
84
|
-
t1.results.each do |r|
|
|
85
|
-
assert r.kind_of?(Support::Audit)
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def test_execute_passes_audit_trails
|
|
90
|
-
t1.execute 1,2
|
|
91
|
-
t2.execute(*t1.results)
|
|
92
|
-
t3.execute(*t2.results)
|
|
93
|
-
|
|
94
|
-
assert_outputs(
|
|
95
|
-
t1 => [1,2],
|
|
96
|
-
t2 => [1,2],
|
|
97
|
-
t3 => [1,2])
|
|
98
|
-
assert_audits(
|
|
99
|
-
t3.results,
|
|
100
|
-
0 => [[nil, 1],[t1, 1],[t2, 1],[t3, 1]],
|
|
101
|
-
1 => [[nil, 2],[t1, 2],[t2, 2],[t3, 2]])
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def test_execute_audits_additional_inputs
|
|
105
|
-
t1.execute 1,2
|
|
106
|
-
t2.execute(*(t1.results + [3]))
|
|
107
|
-
t3.execute(*(t2.results + [4]))
|
|
108
|
-
|
|
109
|
-
assert_outputs(
|
|
110
|
-
t1 => [1,2],
|
|
111
|
-
t2 => [1,2,3],
|
|
112
|
-
t3 => [1,2,3,4])
|
|
113
|
-
assert_audits(
|
|
114
|
-
t3.results,
|
|
115
|
-
0 => [[nil, 1], [t1, 1],[t2, 1],[t3, 1]],
|
|
116
|
-
1 => [[nil, 2], [t1, 2],[t2, 2],[t3, 2]],
|
|
117
|
-
2 => [[nil, 3], [t2, 3],[t3, 3]],
|
|
118
|
-
3 => [[nil, 4], [t3, 4]])
|
|
119
|
-
|
|
120
|
-
check_audit(t3.results[0]) do
|
|
121
|
-
1._from nil
|
|
122
|
-
1._from t1
|
|
123
|
-
1._from t2
|
|
124
|
-
1._from t3
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
class NonIterativeTask < Task
|
|
129
|
-
do_not_iterate
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
#
|
|
133
|
-
# check NonIterativeTask is set to not iterate
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
def test_do_not_iterate
|
|
137
|
-
assert !NonIterativeTask.iterative
|
|
138
|
-
t = NonIterativeTask.new
|
|
139
|
-
assert !t.iterate?
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
#
|
|
143
|
-
# non iterative execute tests
|
|
144
|
-
#
|
|
145
|
-
|
|
146
|
-
def test_non_iterative_execute_processes_inputs_as_one_input
|
|
147
|
-
t = NonIterativeTask.new(&echo)
|
|
148
|
-
t.execute(1,2,3)
|
|
149
|
-
|
|
150
|
-
assert_equal [[1,2,3]], runlist
|
|
151
|
-
assert_inputs(t => [[1,2,3]])
|
|
152
|
-
assert_outputs(t => [[1,2,3]])
|
|
153
|
-
assert_audits(
|
|
154
|
-
t.results,
|
|
155
|
-
0 => [ [[nil, nil, nil], [1,2,3]], [t, [1,2,3]] ])
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def test_non_iterative_execute_respects_array_inputs
|
|
159
|
-
t = NonIterativeTask.new(&echo)
|
|
160
|
-
t.execute([1,2], 3)
|
|
161
|
-
|
|
162
|
-
assert_equal [[[1,2], 3]], runlist
|
|
163
|
-
assert_inputs(t => [[[1,2], 3]])
|
|
164
|
-
assert_outputs(t => [[[1,2], 3]])
|
|
165
|
-
assert_audits(
|
|
166
|
-
t.results,
|
|
167
|
-
0 => [ [[nil, nil], [[1,2], 3]], [t, [[1,2], 3]] ])
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
#
|
|
199
|
-
# non iterative audit tests
|
|
200
|
-
#
|
|
201
|
-
|
|
202
|
-
def test_non_iterative_execute_audits_inputs_as_one_unit
|
|
203
|
-
t = NonIterativeTask.new(&echo)
|
|
204
|
-
t.execute 1,2
|
|
205
|
-
|
|
206
|
-
assert_outputs(t => [[1,2]])
|
|
207
|
-
assert_audits(
|
|
208
|
-
t.results,
|
|
209
|
-
0 => [
|
|
210
|
-
[[nil, nil], [1,2]], # original source
|
|
211
|
-
[t, [1,2]]] # final value
|
|
212
|
-
)
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
def test_non_iterative_execute_audits_additional_inputs_as_one_unit
|
|
216
|
-
t1 = NonIterativeTask.new(&echo)
|
|
217
|
-
t2 = NonIterativeTask.new(&echo)
|
|
218
|
-
|
|
219
|
-
t1.execute 1,2
|
|
220
|
-
assert_outputs(t1 => [[1,2]])
|
|
221
|
-
|
|
222
|
-
t2.execute(t1.results.first, 3)
|
|
223
|
-
|
|
224
|
-
assert_outputs(
|
|
225
|
-
t2 => [ [[1,2],3] ])
|
|
226
|
-
assert_audits(
|
|
227
|
-
t2.results,
|
|
228
|
-
0 => [
|
|
229
|
-
[[[[nil, nil], t1], nil], [[1, 2], 3]], # original source
|
|
230
|
-
[t2, [[1, 2], 3]]] # final value source
|
|
231
|
-
)
|
|
232
|
-
|
|
233
|
-
check_audit(t2.results[0]) do
|
|
234
|
-
[[1,2], 3]._from(t2) {
|
|
235
|
-
[1,2]._from(t1) {
|
|
236
|
-
1._from nil
|
|
237
|
-
2._from nil }
|
|
238
|
-
3._from nil }
|
|
239
|
-
end
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
#
|
|
244
|
-
# synchronization tests
|
|
245
|
-
#
|
|
246
|
-
|
|
247
|
-
def test_execute_is_synchronized
|
|
248
|
-
extended_test do
|
|
249
|
-
count = 0
|
|
250
|
-
counter = Task.new do
|
|
251
|
-
count += 1
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
t1 = Thread.new { 10000.times { counter.execute(1) } }
|
|
255
|
-
t2 = Thread.new { 10000.times { counter.execute(1) } }
|
|
256
|
-
t1.join
|
|
257
|
-
t2.join
|
|
258
|
-
|
|
259
|
-
assert_equal 20000, count
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
end
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
folder/file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
folder/file
|