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,103 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../tap_test_helper')
2
- require 'tap/support/versions'
3
-
4
- class VersionTest < Test::Unit::TestCase
5
- include Tap::Support::Versions
6
- include Tap::Test::SubsetMethods
7
-
8
- def test_documentation
9
- assert_equal "path/to/file-1.0.txt", version("path/to/file.txt", 1.0)
10
- assert_equal "path/to/file-1.0.1.txt", increment("path/to/file-1.0.txt", "0.0.1")
11
- assert_equal "path/to/file-1.0.txt", increment("path/to/file.txt", 1.0)
12
- assert_equal ["path/to/file.txt", "1.0"], deversion("path/to/file-1.0.txt")
13
- assert_equal ["path/to/file.txt", nil], deversion("path/to/file.txt")
14
- end
15
-
16
- #
17
- # version tests
18
- #
19
-
20
- def test_version_accepts_string_or_numeric_versions
21
- assert_equal "path/to/file-1.1.txt", version("path/to/file.txt", "1.1")
22
- assert_equal "path/to/file-1.1.txt", version("path/to/file.txt", 1.1)
23
-
24
- assert_equal "path/to/file-1.1", version("path/to/file", "1.1")
25
- end
26
-
27
- def test_version_defaults_to_filepath_when_no_version_is_specified
28
- assert_equal "path/to/file.txt", version("path/to/file.txt", "")
29
- assert_equal "path/to/file.txt", version("path/to/file.txt", " ")
30
- assert_equal "path/to/file.txt", version("path/to/file.txt", nil)
31
-
32
- assert_equal "path/to/file", version("path/to/file", "")
33
- end
34
-
35
- #
36
- # deversion tests
37
- #
38
-
39
- def test_deversion_returns_filepath_and_version
40
- assert_equal ["path/to/file.txt", "1.1"], deversion("path/to/file-1.1.txt")
41
- assert_equal ["path/to/file", "1.1"], deversion("path/to/file-1.1")
42
- end
43
-
44
- def test_deversion_returns_nil_for_version_when_no_version_is_specified
45
- assert_equal ["path/to/file.txt", nil], deversion("path/to/file.txt")
46
- assert_equal ["path/to/file", nil], deversion("path/to/file")
47
- end
48
-
49
- #
50
- # increment tests
51
- #
52
-
53
- def test_increment_adds_increment_to_current_version
54
- assert_equal "path/to/file-1.0.1.txt", increment("path/to/file-1.0.txt", "0.0.1")
55
- assert_equal "path/to/file-2.1.txt", increment("path/to/file-1.0.txt", 1.1)
56
- assert_equal "path/to/file-2.0.txt", increment("path/to/file-1.0.txt", 1)
57
- assert_equal "path/to/file-1.1.txt", increment("path/to/file.txt", 1.1)
58
-
59
- assert_equal "path/to/file-1.0.1", increment("path/to/file-1.0", "0.0.1")
60
- assert_equal "path/to/file-2.1", increment("path/to/file-1.0", 1.1)
61
- assert_equal "path/to/file-2.0", increment("path/to/file-1.0", 1)
62
- assert_equal "path/to/file-1.1", increment("path/to/file", 1.1)
63
- end
64
-
65
- def test_increment_adds_zero_if_increment_is_nil
66
- assert_equal "path/to/file-1.0.txt", increment("path/to/file-1.0.txt", nil)
67
- assert_equal "path/to/file.txt", increment("path/to/file.txt", nil)
68
-
69
- assert_equal "path/to/file-1.0", increment("path/to/file-1.0", nil)
70
- assert_equal "path/to/file", increment("path/to/file", nil)
71
- end
72
-
73
- #
74
- # compare versions test
75
- #
76
-
77
- def test_compare_versions_documentation
78
- assert_equal 1, compare_versions("1.0.0", "0.9.9")
79
- assert_equal 0, compare_versions(1.1, 1.1)
80
- assert_equal(-1, compare_versions([0,9], [0,9,1]) )
81
- end
82
-
83
- def test_compare_versions
84
- [
85
- ["1", "0"],
86
- ["1.1", "1.0"],
87
- ["1.0", "0.9"],
88
- ["1.0.0.0", "0.9"],
89
- ["1.0", "0.9.0.0"]
90
- ].each do |a,b|
91
- assert_equal 1, compare_versions(a,b)
92
- assert_equal 0, compare_versions(a,a)
93
- assert_equal 0, compare_versions(b,b)
94
- assert_equal(-1, compare_versions(b,a))
95
- end
96
- end
97
-
98
- def test_compare_versions_handles_numeric_and_array_input
99
- assert_equal 1, compare_versions(1, 0.9)
100
- assert_equal 1, compare_versions([1,0], [0,9])
101
- assert_equal 1, compare_versions(["1","0"], ["0","9"])
102
- end
103
- end
@@ -1,57 +0,0 @@
1
- require 'rubygems'
2
-
3
- require File.dirname(__FILE__) + '/../lib/tap'
4
- require 'tap/test'
5
-
6
- # Apply version-specific patches
7
- case RUBY_VERSION
8
- when /^1.9/
9
- require 'tap/patches/ruby19/backtrace_filter'
10
- end
11
-
12
- unless defined?(ObjectWithExecute)
13
- class ObjectWithExecute
14
- def execute(input)
15
- input
16
- end
17
- end
18
- end
19
-
20
- unless defined?(TapTestMethods)
21
-
22
- # Some convenience methods used in testing tasks, workflows, app, etc.
23
- module TapTestMethods # :nodoc:
24
- attr_accessor :runlist
25
-
26
- # Setup clears the test using clear_tasks and assures that Tap::App.instance
27
- # is the test-specific application.
28
- def setup
29
- super
30
- clear_runlist
31
- end
32
-
33
- # Clears all declared tasks, sets the application trace option to false, makes directories (if flagged
34
- # and as needed), and clears the runlist.
35
- def clear_runlist
36
- # clear the attributes
37
- @runlist = []
38
- end
39
-
40
- # A tracing procedure. echo adds input to runlist then returns input.
41
- def echo
42
- lambda do |task, *inputs|
43
- @runlist << inputs
44
- inputs
45
- end
46
- end
47
-
48
- # A tracing procedure for numeric inputs. add_one adds the input to
49
- # runlist then returns input + 1.
50
- def add_one
51
- lambda do |task, input|
52
- @runlist << input
53
- input += 1
54
- end
55
- end
56
- end
57
- end
@@ -1,7 +0,0 @@
1
- $:.unshift File.dirname(__FILE__) + '/../lib'
2
-
3
- ENV["ALL"] = 'true'
4
- Dir.glob(File.dirname(__FILE__) + "/**/*_test.rb").each do |test|
5
- next if test =~ /test\/check/
6
- require test
7
- end
@@ -1,2 +0,0 @@
1
- - one: ONE
2
- - one: ANOTHER ONE
@@ -1,2 +0,0 @@
1
- - key: first
2
- - key: second
@@ -1 +0,0 @@
1
- key: value
@@ -1 +0,0 @@
1
- one: ONE
@@ -1,24 +0,0 @@
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
-
7
- attr_accessor :t
8
-
9
- def setup
10
- super
11
- @t = ObjectWithExecute.new
12
- Tap::Task::Base.initialize(@t, :execute)
13
- end
14
-
15
- #
16
- # initialize tests
17
- #
18
-
19
- def test_initialize
20
- assert_equal [t], t.batch
21
- assert_equal Tap::App.instance, t.app
22
- end
23
-
24
- end
@@ -1,300 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'tap_test_helper')
2
- require 'tap/task'
3
-
4
-
5
- class TaskSyntaxTest < Test::Unit::TestCase
6
- include Tap
7
- include TapTestMethods
8
-
9
- acts_as_tap_test
10
-
11
- #
12
- # syntax and arity tests
13
- #
14
-
15
- class ProcessTestBase < Tap::Task
16
- attr_reader :runlist
17
-
18
- def initialize(*args)
19
- super
20
- @runlist = []
21
- end
22
- end
23
-
24
- ##
25
- class ProcessWithNoInput < Tap::Task
26
- attr_reader :was_in_process
27
-
28
- def initialize(*args)
29
- super
30
- @was_in_process = false
31
- end
32
-
33
- def process
34
- @was_in_process = true
35
- end
36
- end
37
-
38
- def test_process_with_no_input
39
- t = ProcessWithNoInput.new
40
- assert !t.was_in_process
41
-
42
- with_options :debug => true do
43
- assert_raise(Tap::Support::RunError) do
44
- t.enq 1
45
- app.run
46
- end
47
-
48
- t.enq
49
- app.run
50
- assert t.was_in_process
51
- end
52
- end
53
-
54
- def test_block_with_no_input
55
- was_in_block = false
56
- t = Tap::Task.new do |task|
57
- was_in_block = true
58
- end
59
-
60
- with_options :debug => true do
61
- assert_raise(Tap::Support::RunError) do
62
- t.enq 1
63
- app.run
64
- end
65
-
66
- t.enq
67
- app.run
68
- assert was_in_block
69
- end
70
- end
71
-
72
- ##
73
- class ProcessWithOneInput < ProcessTestBase
74
- def process(input)
75
- runlist << input
76
- end
77
- end
78
-
79
- def test_process_with_one_input
80
- t = ProcessWithOneInput.new
81
-
82
- with_options :debug => true do
83
- assert_raise(Tap::Support::RunError) do
84
- t.enq
85
- app.run
86
- end
87
-
88
- t.enq 1
89
- app.run
90
- assert_equal [1], t.runlist
91
-
92
- assert_raise(Tap::Support::RunError) do
93
- t.enq 1, 2, 3
94
- app.run
95
- end
96
- end
97
- end
98
-
99
- def test_block_with_one_input
100
- runlist = []
101
- t = Tap::Task.new do |task, input|
102
- runlist << input
103
- end
104
-
105
- with_options :debug => true do
106
- assert_raise(Tap::Support::RunError) do
107
- t.enq
108
- app.run
109
- end
110
- assert_raise(Tap::Support::RunError) do
111
- t.enq 1, 2
112
- app.run
113
- end
114
-
115
- t.enq 1
116
- app.run
117
- assert_equal [1], runlist
118
- end
119
- end
120
-
121
- ##
122
- class ProcessWithMultipleInputs < ProcessTestBase
123
- def process(a, b)
124
- runlist << [a,b]
125
- end
126
- end
127
-
128
- def test_process_with_multiple_inputs
129
- t = ProcessWithMultipleInputs.new
130
-
131
- with_options :debug => true do
132
- assert_raise(Tap::Support::RunError) do
133
- t.enq
134
- app.run
135
- end
136
- assert_raise(Tap::Support::RunError) do
137
- t.enq 1
138
- app.run
139
- end
140
-
141
- t.enq 1, 2
142
- app.run
143
- assert_equal [[1, 2]], t.runlist
144
- end
145
- end
146
-
147
- def test_block_with_multiple_inputs
148
- runlist = []
149
- t = Tap::Task.new do |task, a, b|
150
- runlist << [a,b]
151
- end
152
-
153
- with_options :debug => true do
154
- assert_raise(Tap::Support::RunError) do
155
- t.enq
156
- app.run
157
- end
158
- assert_raise(Tap::Support::RunError) do
159
- t.enq 1
160
- app.run
161
- end
162
-
163
- t.enq 1, 2
164
- app.run
165
- assert_equal [[1, 2]], runlist
166
- end
167
- end
168
-
169
- ##
170
- class ProcessWithArbitraryInputs < ProcessTestBase
171
- def process(*args)
172
- runlist << args
173
- end
174
- end
175
-
176
- def test_process_with_arbitrary_inputs
177
- t = ProcessWithArbitraryInputs.new
178
-
179
- with_options :debug => true do
180
- t.enq
181
- app.run
182
- assert_equal [[]], t.runlist
183
-
184
- t.enq 1
185
- app.run
186
- assert_equal [[], [1]], t.runlist
187
-
188
- t.enq 1, 2, 3
189
- app.run
190
- assert_equal [[], [1], [1,2,3]], t.runlist
191
- end
192
- end
193
-
194
- def test_block_with_arbitrary_inputs
195
- runlist = []
196
- t = Tap::Task.new do |task, *args|
197
- runlist << args
198
- end
199
-
200
- with_options :debug => true do
201
- t.enq
202
- app.run
203
- assert_equal [[]], runlist
204
-
205
- t.enq 1
206
- app.run
207
- assert_equal [[], [1]], runlist
208
-
209
- t.enq 1, 2, 3
210
- app.run
211
- assert_equal [[], [1], [1,2,3]], runlist
212
- end
213
- end
214
-
215
- ##
216
- class ProcessWithMixedArbitraryInputs < ProcessTestBase
217
- def process(a, b, *args)
218
- runlist << [a, b, args]
219
- end
220
- end
221
-
222
- def test_process_with_mixed_arbitrary_inputs
223
- t = ProcessWithMixedArbitraryInputs.new
224
-
225
- with_options :debug => true do
226
- assert_raise(Tap::Support::RunError) do
227
- t.enq
228
- app.run
229
- end
230
- assert_raise(Tap::Support::RunError) do
231
- t.enq 1
232
- app.run
233
- end
234
-
235
- t.enq 1, 2
236
- app.run
237
- assert_equal [[1, 2, []]], t.runlist
238
-
239
- t.enq 1, 2, 3
240
- app.run
241
- assert_equal [[1, 2, []], [1, 2, [3]]], t.runlist
242
- end
243
- end
244
-
245
- def test_block_with_mixed_arbitrary_inputs
246
- runlist = []
247
- t = Tap::Task.new do |task, a, b, *args|
248
- runlist << [a, b, args]
249
- end
250
-
251
- with_options :debug => true do
252
- assert_raise(Tap::Support::RunError) do
253
- t.enq
254
- app.run
255
- end
256
- assert_raise(Tap::Support::RunError) do
257
- t.enq 1
258
- app.run
259
- end
260
-
261
- t.enq 1, 2
262
- app.run
263
- assert_equal [[1, 2, []]], runlist
264
-
265
- t.enq 1, 2, 3
266
- app.run
267
- assert_equal [[1, 2, []], [1, 2, [3]]], runlist
268
- end
269
- end
270
-
271
- #
272
- # process with default values
273
- #
274
-
275
- class ProcessWithDefaultValues < ProcessTestBase
276
- def process(input=10)
277
- runlist << input
278
- end
279
- end
280
-
281
- def test_process_with_default_values
282
- t = ProcessWithDefaultValues.new
283
-
284
- with_options :debug => true do
285
- t.enq
286
- app.run
287
- assert_equal [10], t.runlist
288
-
289
- t.enq 1
290
- app.run
291
- assert_equal [10, 1], t.runlist
292
-
293
- assert_raise(Tap::Support::RunError) do
294
- t.enq 1, 2
295
- app.run
296
- end
297
- end
298
- end
299
-
300
- end