tap 0.7.9 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. data/History +28 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README +71 -43
  4. data/Rakefile +81 -64
  5. data/Tutorial +235 -0
  6. data/bin/tap +80 -44
  7. data/lib/tap.rb +41 -12
  8. data/lib/tap/app.rb +243 -246
  9. data/lib/tap/file_task.rb +357 -118
  10. data/lib/tap/generator.rb +88 -29
  11. data/lib/tap/generator/generators/config/config_generator.rb +4 -2
  12. data/lib/tap/generator/generators/config/templates/config.erb +1 -2
  13. data/lib/tap/generator/generators/file_task/file_task_generator.rb +3 -18
  14. data/lib/tap/generator/generators/file_task/templates/task.erb +22 -15
  15. data/lib/tap/generator/generators/file_task/templates/test.erb +13 -2
  16. data/{test/test/inference_methods/test_assert_files_exist/input/input_1.txt → lib/tap/generator/generators/generator/USAGE} +0 -0
  17. data/lib/tap/generator/generators/generator/generator_generator.rb +21 -0
  18. data/lib/tap/generator/generators/generator/templates/generator.erb +23 -0
  19. data/lib/tap/generator/generators/generator/templates/usage.erb +1 -0
  20. data/{test/test/inference_methods/test_assert_files_exist/input/input_2.txt → lib/tap/generator/generators/package/USAGE} +0 -0
  21. data/lib/tap/generator/generators/package/package_generator.rb +38 -0
  22. data/lib/tap/generator/generators/package/templates/package.erb +186 -0
  23. data/lib/tap/generator/generators/root/root_generator.rb +14 -9
  24. data/lib/tap/generator/generators/root/templates/Rakefile +20 -14
  25. data/{test/test/inference_methods/test_infer_glob/expected/file.yml → lib/tap/generator/generators/root/templates/ReadMe.txt} +0 -0
  26. data/lib/tap/generator/generators/root/templates/tap.yml +82 -0
  27. data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +0 -1
  28. data/lib/tap/generator/generators/root/templates/test/tap_test_suite.rb +2 -1
  29. data/{test/test/inference_methods/test_infer_glob/expected/file_1.txt → lib/tap/generator/generators/script/USAGE} +0 -0
  30. data/lib/tap/generator/generators/script/script_generator.rb +17 -0
  31. data/lib/tap/generator/generators/script/templates/script.erb +42 -0
  32. data/lib/tap/generator/generators/task/task_generator.rb +1 -1
  33. data/lib/tap/generator/generators/task/templates/task.erb +24 -16
  34. data/lib/tap/generator/generators/task/templates/test.erb +13 -17
  35. data/lib/tap/generator/generators/workflow/templates/task.erb +10 -10
  36. data/lib/tap/generator/generators/workflow/templates/test.erb +1 -1
  37. data/lib/tap/generator/generators/workflow/workflow_generator.rb +3 -18
  38. data/lib/tap/root.rb +108 -146
  39. data/lib/tap/script.rb +362 -0
  40. data/lib/tap/script/console.rb +28 -0
  41. data/lib/tap/script/destroy.rb +13 -1
  42. data/lib/tap/script/generate.rb +13 -1
  43. data/lib/tap/script/run.rb +100 -57
  44. data/lib/tap/support/batch_queue.rb +0 -3
  45. data/lib/tap/support/logger.rb +6 -3
  46. data/lib/tap/support/rake.rb +54 -0
  47. data/lib/tap/support/task_configuration.rb +169 -0
  48. data/lib/tap/support/tdoc.rb +198 -0
  49. data/lib/tap/support/tdoc/config_attr.rb +338 -0
  50. data/lib/tap/support/tdoc/tdoc_html_generator.rb +38 -0
  51. data/lib/tap/support/tdoc/tdoc_html_template.rb +42 -0
  52. data/lib/tap/support/versions.rb +33 -1
  53. data/lib/tap/task.rb +339 -227
  54. data/lib/tap/test.rb +86 -128
  55. data/lib/tap/test/env_vars.rb +16 -5
  56. data/lib/tap/test/file_methods.rb +373 -0
  57. data/lib/tap/test/subset_methods.rb +299 -180
  58. data/lib/tap/version.rb +2 -1
  59. data/lib/tap/workflow.rb +2 -0
  60. data/test/app/lib/app_test_task.rb +1 -0
  61. data/test/app_test.rb +327 -83
  62. data/test/check/binding_eval.rb +23 -0
  63. data/test/check/define_method_check.rb +22 -0
  64. data/test/check/dependencies_check.rb +175 -0
  65. data/test/check/inheritance_check.rb +22 -0
  66. data/test/file_task_test.rb +524 -291
  67. data/test/{test/inference_methods/test_infer_glob/expected/file_2.txt → root/glob/one.txt} +0 -0
  68. data/test/root/glob/two.txt +0 -0
  69. data/test/root_test.rb +330 -262
  70. data/test/script_test.rb +194 -0
  71. data/test/support/audit_test.rb +5 -2
  72. data/test/support/combinator_test.rb +10 -10
  73. data/test/support/rake_test.rb +35 -0
  74. data/test/support/task_configuration_test.rb +272 -0
  75. data/test/support/tdoc_test.rb +363 -0
  76. data/test/support/templater_test.rb +2 -2
  77. data/test/support/versions_test.rb +32 -0
  78. data/test/tap_test_helper.rb +39 -0
  79. data/test/task_base_test.rb +115 -0
  80. data/test/task_class_test.rb +56 -4
  81. data/test/task_execute_test.rb +29 -0
  82. data/test/task_test.rb +89 -70
  83. data/test/test/env_vars_test.rb +48 -0
  84. data/test/test/{inference_methods → file_methods}/test_assert_expected/expected/file.txt +0 -0
  85. data/test/test/{inference_methods → file_methods}/test_assert_expected/expected/folder/file.txt +0 -0
  86. data/test/test/{inference_methods → file_methods}/test_assert_expected/input/file.txt +0 -0
  87. data/test/test/{inference_methods → file_methods}/test_assert_expected/input/folder/file.txt +0 -0
  88. data/test/test/file_methods/test_assert_files_exist/input/input_1.txt +0 -0
  89. data/test/test/file_methods/test_assert_files_exist/input/input_2.txt +0 -0
  90. data/test/test/file_methods/test_assert_output_files_equal/expected/one.txt +1 -0
  91. data/test/test/file_methods/test_assert_output_files_equal/expected/two.txt +1 -0
  92. data/test/test/file_methods/test_assert_output_files_equal/input/one.txt +1 -0
  93. data/test/test/file_methods/test_assert_output_files_equal/input/two.txt +1 -0
  94. data/test/test/{inference_methods → file_methods}/test_file_compare/expected/output_1.txt +0 -0
  95. data/test/test/{inference_methods → file_methods}/test_file_compare/expected/output_2.txt +0 -0
  96. data/test/test/{inference_methods → file_methods}/test_file_compare/input/input_1.txt +0 -0
  97. data/test/test/{inference_methods → file_methods}/test_file_compare/input/input_2.txt +0 -0
  98. data/test/test/file_methods/test_infer_glob/expected/file.yml +0 -0
  99. data/test/test/file_methods/test_infer_glob/expected/file_1.txt +0 -0
  100. data/test/test/file_methods/test_infer_glob/expected/file_2.txt +0 -0
  101. data/test/test/file_methods/test_method_glob/expected/file.yml +0 -0
  102. data/test/test/file_methods/test_method_glob/expected/file_1.txt +0 -0
  103. data/test/test/file_methods/test_method_glob/expected/file_2.txt +0 -0
  104. data/test/test/{inference_methods → file_methods}/test_yml_compare/expected/output_1.yml +0 -0
  105. data/test/test/{inference_methods → file_methods}/test_yml_compare/expected/output_2.yml +0 -0
  106. data/test/test/{inference_methods → file_methods}/test_yml_compare/input/input_1.yml +0 -0
  107. data/test/test/{inference_methods → file_methods}/test_yml_compare/input/input_2.yml +0 -0
  108. data/test/test/file_methods_test.rb +204 -0
  109. data/test/test/subset_methods_test.rb +93 -33
  110. data/test/test/test_assert_expected_result_files/expected/task/name/a.txt +1 -0
  111. data/test/test/test_assert_expected_result_files/expected/task/name/b.txt +1 -0
  112. data/test/test/test_assert_expected_result_files/input/a.txt +1 -0
  113. data/test/test/test_assert_expected_result_files/input/b.txt +1 -0
  114. data/test/test/test_file_task_test/expected/one.txt +1 -0
  115. data/test/test/test_file_task_test/expected/two.txt +1 -0
  116. data/test/test/test_file_task_test/input/one.txt +1 -0
  117. data/test/test/test_file_task_test/input/two.txt +1 -0
  118. data/test/test_test.rb +143 -3
  119. data/test/workflow_test.rb +2 -0
  120. data/vendor/rails_generator.rb +56 -0
  121. data/vendor/rails_generator/base.rb +263 -0
  122. data/vendor/rails_generator/commands.rb +581 -0
  123. data/vendor/rails_generator/generated_attribute.rb +42 -0
  124. data/vendor/rails_generator/lookup.rb +209 -0
  125. data/vendor/rails_generator/manifest.rb +53 -0
  126. data/vendor/rails_generator/options.rb +143 -0
  127. data/vendor/rails_generator/scripts.rb +83 -0
  128. data/vendor/rails_generator/scripts/destroy.rb +7 -0
  129. data/vendor/rails_generator/scripts/generate.rb +7 -0
  130. data/vendor/rails_generator/scripts/update.rb +12 -0
  131. data/vendor/rails_generator/simple_logger.rb +46 -0
  132. data/vendor/rails_generator/spec.rb +44 -0
  133. metadata +180 -196
  134. data/lib/tap/generator/generators/root/templates/app.yml +0 -19
  135. data/lib/tap/generator/generators/root/templates/config/process_tap_request.yml +0 -4
  136. data/lib/tap/generator/generators/root/templates/lib/process_tap_request.rb +0 -26
  137. data/lib/tap/generator/generators/root/templates/public/images/nav.jpg +0 -0
  138. data/lib/tap/generator/generators/root/templates/public/stylesheets/color.css +0 -57
  139. data/lib/tap/generator/generators/root/templates/public/stylesheets/layout.css +0 -108
  140. data/lib/tap/generator/generators/root/templates/public/stylesheets/normalize.css +0 -40
  141. data/lib/tap/generator/generators/root/templates/public/stylesheets/typography.css +0 -21
  142. data/lib/tap/generator/generators/root/templates/server/config/environment.rb +0 -60
  143. data/lib/tap/generator/generators/root/templates/server/lib/tasks/clear_database_prerequisites.rake +0 -5
  144. data/lib/tap/generator/generators/root/templates/server/test/test_helper.rb +0 -53
  145. data/lib/tap/script/server.rb +0 -12
  146. data/lib/tap/support/rap.rb +0 -38
  147. data/lib/tap/test/inference_methods.rb +0 -298
  148. data/test/task/config/task_with_config.yml +0 -1
  149. data/test/test/inference_methods_test.rb +0 -311
