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.
Files changed (185) hide show
  1. data/Basic Overview +151 -0
  2. data/Command Reference +99 -0
  3. data/History +24 -0
  4. data/MIT-LICENSE +1 -1
  5. data/README +29 -57
  6. data/Rakefile +30 -37
  7. data/Tutorial +243 -191
  8. data/bin/tap +66 -35
  9. data/lib/tap.rb +47 -29
  10. data/lib/tap/app.rb +700 -342
  11. data/lib/tap/{script → cmd}/console.rb +0 -0
  12. data/lib/tap/{script → cmd}/destroy.rb +0 -0
  13. data/lib/tap/{script → cmd}/generate.rb +0 -0
  14. data/lib/tap/cmd/run.rb +156 -0
  15. data/lib/tap/constants.rb +4 -0
  16. data/lib/tap/dump.rb +57 -0
  17. data/lib/tap/env.rb +316 -0
  18. data/lib/tap/file_task.rb +106 -109
  19. data/lib/tap/generator.rb +4 -1
  20. data/lib/tap/generator/generators/command/USAGE +6 -0
  21. data/lib/tap/generator/generators/command/command_generator.rb +17 -0
  22. data/lib/tap/generator/generators/{script/templates/script.erb → command/templates/command.erb} +10 -10
  23. data/lib/tap/generator/generators/config/USAGE +21 -0
  24. data/lib/tap/generator/generators/config/config_generator.rb +17 -7
  25. data/lib/tap/generator/generators/file_task/USAGE +3 -0
  26. data/lib/tap/generator/generators/file_task/file_task_generator.rb +16 -0
  27. data/lib/tap/generator/generators/file_task/templates/file.txt +2 -0
  28. data/lib/tap/generator/generators/file_task/templates/file.yml +3 -0
  29. data/lib/tap/generator/generators/file_task/templates/task.erb +26 -20
  30. data/lib/tap/generator/generators/file_task/templates/test.erb +20 -10
  31. data/lib/tap/generator/generators/generator/generator_generator.rb +1 -1
  32. data/lib/tap/generator/generators/generator/templates/generator.erb +21 -12
  33. data/lib/tap/generator/generators/root/templates/Rakefile +33 -24
  34. data/lib/tap/generator/generators/root/templates/tap.yml +28 -31
  35. data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +1 -0
  36. data/lib/tap/generator/generators/task/USAGE +3 -0
  37. data/lib/tap/generator/generators/task/task_generator.rb +18 -5
  38. data/lib/tap/generator/generators/task/templates/task.erb +7 -12
  39. data/lib/tap/generator/generators/task/templates/test.erb +10 -11
  40. data/lib/tap/generator/generators/workflow/templates/task.erb +1 -1
  41. data/lib/tap/generator/generators/workflow/templates/test.erb +1 -1
  42. data/lib/tap/patches/rake/rake_test_loader.rb +8 -0
  43. data/lib/tap/patches/rake/testtask.rb +55 -0
  44. data/lib/tap/patches/ruby19/backtrace_filter.rb +51 -0
  45. data/lib/tap/patches/ruby19/parsedate.rb +16 -0
  46. data/lib/tap/root.rb +172 -67
  47. data/lib/tap/script.rb +70 -336
  48. data/lib/tap/support/aggregator.rb +55 -0
  49. data/lib/tap/support/audit.rb +281 -280
  50. data/lib/tap/support/batchable.rb +59 -0
  51. data/lib/tap/support/class_configuration.rb +279 -0
  52. data/lib/tap/support/configurable.rb +92 -0
  53. data/lib/tap/support/configurable_methods.rb +296 -0
  54. data/lib/tap/support/executable.rb +98 -0
  55. data/lib/tap/support/executable_queue.rb +82 -0
  56. data/lib/tap/support/logger.rb +9 -15
  57. data/lib/tap/support/rake.rb +43 -54
  58. data/lib/tap/support/run_error.rb +32 -13
  59. data/lib/tap/support/shell_utils.rb +47 -0
  60. data/lib/tap/support/tdoc.rb +9 -8
  61. data/lib/tap/support/tdoc/config_attr.rb +40 -16
  62. data/lib/tap/support/validation.rb +77 -0
  63. data/lib/tap/support/versions.rb +36 -36
  64. data/lib/tap/task.rb +276 -482
  65. data/lib/tap/test.rb +20 -261
  66. data/lib/tap/test/env_vars.rb +7 -5
  67. data/lib/tap/test/file_methods.rb +126 -121
  68. data/lib/tap/test/subset_methods.rb +86 -45
  69. data/lib/tap/test/tap_methods.rb +271 -0
  70. data/lib/tap/workflow.rb +174 -46
  71. data/test/app/config/another/task.yml +1 -0
  72. data/test/app/config/erb.yml +2 -1
  73. data/test/app/config/some/task.yml +1 -0
  74. data/test/app/config/template.yml +2 -6
  75. data/test/app_test.rb +1241 -1008
  76. data/test/env/test_configure/recurse_a.yml +2 -0
  77. data/test/env/test_configure/recurse_b.yml +2 -0
  78. data/test/env/test_configure/tap.yml +23 -0
  79. data/test/env/test_load_env_config/dir/tap.yml +3 -0
  80. data/test/env/test_load_env_config/recurse_a.yml +2 -0
  81. data/test/env/test_load_env_config/recurse_b.yml +2 -0
  82. data/test/env/test_load_env_config/tap.yml +3 -0
  83. data/test/env_test.rb +198 -0
  84. data/test/file_task_test.rb +70 -53
  85. data/{lib/tap/generator/generators/package/USAGE → test/root/file.txt} +0 -0
  86. data/test/root_test.rb +621 -454
  87. data/test/script_test.rb +38 -174
  88. data/test/support/aggregator_test.rb +99 -0
  89. data/test/support/audit_test.rb +409 -416
  90. data/test/support/batchable_test.rb +74 -0
  91. data/test/support/{task_configuration_test.rb → class_configuration_test.rb} +106 -47
  92. data/test/{task/config/overriding.yml → support/configurable/config/configured.yml} +0 -0
  93. data/test/support/configurable_test.rb +295 -0
  94. data/test/support/executable_queue_test.rb +103 -0
  95. data/test/support/executable_test.rb +38 -0
  96. data/test/support/logger_test.rb +17 -17
  97. data/test/support/rake_test.rb +4 -2
  98. data/test/support/shell_utils_test.rb +24 -0
  99. data/test/support/tdoc_test.rb +265 -258
  100. data/test/support/validation_test.rb +54 -0
  101. data/test/support/versions_test.rb +38 -38
  102. data/test/tap_test_helper.rb +19 -5
  103. data/test/tap_test_suite.rb +5 -2
  104. data/test/task_base_test.rb +13 -104
  105. data/test/task_syntax_test.rb +300 -0
  106. data/test/task_test.rb +258 -381
  107. data/test/test/env_vars_test.rb +40 -40
  108. data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/expected/one.txt +0 -0
  109. data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/expected/two.txt +0 -0
  110. data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/input/one.txt +0 -0
  111. data/test/test/file_methods/{test_assert_output_files_equal → test_assert_files}/input/two.txt +0 -0
  112. data/test/test/{test_file_task_test → file_methods/test_assert_files_can_have_no_expected_files_if_specified}/input/one.txt +0 -0
  113. data/test/test/{test_file_task_test → file_methods/test_assert_files_can_have_no_expected_files_if_specified}/input/two.txt +0 -0
  114. data/test/test/file_methods/test_assert_files_fails_for_different_content/expected/one.txt +1 -0
  115. data/test/test/{test_file_task_test → file_methods/test_assert_files_fails_for_different_content}/expected/two.txt +0 -0
  116. data/test/test/file_methods/test_assert_files_fails_for_different_content/input/one.txt +1 -0
  117. data/test/test/file_methods/test_assert_files_fails_for_different_content/input/two.txt +1 -0
  118. data/test/test/{test_file_task_test → file_methods/test_assert_files_fails_for_missing_expected_file}/expected/one.txt +0 -0
  119. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/one.txt +1 -0
  120. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/two.txt +1 -0
  121. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/one.txt +1 -0
  122. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/two.txt +1 -0
  123. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/one.txt +1 -0
  124. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/two.txt +1 -0
  125. data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/one.txt +1 -0
  126. data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/two.txt +1 -0
  127. data/test/test/file_methods_doc/test_sub/expected/one.txt +1 -0
  128. data/test/test/file_methods_doc/test_sub/expected/two.txt +1 -0
  129. data/test/test/file_methods_doc/test_sub/input/one.txt +1 -0
  130. data/test/test/file_methods_doc/test_sub/input/two.txt +1 -0
  131. data/test/test/file_methods_doc_test.rb +29 -0
  132. data/test/test/file_methods_test.rb +214 -143
  133. data/test/test/subset_methods_test.rb +111 -115
  134. data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/expected/task/name/a.txt +0 -0
  135. data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/expected/task/name/b.txt +0 -0
  136. data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/input/a.txt +0 -0
  137. data/test/test/{test_assert_expected_result_files → tap_methods/test_assert_files}/input/b.txt +0 -0
  138. data/test/test/tap_methods_test.rb +399 -0
  139. data/test/workflow_test.rb +101 -91
  140. metadata +86 -70
  141. data/lib/tap/generator/generators/package/package_generator.rb +0 -38
  142. data/lib/tap/generator/generators/package/templates/package.erb +0 -186
  143. data/lib/tap/generator/generators/script/USAGE +0 -0
  144. data/lib/tap/generator/generators/script/script_generator.rb +0 -17
  145. data/lib/tap/script/run.rb +0 -154
  146. data/lib/tap/support/batch_queue.rb +0 -162
  147. data/lib/tap/support/combinator.rb +0 -114
  148. data/lib/tap/support/task_configuration.rb +0 -169
  149. data/lib/tap/support/template.rb +0 -81
  150. data/lib/tap/support/templater.rb +0 -155
  151. data/lib/tap/version.rb +0 -4
  152. data/test/app/config/addition_template.yml +0 -6
  153. data/test/app_class_test.rb +0 -33
  154. data/test/check/binding_eval.rb +0 -23
  155. data/test/check/define_method_check.rb +0 -22
  156. data/test/check/dependencies_check.rb +0 -175
  157. data/test/check/inheritance_check.rb +0 -22
  158. data/test/support/batch_queue_test.rb +0 -320
  159. data/test/support/combinator_test.rb +0 -249
  160. data/test/support/template_test.rb +0 -122
  161. data/test/support/templater/erb.txt +0 -2
  162. data/test/support/templater/erb.yml +0 -2
  163. data/test/support/templater/somefile.txt +0 -2
  164. data/test/support/templater_test.rb +0 -192
  165. data/test/task/config/template.yml +0 -4
  166. data/test/task_class_test.rb +0 -170
  167. data/test/task_execute_test.rb +0 -262
  168. data/test/test/file_methods/test_assert_expected/expected/file.txt +0 -1
  169. data/test/test/file_methods/test_assert_expected/expected/folder/file.txt +0 -1
  170. data/test/test/file_methods/test_assert_expected/input/file.txt +0 -1
  171. data/test/test/file_methods/test_assert_expected/input/folder/file.txt +0 -1
  172. data/test/test/file_methods/test_assert_files_exist/input/input_1.txt +0 -0
  173. data/test/test/file_methods/test_assert_files_exist/input/input_2.txt +0 -0
  174. data/test/test/file_methods/test_file_compare/expected/output_1.txt +0 -3
  175. data/test/test/file_methods/test_file_compare/expected/output_2.txt +0 -1
  176. data/test/test/file_methods/test_file_compare/input/input_1.txt +0 -3
  177. data/test/test/file_methods/test_file_compare/input/input_2.txt +0 -3
  178. data/test/test/file_methods/test_infer_glob/expected/file.yml +0 -0
  179. data/test/test/file_methods/test_infer_glob/expected/file_1.txt +0 -0
  180. data/test/test/file_methods/test_infer_glob/expected/file_2.txt +0 -0
  181. data/test/test/file_methods/test_yml_compare/expected/output_1.yml +0 -6
  182. data/test/test/file_methods/test_yml_compare/expected/output_2.yml +0 -6
  183. data/test/test/file_methods/test_yml_compare/input/input_1.yml +0 -4
  184. data/test/test/file_methods/test_yml_compare/input/input_2.yml +0 -4
  185. data/test/test_test.rb +0 -373
