nugrant 2.0.0.dev2 → 2.0.0.pre1

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 (54) hide show
  1. checksums.yaml +6 -14
  2. data/.gitignore +2 -1
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +148 -3
  5. data/Gemfile +8 -20
  6. data/README.md +266 -72
  7. data/Rakefile +1 -0
  8. data/lib/nugrant.rb +14 -6
  9. data/lib/nugrant/bag.rb +116 -62
  10. data/lib/nugrant/helper/bag.rb +19 -19
  11. data/lib/nugrant/helper/env/exporter.rb +208 -0
  12. data/lib/nugrant/helper/env/namer.rb +47 -0
  13. data/lib/nugrant/helper/parameters.rb +12 -0
  14. data/lib/nugrant/helper/stack.rb +86 -0
  15. data/lib/nugrant/mixin/parameters.rb +98 -0
  16. data/lib/nugrant/parameters.rb +14 -68
  17. data/lib/nugrant/vagrant/errors.rb +27 -0
  18. data/lib/nugrant/vagrant/v2/command/env.rb +101 -0
  19. data/lib/nugrant/vagrant/v2/command/helper.rb +30 -0
  20. data/lib/nugrant/vagrant/v2/command/parameters.rb +16 -4
  21. data/lib/nugrant/vagrant/v2/command/restricted_keys.rb +60 -0
  22. data/lib/nugrant/vagrant/v2/command/root.rb +12 -2
  23. data/lib/nugrant/vagrant/v2/config/user.rb +9 -21
  24. data/lib/nugrant/vagrant/v2/plugin.rb +0 -1
  25. data/lib/nugrant/version.rb +1 -1
  26. data/locales/en.yml +13 -0
  27. data/nugrant.gemspec +3 -7
  28. data/test/lib/nugrant/helper/env/test_exporter.rb +238 -0
  29. data/test/lib/nugrant/helper/test_bag.rb +16 -0
  30. data/test/lib/nugrant/helper/test_parameters.rb +17 -0
  31. data/test/lib/nugrant/helper/test_stack.rb +152 -0
  32. data/test/lib/nugrant/test_bag.rb +132 -22
  33. data/test/lib/nugrant/test_config.rb +95 -92
  34. data/test/lib/nugrant/test_parameters.rb +232 -177
  35. data/test/lib/test_helper.rb +3 -0
  36. data/test/resources/json/params_user_nil_values.json +9 -0
  37. data/test/resources/vagrantfiles/v2.defaults_mixed_string_symbols +18 -0
  38. data/test/resources/vagrantfiles/v2.defaults_null_values_in_vagrantuser +23 -0
  39. data/test/resources/vagrantfiles/v2.defaults_using_string +18 -0
  40. data/test/resources/vagrantfiles/v2.defaults_using_symbol +18 -0
  41. data/test/resources/{Vagrantfile.v2.empty → vagrantfiles/v2.empty} +0 -2
  42. data/test/resources/{Vagrantfile.v2.fake → vagrantfiles/v2.fake} +4 -3
  43. data/test/resources/vagrantfiles/v2.missing_parameter +3 -0
  44. data/test/resources/{Vagrantfile.v2.real → vagrantfiles/v2.real} +0 -2
  45. data/test/resources/yaml/params_user_nil_values.yml +5 -0
  46. metadata +55 -88
  47. data/lib/nugrant/vagrant/v1/command/parameters.rb +0 -134
  48. data/lib/nugrant/vagrant/v1/command/root.rb +0 -81
  49. data/lib/nugrant/vagrant/v1/config/user.rb +0 -37
  50. data/lib/nugrant/vagrant/v1/plugin.rb +0 -6
  51. data/lib/vagrant_init.rb +0 -2
  52. data/test/resources/Vagrantfile.v1.empty +0 -2
  53. data/test/resources/Vagrantfile.v1.fake +0 -10
  54. data/test/resources/Vagrantfile.v1.real +0 -19
@@ -1,240 +1,295 @@
1
+ require 'minitest/autorun'
2
+
1
3
  require 'nugrant'
4
+ require 'nugrant/helper/parameters'
2
5
  require 'nugrant/parameters'
3
- require 'test/unit'
4
6
 
5
- class Nugrant::TestParameters < Test::Unit::TestCase
6
- @@FORMATS = [:json, :yaml]
7
- @@INVALID_PATH = "impossible_file_path.yamljson.impossible"
7
+ module Nugrant
8
+ class TestParameters < ::Minitest::Test
8
9
 