File without changes
data/test/root_test.rb CHANGED
@@ -1,72 +1,54 @@
1
1
  require File.join(File.dirname(__FILE__), 'tap_test_helper.rb')
2
2
  require 'tap/root'
3
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
4
  class RootTest < Test::Unit::TestCase
13
5
  include Tap::Test::SubsetMethods
14
6
 
15
- attr_reader :ifs, :rfs
7
+ attr_reader :r, :tr
16
8
 
17
9
  def setup
18
- @ifs = Tap::Root.new "./root", {:dir => "dir"}, {:abs => '/abs/path'}
19
- @rfs = Tap::Root.new root, {:lib => "lib"}
10
+ # root
11
+ @r = Tap::Root.new "./root", {:dir => "dir"}, {:abs => '/abs/path'}
12
+
13
+ # test root
14
+ @tr = Tap::Root.new test_root, {:lib => "lib"}
20
15
  end
21
16
 
22
- def root
23
- File.join(File.dirname(__FILE__), 'root')
17
+ def test_root
18
+ File.expand_path(File.join(File.dirname(__FILE__), 'root'))
24
19
  end
25
20
 
26
21
  def test_documentation
27
- root = Tap::Root.new self.root, :input => 'in', :output => 'out'
22
+ r = Tap::Root.new test_root, :input => 'in', :output => 'out'
28
23
 