@@ -0,0 +1,2 @@
1
+ load_paths: a
2
+ config_paths: recurse_b.yml
@@ -0,0 +1,2 @@
1
+ load_paths: b
2
+ config_paths: recurse_a.yml
@@ -0,0 +1,23 @@
1
+ ######################################################
2
+ # App Configurations:
3
+ ######################################################
4
+
5
+ directories:
6
+ rel: dir
7
+
8
+ options:
9
+ quiet: true
10
+
11
+ ######################################################
12
+ # Env Configurations:
13
+ ######################################################
14
+
15
+ load_paths: [lib, rel]
16
+
17
+ command_paths:
18
+ - cmd
19
+
20
+ config_paths: recurse_a.yml
21
+
22
+ before: |
23
+ before
@@ -0,0 +1,3 @@
1
+ load_paths: [lib, nested/lib]
2
+ command_paths: [cmd, nested/cmd]
3
+ load_once_paths: [lop.rb, nested/lop.rb]
@@ -0,0 +1,2 @@
1
+ config_paths: recurse_b.yml
2
+ load_paths: lib
@@ -0,0 +1,2 @@
1
+ config_paths: recurse_a.yml
2
+ load_paths: nested/lib
@@ -0,0 +1,3 @@
1
+ load_paths: [lib, nested/lib]
2
+ command_paths: [cmd, nested/cmd]
3
+ load_once_paths: [lop.rb, nested/lop.rb]
@@ -0,0 +1,198 @@
1
+ require File.join(File.dirname(__FILE__), 'tap_test_helper')
2
+ require 'tap/env'
3
+
4
+ class ConfigurationTest < Test::Unit::TestCase
5
+ include Tap::Env::Configuration
6
+
7
+ acts_as_file_test
8
+
9
+ #
10
+ # read_config test
11
+ #
12
+
13
+ def test_read_config_templates_then_loads_config
14
+ config_file = output_tempfile
15
+
16
+ File.open(config_file, "wb") {|f| f << "sum: <%= 1 + 2 %>" }
17
+ assert_equal({'sum' => 3}, read_config(config_file))
18
+ end
19
+
20
+ def test_read_config_returns_empty_hash_for_non_existant_nil_and_false_files
21
+ config_file = output_tempfile
22
+
23
+ assert !File.exists?(config_file)
24
+ assert_equal({}, read_config(config_file))
25
+
26
+ FileUtils.touch(config_file)
27
+ assert_equal({}, read_config(config_file))
28
+
29
+ File.open(config_file, "wb") {|f| f << nil.to_yaml }
30
+ assert_equal(nil, YAML.load_file(config_file))
31
+ assert_equal({}, read_config(config_file))
32
+
33
+ File.open(config_file, "wb") {|f| f << false.to_yaml }
34
+ assert_equal(false, YAML.load_file(config_file))
35
+ assert_equal({}, read_config(config_file))
36
+ end
37
+
38
+ def test_read_config_raises_error_for_non_hash_result
39
+ config_file = output_tempfile
40
+ File.open(config_file, "wb") {|f| f << [].to_yaml }
41
+
42
+ assert_raise(RuntimeError) { read_config(config_file) }
43
+ end
44
+
45
+ #
46
+ # partition_configs test
47
+ #
48
+
49
+ def test_partition_configs
50
+ config = {'before' => :b, 'gems' => :g, 'root' => :r, 'another' => :a}
51
+
52
+ env, app, other = partition_configs(config, ['gems'], ['root', 'another'])
53
+ assert_equal({'gems' => :g}, env)
54
+ assert_equal({'root' => :r, 'another' => :a}, app)
55
+ assert_equal({'before' => :b}, other)
56
+ end
57
+
58
+ #
59
+ # join_configs test
60
+ #
61
+
62
+ def test_join_configs
63
+ a = {:a => 1, :b => [1]}
64
+ b = {:a => [2], :b => [1]}
65
+ c = {:c => 1}
66
+
67
+ assert_equal({:a => [1, 2], :b => [1], :c => [1]}, join_configs(a,b,c))
68
+ assert_equal({:a => [2, 1], :b => [1], :c => [1]}, join_configs(c,b,a))
69
+ end
70
+ end
71
+
72
+ class EnvTest < Test::Unit::TestCase
73
+
74
+ acts_as_file_test
75
+ attr_accessor :e
76
+
77
+ def setup
78
+ super
79
+ @e = Tap::Env.instance
80
+ e.reset
81
+ end
82
+
83
+ def teardown
84
+ super
85
+ e.reset
86
+ end
87
+
88
+ #
89
+ # load_env_config test
90
+ #
91
+
92
+ def test_load_env_config
93
+ empty_config = {
94
+ "load_paths" => [],
95
+ "load_once_paths" => [],
96
+ "config_paths" => [],
97
+ "command_paths" => [],
98
+ "gems" => [],
99
+ "generator_paths" => []
100
+ }
101
+ starting_load_paths = $:.uniq
102
+
103
+ assert_equal(empty_config, e.config)
104
+ assert Dependencies.load_paths.empty?
105
+ assert Dependencies.load_once_paths.empty?
106
+
107
+ # test specifying a file
108
+ assert File.exists?(method_filepath('tap.yml'))
109
+ e.load_config(method_filepath('tap.yml'))
110
+
111
+ assert_equal({
112
+ "load_paths" => [method_filepath('lib'), method_filepath('nested/lib')],
113
+ "load_once_paths" => [method_filepath('lop.rb'), method_filepath('nested/lop.rb')],
114
+ "config_paths" => [method_filepath('tap.yml')],
115
+ "command_paths" => [method_filepath('cmd'), method_filepath('nested/cmd')],
116
+ "gems" => [],
117
+ "generator_paths" => [method_filepath('lib/generators')]
118
+ }, e.config)
119
+
120
+ assert_equal [], e.config['load_paths'] - $:
121
+ assert_equal e.config['load_paths'], Dependencies.load_paths
122
+ assert_equal e.config['load_once_paths'], Dependencies.load_once_paths
123
+
124
+ # test specifying a dir
125
+ assert File.exists?(method_filepath('dir', 'tap.yml'))
126
+ e.load_config(method_filepath('dir'))
127
+
128
+ assert_equal({
129
+ "load_paths" => [method_filepath('dir/lib'), method_filepath('dir/nested/lib'), method_filepath('lib'), method_filepath('nested/lib')],
130
+ "load_once_paths" => [ method_filepath('dir/lop.rb'), method_filepath('dir/nested/lop.rb'), method_filepath('lop.rb'), method_filepath('nested/lop.rb')],
131
+ "config_paths" => [method_filepath('tap.yml'), method_filepath('dir', 'tap.yml')],
132
+ "command_paths" => [method_filepath('dir/cmd'), method_filepath('dir/nested/cmd'), method_filepath('cmd'), method_filepath('nested/cmd')],
133
+ "gems" => [],
134
+ "generator_paths" => [method_filepath('dir/lib/generators'), method_filepath('lib/generators')]
135
+ }, e.config)
136
+
137
+ assert_equal [], e.config['load_paths'] - $:
138
+ assert_equal e.config['load_paths'], Dependencies.load_paths
139
+ assert_equal e.config['load_once_paths'], Dependencies.load_once_paths
140
+
141
+ # add extra Dependencies load paths to be sure ONLY the ENV load paths are cleared
142
+ Dependencies.load_paths << 'extra'
143
+ Dependencies.load_once_paths << 'extra'
144
+
145
+ # test reset
146
+ e.reset
147
+ assert_equal(empty_config, e.config)
148
+ assert_equal ['extra'], Dependencies.load_paths
149
+ assert_equal ['extra'], Dependencies.load_once_paths
150
+ assert_equal starting_load_paths, $:
151
+
152
+ # test recursion/config_path loading
153
+ pwd = Dir.pwd
154
+ begin
155
+ Dir.chdir(method_root)
156
+ e.load_config('recurse_a.yml')
157
+ ensure
158
+ Dir.chdir(pwd)
159
+ end
160
+
161
+ assert_equal [method_filepath('lib'), method_filepath('nested/lib')], e.config['load_paths']
162
+ assert_equal [method_filepath('recurse_a.yml'), method_filepath('recurse_b.yml')], e.config['config_paths']
163
+ end
164
+
165
+ #
166
+ # configure test
167
+ #
168
+
169
+ # def test_configure
170
+ # assert e.load_paths.empty?
171
+ # assert e.command_paths.empty?
172
+ # assert e.load_once_paths.empty?
173
+ # assert e.config_paths.empty?
174
+ # assert_nil e.before
175
+ # assert_nil e.after
176
+ # assert_equal Tap::App.instance, e.app
177
+ #
178
+ # pwd = Dir.pwd
179
+ # begin
180
+ # Dir.chdir(method_root)
181
+ # e.configure
182
+ # ensure
183
+ # Dir.chdir(pwd)
184
+ # end
185
+ #
186
+ # app = e.app
187
+ #
188
+ # assert_equal [method_filepath('lib'), method_filepath('dir'), method_filepath('a'), method_filepath('b')], e.load_paths
189
+ # assert_equal [method_filepath('cmd')], e.command_paths
190
+ # assert_equal [], e.load_once_paths
191
+ # assert_equal [method_filepath('tap.yml'), method_filepath('recurse_a.yml'), method_filepath('recurse_b.yml')], e.config_paths
192
+ # assert_equal "before\n", e.before
193
+ # assert_equal nil, e.after
194
+ #
195
+ # assert_equal({'rel' => 'dir'}, app.directories)
196
+ # assert app.options.quiet
197
+ # end
198
+ end
@@ -9,6 +9,7 @@ class FileTaskTest < Test::Unit::TestCase
9
9
  def setup