9
- def create_parameters(format, current_filename, user_filename, system_filename)
10
- extension = case
11
- when format = :json
12
- "json"
13
- when format = :yaml
14
- "yml"
15
- else
16
- raise ArgumentError, "Format [#{format}] is currently not supported"
17
- end
10
+ @@FORMATS = [:json, :yaml]
11
+ @@INVALID_PATH = "impossible_file_path.yamljson.impossible"
18
12
 
19
- resource_path = File.expand_path("#{File.dirname(__FILE__)}/../../resources/#{format}")
13
+ def create_parameters(format, current_filename, user_filename, system_filename)
14
+ extension = case
15
+ when format = :json
16
+ "json"
17
+ when format = :yaml
18
+ "yml"
19
+ else
20
+ raise ArgumentError, "Format [#{format}] is currently not supported"
21
+ end
20
22
 
21
- current_path = "#{resource_path}/#{current_filename}.#{extension}" if current_filename
22
- user_path = "#{resource_path}/#{user_filename}.#{extension}" if user_filename
23
- system_path = "#{resource_path}/#{system_filename}.#{extension}" if system_filename
23
+ resource_path = File.expand_path("#{File.dirname(__FILE__)}/../../resources/#{format}")
24
24
 
25
- return Nugrant::Parameters.new({
26
- :config => {
25
+ current_path = "#{resource_path}/#{current_filename}.#{extension}" if current_filename
26
+ user_path = "#{resource_path}/#{user_filename}.#{extension}" if user_filename
27
+ system_path = "#{resource_path}/#{system_filename}.#{extension}" if system_filename
28
+
29
+ return Nugrant::Parameters.new({
27
30
  :format => format,
28
31
  :current_path => current_path,
29
32
  :user_path => user_path,
30
33
  :system_path => system_path,
31
- },
32
- })
33
- end
34
+ })
35
+ end
34
36
 
35
- def assert_level(parameters, results)
36
- results.each do |key, value|
37
- assert_equal(value, parameters.send(key), "array[#{key}]")
38
- assert_equal(value, parameters[key], "array[#{key}]")
37
+ def assert_all_access_equal(expected, parameters, key)
38
+ assert_equal(expected, parameters.method_missing(key.to_sym), "parameters.#{key.to_s}")
39
+ assert_equal(expected, parameters[key.to_s], "parameters[#{key.to_s}]")
40
+ assert_equal(expected, parameters[key.to_sym], "parameters[#{key.to_sym}]")
39
41
  end
40
42
 
41
- assert_key_error(parameters, "0.0.0")
42
- end
43
+ def assert_level(parameters, results)
44
+ results.each do |key, value|
45
+ assert_all_access_equal(value, parameters, key)
46
+ end
43
47
 
44
- def assert_key_error(parameters, key)
45
- assert_raise(KeyError) do
46
- parameters[key]
48
+ assert_key_error(parameters, "0.0.0")
47
49
  end
48
- end
49
50
 
50
- def test_params_level_1()
51
- formats.each do |format|
52
- parameters = create_parameters(format, "params_current_1", "params_user_1", "params_system_1")
53
-
54
- assert_level(parameters, {
55
- :'1.1.1' => "current",
56
- :'1.1.0' => "current",
57
- :'1.0.1' => "current",
58
- :'0.1.1' => "user",
59
- :'1.0.0' => "current",
60
- :'0.1.0' => "user",
61
- :'0.0.1' => "system",
62
- })
51
+ def assert_key_error(parameters, key)
52
+ assert_raises(KeyError) do
53
+ parameters[key]
54
+ end
63
55
  end
64
- end
65
56
 
66
- def test_params_level_2()
67
- formats.each do |format|
68
- parameters = create_parameters(format, "params_current_2", "params_user_2", "params_system_2")
69
-
70
- run_second_level(parameters, :'1.1.1', {
71
- :'1.1.1' => "current",
72
- :'1.1.0' => "current",
73
- :'1.0.1' => "current",
74
- :'0.1.1' => "user",
75
- :'1.0.0' => "current",
76
- :'0.1.0' => "user",
77
- :'0.0.1' => "system",
78
- })
57
+ def test_params_level_1()
58
+ formats.each do |format|
59
+ parameters = create_parameters(format, "params_current_1", "params_user_1", "params_system_1")
60
+
61
+ assert_level(parameters, {
62
+ :'1.1.1' => "current",
63
+ :'1.1.0' => "current",
64
+ :'1.0.1' => "current",
65
+ :'0.1.1' => "user",
66
+ :'1.0.0' => "current",
67
+ :'0.1.0' => "user",
68
+ :'0.0.1' => "system",
69
+ })
70
+ end
71
+ end
79
72
 