29
24
  # 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]
25
+ assert_equal test_root + '/in', r[:in]
26
+ assert_equal test_root + '/out', r[:out]
27
+ assert_equal test_root + '/implicit', r[:implicit]
33
28
 
34
29
  # # 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)
30
+ assert_equal test_root + '/in/path/to/file.txt', fp = r.filepath(:in, 'path/to/file.txt')
31
+ assert_equal 'path/to/file.txt', r.relative_filepath(:in, fp)
32
+ assert_equal test_root + '/out/path/to/file.txt', r.translate(fp, :in, :out)
38
33
 
39
34
  # # 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')
35
+ assert_equal 'path/to/config-1.0.yml', r.version('path/to/config.yml', 1.0)
36
+ assert_equal 'path/to/config-1.1.yml', r.increment('path/to/config-1.0.yml', 0.1)
37
+ assert_equal ['path/to/config.yml', "1.1"], r.deversion('path/to/config-1.1.yml')
51
38
 
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')
39
+ # # absolute paths can also be aliased.
40
+ r[:abs, true] = "/absolute/path"
41
+ assert_equal File.expand_path('/absolute/path/to/file.txt'), r.filepath(:abs, "to", "file.txt")
64
42
  end
65
43
 
66
44
  #
67
45
  # Tap::Root relative filepath test
68
46
  #
69
47
 
48
+ def test_relative_filepath_documentation
49
+ assert_equal "path/to/file.txt", Tap::Root.relative_filepath('dir', "dir/path/to/file.txt")
50
+ end
51
+
70
52
  def test_class_relative_filepath
71
53
  assert_equal "file.txt", Tap::Root.relative_filepath('./root/dir', "./root/dir/file.txt")
72
54
  assert_equal "nested/file.txt", Tap::Root.relative_filepath('./root/dir', "./root/dir/nested/file.txt")
@@ -82,46 +64,85 @@ class RootTest < Test::Unit::TestCase
82
64
  assert_raise(RuntimeError) { Tap::Root.relative_filepath('dir', "./root/file.txt") }
83
65
  end
84
66
 
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)
67
+ def test_class_relative_filepath_returns_expanded_path_if_path_is_not_relative_to_dir_and_not_strict
68
+ assert_equal test_root + "/root/file.txt", Tap::Root.relative_filepath('dir', test_root + "/root/folder/.././file.txt", false)
69
+ end
70
+
71
+ #
72
+ # Tap::Root glob test
73
+ #
74
+
75
+ def test_class_glob_returns_all_unique_files_matching_input_patterns
76
+ files = [test_root + "/glob/one.txt", test_root + "/glob/two.txt"]
77
+
78
+ assert_equal files, Tap::Root.glob(test_root + "/glob/**/*")
79
+ assert_equal files, Tap::Root.glob(test_root + "/glob/one.txt", test_root + "/glob/two.txt")
80
+ assert_equal files, Tap::Root.glob(test_root + "/glob/**/*", test_root + "/glob/one.txt", test_root + "/glob/two.txt")
81
+ assert_equal [], Tap::Root.glob(test_root + "/glob/three.txt")
82
+ assert_equal [], Tap::Root.glob()
83
+ end
84
+
85
+ #
86
+ # Tap::Root vglob test
87
+ #
88
+
89
+ def test_class_vglob_returns_all_versions_matching_file_and_version_pattern
90
+ assert_equal 4, Dir.glob(File.join(test_root, 'versions/*')).length
91
+
92
+ assert_equal 3, Dir.glob(File.join(test_root, 'versions/file*.yml')).length
93
+ assert_equal Dir.glob(test_root + '/versions/file*.yml').sort, Tap::Root.vglob(test_root + '/versions/file.yml', '*').sort
94
+
95
+ assert_equal 2, Dir.glob(File.join(test_root, 'versions/file-0.1*.yml')).length
96
+ assert_equal Dir.glob(test_root + '/versions/file-0.1*.yml').sort, Tap::Root.vglob(test_root + '/versions/file.yml', '0.1*').sort
97
+
98
+ assert_equal 1, Dir.glob(File.join(test_root, 'versions/file-0.1.yml')).length
99
+ assert_equal Dir.glob(test_root + '/versions/file-0.1.yml').sort, Tap::Root.vglob(test_root + '/versions/file.yml', '0.1').sort
100
+
101
+ assert_equal 0, Dir.glob(File.join(test_root, 'versions/file-2.yml')).length
102
+ assert_equal [], Tap::Root.vglob(test_root + '/versions/file.yml', '2')
87
103
  end