10
10
  super
11
11
  @t = Tap::FileTask.new
12
+ app.root = trs.root
12
13
  end
13
14
 
14
15
  def touch_file(path, content=nil)
@@ -47,7 +48,7 @@ class FileTaskTest < Test::Unit::TestCase
47
48
  FileUtils.mkdir_p( method_filepath(:output) )
48
49
 
49
50
  File.open(file_one, "w") {|f| f << "original content"}
50
- t = Tap::FileTask.new do |task, inputs|
51
+ t = Tap::FileTask.new do |task|
51
52
  task.mkdir(dir)
52
53
  task.prepare([file_one, file_two])
53
54
 
@@ -60,7 +61,7 @@ class FileTaskTest < Test::Unit::TestCase
60
61
  begin
61
62
  assert !File.exists?(dir)
62
63
  assert !File.exists?(file_two)
63
- t.execute(nil)
64
+ t.execute
64
65
  flunk "no error raised"
65
66
  rescue
66
67
  assert_equal "error!", $!.message
@@ -69,105 +70,113 @@ class FileTaskTest < Test::Unit::TestCase
69
70
  assert_equal "original content", File.read(file_one)
70
71
  end
71
72
  end
72
-
73
- #
73
+
74
+ #
75
+ # dirname tests
76
+ #
77
+
78
+ def test_dirname_returns_default_dirname_by_default
79
+ assert_equal "tap/file_task", t.dirname
80
+
81
+ t = Tap::FileTask.new "batch"
82
+ assert_equal 2, t.batch.size
83
+ t1, t2 = t.batch
84
+ assert_equal "batch_0", t1.dirname
85
+ assert_equal "batch_1", t2.dirname
86
+ end
87
+
88
+ def test_dirname_returns_dirname_if_set
89
+ t.dirname = "name"
90
+ assert_equal "name", t.dirname
91
+ end
92
+
93
+ #
74
94
  # open tests
