tap 0.7.9
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/MIT-LICENSE +21 -0
- data/README +71 -0
- data/Rakefile +117 -0
- data/bin/tap +63 -0
- data/lib/tap.rb +15 -0
- data/lib/tap/app.rb +739 -0
- data/lib/tap/file_task.rb +354 -0
- data/lib/tap/generator.rb +29 -0
- data/lib/tap/generator/generators/config/USAGE +0 -0
- data/lib/tap/generator/generators/config/config_generator.rb +23 -0
- data/lib/tap/generator/generators/config/templates/config.erb +2 -0
- data/lib/tap/generator/generators/file_task/USAGE +0 -0
- data/lib/tap/generator/generators/file_task/file_task_generator.rb +21 -0
- data/lib/tap/generator/generators/file_task/templates/task.erb +27 -0
- data/lib/tap/generator/generators/file_task/templates/test.erb +12 -0
- data/lib/tap/generator/generators/root/USAGE +0 -0
- data/lib/tap/generator/generators/root/root_generator.rb +36 -0
- data/lib/tap/generator/generators/root/templates/Rakefile +48 -0
- data/lib/tap/generator/generators/root/templates/app.yml +19 -0
- data/lib/tap/generator/generators/root/templates/config/process_tap_request.yml +4 -0
- data/lib/tap/generator/generators/root/templates/lib/process_tap_request.rb +26 -0
- data/lib/tap/generator/generators/root/templates/public/images/nav.jpg +0 -0
- data/lib/tap/generator/generators/root/templates/public/stylesheets/color.css +57 -0
- data/lib/tap/generator/generators/root/templates/public/stylesheets/layout.css +108 -0
- data/lib/tap/generator/generators/root/templates/public/stylesheets/normalize.css +40 -0
- data/lib/tap/generator/generators/root/templates/public/stylesheets/typography.css +21 -0
- data/lib/tap/generator/generators/root/templates/server/config/environment.rb +60 -0
- data/lib/tap/generator/generators/root/templates/server/lib/tasks/clear_database_prerequisites.rake +5 -0
- data/lib/tap/generator/generators/root/templates/server/test/test_helper.rb +53 -0
- data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +3 -0
- data/lib/tap/generator/generators/root/templates/test/tap_test_suite.rb +4 -0
- data/lib/tap/generator/generators/task/USAGE +0 -0
- data/lib/tap/generator/generators/task/task_generator.rb +21 -0
- data/lib/tap/generator/generators/task/templates/task.erb +21 -0
- data/lib/tap/generator/generators/task/templates/test.erb +29 -0
- data/lib/tap/generator/generators/workflow/USAGE +0 -0
- data/lib/tap/generator/generators/workflow/templates/task.erb +16 -0
- data/lib/tap/generator/generators/workflow/templates/test.erb +7 -0
- data/lib/tap/generator/generators/workflow/workflow_generator.rb +21 -0
- data/lib/tap/generator/options.rb +26 -0
- data/lib/tap/generator/usage.rb +26 -0
- data/lib/tap/root.rb +275 -0
- data/lib/tap/script/console.rb +7 -0
- data/lib/tap/script/destroy.rb +8 -0
- data/lib/tap/script/generate.rb +8 -0
- data/lib/tap/script/run.rb +111 -0
- data/lib/tap/script/server.rb +12 -0
- data/lib/tap/support/audit.rb +415 -0
- data/lib/tap/support/batch_queue.rb +165 -0
- data/lib/tap/support/combinator.rb +114 -0
- data/lib/tap/support/logger.rb +91 -0
- data/lib/tap/support/rap.rb +38 -0
- data/lib/tap/support/run_error.rb +20 -0
- data/lib/tap/support/template.rb +81 -0
- data/lib/tap/support/templater.rb +155 -0
- data/lib/tap/support/versions.rb +63 -0
- data/lib/tap/task.rb +448 -0
- data/lib/tap/test.rb +320 -0
- data/lib/tap/test/env_vars.rb +16 -0
- data/lib/tap/test/inference_methods.rb +298 -0
- data/lib/tap/test/subset_methods.rb +260 -0
- data/lib/tap/version.rb +3 -0
- data/lib/tap/workflow.rb +73 -0
- data/test/app/config/addition_template.yml +6 -0
- data/test/app/config/batch.yml +2 -0
- data/test/app/config/empty.yml +0 -0
- data/test/app/config/erb.yml +1 -0
- data/test/app/config/template.yml +6 -0
- data/test/app/config/version-0.1.yml +1 -0
- data/test/app/config/version.yml +1 -0
- data/test/app/lib/app_test_task.rb +2 -0
- data/test/app_class_test.rb +33 -0
- data/test/app_test.rb +1372 -0
- data/test/file_task/config/batch.yml +2 -0
- data/test/file_task/config/configured.yml +1 -0
- data/test/file_task/old_file_one.txt +0 -0
- data/test/file_task/old_file_two.txt +0 -0
- data/test/file_task_test.rb +1041 -0
- data/test/root/alt_lib/alt_module.rb +4 -0
- data/test/root/lib/absolute_alt_filepath.rb +2 -0
- data/test/root/lib/alternative_filepath.rb +2 -0
- data/test/root/lib/another_module.rb +2 -0
- data/test/root/lib/nested/some_module.rb +4 -0
- data/test/root/lib/no_module_included.rb +0 -0
- data/test/root/lib/some/module.rb +4 -0
- data/test/root/lib/some_class.rb +2 -0
- data/test/root/lib/some_module.rb +3 -0
- data/test/root/load_path/load_path_module.rb +2 -0
- data/test/root/load_path/skip_module.rb +2 -0
- data/test/root/mtime/older.txt +0 -0
- data/test/root/unload/full_path.rb +2 -0
- data/test/root/unload/loaded_by_nested.rb +2 -0
- data/test/root/unload/nested/nested_load.rb +6 -0
- data/test/root/unload/nested/nested_with_ext.rb +4 -0
- data/test/root/unload/nested/relative_path.rb +4 -0
- data/test/root/unload/older.rb +2 -0
- data/test/root/unload/unload_base.rb +9 -0
- data/test/root/versions/another.yml +0 -0
- data/test/root/versions/file-0.1.2.yml +0 -0
- data/test/root/versions/file-0.1.yml +0 -0
- data/test/root/versions/file.yml +0 -0
- data/test/root_test.rb +483 -0
- data/test/support/audit_test.rb +449 -0
- data/test/support/batch_queue_test.rb +320 -0
- data/test/support/combinator_test.rb +249 -0
- data/test/support/logger_test.rb +31 -0
- data/test/support/template_test.rb +122 -0
- data/test/support/templater/erb.txt +2 -0
- data/test/support/templater/erb.yml +2 -0
- data/test/support/templater/somefile.txt +2 -0
- data/test/support/templater_test.rb +192 -0
- data/test/support/versions_test.rb +71 -0
- data/test/tap_test_helper.rb +4 -0
- data/test/tap_test_suite.rb +4 -0
- data/test/task/config/batch.yml +2 -0
- data/test/task/config/batched.yml +2 -0
- data/test/task/config/configured.yml +1 -0
- data/test/task/config/example.yml +1 -0
- data/test/task/config/overriding.yml +2 -0
- data/test/task/config/task_with_config.yml +1 -0
- data/test/task/config/template.yml +4 -0
- data/test/task_class_test.rb +118 -0
- data/test/task_execute_test.rb +233 -0
- data/test/task_test.rb +424 -0
- data/test/test/inference_methods/test_assert_expected/expected/file.txt +1 -0
- data/test/test/inference_methods/test_assert_expected/expected/folder/file.txt +1 -0
- data/test/test/inference_methods/test_assert_expected/input/file.txt +1 -0
- data/test/test/inference_methods/test_assert_expected/input/folder/file.txt +1 -0
- data/test/test/inference_methods/test_assert_files_exist/input/input_1.txt +0 -0
- data/test/test/inference_methods/test_assert_files_exist/input/input_2.txt +0 -0
- data/test/test/inference_methods/test_file_compare/expected/output_1.txt +3 -0
- data/test/test/inference_methods/test_file_compare/expected/output_2.txt +1 -0
- data/test/test/inference_methods/test_file_compare/input/input_1.txt +3 -0
- data/test/test/inference_methods/test_file_compare/input/input_2.txt +3 -0
- data/test/test/inference_methods/test_infer_glob/expected/file.yml +0 -0
- data/test/test/inference_methods/test_infer_glob/expected/file_1.txt +0 -0
- data/test/test/inference_methods/test_infer_glob/expected/file_2.txt +0 -0
- data/test/test/inference_methods/test_yml_compare/expected/output_1.yml +6 -0
- data/test/test/inference_methods/test_yml_compare/expected/output_2.yml +6 -0
- data/test/test/inference_methods/test_yml_compare/input/input_1.yml +4 -0
- data/test/test/inference_methods/test_yml_compare/input/input_2.yml +4 -0
- data/test/test/inference_methods_test.rb +311 -0
- data/test/test/subset_methods_test.rb +115 -0
- data/test/test_test.rb +233 -0
- data/test/workflow_test.rb +108 -0
- metadata +274 -0
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/full_path.rb")
|
|
2
|
+
require File.dirname(__FILE__) + "/../unload/nested/relative_path.rb"
|
|
3
|
+
|
|
4
|
+
# these will be loaded when the nested directory is on the load path
|
|
5
|
+
require "nested_load"
|
|
6
|
+
require "nested_with_ext.rb"
|
|
7
|
+
|
|
8
|
+
module UnloadBase
|
|
9
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/test/root_test.rb
ADDED
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'tap_test_helper.rb')
|
|
2
|
+
require 'tap/root'
|
|
3
|
+
|
|
4
|
+
#SomeModule
|
|
5
|
+
#[Object, :SomeModule, "some_module", nil]
|
|
6
|
+
|
|
7
|
+
#Dependencies.load_paths << File.join(File.dirname(__FILE__), 'root', 'lib')
|
|
8
|
+
#puts Object.const_get "SomeModule"
|
|
9
|
+
#Dependencies.clear
|
|
10
|
+
#puts SomeModule
|
|
11
|
+
|
|
12
|
+
class RootTest < Test::Unit::TestCase
|
|
13
|
+
include Tap::Test::SubsetMethods
|
|
14
|
+
|
|
15
|
+
attr_reader :ifs, :rfs
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
@ifs = Tap::Root.new "./root", {:dir => "dir"}, {:abs => '/abs/path'}
|
|
19
|
+
@rfs = Tap::Root.new root, {:lib => "lib"}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def root
|
|
23
|
+
File.join(File.dirname(__FILE__), 'root')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_documentation
|
|
27
|
+
root = Tap::Root.new self.root, :input => 'in', :output => 'out'
|
|
28
|
+
|
|
29
|
+
# work with directories
|
|
30
|
+
assert_equal self.root + '/in', root[:in]
|
|
31
|
+
assert_equal self.root + '/out', root[:out]
|
|
32
|
+
assert_equal self.root + '/implicit', root[:implicit]
|
|
33
|
+
|
|
34
|
+
# # work with filepaths
|
|
35
|
+
assert_equal self.root + '/in/path/to/file.txt', fp = root.filepath(:in, 'path/to/file.txt')
|
|
36
|
+
assert_equal 'path/to/file.txt', root.relative_filepath(:in, fp)
|
|
37
|
+
assert_equal self.root + '/out/path/to/file.txt', root.translate(fp, :in, :out)
|
|
38
|
+
|
|
39
|
+
# # version filepaths
|
|
40
|
+
assert_equal 'path/to/config-1.0.yml', root.version('path/to/config.yml', 1.0)
|
|
41
|
+
assert_equal 'path/to/config-1.1.yml', root.increment('path/to/config-1.0.yml', 0.1)
|
|
42
|
+
assert_equal ['path/to/config.yml', "1.1"], root.deversion('path/to/config-1.1.yml')
|
|
43
|
+
|
|
44
|
+
# # work with modules...
|
|
45
|
+
#assert_equal self.root + '/lib/some/module.rb', mp = root.module_filepath(:lib, 'Some::Module')
|
|
46
|
+
|
|
47
|
+
# # loading them...
|
|
48
|
+
#assert_equal false, Some.const_defined?('Module') # differs from example because Some is defined in another test
|
|
49
|
+
#assert_equal root.lookup_module('Some::Module'), Some::Module
|
|
50
|
+
#assert_equal true, Some.const_defined?('Module')
|
|
51
|
+
|
|
52
|
+
# # and unloading them!
|
|
53
|
+
#assert_equal ["Some::Module"], root.unload_modules
|
|
54
|
+
#assert_equal false, Some.const_defined?('Module') # differs from example because Some is defined in another test
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
assert_equal "path/to/file.txt", Tap::Root.relative_filepath('dir', "dir/path/to/file.txt")
|
|
58
|
+
|
|
59
|
+
#assert_equal 'some/module_name.rb', Tap::Root.module_filepath('Some::ModuleName')
|
|
60
|
+
#assert_equal 'some/module_name.rb', Tap::Root.module_filepath('some/module_name.rb')
|
|
61
|
+
|
|
62
|
+
#assert_equal 'Some::ModuleName', Tap::Root.module_name('some/module_name.rb')
|
|
63
|
+
#assert_equal 'Some::ModuleName', Tap::Root.module_name('Some::ModuleName')
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# Tap::Root relative filepath test
|
|
68
|
+
#
|
|
69
|
+
|
|
70
|
+
def test_class_relative_filepath
|
|
71
|
+
assert_equal "file.txt", Tap::Root.relative_filepath('./root/dir', "./root/dir/file.txt")
|
|
72
|
+
assert_equal "nested/file.txt", Tap::Root.relative_filepath('./root/dir', "./root/dir/nested/file.txt")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_class_relative_filepath_expands_paths
|
|
76
|
+
assert_equal "file.txt", Tap::Root.relative_filepath('./root/dir', "./root/folder/.././dir/file.txt")
|
|
77
|
+
assert_equal "file.txt", Tap::Root.relative_filepath('./root/dir', "root/dir/file.txt")
|
|
78
|
+
assert_equal "file.txt", Tap::Root.relative_filepath('root/dir', "./root/dir/file.txt")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_class_relative_filepath_raises_error_if_path_is_not_relative_to_dir
|
|
82
|
+
assert_raise(RuntimeError) { Tap::Root.relative_filepath('dir', "./root/file.txt") }
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_class_relative_filepath_returns_path_if_path_is_not_relative_to_dir_and_not_strict
|
|
86
|
+
assert_equal "./root/file.txt", Tap::Root.relative_filepath('dir', "./root/file.txt", false)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
#
|
|
90
|
+
# initialize tests
|
|
91
|
+
#
|
|
92
|
+
|
|
93
|
+
def test_defualt_root_is_dir_pwd
|
|
94
|
+
ifs = Tap::Root.new
|
|
95
|
+
|
|
96
|
+
assert_equal Dir.pwd, ifs.root
|
|
97
|
+
assert_equal({}, ifs.directories)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_initialize_root
|
|
101
|
+
ifs = Tap::Root.new "./root", {:dir => "dir", :temp => "tmp"}, {:abs => "/abs/path"}
|
|
102
|
+
|
|
103
|
+
assert_equal "./root", ifs.root
|
|
104
|
+
assert_equal({:dir => "dir", :temp => "tmp"}, ifs.directories)
|
|
105
|
+
assert_equal({:abs => "/abs/path"}, ifs.absolute_paths)
|
|
106
|
+
assert_equal({
|
|
107
|
+
'root' => "./root",
|
|
108
|
+
:root => "./root",
|
|
109
|
+
:dir => "./root/dir",
|
|
110
|
+
:temp => "./root/tmp",
|
|
111
|
+
:abs => "/abs/path"},
|
|
112
|
+
ifs.paths)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_initialize_can_use_any_object_as_key
|
|
116
|
+
ifs = Tap::Root.new("./root", 'dir' => "str_dir", :dir => 'sym_dir', 1 => 'n_dir')
|
|
117
|
+
|
|
118
|
+
assert_equal({
|
|
119
|
+
'root' => "./root",
|
|
120
|
+
:root => "./root",
|
|
121
|
+
'dir' => "./root/str_dir",
|
|
122
|
+
:dir => "./root/sym_dir",
|
|
123
|
+
1 => "./root/n_dir"},
|
|
124
|
+
ifs.paths)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
#
|
|
128
|
+
# set root tests
|
|
129
|
+
#
|
|
130
|
+
|
|
131
|
+
def test_set_root_resets_paths
|
|
132
|
+
ifs.root = './another'
|
|
133
|
+
|
|
134
|
+
assert_equal "./another", ifs.root
|
|
135
|
+
assert_equal({:dir => "dir"}, ifs.directories)
|
|
136
|
+
assert_equal({
|
|
137
|
+
'root' => "./another",
|
|
138
|
+
:root => "./another",
|
|
139
|
+
:dir => "./another/dir",
|
|
140
|
+
:abs => "/abs/path"},
|
|
141
|
+
ifs.paths)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_root_cannot_be_set_through_index
|
|
145
|
+
assert_raise(ArgumentError) { ifs['root'] = './another' }
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
#
|
|
149
|
+
# set directories tests
|
|
150
|
+
#
|
|
151
|
+
|
|
152
|
+
def test_set_directories
|
|
153
|
+
ifs.directories = {:alt => "dir"}
|
|
154
|
+
|
|
155
|
+
assert_equal({:alt => "dir"}, ifs.directories)
|
|
156
|
+
assert_equal({'root' => "./root", :root => "./root", :alt => "./root/dir", :abs => "/abs/path"}, ifs.paths)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def test_raise_error_when_trying_to_set_root_through_directories
|
|
160
|
+
assert_raise(ArgumentError) { ifs.directories = {'root' => "another"} }
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
#
|
|
164
|
+
# set absolute paths test
|
|
165
|
+
#
|
|
166
|
+
|
|
167
|
+
def test_set_absolute_paths
|
|
168
|
+
ifs.absolute_paths = {:absolute => "/absolute/path"}
|
|
169
|
+
|
|
170
|
+
assert_equal({:dir => "dir"}, ifs.directories)
|
|
171
|
+
assert_equal({'root' => "./root", :root => "./root", :dir => "./root/dir", :absolute => "/absolute/path"}, ifs.paths)
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def test_raise_error_when_trying_to_set_root_through_absolute_paths
|
|
175
|
+
assert_raise(ArgumentError) { ifs.absolute_paths = {'root' => "another"} }
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
#
|
|
179
|
+
# get absolute paths test
|
|
180
|
+
#
|
|
181
|
+
|
|
182
|
+
def test_absolute_paths_returns_all_non_root_paths_with_no_directory
|
|
183
|
+
assert_equal({:abs => "/abs/path"}, ifs.absolute_paths)
|
|
184
|
+
|
|
185
|
+
ifs.paths[:another] = "/another/path"
|
|
186
|
+
assert_equal({:abs => "/abs/path", :another => "/another/path"}, ifs.absolute_paths)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
#
|
|
190
|
+
# set path tests
|
|
191
|
+
#
|
|
192
|
+
|
|
193
|
+
def test_set_existing_directory_using_index
|
|
194
|
+
ifs[:dir] = 'another'
|
|
195
|
+
|
|
196
|
+
assert_equal({:dir => "another"}, ifs.directories)
|
|
197
|
+
assert_equal({
|
|
198
|
+
'root' => "./root",
|
|
199
|
+
:root => "./root",
|
|
200
|
+
:dir => "./root/another",
|
|
201
|
+
:abs => "/abs/path"},
|
|
202
|
+
ifs.paths)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def test_set_new_directory_using_index
|
|
206
|
+
ifs[:new] = 'new'
|
|
207
|
+
|
|
208
|
+
assert_equal({:dir => "dir", :new => "new"}, ifs.directories)
|
|
209
|
+
assert_equal({
|
|
210
|
+
'root' => "./root",
|
|
211
|
+
:root => "./root",
|
|
212
|
+
:dir => "./root/dir",
|
|
213
|
+
:abs => "/abs/path",
|
|
214
|
+
:new => "./root/new"},
|
|
215
|
+
ifs.paths)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def test_absolute_paths_can_be_set_by_specifiying_absolute_true
|
|
219
|
+
ifs[:absolute, true] = '/some/absolute/path'
|
|
220
|
+
|
|
221
|
+
assert_equal({:dir => "dir"}, ifs.directories)
|
|
222
|
+
assert_equal({
|
|
223
|
+
'root' => "./root",
|
|
224
|
+
:root => "./root",
|
|
225
|
+
:dir => "./root/dir",
|
|
226
|
+
:abs => "/abs/path",
|
|
227
|
+
:absolute => '/some/absolute/path'},
|
|
228
|
+
ifs.paths)
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def test_an_absolute_path_is_not_set_if_absolute_false
|
|
232
|
+
ifs[:not_absolute, false] = 'not/an/absolute/path'
|
|
233
|
+
|
|
234
|
+
assert_equal({:dir => "dir", :not_absolute => "not/an/absolute/path"}, ifs.directories)
|
|
235
|
+
assert_equal({
|
|
236
|
+
'root' => "./root",
|
|
237
|
+
:root => "./root",
|
|
238
|
+
:dir => "./root/dir",
|
|
239
|
+
:abs => "/abs/path",
|
|
240
|
+
:not_absolute => "./root/not/an/absolute/path"},
|
|
241
|
+
ifs.paths)
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def test_paths_can_be_unset_with_nil
|
|
245
|
+
# Non-absolute path
|
|
246
|
+
ifs[:dir] = '/some/path'
|
|
247
|
+
assert_equal({:dir => "/some/path"}, ifs.directories)
|
|
248
|
+
assert_equal({'root' => "./root", :root => "./root", :dir => "./root/some/path", :abs => "/abs/path"}, ifs.paths)
|
|
249
|
+
|
|
250
|
+
ifs[:dir] = nil
|
|
251
|
+
assert_equal({}, ifs.directories)
|
|
252
|
+
assert_equal({'root' => "./root", :root => "./root", :abs => "/abs/path"}, ifs.paths)
|
|
253
|
+
|
|
254
|
+
# Now with absolute specified
|
|
255
|
+
ifs[:dir] = '/some/path'
|
|
256
|
+
assert_equal({:dir => "/some/path"}, ifs.directories)
|
|
257
|
+
assert_equal({'root' => "./root", :root => "./root", :dir => "./root/some/path", :abs => "/abs/path"}, ifs.paths)
|
|
258
|
+
|
|
259
|
+
ifs[:dir, false] = nil
|
|
260
|
+
assert_equal({}, ifs.directories)
|
|
261
|
+
assert_equal({'root' => "./root", :root => "./root", :abs => "/abs/path"}, ifs.paths)
|
|
262
|
+
|
|
263
|
+
# Absolute path
|
|
264
|
+
ifs[:abs, true] = '/some/absolute/path'
|
|
265
|
+
assert_equal({}, ifs.directories)
|
|
266
|
+
assert_equal({'root' => "./root", :root => "./root", :abs => '/some/absolute/path'}, ifs.paths)
|
|
267
|
+
|
|
268
|
+
ifs[:abs, true] = nil
|
|
269
|
+
assert_equal({}, ifs.directories)
|
|
270
|
+
assert_equal({'root' => "./root", :root => "./root"}, ifs.paths)
|
|
271
|
+
|
|
272
|
+
# Now with absolute unspecfied
|
|
273
|
+
ifs[:abs, true] = '/some/absolute/path'
|
|
274
|
+
assert_equal({}, ifs.directories)
|
|
275
|
+
assert_equal({'root' => "./root", :root => "./root", :abs => '/some/absolute/path'}, ifs.paths)
|
|
276
|
+
|
|
277
|
+
ifs[:abs] = nil
|
|
278
|
+
assert_equal({}, ifs.directories)
|
|
279
|
+
assert_equal({'root' => "./root", :root => "./root"}, ifs.paths)
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
#
|
|
283
|
+
# retrieve path tests
|
|
284
|
+
#
|
|
285
|
+
|
|
286
|
+
def test_retrieve_paths
|
|
287
|
+
case_test(
|
|
288
|
+
:dir => "./root/dir",
|
|
289
|
+
:root => "./root",
|
|
290
|
+
'root' => "./root",
|
|
291
|
+
:abs => "/abs/path"
|
|
292
|
+
) do |dir, expected|
|
|
293
|
+
assert_equal expected, ifs[dir]
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
def test_retrieve_path_guesses_path_if_path_is_not_set
|
|
298
|
+
assert_equal({'root' => "./root", :root => "./root", :dir => "./root/dir", :abs => "/abs/path"}, ifs.paths)
|
|
299
|
+
assert_equal "./root/not_set", ifs[:not_set]
|
|
300
|
+
assert_equal "./root/nested/dir", ifs['nested/dir']
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
#
|
|
304
|
+
# filepath tests
|
|
305
|
+
#
|
|
306
|
+
|
|
307
|
+
def test_filepath
|
|
308
|
+
assert_equal "./root/dir", ifs[:dir]
|
|
309
|
+
assert_equal "./root/dir/file.txt", ifs.filepath(:dir, "file.txt")
|
|
310
|
+
assert_equal "./root/dir/nested/file.txt", ifs.filepath(:dir, "nested/file.txt")
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
def test_filepath_when_path_is_not_set
|
|
314
|
+
assert_equal "./root/not_set/file.txt", ifs.filepath(:not_set, "file.txt")
|
|
315
|
+
assert_equal "./root/folder/subfolder/file.txt", ifs.filepath('folder/subfolder', "file.txt")
|
|
316
|
+
#assert_equal "./root/folder/subfolder/file.txt", ifs.filepath('/folder/subfolder', "file.txt")
|
|
317
|
+
assert_equal "./root/folder/subfolder/file.txt", ifs.filepath('folder/subfolder/', "file.txt")
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
#
|
|
321
|
+
# relative filepath tests
|
|
322
|
+
#
|
|
323
|
+
|
|
324
|
+
def test_relative_filepath
|
|
325
|
+
assert_equal "file.txt", ifs.relative_filepath(:dir, "./root/dir/file.txt")
|
|
326
|
+
assert_equal "nested/file.txt", ifs.relative_filepath(:dir, "./root/dir/nested/file.txt")
|
|
327
|
+
assert_equal "file.txt", ifs.relative_filepath('dir/nested', "./root/dir/nested/file.txt")
|
|
328
|
+
assert_equal "file.txt", ifs.relative_filepath('dir/nested/', "./root/dir/nested/file.txt")
|
|
329
|
+
assert_equal "file.txt", ifs.relative_filepath('/dir/nested', "./root/dir/nested/file.txt")
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
def test_relative_filepath_when_path_equals_input
|
|
333
|
+
assert_equal "", ifs.relative_filepath(:dir, "./root/dir")
|
|
334
|
+
assert_equal "", ifs.relative_filepath(:dir, "./root/dir/")
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def test_relative_filepath_expands_paths
|
|
338
|
+
assert_equal "file.txt", ifs.relative_filepath(:dir, "./root/folder/.././dir/file.txt")
|
|
339
|
+
assert_equal "file.txt", ifs.relative_filepath(:dir, "root/dir/file.txt")
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def test_relative_filepath_when_path_is_not_set
|
|
343
|
+
assert_equal "file.txt", ifs.relative_filepath(:not_set, "./root/not_set/file.txt")
|
|
344
|
+
assert_equal "file.txt", ifs.relative_filepath('folder/subfolder', "./root/folder/subfolder/file.txt")
|
|
345
|
+
assert_equal "file.txt", ifs.relative_filepath('/folder/subfolder', "./root/folder/subfolder/file.txt")
|
|
346
|
+
assert_equal "file.txt", ifs.relative_filepath('folder/subfolder/', "./root/folder/subfolder/file.txt")
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def test_relative_filepath_raises_error_if_path_is_not_relative_to_dir
|
|
350
|
+
assert_raise(RuntimeError) { ifs.relative_filepath(:dir, "./root/file.txt") }
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
def test_relative_filepath_returns_path_if_path_is_not_relative_to_dir_and_not_strict
|
|
354
|
+
assert_equal "./root/file.txt", ifs.relative_filepath('dir', "./root/file.txt", false)
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
#
|
|
358
|
+
# translate tests
|
|
359
|
+
#
|
|
360
|
+
|
|
361
|
+
def test_translate
|
|
362
|
+
assert_equal "./root/another/file.txt", ifs.translate("./root/dir/file.txt", :dir, :another)
|
|
363
|
+
assert_equal "./root/another/nested/file.txt", ifs.translate("./root/dir/nested/file.txt", :dir, :another)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
#
|
|
367
|
+
# glob tests
|
|
368
|
+
#
|
|
369
|
+
|
|
370
|
+
def test_glob_returns_all_files_matching_pattern
|
|
371
|
+
assert_equal Dir.glob(File.join(root, '*')), rfs.glob(:root, "*")
|
|
372
|
+
assert_equal Dir.glob(File.join(root, '*.txt')), rfs.glob(:root, "*.txt")
|
|
373
|
+
assert_equal Dir.glob(File.join(root, 'lib/*')), rfs.glob(:lib, "*")
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def test_default_glob_pattern_is_all_files_and_folders
|
|
377
|
+
assert_equal Dir.glob(File.join(root, '**/*')), rfs.glob(:root)
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
def test_glob_using_multiple_patterns
|
|
381
|
+
yml_files = Dir.glob(File.join(root, '**/*.yml'))
|
|
382
|
+
txt_files = Dir.glob(File.join(root, '**/*.txt'))
|
|
383
|
+
|
|
384
|
+
assert_equal(
|
|
385
|
+
(yml_files + txt_files).sort,
|
|
386
|
+
rfs.glob(:root, "**/*.yml", "**/*.txt").sort)
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
#
|
|
390
|
+
# vglob tests
|
|
391
|
+
#
|
|
392
|
+
|
|
393
|
+
def test_vglob_returns_all_versions_matching_file_and_version_pattern
|
|
394
|
+
assert_equal 4, Dir.glob(File.join(root, 'versions/*')).length
|
|
395
|
+
|
|
396
|
+
assert_equal 3, Dir.glob(File.join(root, 'versions/file*.yml')).length
|
|
397
|
+
assert_equal Dir.glob(File.join(root, 'versions/file*.yml')), rfs.vglob(:versions, 'file.yml', '*')
|
|
398
|
+
|
|
399
|
+
assert_equal 2, Dir.glob(File.join(root, 'versions/file-0.1*.yml')).length
|
|
400
|
+
assert_equal Dir.glob(File.join(root, 'versions/file-0.1*.yml')), rfs.vglob(:versions, 'file.yml', "0.1*")
|
|
401
|
+
|
|
402
|
+
assert_equal 1, Dir.glob(File.join(root, 'versions/file-0.1.yml')).length
|
|
403
|
+
assert_equal Dir.glob(File.join(root, 'versions/file-0.1.yml')), rfs.vglob(:versions, 'file.yml', "0.1")
|
|
404
|
+
|
|
405
|
+
assert_equal 0, Dir.glob(File.join(root, 'versions/file-2.yml')).length
|
|
406
|
+
assert_equal [], rfs.vglob(:versions, 'file.yml', "2")
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
def test_default_vglob_pattern_is_all_versions
|
|
410
|
+
assert_equal Dir.glob(File.join(root, 'versions/file-*.yml')) + [File.join(root, 'versions/file.yml')], rfs.vglob(:versions, 'file.yml')
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
def test_nil_vglob_pattern_matches_the_no_version_file
|
|
414
|
+
assert_equal [File.join(root, 'versions/file.yml')], rfs.vglob(:versions, 'file.yml', nil)
|
|
415
|
+
assert_equal [File.join(root, 'versions/file.yml')], rfs.vglob(:versions, 'file.yml', '')
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
def test_vglob_using_multiple_verson_patterns
|
|
419
|
+
expected = [
|
|
420
|
+
File.join(root, 'versions/file-0.1.2.yml'),
|
|
421
|
+
File.join(root, 'versions/file-0.1.yml')]
|
|
422
|
+
|
|
423
|
+
assert_equal expected, rfs.vglob(:versions, "file.yml", "0.1.2", "0.1")
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
def test_vglob_filters_for_unique_files
|
|
427
|
+
expected = [File.join(root, 'versions/file-0.1.2.yml')]
|
|
428
|
+
|
|
429
|
+
assert_equal expected, rfs.vglob(:versions, "file.yml", "0.1.2", "0.1.*")
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
#
|
|
434
|
+
# mtime tests
|
|
435
|
+
#
|
|
436
|
+
|
|
437
|
+
def test_mtime_returns_timestamp_of_most_recently_modifed_file_under_dir
|
|
438
|
+
not_in_dir = File.join(root, 'one.txt')
|
|
439
|
+
older_in_dir = File.join(root, 'mtime', 'older.txt')
|
|
440
|
+
newer_in_dir = File.join(root, 'mtime', 'newer.txt')
|
|
441
|
+
assert !File.exists?(newer_in_dir)
|
|
442
|
+
|
|
443
|
+
begin
|
|
444
|
+
File.open(newer_in_dir, 'w') {|f| f << "newer"}
|
|
445
|
+
|
|
446
|
+
files = [not_in_dir, older_in_dir, newer_in_dir]
|
|
447
|
+
assert_equal File.mtime(newer_in_dir), rfs.mtime('mtime', *files)
|
|
448
|
+
assert_equal File.mtime(newer_in_dir), rfs.mtime('mtime', *files.reverse)
|
|
449
|
+
ensure
|
|
450
|
+
File.delete(newer_in_dir) if File.exists?(newer_in_dir)
|
|
451
|
+
end
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
def test_mtime_returns_nil_if_no_files_are_under_dir
|
|
455
|
+
not_in_dir = File.join(root, 'one.txt')
|
|
456
|
+
assert_equal nil, rfs.mtime('mtime', not_in_dir)
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
#
|
|
460
|
+
# MISSING! open, write_to, read_from tests
|
|
461
|
+
#
|
|
462
|
+
|
|
463
|
+
#
|
|
464
|
+
# mkpaths tests
|
|
465
|
+
#
|
|
466
|
+
|
|
467
|
+
def test_mkpaths
|
|
468
|
+
root_dir = File.join(root, "mkpath_test")
|
|
469
|
+
rfs = Tap::Root.new(root_dir, :config => 'config')
|
|
470
|
+
|
|
471
|
+
assert !File.exists?(rfs[:root])
|
|
472
|
+
assert !File.exists?(rfs[:config])
|
|
473
|
+
|
|
474
|
+
begin
|
|
475
|
+
rfs.mkpaths
|
|
476
|
+
|
|
477
|
+
assert File.exists?(rfs[:root])
|
|
478
|
+
assert File.exists?(rfs[:config])
|
|
479
|
+
ensure
|
|
480
|
+
FileUtils.rm_r(root_dir)
|
|
481
|
+
end
|
|
482
|
+
end
|
|
483
|
+
end
|