88
104
 
105
+ def test_class_default_vglob_pattern_is_all_versions
106
+ expected = Dir.glob(File.join(test_root + '/versions/file*.yml'))
107
+ assert_equal expected.sort, Tap::Root.vglob(test_root + '/versions/file.yml').sort
108
+ end
109
+
89
110
  #
90
111
  # initialize tests
91
112
  #
92
113
 
93
- def test_defualt_root_is_dir_pwd
94
- ifs = Tap::Root.new
114
+ def test_default_root_is_expanded_dir_pwd
115
+ r = Tap::Root.new
95
116
 
96
- assert_equal Dir.pwd, ifs.root
97
- assert_equal({}, ifs.directories)
117
+ assert_equal File.expand_path(Dir.pwd), r.root
118
+ assert_equal({}, r.directories)
98
119
  end
99
120
 
100
121
  def test_initialize_root
101
- ifs = Tap::Root.new "./root", {:dir => "dir", :temp => "tmp"}, {:abs => "/abs/path"}
122
+ r = Tap::Root.new "./root", {:dir => "dir", :temp => "tmp"}, {:abs => "/abs/path"}
102
123
 
103
- assert_equal "./root", ifs.root
104
- assert_equal({:dir => "dir", :temp => "tmp"}, ifs.directories)
105
- assert_equal({:abs => "/abs/path"}, ifs.absolute_paths)
124
+ assert_equal File.expand_path("./root"), r.root
125
+ assert_equal({:dir => "dir", :temp => "tmp"}, r.directories)
126
+ assert_equal({:abs => File.expand_path("/abs/path")}, r.absolute_paths)
106
127
  assert_equal({
107
- 'root' => "./root",
108
- :root => "./root",
109
- :dir => "./root/dir",
110
- :temp => "./root/tmp",
111
- :abs => "/abs/path"},
112
- ifs.paths)
128
+ 'root' => File.expand_path("./root"),
129
+ :root => File.expand_path("./root"),
130
+ :dir => File.expand_path("./root/dir"),
131
+ :temp => File.expand_path( "./root/tmp"),
132
+ :abs => File.expand_path("/abs/path")},
133
+ r.paths)
113
134
  end
114
135
 
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')
136
+ def test_any_object_can_be_used_as_a_directory_alias
137
+ r = Tap::Root.new("./root", 'dir' => "str_da", :dir => 'sym_da', 1 => 'n_da')
117
138
 
118
139
  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)
140
+ 'root' => File.expand_path("./root"),
141
+ :root => File.expand_path("./root"),
142
+ 'dir' => File.expand_path("./root/str_da"),
143
+ :dir => File.expand_path("./root/sym_da"),
144
+ 1 => File.expand_path("./root/n_da")},
145
+ r.paths)
125
146
  end
126
147
 
127
148
  #
@@ -129,50 +150,60 @@ class RootTest < Test::Unit::TestCase
129
150
  #
130
151
 
131
152
  def test_set_root_resets_paths
132
- ifs.root = './another'
153
+ r.root = './another'
133
154
 
134
- assert_equal "./another", ifs.root
135
- assert_equal({:dir => "dir"}, ifs.directories)
155
+ assert_equal File.expand_path("./another"), r.root
156
+ assert_equal({:dir => "dir"}, r.directories)
136
157
  assert_equal({
137
- 'root' => "./another",
138
- :root => "./another",
139
- :dir => "./another/dir",
140
- :abs => "/abs/path"},
141
- ifs.paths)
158
+ 'root' => File.expand_path("./another"),
159
+ :root => File.expand_path("./another"),
160
+ :dir => File.expand_path("./another/dir"),
161
+ :abs => File.expand_path("/abs/path")},
162
+ r.paths)
142
163
  end
143
164
 
144
165
  def test_root_cannot_be_set_through_index
145
- assert_raise(ArgumentError) { ifs['root'] = './another' }
166
+ assert_raise(ArgumentError) { r['root'] = './another' }
146
167
  end
147
168
 
148
169
  #
149
170
  # set directories tests
150
171
  #
151
-
172
+
152
173
  def test_set_directories
153
- ifs.directories = {:alt => "dir"}
174
+ r.directories = {:alt => "dir"}
154
175
 
155
- assert_equal({:alt => "dir"}, ifs.directories)
156
- assert_equal({'root' => "./root", :root => "./root", :alt => "./root/dir", :abs => "/abs/path"}, ifs.paths)
176
+ assert_equal({:alt => "dir"}, r.directories)
177
+ assert_equal({
178
+ 'root' => File.expand_path("./root"),
179
+ :root => File.expand_path("./root"),
180
+ :alt => File.expand_path("./root/dir"),
181
+ :abs => File.expand_path("/abs/path")},
182
+ r.paths)
157
183
  end