75
95
  #
76
-
96
+
77
97
  def test_open_doc
78
98
  FileUtils.mkdir_p(method_filepath(:output))
79
99
  one_filepath = method_filepath(:output, "one.txt")
80
100
  two_filepath = method_filepath(:output, "two.txt")
81
-
82
- Tap::FileTask.open([one_filepath, two_filepath], "w") do |one, two|
101
+
102
+ t.open([one_filepath, two_filepath], "w") do |one, two|
83
103
  one << "one"
84
104
  two << "two"
85
105
  end
86
-
106
+
87
107
  assert_equal "one", File.read(one_filepath)
88
108
  assert_equal "two", File.read(two_filepath)
89
-
109
+
90
110
  #
91
111
  filepath = method_filepath(:output, "file.txt")
92
- Tap::FileTask.open(filepath, "w") do |array|
112
+ t.open(filepath, "w") do |array|
93
113
  array.first << "content"
94
114
  end
95
-
115
+
96
116
  assert_equal "content", File.read(filepath)
97
117
  end
98
-
118
+
99
119
  def test_open_opens_each_file
100
120
  FileUtils.mkdir_p(method_filepath(:output))
101
-
121
+
102
122
  list = [0, 1].collect do |n|
103
123
  path = method_filepath(:output, "#{n}.txt")