80
- run_second_level(parameters, :'1.1.0', {
81
- :'1.1.1' => "current",
82
- :'1.1.0' => "current",
83
- :'1.0.1' => "current",
84
- :'0.1.1' => "user",
85
- :'1.0.0' => "current",
86
- :'0.1.0' => "user",
87
- })
73
+ def test_params_level_2()
74
+ formats.each do |format|
75
+ parameters = create_parameters(format, "params_current_2", "params_user_2", "params_system_2")
76
+
77
+ run_second_level(parameters, :'1.1.1', {
78
+ :'1.1.1' => "current",
79
+ :'1.1.0' => "current",
80
+ :'1.0.1' => "current",
81
+ :'0.1.1' => "user",
82
+ :'1.0.0' => "current",
83
+ :'0.1.0' => "user",
84
+ :'0.0.1' => "system",
85
+ })
86
+
87
+ run_second_level(parameters, :'1.1.0', {
88
+ :'1.1.1' => "current",
89
+ :'1.1.0' => "current",
90
+ :'1.0.1' => "current",
91
+ :'0.1.1' => "user",
92
+ :'1.0.0' => "current",
93
+ :'0.1.0' => "user",
94
+ })
95
+
96
+ run_second_level(parameters, :'1.0.1', {
97
+ :'1.1.1' => "current",
98
+ :'1.1.0' => "current",
99
+ :'1.0.1' => "current",
100
+ :'0.1.1' => "system",
101
+ :'1.0.0' => "current",
102
+ :'0.0.1' => "system",
103
+ })
104
+
105
+ run_second_level(parameters, :'0.1.1', {
106
+ :'1.1.1' => "user",
107
+ :'1.1.0' => "user",
108
+ :'1.0.1' => "system",
109
+ :'0.1.1' => "user",
110
+ :'0.1.0' => "user",
111
+ :'0.0.1' => "system",
112
+ })
113
+
114
+ run_second_level(parameters, :'1.0.0', {
115
+ :'1.1.1' => "current",
116
+ :'1.1.0' => "current",
117
+ :'1.0.1' => "current",
118
+ :'1.0.0' => "current",
119
+ })
120
+
121
+ run_second_level(parameters, :'0.1.0', {
122
+ :'1.1.1' => "user",
123
+ :'1.1.0' => "user",
124
+ :'0.1.1' => "user",
125
+ :'0.1.0' => "user",
126
+ })
127
+
128
+ run_second_level(parameters, :'0.0.1', {
129
+ :'1.1.1' => "system",
130
+ :'1.0.1' => "system",
131
+ :'0.1.1' => "system",
132
+ :'0.0.1' => "system",
133
+ })
134
+
135
+ assert_key_error(parameters, :'0.0.0')
136
+ end
137
+ end
88
138
 
89
- run_second_level(parameters, :'1.0.1', {
90
- :'1.1.1' => "current",
91
- :'1.1.0' => "current",
92
- :'1.0.1' => "current",
93
- :'0.1.1' => "system",
94
- :'1.0.0' => "current",
95
- :'0.0.1' => "system",
96
- })
139
+ def run_second_level(parameters, key, results)
140
+ assert_level(parameters.send(key), results)
141
+ assert_level(parameters[key], results)
97
142
 
98
- run_second_level(parameters, :'0.1.1', {
99
- :'1.1.1' => "user",
100
- :'1.1.0' => "user",
101
- :'1.0.1' => "system",
102
- :'0.1.1' => "user",
103
- :'0.1.0' => "user",
104
- :'0.0.1' => "system",
105
- })
143
+ assert_key_error(parameters, :'0.0.0')
144
+ end
106
145
 
107
- run_second_level(parameters, :'1.0.0', {
108
- :'1.1.1' => "current",
109
- :'1.1.0' => "current",
110
- :'1.0.1' => "current",
111
- :'1.0.0' => "current",
112
- })
146
+ def test_params_array()
147
+ file_path = "params_array"
148
+ formats.each do |format|
149
+ parameters = create_parameters(format, file_path, invalid_path, invalid_path)
113
150
 
114
- run_second_level(parameters, :'0.1.0', {
115
- :'1.1.1' => "user",
116
- :'1.1.0' => "user",
117
- :'0.1.1' => "user",
118
- :'0.1.0' => "user",
119
- })
151
+ assert_equal(["1", "2", "3"], parameters[:level1][:level2])
152
+ end
153
+ end
120
154
 