158
184
 
159
185
  def test_raise_error_when_trying_to_set_root_through_directories
160
- assert_raise(ArgumentError) { ifs.directories = {'root' => "another"} }
186
+ assert_raise(ArgumentError) { r.directories = {'root' => "another"} }
161
187
  end
162
188
 
163
189
  #
164
190
  # set absolute paths test
165
191
  #
166
-
192
+
167
193
  def test_set_absolute_paths
168
- ifs.absolute_paths = {:absolute => "/absolute/path"}
194
+ r.absolute_paths = {:absolute => "/absolute/path"}
169
195
 
170
- assert_equal({:dir => "dir"}, ifs.directories)
171
- assert_equal({'root' => "./root", :root => "./root", :dir => "./root/dir", :absolute => "/absolute/path"}, ifs.paths)
196
+ assert_equal({:dir => "dir"}, r.directories)
197
+ assert_equal({
198
+ 'root' => File.expand_path("./root"),
199
+ :root => File.expand_path("./root"),
200
+ :dir => File.expand_path("./root/dir"),
201
+ :absolute => File.expand_path("/absolute/path")},
202
+ r.paths)
172
203
  end
173
204
 
174
205
  def test_raise_error_when_trying_to_set_root_through_absolute_paths
175
- assert_raise(ArgumentError) { ifs.absolute_paths = {'root' => "another"} }
206
+ assert_raise(ArgumentError) { r.absolute_paths = {'root' => "another"} }
176
207
  end
177
208
 
178
209
  #
@@ -180,124 +211,194 @@ class RootTest < Test::Unit::TestCase
180
211
  #
181
212
 
182
213
  def test_absolute_paths_returns_all_non_root_paths_with_no_directory
183
- assert_equal({:abs => "/abs/path"}, ifs.absolute_paths)
214
+ assert_equal({:abs => File.expand_path("/abs/path")}, r.absolute_paths)
184
215
 
185
- ifs.paths[:another] = "/another/path"
186
- assert_equal({:abs => "/abs/path", :another => "/another/path"}, ifs.absolute_paths)
216
+ r.paths[:another] = File.expand_path("/another/path")
217
+ assert_equal({
218
+ :abs => File.expand_path("/abs/path"),
219
+ :another => File.expand_path("/another/path")},
220
+ r.absolute_paths)
187
221
  end
188
222
 
189
223
  #
190
- # set path tests
224
+ # assignment tests
191
225
  #
192
226
 
193
- def test_set_existing_directory_using_index
194
- ifs[:dir] = 'another'
227
+ def test_assignment_documentation
228
+ r = Tap::Root.new test_root
229
+ r[:dir] = 'path/to/dir'
230
+ assert_equal test_root + '/path/to/dir', r[:dir]
231
+
232
+ r[:abs, true] = '/abs/path/to/dir'
233
+ assert_equal File.expand_path('/abs/path/to/dir'), r[:abs]
234
+ end
235
+
236
+ def test_set_existing_directory_using_assignment
237
+ r[:dir] = 'another'
195
238
 
196
- assert_equal({:dir => "another"}, ifs.directories)
239
+ assert_equal({:dir => "another"}, r.directories)
197
240
  assert_equal({
198
- 'root' => "./root",
199
- :root => "./root",
200
- :dir => "./root/another",
201
- :abs => "/abs/path"},
202
- ifs.paths)
241
+ 'root' => File.expand_path("./root"),
242
+ :root => File.expand_path("./root"),
243
+ :dir => File.expand_path("./root/another"),
244
+ :abs => File.expand_path("/abs/path")},
245
+ r.paths)
203
246
  end
204
247
 
205
- def test_set_new_directory_using_index
206
- ifs[:new] = 'new'
248
+ def test_set_new_directory_using_assignment
249
+ r[:new] = 'new'
207
250
 
208
- assert_equal({:dir => "dir", :new => "new"}, ifs.directories)
251
+ assert_equal({:dir => "dir", :new => "new"}, r.directories)
209
252
  assert_equal({
210
- 'root' => "./root",
211
- :root => "./root",
212
- :dir => "./root/dir",
213
- :abs => "/abs/path",
214
- :new => "./root/new"},
215
- ifs.paths)
253
+ 'root' => File.expand_path("./root"),
254
+ :root => File.expand_path("./root"),
255
+ :dir => File.expand_path("./root/dir"),
256
+ :abs => File.expand_path("/abs/path"),
257
+ :new => File.expand_path("./root/new")},
258
+ r.paths)
216
259
  end
217
260
 
218
261
  def test_absolute_paths_can_be_set_by_specifiying_absolute_true
219
- ifs[:absolute, true] = '/some/absolute/path'
262
+ r[:absolute, true] = '/some/absolute/path'
220
263
 
221
- assert_equal({:dir => "dir"}, ifs.directories)
264
+ assert_equal({:dir => "dir"}, r.directories)
222
265
  assert_equal({
223
- 'root' => "./root",
224
- :root => "./root",
225
- :dir => "./root/dir",
226
- :abs => "/abs/path",
227
- :absolute => '/some/absolute/path'},
228
- ifs.paths)
266
+ 'root' => File.expand_path("./root"),
267
+ :root => File.expand_path("./root"),
268
+ :dir => File.expand_path("./root/dir"),
269
+ :abs => File.expand_path("/abs/path"),
270
+ :absolute => File.expand_path('/some/absolute/path')},
271
+ r.paths)
229
272
  end
