tap 0.9.1 → 0.10.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.
Files changed (244) hide show
  1. data/History +37 -30
  2. data/MIT-LICENSE +1 -1
  3. data/README +92 -44
  4. data/bin/tap +62 -75
  5. data/cmd/console.rb +42 -0
  6. data/cmd/destroy.rb +16 -0
  7. data/cmd/generate.rb +16 -0
  8. data/cmd/run.rb +126 -0
  9. data/doc/Class Reference +362 -0
  10. data/doc/Command Reference +153 -0
  11. data/doc/Tutorial +237 -0
  12. data/lib/tap.rb +6 -45
  13. data/lib/tap/app.rb +126 -500
  14. data/lib/tap/constants.rb +2 -29
  15. data/lib/tap/env.rb +555 -250
  16. data/lib/tap/file_task.rb +60 -103
  17. data/lib/tap/generator/base.rb +109 -0
  18. data/lib/tap/generator/destroy.rb +37 -0
  19. data/lib/tap/generator/generate.rb +61 -0
  20. data/lib/tap/generator/generators/command/command_generator.rb +16 -12
  21. data/lib/tap/generator/generators/command/templates/command.erb +13 -19
  22. data/lib/tap/generator/generators/config/config_generator.rb +18 -27
  23. data/lib/tap/generator/generators/config/templates/doc.erb +12 -0
  24. data/lib/tap/generator/generators/config/templates/nodoc.erb +8 -0
  25. data/lib/tap/generator/generators/file_task/file_task_generator.rb +16 -11
  26. data/lib/tap/generator/generators/file_task/templates/file.txt +11 -2
  27. data/lib/tap/generator/generators/file_task/templates/result.yml +6 -0
  28. data/lib/tap/generator/generators/file_task/templates/task.erb +24 -31
  29. data/lib/tap/generator/generators/file_task/templates/test.erb +18 -22
  30. data/lib/tap/generator/generators/root/root_generator.rb +45 -31
  31. data/lib/tap/generator/generators/root/templates/Rakefile +64 -41
  32. data/lib/tap/generator/generators/root/templates/gemspec +27 -0
  33. data/lib/tap/generator/generators/root/templates/tapfile +8 -0
  34. data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +0 -0
  35. data/lib/tap/generator/generators/root/templates/test/tap_test_suite.rb +1 -1
  36. data/lib/tap/generator/generators/root/templates/test/tapfile_test.rb +15 -0
  37. data/lib/tap/generator/generators/task/task_generator.rb +21 -28
  38. data/lib/tap/generator/generators/task/templates/task.erb +13 -23
  39. data/lib/tap/generator/generators/task/templates/test.erb +15 -18
  40. data/lib/tap/generator/manifest.rb +14 -0
  41. data/lib/tap/patches/rake/rake_test_loader.rb +0 -0
  42. data/lib/tap/patches/rake/testtask.rb +0 -0
  43. data/lib/tap/patches/ruby19/backtrace_filter.rb +0 -0
  44. data/lib/tap/patches/ruby19/parsedate.rb +0 -0
  45. data/lib/tap/root.rb +260 -21
  46. data/lib/tap/support/aggregator.rb +11 -11
  47. data/lib/tap/support/assignments.rb +172 -0
  48. data/lib/tap/support/audit.rb +20 -18
  49. data/lib/tap/support/batchable.rb +21 -10
  50. data/lib/tap/support/batchable_class.rb +107 -0
  51. data/lib/tap/support/class_configuration.rb +154 -239
  52. data/lib/tap/support/command_line.rb +97 -102
  53. data/lib/tap/support/comment.rb +270 -0
  54. data/lib/tap/support/configurable.rb +86 -65
  55. data/lib/tap/support/configurable_class.rb +296 -0
  56. data/lib/tap/support/configuration.rb +122 -0
  57. data/lib/tap/support/constant.rb +70 -0
  58. data/lib/tap/support/constant_utils.rb +127 -0
  59. data/lib/tap/support/declarations.rb +111 -0
  60. data/lib/tap/support/executable.rb +30 -17
  61. data/lib/tap/support/executable_queue.rb +0 -0
  62. data/lib/tap/support/framework.rb +71 -0
  63. data/lib/tap/support/framework_class.rb +199 -0
  64. data/lib/tap/support/instance_configuration.rb +147 -0
  65. data/lib/tap/support/lazydoc.rb +428 -0
  66. data/lib/tap/support/manifest.rb +89 -0
  67. data/lib/tap/support/run_error.rb +0 -0
  68. data/lib/tap/support/shell_utils.rb +33 -9
  69. data/lib/tap/support/summary.rb +30 -0
  70. data/lib/tap/support/tdoc.rb +339 -134
  71. data/lib/tap/support/tdoc/tdoc_html_generator.rb +0 -0
  72. data/lib/tap/support/tdoc/tdoc_html_template.rb +0 -0
  73. data/lib/tap/support/templater.rb +180 -0
  74. data/lib/tap/support/validation.rb +409 -76
  75. data/lib/tap/support/versions.rb +5 -3
  76. data/lib/tap/task.rb +78 -174
  77. data/lib/tap/tasks/dump.rb +56 -0
  78. data/lib/tap/tasks/rake.rb +93 -0
  79. data/lib/tap/test.rb +3 -3
  80. data/lib/tap/test/env_vars.rb +2 -2
  81. data/lib/tap/test/file_methods.rb +19 -20
  82. data/lib/tap/test/script_methods.rb +144 -0
  83. data/lib/tap/test/subset_methods.rb +1 -1
  84. data/lib/tap/test/tap_methods.rb +28 -62
  85. data/lib/tap/workflow.rb +22 -39
  86. metadata +48 -179
  87. data/Basic Overview +0 -151
  88. data/Command Reference +0 -99
  89. data/Rakefile +0 -127
  90. data/Tutorial +0 -287
  91. data/lib/tap/cmd/console.rb +0 -31
  92. data/lib/tap/cmd/destroy.rb +0 -20
  93. data/lib/tap/cmd/generate.rb +0 -20
  94. data/lib/tap/cmd/run.rb +0 -151
  95. data/lib/tap/dump.rb +0 -57
  96. data/lib/tap/generator.rb +0 -91
  97. data/lib/tap/generator/generators/command/USAGE +0 -6
  98. data/lib/tap/generator/generators/config/USAGE +0 -21
  99. data/lib/tap/generator/generators/config/templates/config.erb +0 -1
  100. data/lib/tap/generator/generators/file_task/USAGE +0 -3
  101. data/lib/tap/generator/generators/file_task/templates/file.yml +0 -3
  102. data/lib/tap/generator/generators/generator/USAGE +0 -0
  103. data/lib/tap/generator/generators/generator/generator_generator.rb +0 -21
  104. data/lib/tap/generator/generators/generator/templates/generator.erb +0 -32
  105. data/lib/tap/generator/generators/generator/templates/usage.erb +0 -1
  106. data/lib/tap/generator/generators/root/USAGE +0 -0
  107. data/lib/tap/generator/generators/root/templates/ReadMe.txt +0 -0
  108. data/lib/tap/generator/generators/root/templates/tap.yml +0 -80
  109. data/lib/tap/generator/generators/task/USAGE +0 -3
  110. data/lib/tap/generator/generators/workflow/USAGE +0 -0
  111. data/lib/tap/generator/generators/workflow/templates/task.erb +0 -16
  112. data/lib/tap/generator/generators/workflow/templates/test.erb +0 -7
  113. data/lib/tap/generator/generators/workflow/workflow_generator.rb +0 -6
  114. data/lib/tap/generator/options.rb +0 -26
  115. data/lib/tap/generator/usage.rb +0 -26
  116. data/lib/tap/support/batchable_methods.rb +0 -34
  117. data/lib/tap/support/command_line_methods.rb +0 -76
  118. data/lib/tap/support/configurable_methods.rb +0 -224
  119. data/lib/tap/support/logger.rb +0 -88
  120. data/lib/tap/support/rake.rb +0 -43
  121. data/lib/tap/support/tdoc/config_attr.rb +0 -362
  122. data/test/app/config/another/task.yml +0 -1
  123. data/test/app/config/batch.yml +0 -2
  124. data/test/app/config/empty.yml +0 -0
  125. data/test/app/config/erb.yml +0 -2
  126. data/test/app/config/some/task.yml +0 -1
  127. data/test/app/config/template.yml +0 -2
  128. data/test/app/config/version-0.1.yml +0 -1
  129. data/test/app/config/version.yml +0 -1
  130. data/test/app/lib/app_test_task.rb +0 -3
  131. data/test/app_test.rb +0 -1849
  132. data/test/env/test_configure/recurse_a.yml +0 -2
  133. data/test/env/test_configure/recurse_b.yml +0 -2
  134. data/test/env/test_configure/tap.yml +0 -23
  135. data/test/env/test_load_env_config/dir/tap.yml +0 -3
  136. data/test/env/test_load_env_config/recurse_a.yml +0 -2
  137. data/test/env/test_load_env_config/recurse_b.yml +0 -2
  138. data/test/env/test_load_env_config/tap.yml +0 -3
  139. data/test/env_test.rb +0 -198
  140. data/test/file_task/config/batch.yml +0 -2
  141. data/test/file_task/config/configured.yml +0 -1
  142. data/test/file_task/old_file_one.txt +0 -0
  143. data/test/file_task/old_file_two.txt +0 -0
  144. data/test/file_task_test.rb +0 -1291
  145. data/test/root/alt_lib/alt_module.rb +0 -4
  146. data/test/root/file.txt +0 -0
  147. data/test/root/glob/one.txt +0 -0
  148. data/test/root/glob/two.txt +0 -0
  149. data/test/root/lib/absolute_alt_filepath.rb +0 -2
  150. data/test/root/lib/alternative_filepath.rb +0 -2
  151. data/test/root/lib/another_module.rb +0 -2
  152. data/test/root/lib/nested/some_module.rb +0 -4
  153. data/test/root/lib/no_module_included.rb +0 -0
  154. data/test/root/lib/some/module.rb +0 -4
  155. data/test/root/lib/some_class.rb +0 -2
  156. data/test/root/lib/some_module.rb +0 -3
  157. data/test/root/load_path/load_path_module.rb +0 -2
  158. data/test/root/load_path/skip_module.rb +0 -2
  159. data/test/root/mtime/older.txt +0 -0
  160. data/test/root/unload/full_path.rb +0 -2
  161. data/test/root/unload/loaded_by_nested.rb +0 -2
  162. data/test/root/unload/nested/nested_load.rb +0 -6
  163. data/test/root/unload/nested/nested_with_ext.rb +0 -4
  164. data/test/root/unload/nested/relative_path.rb +0 -4
  165. data/test/root/unload/older.rb +0 -2
  166. data/test/root/unload/unload_base.rb +0 -9
  167. data/test/root/versions/another.yml +0 -0
  168. data/test/root/versions/file-0.1.2.yml +0 -0
  169. data/test/root/versions/file-0.1.yml +0 -0
  170. data/test/root/versions/file.yml +0 -0
  171. data/test/root_test.rb +0 -718
  172. data/test/support/aggregator_test.rb +0 -99
  173. data/test/support/audit_test.rb +0 -445
  174. data/test/support/batchable_test.rb +0 -74
  175. data/test/support/class_configuration_test.rb +0 -331
  176. data/test/support/command_line_test.rb +0 -58
  177. data/test/support/configurable/config/configured.yml +0 -2
  178. data/test/support/configurable_test.rb +0 -295
  179. data/test/support/executable_queue_test.rb +0 -103
  180. data/test/support/executable_test.rb +0 -38
  181. data/test/support/logger_test.rb +0 -31
  182. data/test/support/rake_test.rb +0 -37
  183. data/test/support/shell_utils_test.rb +0 -24
  184. data/test/support/tdoc_test.rb +0 -370
  185. data/test/support/validation_test.rb +0 -54
  186. data/test/support/versions_test.rb +0 -103
  187. data/test/tap_test_helper.rb +0 -57
  188. data/test/tap_test_suite.rb +0 -7
  189. data/test/task/config/batch.yml +0 -2
  190. data/test/task/config/batched.yml +0 -2
  191. data/test/task/config/configured.yml +0 -1
  192. data/test/task/config/example.yml +0 -1
  193. data/test/task_base_test.rb +0 -24
  194. data/test/task_syntax_test.rb +0 -300
  195. data/test/task_test.rb +0 -320
  196. data/test/test/env_vars_test.rb +0 -48
  197. data/test/test/file_methods/test_assert_files/expected/one.txt +0 -1
  198. data/test/test/file_methods/test_assert_files/expected/two.txt +0 -1
  199. data/test/test/file_methods/test_assert_files/input/one.txt +0 -1
  200. data/test/test/file_methods/test_assert_files/input/two.txt +0 -1
  201. data/test/test/file_methods/test_assert_files_can_have_no_expected_files_if_specified/input/one.txt +0 -1
  202. data/test/test/file_methods/test_assert_files_can_have_no_expected_files_if_specified/input/two.txt +0 -1
  203. data/test/test/file_methods/test_assert_files_fails_for_different_content/expected/one.txt +0 -1
  204. data/test/test/file_methods/test_assert_files_fails_for_different_content/expected/two.txt +0 -1
  205. data/test/test/file_methods/test_assert_files_fails_for_different_content/input/one.txt +0 -1
  206. data/test/test/file_methods/test_assert_files_fails_for_different_content/input/two.txt +0 -1
  207. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/expected/one.txt +0 -1
  208. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/one.txt +0 -1
  209. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/two.txt +0 -1
  210. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/one.txt +0 -1
  211. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/two.txt +0 -1
  212. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/one.txt +0 -1
  213. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/two.txt +0 -1
  214. data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/one.txt +0 -1
  215. data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/two.txt +0 -1
  216. data/test/test/file_methods/test_method_glob/expected/file.yml +0 -0
  217. data/test/test/file_methods/test_method_glob/expected/file_1.txt +0 -0
  218. data/test/test/file_methods/test_method_glob/expected/file_2.txt +0 -0
  219. data/test/test/file_methods_doc/test_sub/expected/one.txt +0 -1
  220. data/test/test/file_methods_doc/test_sub/expected/two.txt +0 -1
  221. data/test/test/file_methods_doc/test_sub/input/one.txt +0 -1
  222. data/test/test/file_methods_doc/test_sub/input/two.txt +0 -1
  223. data/test/test/file_methods_doc_test.rb +0 -29
  224. data/test/test/file_methods_test.rb +0 -275
  225. data/test/test/subset_methods_test.rb +0 -171
  226. data/test/test/tap_methods/test_assert_files/expected/task/name/a.txt +0 -1
  227. data/test/test/tap_methods/test_assert_files/expected/task/name/b.txt +0 -1
  228. data/test/test/tap_methods/test_assert_files/input/a.txt +0 -1
  229. data/test/test/tap_methods/test_assert_files/input/b.txt +0 -1
  230. data/test/test/tap_methods_test.rb +0 -399
  231. data/test/workflow_test.rb +0 -120
  232. data/vendor/rails_generator.rb +0 -56
  233. data/vendor/rails_generator/base.rb +0 -263
  234. data/vendor/rails_generator/commands.rb +0 -581
  235. data/vendor/rails_generator/generated_attribute.rb +0 -42
  236. data/vendor/rails_generator/lookup.rb +0 -209
  237. data/vendor/rails_generator/manifest.rb +0 -53
  238. data/vendor/rails_generator/options.rb +0 -143
  239. data/vendor/rails_generator/scripts.rb +0 -83
  240. data/vendor/rails_generator/scripts/destroy.rb +0 -7
  241. data/vendor/rails_generator/scripts/generate.rb +0 -7
  242. data/vendor/rails_generator/scripts/update.rb +0 -12
  243. data/vendor/rails_generator/simple_logger.rb +0 -46
  244. data/vendor/rails_generator/spec.rb +0 -44