104
124
  File.open(path, "w") {|f| f << n.to_s}
105
125
  path
106
126
  end
107
-
108
- Tap::FileTask.open(list) do |files|
127
+
128
+ t.open(list) do |files|
109
129
  files.each_with_index do |file, n|
110
130
  assert_equal File, file.class
111
131
  assert_equal n.to_s, file.read
112
132
  end
113
133
  end
114
134
  end
115
-
135
+
116
136
  def test_open_opens_with_input_mode
117
137
  FileUtils.mkdir_p(method_filepath(:output))
118
-
138
+
119
139
  list = [0, 1].collect do |n|
120
140
  path = method_filepath(:output, "#{n}.txt")
121
141
  path
122
142
  end
123
-
124
- Tap::FileTask.open(list, "w") do |files|
143
+
144
+ t.open(list, "w") do |files|
125
145
  files.each_with_index do |file, n|
126
146
  assert_equal File, file.class
127
147
  file << n.to_s
128
148
  end
129
149
  end
130
-
150
+
131
151
  list.each_with_index do |file, n|
132
152
  assert_equal n.to_s, File.read(file)
133
153
  end
134
154
  end
135
-
155
+
136
156
  def test_open_returns_open_files_if_no_block_is_given
137
157
  FileUtils.mkdir_p(method_filepath(:output))