230
273
 
231
274
  def test_an_absolute_path_is_not_set_if_absolute_false
232
- ifs[:not_absolute, false] = 'not/an/absolute/path'
275
+ r[:not_absolute, false] = 'not/an/absolute/path'
233
276
 
234
- assert_equal({:dir => "dir", :not_absolute => "not/an/absolute/path"}, ifs.directories)
277
+ assert_equal({:dir => "dir", :not_absolute => "not/an/absolute/path"}, r.directories)
235
278
  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)
279
+ 'root' => File.expand_path("./root"),
280
+ :root => File.expand_path("./root"),
281
+ :dir => File.expand_path("./root/dir"),
282
+ :abs => File.expand_path("/abs/path"),
283
+ :not_absolute => File.expand_path("./root/not/an/absolute/path")},
284
+ r.paths)
242
285
  end
243
286
 
244
287
  def test_paths_can_be_unset_with_nil
245
288
  # 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)
289
+ r[:dir] = '/some/path'
290
+ assert_equal({:dir => "/some/path"}, r.directories)
291
+ assert_equal({
292
+ 'root' => File.expand_path("./root"),
293
+ :root => File.expand_path("./root"),
294
+ :dir => File.expand_path("./root/some/path"),
295
+ :abs => File.expand_path("/abs/path")},
296
+ r.paths)
249
297
 
250
- ifs[:dir] = nil
251
- assert_equal({}, ifs.directories)
252
- assert_equal({'root' => "./root", :root => "./root", :abs => "/abs/path"}, ifs.paths)
298
+ r[:dir] = nil
299
+ assert_equal({}, r.directories)
300
+ assert_equal({
301
+ 'root' => File.expand_path("./root"),
302
+ :root => File.expand_path("./root"),
303
+ :abs => File.expand_path("/abs/path")},
304
+ r.paths)
253
305
 
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)
306
+ # the same with absolute specified
307
+ r[:dir] = '/some/path'
308
+ assert_equal({:dir => "/some/path"}, r.directories)
309
+ assert_equal({
310
+ 'root' => File.expand_path("./root"),
311
+ :root => File.expand_path("./root"),
312
+ :dir => File.expand_path("./root/some/path"),
313
+ :abs => File.expand_path("/abs/path")},
314
+ r.paths)
258
315
 
259
- ifs[:dir, false] = nil
260
- assert_equal({}, ifs.directories)
261
- assert_equal({'root' => "./root", :root => "./root", :abs => "/abs/path"}, ifs.paths)
316
+ r[:dir, false] = nil
317
+ assert_equal({}, r.directories)
318
+ assert_equal({
319
+ 'root' => File.expand_path("./root"),
320
+ :root => File.expand_path("./root"),
321
+ :abs => File.expand_path("/abs/path")},
322
+ r.paths)
262
323
 
263
324
  # 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)
325
+ r[:abs, true] = '/some/absolute/path'
326
+ assert_equal({}, r.directories)
327
+ assert_equal({
328
+ 'root' => File.expand_path("./root"),
329
+ :root => File.expand_path("./root"),
330
+ :abs => File.expand_path('/some/absolute/path')},
331
+ r.paths)
267
332
 
268
- ifs[:abs, true] = nil
269
- assert_equal({}, ifs.directories)
270
- assert_equal({'root' => "./root", :root => "./root"}, ifs.paths)
333
+ r[:abs, true] = nil
334
+ assert_equal({}, r.directories)
335
+ assert_equal({
336
+ 'root' => File.expand_path("./root"),
337
+ :root => File.expand_path("./root")},
338
+ r.paths)
271
339
 
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)
340
+ # the same with absolute unspecfied
341
+ r[:abs, true] = '/some/absolute/path'
342
+ assert_equal({}, r.directories)
343
+ assert_equal({
344
+ 'root' => File.expand_path("./root"),
345
+ :root => File.expand_path("./root"),
346
+ :abs => File.expand_path('/some/absolute/path')},
347
+ r.paths)
276
348
 
277
- ifs[:abs] = nil
278
- assert_equal({}, ifs.directories)
279
- assert_equal({'root' => "./root", :root => "./root"}, ifs.paths)
349
+ r[:abs] = nil
350
+ assert_equal({}, r.directories)
351
+ assert_equal({
352
+ 'root' => File.expand_path("./root"),
353
+ :root => File.expand_path("./root")},
354
+ r.paths)
280
355
  end
281
356
 
357
+ def test_set_path_expands_filepaths
358
+ r[:dir] = "./sub/../dir"
359
+ assert_equal File.expand_path("./root/dir"), r.paths[:dir]
360
+
361
+ r[:abs, true] = "/./sub/../dir"
362
+ assert_equal File.expand_path("/dir"), r.paths[:abs]
363
+ end
364
+
282
365
  #
283
366
  # retrieve path tests
284
367
  #
285
368
 
369
+ def test_retrieve_documentation
370
+ r = Tap::Root.new test_root
371
+ r[:dir] = 'path/to/dir'
372
+ assert_equal test_root + '/path/to/dir', r[:dir]
373
+
374
+ r[:unset] = nil
375
+ assert_equal test_root + '/unset', r[:unset]
376
+ end
377
+
286
378
  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]