@@ -1,399 +0,0 @@
1
- require File.dirname(__FILE__) + '/../tap_test_helper'
2
- require 'tap/test'
3
-
4
- class TestSetupTest < Test::Unit::TestCase
5
- acts_as_tap_test(
6
- :root => "alt/root",
7
- :directories => {:input => "alt/input"})
8
-
9
- #
10
- # basic tests
11
- #
12
-
13
- def test_setup_with_options
14
- assert_equal @app, app
15
- assert_equal Tap::App.instance, app
16
- assert_equal File.expand_path("./alt/root/test_setup_with_options"), File.expand_path(app[:root])
17
- assert_equal File.expand_path("./alt/root/test_setup_with_options/alt/input"), File.expand_path(app[:input])
18
- end
19
- end
20
-
21
- class TapMethodsTest < Test::Unit::TestCase
22
- include TapTestMethods
23
- acts_as_tap_test
24
-
25
- #
26
- # basic tests
27
- #
28
-
29
- def test_setup
30
- assert runlist.empty?
31
- assert_equal @app, app
32
- assert_equal Tap::App.instance, app
33
- assert_equal File.expand_path(File.dirname(__FILE__) + "/tap_methods/test_setup"), File.expand_path(app[:root])
34
- assert_equal File.expand_path(File.dirname(__FILE__) + "/tap_methods/test_setup/input"), File.expand_path(app[:input])
35
- end
36
-
37
- def test_clear_runlist_empties_runlist
38
- runlist << 1
39
- assert !runlist.empty?
40
-
41
- clear_runlist
42
- assert runlist.empty?
43
- end
44
-
45
- def test_add_one_procedure_adds_input_to_runlist_and_returns_input_plus_one
46
- input = 1
47
- output = add_one.call(nil, input)
48
- assert_equal 2, output
49
- assert_equal [1], runlist
50
- end
51
-
52
- #
53
- # assert_audit test
54
- #
55
-
56
- def test_assert_audit_doc
57
- a = Tap::Support::Audit.new
58
- a._record(:a, 'a')
59
- a._record(:b, 'b')
60
-
61
- e = ExpAudit[[:a, 'a'], [:b, 'b']]
62
- assert_audit_equal(e, a)
63
-
64
- a = Tap::Support::Audit.new
65
- a._record(:a, 'a')
66
- a._record(:b, 'b')
67
-
68
- e = ExpAudit[
69
- lambda {|source, value| source == :a && value == 'a'},
70
- [:b, 'b']]
71
- assert_audit_equal(e, a)
72
-
73
- a = Tap::Support::Audit.new
74
- a._record(:a, 'a')
75
- a._record(:b, 'b')
76
-
77
- b = Tap::Support::Audit.new
78
- b._record(:c, 'c')
79
- b._record(:d, 'd')
80
-
81
- c = Tap::Support::Audit.merge(a,b)
82
- c._record(:e, 'e')
83
- c._record(:f, 'f')
84
-
85
- ea = ExpAudit[[:a, "a"], [:b, "b"]]
86
- eb = ExpAudit[[:c, "c"], [:d, "d"]]
87
- e = ExpAudit[ExpMerge[ea, eb], [:e, "e"], [:f, "f"]]
88
-
89
- assert_audit_equal(e, c)
90
-
91
- ea = ExpAudit[[:a, "a"], [:b, "FLUNK"]]
92
- eb = ExpAudit[[:c, "c"], [:d, "d"]]
93
- e = ExpAudit[ExpMerge[ea, eb], [:e, "e"], [:f, "f"]]
94
-
95
- flunked = false
96
- begin
97
- assert_audit_equal(e, c)
98
- rescue
99
- assert $!.message =~ /unequal record 0:0:1\./
100
- flunked = true
101
- end
102
-
103
- assert flunked
104
-
105
- assert_equal ExpAudit[ExpMerge[ea, eb], [:e, "e"], [:f, "f"]], e
106
- assert_equal ExpMerge[ea, eb], e[0]
107
- assert_equal ExpAudit[[:a, "a"], [:b, "FLUNK"]], e[0][0]
108
- assert_equal [:b, "FLUNK"], e[0][0][1]
109
- end
110
-
111
- def test_assert_audit_equal
112
- a = Tap::Support::Audit.new(nil, nil)
113
- a._record(:a, 'a')
114
- a._record(:b, 'b')
115
-
116
- e = ExpAudit[[nil, nil], [:a, 'a'], [:b, 'b']]
117
- assert_audit_equal(e, a)
118
-
119
- begin
120
- e = ExpAudit[[nil, nil], [:a, 'FLUNK'], [:b, 'b']]
121
- assert_audit_equal(e, a)
122
-
123
- flunk "audits should not have been equal"
124
- rescue
125
- assert_equal "unequal record 1.\n<[:a, \"FLUNK\"]> expected but was\n<[:a, \"a\"]>.", $!.message
126
- end
127
- end
128
-
129
- def test_assert_audit_equal_with_procs
130
- a = Tap::Support::Audit.new(nil, nil)
131
- a._record(:a, 'a')
132
- a._record(:b, 'b')
133
-
134
- e = ExpAudit[
135
- lambda {|source, value| source == nil && value == nil},
136
- lambda {|source, value| source == :a && value == 'a'},
137
- lambda {|source, value| source == :b && value == 'b'}]
138
- assert_audit_equal(e, a)
139
-
140
- begin
141
- e = ExpAudit[
142
- lambda {|source, value| source == nil && value == nil},
143
- lambda {|source, value| source == :a && value == 'FLUNK'},
144
- lambda {|source, value| source == :b && value == 'b'}]
145
- assert_audit_equal(e, a)
146
-
147
- flunk "audits should not have been equal"
148
- rescue
149
- assert_equal "unconfirmed record 1.\n<false> is not true.", $!.message
150
- end
151
- end
152
-
153
- def test_assert_audit_equal_for_merge
154
- a = Tap::Support::Audit.new(nil, nil)
155
- a._record(:a, 'a')
156
- a._record(:b, 'b')
157
-
158
- b = Tap::Support::Audit.new(nil, nil)
159
- b._record(:c, 'c')
160
- b._record(:d, 'd')
161
-
162
- c = Tap::Support::Audit.merge(a,b)
163
- c._record(:e, 'e')
164
- c._record(:f, 'f')
165
-
166
- ea = ExpAudit[[nil, nil], [:a, "a"], [:b, "b"]]
167
- eb = ExpAudit[[nil, nil], [:c, "c"], [:d, "d"]]
168
- e = ExpAudit[ExpMerge[ea, eb], [:e, "e"], [:f, "f"]]
169
-
170
- assert_audit_equal(e, c)
171
-
172
- begin
173
- ea = ExpAudit[[nil, nil], [:a, "FLUNK"], [:b, "b"]]
174
- eb = ExpAudit[[nil, nil], [:c, "c"], [:d, "d"]]
175
- e = ExpAudit[ExpMerge[ea, eb], [:e, "e"], [:f, "f"]]
176
- assert_audit_equal(e, c)
177
- flunk "audits should not have been equal"
178
- rescue
179
- assert_equal "unequal record 0:0:1.\n<[:a, \"FLUNK\"]> expected but was\n<[:a, \"a\"]>.", $!.message
180
- end
181
- end
182
-
183
- def new_audit(letter, n=0)
184
- a = Tap::Support::Audit.new(nil, nil)
185
- 1.upto(n) {|i| a._record(letter, "#{letter}#{i}")}
186
- a
187
- end
188
-
189
- def test_assert_audit_equal_for_nested_merge_with_procs
190
- a = new_audit(:a, 1)
191
- b = new_audit(:b, 1)
192
- c = Tap::Support::Audit.merge(a,b)
193
- 1.upto(1) {|i| c._record(:c, "c#{i}")}
194
-
195
- d = new_audit(:d, 1)
196
- e = new_audit(:e, 1)
197
- f = Tap::Support::Audit.merge(d, e, 'x1', 'y1', 'z1')
198
- 1.upto(1) {|i| f._record(:f, "f#{i}")}
199
-
200
- g = Tap::Support::Audit.merge(c, f)
201
- 1.upto(1) {|i| g._record(:g, "g#{i}")}
202
-
203
- ea = ExpAudit[[nil, nil], [:a, 'a1']]
204
- eb = ExpAudit[[nil, nil], [:b, 'b1']]
205
- ec = ExpAudit[ExpMerge[ea, eb], lambda {|source, value| source == :c && value == 'c1'}]
206
-
207
- ed = ExpAudit[[nil, nil], [:d, 'd1']]
208
- ee = ExpAudit[[nil, nil], [:e, 'e1']]
209
- ex1 = ExpAudit[lambda {|source, value| source == nil && value == 'x1'}]
210
- ey1 = ExpAudit[[nil, 'y1']]
211
- ez1 = ExpAudit[[nil, 'z1']]
212
- ef = ExpAudit[ExpMerge[ed, ee, ex1, ey1, ez1], [:f, 'f1']]
213
-
214
- eg = ExpAudit[ExpMerge[ec, ef], [:g, 'g1']]
215
- assert_audit_equal(eg, g)
216
-
217
- begin
218
- ea = ExpAudit[[nil, nil], [:a, 'a1']]
219
- eb = ExpAudit[[nil, nil], [:b, 'b1']]
220
- ec = ExpAudit[ExpMerge[ea, eb], lambda {|source, value| source == :c && value == 'c1'}]
221
-
222
- ed = ExpAudit[[nil, nil], [:d, 'd1']]
223
- ee = ExpAudit[[nil, nil], [:e, 'e1']]
224
- ex1 = ExpAudit[lambda {|source, value| source == nil && value == 'FLUNK'}]
225
- ey1 = ExpAudit[[nil, 'y1']]
226
- ez1 = ExpAudit[[nil, 'z1']]
227
- ef = ExpAudit[ExpMerge[ed, ee, ex1, ey1, ez1], [:f, 'f1']]
228
-
229
- eg = ExpAudit[ExpMerge[ec, ef], [:g, 'g1']]
230
- assert_audit_equal(eg, g)
231
- rescue
232
- assert_equal "unconfirmed record 0:1:0:2:0.\n<false> is not true.", $!.message
233
- end
234
- end
235
-
236
- # TODO -- test length check for assert_audit_equal
237
-
238
- #
239
- # with options
240
- #
241
-
242
- def test_with_options_doc
243
- app.options.one = 1
244
- app.options.two = 2
245
-
246
- assert_equal({:one => 1, :two => 2}, app.options.marshal_dump)
247
- with_options(:one => 'one', :quiet => false) do
248
- assert_equal({:one => 'one', :two => 2, :debug => true, :quiet => false}, app.options.marshal_dump)
249
- end
250
- assert_equal({:one => 1, :two => 2}, app.options.marshal_dump)
251
- end
252
-
253
- def test_with_options_merges_new_and_default_options_with_existing_for_block
254
- app.options.one = 1
255
- app.options.two = 2
256
-
257
- assert_equal({:one => 1, :two => 2}, app.options.marshal_dump)
258
- with_options(:one => 'one') do
259
- assert_equal({:one => 'one', :two => 2, :debug => true, :quiet => true}, app.options.marshal_dump)
260
- end
261
- assert_equal({:one => 1, :two => 2}, app.options.marshal_dump)
262
- end
263
-
264
- def test_with_options_does_not_merge_if_merge_with_existing_is_false
265
- app.options.one = 1
266
- app.options.two = 2
267
-
268
- assert_equal({:one => 1, :two => 2}, app.options.marshal_dump)
269
- with_options({:one => 'one'}, app, false) do
270
- assert_equal({:one => 'one', :debug => true, :quiet => true}, app.options.marshal_dump)
271
- end
272
- assert_equal({:one => 1, :two => 2}, app.options.marshal_dump)
273
- end
274
-
275
- #
276
- # with config
277
- #
278
-
279
- def test_with_config_doc
280
- app = Tap::App.new(:directories => {:dir => 'dir', :alt => 'alt_dir'})
281
- tmp_config = {
282
- :directories => {:alt => 'another', :new => 'new_dir'},
283
- :options => {:one => 1, :quiet => false}}
284
-
285
- with_config(tmp_config, app) do
286
- assert_equal({:dir => 'dir', :alt => 'another', :new => 'new_dir'}, app.directories)
287
- assert_equal({:one => 1, :debug => true, :quiet => false}, app.options.marshal_dump)
288
- end
289
- assert_equal({:dir => 'dir', :alt => 'alt_dir'}, app.directories)
290
- assert_equal({}, app.options.marshal_dump)
291
- end
292
-
293
- def test_with_config_merges_new_config_with_existing_for_block
294
- config = {
295
- :root => File.expand_path("root"),
296
- :directories => {:dir => 'dir', :alt => 'alt_dir'},
297
- :options => {:one => 1, :two => 2}}
298
- logger_config ={
299
- :device => app.logger.logdev.dev,
300
- :level => app.logger.level,
301
- :datetime_format => app.logger.datetime_format}
302
-
303
- full_config = config.merge(
304
- :absolute_paths => {},
305
- :logger => logger_config)
306
- modified_config = {
307
- :root => File.expand_path("root"),
308
- :directories => {:dir => 'another', :new => 'new_dir', :alt => 'alt_dir'},
309
- :options => {:one => 'one', :two => 2, :debug => true, :quiet => true},
310
- :absolute_paths => {:abs => File.expand_path('abs')},
311
- :logger => logger_config}
312
-
313
- app.reconfigure(full_config)
314
-
315
- assert_equal(full_config, app.config)
316
- with_config(
317
- :directories => {:dir => 'another', :new => 'new_dir'},
318
- :options => {:one => 'one'},
319
- :absolute_paths => {:abs => 'abs'}
320
- ) do
321
- assert_equal(modified_config, app.config)
322
- end
323
- assert_equal(full_config, app.config)
324
- end
325
-
326
- def test_with_config_does_not_merge_if_merge_with_existing_is_false
327
- config = {
328
- :root => File.expand_path("root"),
329
- :directories => {:dir => 'dir', :alt => 'alt_dir'},
330
- :options => {:one => 1, :two => 2}}
331
- logger_config ={
332
- :device => app.logger.logdev.dev,
333
- :level => app.logger.level,
334
- :datetime_format => app.logger.datetime_format}
335
-
336
- full_config = config.merge(
337
- :absolute_paths => {},
338
- :logger => logger_config)
339
- modified_config = {
340
- :root => File.expand_path("root"),
341
- :directories => {:dir => 'another', :new => 'new_dir'},
342
- :options => {:one => 'one', :debug => true, :quiet => true},
343
- :absolute_paths => {:abs => File.expand_path('abs')},
344
- :logger => logger_config}
345
-
346
- app.reconfigure(full_config)
347
-
348
- assert_equal(full_config, app.config)
349
- with_config(
350
- {:directories => {:dir => 'another', :new => 'new_dir'},
351
- :options => {:one => 'one'},
352
- :absolute_paths => {:abs => 'abs'}},
353
- app,
354
- false
355
- ) do
356
- assert_equal(modified_config, app.config)
357
- end
358
- assert_equal(full_config, app.config)
359
- end
360
-
361
- def test_nested_with_config
362
- with_config(:options => {:one => 'one'}) do
363
- assert_equal 'one', app.options.one
364
- with_config(:options => {:one => 'two'}) do
365
- assert_equal 'two', app.options.one
366
- end
367
- assert_equal 'one', app.options.one
368
- end
369
- end
370
-
371
- #
372
- # assert_files
373
- #
374
-
375
- def test_assert_files
376
- t = Tap::FileTask.new("task/name") do |task, input_file|
377
- output_file = task.filepath(:data, File.basename(input_file))
378
- content = "#{File.read(input_file)}content"
379
-
380
- assert_equal method_filepath(:output, "task/name", File.basename(input_file)), output_file
381
-
382
- task.prepare(output_file)
383
- File.open(output_file, "wb") {|f| f << content}
384
- output_file
385
- end
386
-
387
- was_in_block = false
388
- with_config :options => {:debug => true}, :directories => {:data => 'output'} do
389
- assert_files do |input_files|
390
- was_in_block = true
391
- input_files.collect {|input_file| t.execute(input_file)}
392
- end
393
- end
394
-
395
- assert was_in_block
396
- end
397
-
398
- end
399
-
@@ -1,120 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'tap_test_helper')
2
- require 'tap/workflow'
3
-
4
- # used in documentation
5
- class SimpleSequence < Tap::Workflow
6
- config :factor, 1
7
-
8
- def workflow
9
- t1 = Tap::Task.new {|task, input| input += 5 }
10
- t2 = Tap::Task.new {|task, input| input += 3 }
11
- t3 = Tap::Task.new {|task, input| input *= factor }
12
-
13
- app.sequence(t1, t2, t3)
14
- self.entry_point = t1
15
- self.exit_point = t3
16
- end
17
- end
18
-
19
- class WorkflowTest < Test::Unit::TestCase
20
- include TapTestMethods
21
-
22
- acts_as_tap_test
23
-
24
- def test_documentation
25
- w = SimpleSequence.new
26
- w.enq(0)
27
- app.run
28
- assert_equal([8], app.results(w.exit_points))
29
-
30
- app.aggregator.clear
31
-
32
- w1 = SimpleSequence.new nil, :factor => 1
33
- w2 = w1.initialize_batch_obj nil, :factor => -1
34
-
35
- w1.enq(0)
36
- app.run
37
- assert_equal([8, -8], app.results(w1.exit_points, w2.exit_points))
38
- end
39
-
40
- #
41
- # initialization test
42
- #
43
-
44
- def test_workflow_raises_error_if_no_task_block_is_provided
45
- assert_raise(Tap::Workflow::WorkflowError) { Tap::Workflow.new() }
46
- end
47
-
48
- def test_workflow_raises_error_if_no_entry_point_is_defined
49
- assert_raise(Tap::Workflow::WorkflowError) do
50
- Tap::Workflow.new {|wf| }
51
- end
52
- end
53
-
54
- #
55
-
56
- def test_workflow_sequences_execution_of_entry_point_if_entry_point_is_a_task
57
- t1 = Tap::Task.new(&add_one)
58
- t2 = Tap::Task.new(&add_one)
59
- wf = Tap::Workflow.new do |w|
60
- w.entry_point = t1
61
- w.app.sequence(t1, t2)
62
- end
63
-
64
- assert_equal t1, wf.entry_point
65
-
66
- with_options :debug => true do
67
- wf.enq(0)
68
- app.run
69
- end
70
- assert_audit_equal(ExpAudit[[nil,0],[t1,1],[t2,2]], app._results(t2).first)
71
- end
72
-
73
- def test_workflow_forks_entry_points_if_entry_point_is_a_hash
74
- t1 = Tap::Task.new(&add_one)
75
- t2 = Tap::Task.new(&add_one)
76
- t3 = Tap::Task.new(&add_one)
77
- wf = Tap::Workflow.new do |w|
78
- w.entry_point[:t1] = t1
79
- w.entry_point[:t2] = t2
80
- w.app.sequence(t2, t3)
81
- end
82
-
83
- assert_equal({:t1 => t1, :t2 => t2}, wf.entry_point)
84
-
85
- with_options :debug => true do
86
- wf.enq(0)
87
- app.run
88
- end
89
- assert_audit_equal(ExpAudit[[nil,0],[t1,1]], app._results(t1).first)
90
- assert_audit_equal(ExpAudit[[nil,0],[t2,1],[t3,2]], app._results(t3).first)
91
- end
92
-
93
- class TestWorkflow < Tap::Workflow
94
- def t1
95
- @t1 ||= Tap::Task.new {|task, input| input += 1}
96
- end
97
-
98
- def t2
99
- @t2 ||= Tap::Task.new {|task, input| input += 1}
100
- end
101
-
102
- def workflow
103
- self.entry_point = t1
104
- app.sequence(t1, t2)
105
- self.exit_point[:t2] = t2
106
- end
107
- end
108
-
109
- def test_workflow_method_defines_workflow
110
- w = TestWorkflow.new
111
-
112
- with_options :debug => true do
113
- w.enq(0)
114
- app.run
115
- end
116
- assert_audit_equal(ExpAudit[[nil,0],[w.t1,1],[w.t2,2]], app._results(w.exit_point[:t2]).first)
117
- end
118
-
119
- end
120
-