121
- run_second_level(parameters, :'0.0.1', {
122
- :'1.1.1' => "system",
123
- :'1.0.1' => "system",
124
- :'0.1.1' => "system",
125
- :'0.0.1' => "system",
126
- })
155
+ def test_file_nil()
156
+ run_test_file_invalid(nil)
157
+ end
127
158
 
128
- assert_key_error(parameters, :'0.0.0')
159
+ def test_file_does_not_exist()
160
+ run_test_file_invalid("impossible_file_path.yml.impossible")
129
161
  end
130
- end
131
162
 
132
- def run_second_level(parameters, key, results)
133
- assert_level(parameters.send(key), results)
134
- assert_level(parameters[key], results)
163
+ def run_test_file_invalid(invalid_value)
164
+ formats.each do |format|
165
+ parameters = create_parameters(format, "params_simple", invalid_path, invalid_path)
166
+ assert_all_access_equal("value", parameters, "test")
135
167
 
136
- assert_key_error(parameters, :'0.0.0')
137
- end
168
+ parameters = create_parameters(format, invalid_path, "params_simple", invalid_path)
169
+ assert_all_access_equal("value", parameters, "test")
138
170
 
139
- def test_params_array()
140
- file_path = "params_array"
141
- formats.each do |format|
142
- parameters = create_parameters(format, file_path, invalid_path, invalid_path)
171
+ parameters = create_parameters(format, invalid_path, invalid_path, "params_simple")
172
+ assert_all_access_equal("value", parameters, "test")
143
173
 
144
- assert_equal(["1", "2", "3"], parameters[:level1][:level2])
174
+ parameters = create_parameters(format, invalid_path, invalid_path, invalid_path)
175
+ assert(parameters)
176
+ end
145
177
  end
146
- end
147
178
 
148
- def test_file_nil()
149
- run_test_file_invalid(nil)
150
- end
179
+ def test_params_windows_eol()
180
+ run_test_params_eol("params_windows_eol")
181
+ end
151
182
 
152
- def test_file_does_not_exist()
153
- run_test_file_invalid("impossible_file_path.yml.impossible")
154
- end
183
+ def test_params_unix_eol()
184
+ run_test_params_eol("params_unix_eol")
185
+ end
155
186
 
156
- def run_test_file_invalid(invalid_value)
157
- formats.each do |format|
158
- parameters = create_parameters(format, "params_simple", invalid_path, invalid_path)
159
- assert_equal("value", parameters[:test])
187
+ def run_test_params_eol(file_path)
188
+ formats.each do |format|
189
+ parameters = create_parameters(format, file_path, invalid_path, invalid_path)
160
190
 
161
- parameters = create_parameters(format, invalid_path, "params_simple", invalid_path)
162
- assert_equal("value", parameters[:test])
191
+ assert_all_access_equal("value1", parameters, 'level1')
192
+ assert_all_access_equal("value2", parameters['level2'], 'first')
193
+ end
194
+ end
163
195
 
164
- parameters = create_parameters(format, invalid_path, invalid_path, "params_simple")
165
- assert_equal("value", parameters[:test])
196
+ def test_restricted_defaults_usage()
197
+ formats.each do |format|
198
+ parameters = create_parameters(format, "params_defaults_at_root", invalid_path, invalid_path)
166
199
 
167
- parameters = create_parameters(format, invalid_path, invalid_path, invalid_path)
168
- assert_not_nil(parameters)
169
- end
170
- end
200
+ assert_all_access_equal("value", parameters, :defaults)
201
+ end
171
202
 
172
- def test_params_windows_eol()
173
- run_test_params_eol("params_windows_eol")
174
- end
203
+ formats.each do |format|
204
+ parameters = create_parameters(format, "params_defaults_not_at_root", invalid_path, invalid_path)
175
205
 
176
- def test_params_unix_eol()
177
- run_test_params_eol("params_unix_eol")
178
- end
206
+ assert_all_access_equal("value", parameters.level, :defaults)
207
+ end
208
+ end
179
209
 
180
- def run_test_params_eol(file_path)
181
- formats.each do |format|
182
- parameters = create_parameters(format, file_path, invalid_path, invalid_path)
210
+ def test_defaults()
211
+ formats.each do |format|
212
+ parameters = create_parameters(format, "params_simple", invalid_path, invalid_path)
213
+ parameters.defaults = {:test => "override1", :level => "new1"}
183
214
 
184
- assert_equal("value1", parameters[:level1])
185
- assert_equal("value2", parameters[:level2][:first])
215
+ assert_all_access_equal("value", parameters, 'test')
216
+ assert_all_access_equal("new1", parameters, 'level')
217
+ end
186
218
  end
187
- end
188
219
 