379
+ {
380
+ :dir => File.expand_path("./root/dir"),
381
+ :root => File.expand_path("./root"),
382
+ 'root' => File.expand_path("./root"),
383
+ :abs => File.expand_path("/abs/path")
384
+ }.each_pair do |dir, expected|
385
+ assert_equal expected, r[dir]
294
386
  end
295
387
  end
296
388
 
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']
389
+ def test_retrieve_path_infers_path_if_path_is_not_set
390
+ assert_equal({
391
+ 'root' => File.expand_path("./root"),
392
+ :root => File.expand_path("./root"),
393
+ :dir => File.expand_path("./root/dir"),
394
+ :abs => File.expand_path("/abs/path")},
395
+ r.paths)
396
+ assert_equal File.expand_path("./root/not_set"), r[:not_set]
397
+ assert_equal File.expand_path("./root/nested/dir"), r['nested/dir']
398
+ end
399
+
400
+ def test_retrieve_path_expands_inferred_filepaths
401
+ assert_equal File.expand_path("./root/nested/dir"), r['./sub/../nested/dir']
301
402
  end
302
403
 
303
404
  #
@@ -305,16 +406,22 @@ class RootTest < Test::Unit::TestCase
305
406
  #
306
407
 
307
408
  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")
409
+ assert_equal File.expand_path("./root/dir"), r[:dir]
410
+ assert_equal File.expand_path("./root/dir/file.txt"), r.filepath(:dir, "file.txt")
411
+ assert_equal File.expand_path("./root/dir/nested/file.txt"), r.filepath(:dir, "nested/file.txt")
311
412
  end
312
413
 
313
414
  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")
415
+ assert_equal File.expand_path("./root/not_set/file.txt"), r.filepath(:not_set, "file.txt")
416
+ assert_equal File.expand_path("./root/folder/subfolder/file.txt"), r.filepath('folder/subfolder', "file.txt")
417
+ assert_equal File.expand_path("./root/folder/subfolder/file.txt"), r.filepath('/folder/subfolder', "file.txt")
418
+ assert_equal File.expand_path("./root/folder/subfolder/file.txt"), r.filepath('folder/subfolder/', "file.txt")
419
+ end
420
+
421
+ def test_filepath_expands_paths
422
+ assert_equal File.expand_path("./root/dir"), r[:dir]
423
+ assert_equal File.expand_path("./root/dir/file.txt"), r.filepath(:dir, "./sub/../file.txt")
424
+ assert_equal File.expand_path("./root/dir/nested/file.txt"), r.filepath(:dir, "nested/./sub/../file.txt")
318
425
  end
319
426
 
320
427
  #
@@ -322,45 +429,57 @@ class RootTest < Test::Unit::TestCase
322
429
  #
323
430
 
324
431
  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")
432
+ assert_equal "file.txt", r.relative_filepath(:dir, "./root/dir/file.txt")
433
+ assert_equal "nested/file.txt", r.relative_filepath(:dir, "./root/dir/nested/file.txt")
434
+ assert_equal "file.txt", r.relative_filepath('dir/nested', "./root/dir/nested/file.txt")
435
+ assert_equal "file.txt", r.relative_filepath('dir/nested/', "./root/dir/nested/file.txt")
436
+ assert_equal "file.txt", r.relative_filepath('/dir/nested', "./root/dir/nested/file.txt")
330
437
  end
331
438
 
332
439
  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/")
440
+ assert_equal "", r.relative_filepath(:dir, "./root/dir")
441
+ assert_equal "", r.relative_filepath(:dir, "./root/dir/")
335
442
  end
336
443
 
337
444
  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")
445
+ assert_equal "file.txt", r.relative_filepath(:dir, "./root/folder/.././dir/file.txt")
446
+ assert_equal "file.txt", r.relative_filepath(:dir, "root/dir/file.txt")
340
447
  end
341
448
 
342
449
  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")
450
+ assert_equal "file.txt", r.relative_filepath(:not_set, "./root/not_set/file.txt")
451
+ assert_equal "file.txt", r.relative_filepath('folder/subfolder', "./root/folder/subfolder/file.txt")
452
+ assert_equal "file.txt", r.relative_filepath('/folder/subfolder', "./root/folder/subfolder/file.txt")
453
+ assert_equal "file.txt", r.relative_filepath('folder/subfolder/', "./root/folder/subfolder/file.txt")
347
454
  end
348
455
 
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") }
456
+ def test_relative_filepath_raises_error_if_path_is_not_relative_to_aliased_dir
457
+ assert_raise(RuntimeError) { r.relative_filepath(:dir, "./root/file.txt") }
351
458
  end
352
459
 
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)
460
+ def test_relative_filepath_returns_expanded_path_if_path_is_not_relative_to_aliased_dir_and_not_strict
461
+ assert_equal test_root + "/root/file.txt", r.relative_filepath('dir', test_root + "/root/folder/.././file.txt", false)
355
462
  end
356
463
 
357
464
  #
358
465
  # translate tests
359
466
  #
360
467
 
468
+ def test_translate_documentation
469
+ r = Tap::Root.new '/root_dir'
470
+
471
+ fp = r.filepath(:in, 'path/to/file.txt')
472
+ assert_equal File.expand_path('/root_dir/in/path/to/file.txt'), fp
473
+ assert_equal File.expand_path('/root_dir/out/path/to/file.txt'), r.translate(fp, :in, :out)
474
+ end
475
+
361
476
  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)