138
-
158
+
139
159
  list = [0, 1].collect do |n|
140
160
  path = method_filepath(:output, "#{n}.txt")
141
161
  File.open(path, "w") {|f| f << n.to_s}
142
162
  path
143
163
  end
144
-
145
- open_files = Tap::FileTask.open(list)
146
- open_files.each_with_index do |file, n|
164
+
165
+ t.open(list).each_with_index do |file, n|
147
166
  assert_equal File, file.class
148
167
  assert_equal n.to_s, file.read
149
168
  file.close
150
169
  end
151
170
  end
152
-
153
- #
154
- # dirname tests
155
- #
156
-
157
- def test_dirname_returns_default_dirname_by_default
158
- assert_equal "tap/file_task", t.dirname
159
-
160
- t = Tap::FileTask.new "batch"
161
- assert_equal 2, t.batch.size
162
- t1, t2 = t.batch
163
- assert_equal "batch_0", t1.dirname
164
- assert_equal "batch_1", t2.dirname
165
- end
166
-
167
- def test_dirname_returns_dirname_if_set
168
- t.dirname = "name"
169
- assert_equal "name", t.dirname
170
- end
171
+
172
+ #
173
+ # basename test
174
+ #
175
+
176
+ def test_basename_doc
177
+ assert_equal 'file.txt', t.basename('path/to/file.txt')
178
+ assert_equal 'file.html', t.basename('path/to/file.txt', '.html')
179
+ end
171
180
 