189
- def test_restricted_defaults_usage()
190
- formats.each do |format|
191
- parameters = create_parameters(format, "params_defaults_at_root", invalid_path, invalid_path)
220
+ def test_empty_file()
221
+ formats.each do |format|
222
+ parameters = create_parameters(format, "params_empty", invalid_path, invalid_path)
223
+ parameters.defaults = {:test => "value"}
192
224
 
193
- assert_equal("value", parameters.defaults)
225
+ assert_all_access_equal("value", parameters, 'test')
226
+ end
194
227
  end
195
228
 
196
- formats.each do |format|
197
- parameters = create_parameters(format, "params_defaults_not_at_root", invalid_path, invalid_path)
229
+ def test_file_not_hash()
230
+ ["boolean", "list"].each do |wrong_type|
231
+ formats.each do |format|
232
+ parameters = create_parameters(format, "params_#{wrong_type}", invalid_path, invalid_path)
233
+ parameters.defaults = {:test => "value"}
198
234
 
199
- assert_equal("value", parameters.level.defaults)
235
+ assert_all_access_equal("value", parameters, 'test')
236
+ end
237
+ end
200
238
  end
201
- end
202
239
 
203
- def test_defaults()
204
- formats.each do |format|
205
- parameters = create_parameters(format, "params_simple", invalid_path, invalid_path)
206
- parameters.defaults = {:test => "override1", :level => "new1"}
240
+ def test_nil_values()
241
+ formats.each do |format|
242
+ parameters = create_parameters(format, "params_user_nil_values", invalid_path, invalid_path)
243
+ parameters.defaults = {:nil => "Not nil", :deep => {:nil => "Not nil", :deeper => {:nil => "Not nil"}}}
244
+
245
+ assert_all_access_equal("Not nil", parameters[:deep][:deeper], :nil)
246
+ assert_all_access_equal("Not nil", parameters[:deep], :nil)
247
+ assert_all_access_equal("Not nil", parameters, :nil)
248
+ end
249
+
250
+ formats.each do |format|
251
+ parameters = create_parameters(format, "params_user_nil_values", invalid_path, invalid_path)
207
252
 
208
- assert_equal("value", parameters[:test])
209
- assert_equal("new1", parameters[:level])
253
+ assert_all_access_equal(nil, parameters[:deep][:deeper], :nil)
254
+ assert_all_access_equal(nil, parameters[:deep], :nil)
255
+ assert_all_access_equal(nil, parameters, :nil)
256
+ end
210
257
  end
211
- end
212
258
 
213
- def test_empty_file()
214
- formats.each do |format|
215
- parameters = create_parameters(format, "params_empty", invalid_path, invalid_path)
216
- parameters.defaults = {:test => "value"}
259
+ def test_restricted_keys_are_still_accessible
260
+ keys = Helper::Parameters.restricted_keys()
261
+ elements = Hash[
262
+ keys.map do |key|
263
+ [key, "#{key.to_s} - value"]
264
+ end
265
+ ]
266
+
267
+ parameters = create_parameters(:json, invalid_path, invalid_path, invalid_path)
268
+ parameters.defaults = elements
217
269
 
218
- assert_equal("value", parameters[:test])
270
+ keys.each do |key|
271
+ assert_equal("#{key.to_s} - value", parameters[key.to_s], "parameters[#{key.to_s}]")
272
+ assert_equal("#{key.to_s} - value", parameters[key.to_sym], "parameters[#{key.to_sym}]")
273
+ end
219
274
  end
220
- end
221
275
 
222
- def test_file_not_hash()
223
- ["boolean", "list"].each do |wrong_type|
224
- formats.each do |format|
225
- parameters = create_parameters(format, "params_#{wrong_type}", invalid_path, invalid_path)
226
- parameters.defaults = {:test => "value"}
276
+ def test_hash_method_collect()
277
+ parameters = create_parameters(:json, "params_simple", invalid_path, invalid_path)
278
+ parameters.defaults = {"test" => "override1", :level => "new1"}
227
279
 
228
- assert_equal("value", parameters[:test])
280
+ pairs = parameters.collect do |key, value|
281
+ [key, value]
229
282
  end
283
+
284
+ assert_equal([[:test, "value"], [:level, "new1"]], pairs)
230
285
  end
231
- end
232
286
 
233
- def formats()
234
- @@FORMATS
235
- end
287
+ def formats()
288
+ @@FORMATS
289
+ end
236
290
 
237
- def invalid_path()
238
- @@INVALID_PATH
291
+ def invalid_path()
292
+ @@INVALID_PATH
293
+ end
239
294
  end
240
295
  end