477
+ assert_equal File.expand_path("./root/another/file.txt"), r.translate("./root/dir/file.txt", :dir, :another)
478
+ assert_equal File.expand_path("./root/another/nested/file.txt"), r.translate("./root/dir/nested/file.txt", :dir, :another)
479
+ end
480
+
481
+ def test_translate_raises_error_if_path_is_not_relative_to_aliased_input_dir
482
+ assert_raise(RuntimeError) { r.translate("./root/dir/file.txt", :not_dir, :another) }
364
483
  end
365
484
 
366
485
  #
@@ -368,22 +487,22 @@ class RootTest < Test::Unit::TestCase
368
487
  #
369
488
 
370
489
  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, "*")
490
+ assert_equal Dir.glob(File.join(test_root, '*')), tr.glob(:root, "*")
491
+ assert_equal Dir.glob(File.join(test_root, '*.txt')), tr.glob(:root, "*.txt")
492
+ assert_equal Dir.glob(File.join(test_root, 'lib/*')), tr.glob(:lib, "*")
374
493
  end
375
494
 
376
495
  def test_default_glob_pattern_is_all_files_and_folders
377
- assert_equal Dir.glob(File.join(root, '**/*')), rfs.glob(:root)
496
+ assert_equal Dir.glob(File.join(test_root, '**/*')), tr.glob(:root)
378
497
  end
379
498
 
380
499
  def test_glob_using_multiple_patterns
381
- yml_files = Dir.glob(File.join(root, '**/*.yml'))
382
- txt_files = Dir.glob(File.join(root, '**/*.txt'))
500
+ yml_files = Dir.glob(File.join(test_root, '**/*.yml'))
501
+ txt_files = Dir.glob(File.join(test_root, '**/*.txt'))
383
502
 
384
503
  assert_equal(
385
504
  (yml_files + txt_files).sort,
386
- rfs.glob(:root, "**/*.yml", "**/*.txt").sort)
505
+ tr.glob(:root, "**/*.yml", "**/*.txt").sort)
387
506
  end
388
507
 
389
508
  #
@@ -391,93 +510,42 @@ class RootTest < Test::Unit::TestCase
391
510
  #
392
511
 
393
512
  def test_vglob_returns_all_versions_matching_file_and_version_pattern
394
- assert_equal 4, Dir.glob(File.join(root, 'versions/*')).length
513
+ assert_equal 4, Dir.glob(File.join(test_root, 'versions/*')).length
395
514
 
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', '*')
515
+ assert_equal 3, Dir.glob(File.join(test_root, 'versions/file*.yml')).length
516
+ assert_equal Dir.glob(File.join(test_root, 'versions/file*.yml')).sort, tr.vglob(:versions, 'file.yml', '*').sort
398
517
 
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*")
518
+ assert_equal 2, Dir.glob(File.join(test_root, 'versions/file-0.1*.yml')).length
519
+ assert_equal Dir.glob(File.join(test_root, 'versions/file-0.1*.yml')).sort, tr.vglob(:versions, 'file.yml', "0.1*").sort
401
520
 
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")
521
+ assert_equal 1, Dir.glob(File.join(test_root, 'versions/file-0.1.yml')).length
522
+ assert_equal Dir.glob(File.join(test_root, 'versions/file-0.1.yml')).sort, tr.vglob(:versions, 'file.yml', "0.1").sort
404
523
 
405
- assert_equal 0, Dir.glob(File.join(root, 'versions/file-2.yml')).length
406
- assert_equal [], rfs.vglob(:versions, 'file.yml', "2")
524
+ assert_equal 0, Dir.glob(File.join(test_root, 'versions/file-2.yml')).length
525
+ assert_equal [], tr.vglob(:versions, 'file.yml', "2")
407
526
  end
408
527
 
409
528
  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')
529
+ expected = Dir.glob(File.join(test_root, 'versions/file-*.yml')) + [File.join(test_root, 'versions/file.yml')]
530
+ assert_equal expected.sort, tr.vglob(:versions, 'file.yml').sort
411
531
  end
412
532
 
413
533
  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', '')
534
+ assert_equal [File.join(test_root, 'versions/file.yml')], tr.vglob(:versions, 'file.yml', nil)
535
+ assert_equal [File.join(test_root, 'versions/file.yml')], tr.vglob(:versions, 'file.yml', '')
416
536
  end
417
537
 
418
538
  def test_vglob_using_multiple_verson_patterns
419
539
  expected = [
420
- File.join(root, 'versions/file-0.1.2.yml'),
421
- File.join(root, 'versions/file-0.1.yml')]
540
+ File.join(test_root, 'versions/file-0.1.2.yml'),
541
+ File.join(test_root, 'versions/file-0.1.yml')]
422
542
 
423
- assert_equal expected, rfs.vglob(:versions, "file.yml", "0.1.2", "0.1")
543
+ assert_equal expected.sort, tr.vglob(:versions, "file.yml", "0.1.2", "0.1").sort
424
544
  end
425
545
 
426
546
  def test_vglob_filters_for_unique_files
427
- expected = [File.join(root, 'versions/file-0.1.2.yml')]
547
+ expected = [File.join(test_root, 'versions/file-0.1.2.yml')]
428
548
 
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)
549
+ assert_equal expected, tr.vglob(:versions, "file.yml", "0.1.2", "0.1.*")
457
550
  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
551
  end