172
181
  #
173
182
  # inference tests
@@ -235,9 +244,8 @@ class FileTaskTest < Test::Unit::TestCase
235
244
  # backup_filepath test
236
245
  #
237
246
 
238
- def btest_backup_filepath_documentation
239
-
240
- t = FileTask.new("dir/name", :backup_dir => :backup, :backup_timestamp => "%Y%m%d")
247
+ def test_backup_filepath_documentation
248
+ t = Tap::FileTask.new("dir/name", :backup_dir => :backup, :backup_timestamp => "%Y%m%d")
241
249
  t.app[:backup] # => "/backup"
242
250
  Date.today.to_s # => "2007-08-08"
243
251
 
@@ -262,7 +270,16 @@ class FileTaskTest < Test::Unit::TestCase
262
270
  app.filepath(:output, t.name, "file_#{timestamp}.txt"),
263
271
  t.backup_filepath("file.txt"))
264
272
  end
273
+
274
+ def test_backup_dir_can_be_full_path
275
+ timestamp = prepare_backup_filepath_with_output_and_timestamp
276
+
277
+ t.backup_dir = File.expand_path('path/to/backup', Dir.pwd)
265
278
 
279
+ expected_path = File.join('path/to/backup', t.name,"file_#{timestamp}.txt")
280
+ assert_equal(File.expand_path(expected_path, Dir.pwd), t.backup_filepath("file.txt"))
281
+ end
282
+
266
283
  def test_backup_filepath_uses_inference_block
267
284
  timestamp = prepare_backup_filepath_with_output_and_timestamp
268
285
 
@@ -321,10 +338,10 @@ class FileTaskTest < Test::Unit::TestCase
321
338
  of1 = trs.filepath(:root, 'old_file_one.txt')
322
339
  of2 = trs.filepath(:root, 'old_file_two.txt')
323
340
 
324
- nf1 = tempfile('new_file_one.txt')
341
+ nf1 = output_tempfile('new_file_one.txt')
325
342
  File.open(nf1, "w") {|file| file << output_str}
326
343
 
327
- nf2 = tempfile('new_file_two.txt')
344
+ nf2 = output_tempfile('new_file_two.txt')
328
345
  File.open(nf2, "w") {|file| file << output_str}
329
346
 
330
347
  [of1, of2, nf1, nf2]
@@ -335,10 +352,10 @@ class FileTaskTest < Test::Unit::TestCase
335
352
  files.each { |file| assert File.exists?(file), file }
336
353
 
337
354
  of1, of2, nf1, nf2 = files
338
- assert FileUtils.uptodate?(nf1, of1)
339
- assert FileUtils.uptodate?(nf2, of1)
340
- assert FileUtils.uptodate?(nf1, of2)
341
- assert FileUtils.uptodate?(nf2, of2)
355
+ assert FileUtils.uptodate?(nf1, [of1])
356
+ assert FileUtils.uptodate?(nf2, [of1])
357
+ assert FileUtils.uptodate?(nf1, [of2])
358
+ assert FileUtils.uptodate?(nf2, [of2])
342
359
  end
343
360
 
344
361
  def test_uptodate