puppet-retrospec 1.6.0 → 1.6.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +1 -1
- data/lib/retrospec/plugins/v1/plugin/generators/function_generator.rb +14 -1
- data/lib/retrospec/plugins/v1/plugin/generators/module_data_generator.rb +1 -0
- data/lib/retrospec/plugins/v1/plugin/generators/serializers/rspec_dumper.rb +34 -3
- data/lib/retrospec/plugins/v1/plugin/version.rb +1 -1
- data/spec/fixtures/fixture_modules/one_resource_module/manifests/parameter_logic.pp +5 -0
- data/spec/fixtures/fixture_modules/sample_module/manifests/init.pp +7 -0
- data/spec/fixtures/functions/absolute.pp +4 -0
- data/spec/unit/generators/definition_generator_spec.rb +1 -1
- data/spec/unit/generators/function_generator_spec.rb +10 -0
- data/spec/unit/generators/hostclass_generator_spec.rb +3 -1
- data/spec/unit/generators/serializers/rspec_dumper_spec.rb +2 -2
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62765af0524e72cd3924e3c4406b7f418896e4f5
|
4
|
+
data.tar.gz: 50210328a846af0f1bbdec63765e9d4ee53caa38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a7b1e4da9e4a6234d01cd6f0c53b0b28f1305d83678e0e2d510ea61dda03f8e43ea691bd284fb9ed6983d8a9257441b5c6f60663cb0d13c91e620a570a70792
|
7
|
+
data.tar.gz: 4551ab67fa1fea42ce1dd427984dc04f1a8765c542f2ff69aec5341305471b09699c67757a2fc060b0db645774fc37910bd7d7addeb08d626419851b8b5dd653
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
## 1.6.1
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
* Require the base generator for module data
|
9
|
+
* Fixes #85 - native functions do not contain module name
|
10
|
+
* Fixes #92 - that requires throws errors
|
11
|
+
* Fixes #93 - native functions spec tests contain full namespaced name
|
12
|
+
* Fixes #87 - evaluation fails when parameters have logic
|
5
13
|
## 1.6.0
|
6
14
|
* Fixes #77 - class requirements is not coded correctly
|
7
15
|
* Fixes #75 - pdk cannot include retrospec due to character limit
|
data/Gemfile.lock
CHANGED
@@ -33,6 +33,11 @@ module Retrospec
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
# @return [String] - returns the main class name by reading the init.pp file
|
37
|
+
def main_class_name
|
38
|
+
File.read(File.join(module_path, 'manifests', 'init.pp')).scan(/\s*class\s(\w+)/).flatten.first || ''
|
39
|
+
end
|
40
|
+
|
36
41
|
# returns v3,v4, native to specify the function type
|
37
42
|
def function_type
|
38
43
|
context.function_type
|
@@ -176,6 +181,11 @@ Generates a new function with the given name.
|
|
176
181
|
File.extname(function_file) == '.pp'
|
177
182
|
end
|
178
183
|
|
184
|
+
# @return [String] - returns the namespaced function name ie. stdlib::round
|
185
|
+
def namespaced_name
|
186
|
+
[main_class_name, function_name].join('::')
|
187
|
+
end
|
188
|
+
|
179
189
|
# @return [Boolean] true if the function file is a v4 function
|
180
190
|
def v4_function?(function_file)
|
181
191
|
# mod_name/lib/puppet/functions
|
@@ -220,7 +230,10 @@ Generates a new function with the given name.
|
|
220
230
|
puts "Function syntax is bad for #{file}, skipping".warning
|
221
231
|
next # lets skip functions that have bad syntax
|
222
232
|
end
|
223
|
-
|
233
|
+
# separate out namespace for v4 and native functions
|
234
|
+
# TODO should we create sub directories for triple namespace functions one::two::three?
|
235
|
+
file_name = file_data.name.to_s.split('::').last
|
236
|
+
spec_path = File.join(spec_file_dir, "#{file_name}_spec.rb")
|
224
237
|
spec_files << spec_path
|
225
238
|
safe_create_template_file(spec_path, File.join(template_dir, template_file), file_data)
|
226
239
|
end
|
@@ -222,6 +222,7 @@ module Retrospec
|
|
222
222
|
name_prefix = o.captures_rest ? '*' : ''
|
223
223
|
name_part = "#{name_prefix}#{o.name}"
|
224
224
|
data_type = dump_transform(dump_transform(o.value)).first || dump_transform(o.type_expr)
|
225
|
+
|
225
226
|
# records what is most likely a variable of some time and its value
|
226
227
|
variable_value = dump_transform(o.value)
|
227
228
|
# need a case for Puppet::Pops::Model::LambdaExpression
|
@@ -273,6 +274,10 @@ module Retrospec
|
|
273
274
|
result
|
274
275
|
end
|
275
276
|
|
277
|
+
|
278
|
+
# @note this is the starting point where a test is created. A resource can include a class or define
|
279
|
+
# each resource contains parameters which can have variables or functions as values.
|
280
|
+
# @param o [Puppet::Pops::Model::ResourceBody]
|
276
281
|
def dump_ResourceBody o
|
277
282
|
type_name = dump_transform(o.eContainer.type_name).gsub('::', '__')
|
278
283
|
title = dump_transform(o.title).inspect
|
@@ -282,19 +287,22 @@ module Retrospec
|
|
282
287
|
if o.operations.count > 0
|
283
288
|
result[-1] += '.with('
|
284
289
|
result << [:break]
|
290
|
+
# each operation should be a resource parameter and value
|
285
291
|
o.operations.each do |p|
|
292
|
+
next unless p
|
286
293
|
# this is a bit of a hack but the correct fix is to patch puppet
|
287
294
|
result << dump_transform(p) << :break
|
288
295
|
end
|
289
296
|
result.pop # remove last line break which is easier than using conditional in loop
|
297
|
+
result << [:dedent, :break, ')']
|
290
298
|
unless [::Puppet::Pops::Model::CallNamedFunctionExpression, ::Puppet::Pops::Model::BlockExpression].include?(o.eContainer.eContainer.class)
|
291
299
|
result << dump_Resource_Relationship(o)
|
292
300
|
end
|
293
|
-
result << [:dedent, :break, ')']
|
294
301
|
result << [:end]
|
295
302
|
result << [:dedent]
|
303
|
+
result << [:break]
|
296
304
|
else
|
297
|
-
result << [:dedent,:dedent, :break,'end',:dedent, ' ']
|
305
|
+
result << [:dedent,:dedent, :break,'end',:dedent, ' ', :break]
|
298
306
|
end
|
299
307
|
result
|
300
308
|
end
|
@@ -304,6 +312,12 @@ module Retrospec
|
|
304
312
|
[]
|
305
313
|
end
|
306
314
|
|
315
|
+
# @param o [Puppet::Pops::Model::NamedAccessExpression]
|
316
|
+
# ie. $::var1.split(';')
|
317
|
+
def dump_NamedAccessExpression o
|
318
|
+
[do_dump(o.left_expr), ".", do_dump(o.right_expr)]
|
319
|
+
end
|
320
|
+
|
307
321
|
# Interpolated strings are shown as (cat seg0 seg1 ... segN)
|
308
322
|
def dump_ConcatenatedString o
|
309
323
|
o.segments.collect {|x| dump_transform(x)}.join
|
@@ -330,6 +344,7 @@ module Retrospec
|
|
330
344
|
end
|
331
345
|
|
332
346
|
# this doesn't return anything as we use it to store variables
|
347
|
+
# @param o [Puppet::Pops::Model::AssignmentExpression]
|
333
348
|
def dump_AssignmentExpression o
|
334
349
|
oper = o.operator.to_s
|
335
350
|
result = []
|
@@ -354,6 +369,7 @@ module Retrospec
|
|
354
369
|
end
|
355
370
|
end
|
356
371
|
|
372
|
+
# @param o [Puppet::Pops::Model::BlockExpression]
|
357
373
|
def dump_BlockExpression o
|
358
374
|
result = [:break]
|
359
375
|
o.statements.each {|x| result << dump_transform(x) }
|
@@ -361,6 +377,7 @@ module Retrospec
|
|
361
377
|
end
|
362
378
|
|
363
379
|
# this is the beginning of the resource not the body itself
|
380
|
+
# @param o [Puppet::Pops::Model::ResourceExpression]
|
364
381
|
def dump_ResourceExpression o
|
365
382
|
result = []
|
366
383
|
o.bodies.each do |b|
|
@@ -371,11 +388,13 @@ module Retrospec
|
|
371
388
|
|
372
389
|
# defines the resource expression and outputs -> when used
|
373
390
|
# this would be the place to insert relationsip matchers
|
391
|
+
# @param o [Puppet::Pops::Model::RelationshipExpression]
|
374
392
|
def dump_RelationshipExpression o
|
375
393
|
[dump_transform(o.left_expr), dump_transform(o.right_expr)]
|
376
394
|
end
|
377
395
|
|
378
396
|
# Produces (name => expr) or (name +> expr)
|
397
|
+
# @param o [Puppet::Pops::Model::AttributeOperation]
|
379
398
|
def dump_AttributeOperation o
|
380
399
|
key = o.attribute_name
|
381
400
|
value = dump_transform(o.value_expr) || nil
|
@@ -384,7 +403,7 @@ module Retrospec
|
|
384
403
|
|
385
404
|
# x[y] prints as (slice x y)
|
386
405
|
# @return [String] the value of the array expression
|
387
|
-
# @param [Puppet::Pops::Model::AccessExpression]
|
406
|
+
# @param o [Puppet::Pops::Model::AccessExpression]
|
388
407
|
def dump_AccessExpression o
|
389
408
|
# o.keys.pop is the item to get in the array
|
390
409
|
# o.left_expr is the array
|
@@ -401,6 +420,18 @@ module Retrospec
|
|
401
420
|
end
|
402
421
|
end
|
403
422
|
|
423
|
+
|
424
|
+
# @return [String] the value of the expression or example value
|
425
|
+
# @param o [Puppet::Pops::Model::CallMethodExpression]
|
426
|
+
def dump_CallMethodExpression o
|
427
|
+
# ie. ["call-method", [".", "$::facttest", "split"], "/"]
|
428
|
+
result = [o.rval_required ? "# some_value" : do_dump(o.functor_expr),'(' ]
|
429
|
+
o.arguments.collect {|a| result << do_dump(a) }
|
430
|
+
results << ')'
|
431
|
+
result << do_dump(o.lambda) if o.lambda
|
432
|
+
result
|
433
|
+
end
|
434
|
+
|
404
435
|
def dump_LiteralFloat o
|
405
436
|
o.value.to_s
|
406
437
|
end
|
@@ -66,7 +66,7 @@ describe Retrospec::Puppet::Generators::DefinitionGenerator do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'should have resources' do
|
69
|
-
resources = ["\n it do\n is_expected.to contain_notify('hello')\n end "]
|
69
|
+
resources = ["\n it do\n is_expected.to contain_notify('hello')\n end \n"]
|
70
70
|
expect(context.resources).to eq(resources)
|
71
71
|
end
|
72
72
|
|
@@ -321,6 +321,16 @@ describe 'function_generator' do
|
|
321
321
|
expect(generator.v4_function?(path)).to eq false
|
322
322
|
end
|
323
323
|
|
324
|
+
it 'returns main class name' do
|
325
|
+
allow(generator).to receive(:function_type).and_return('native')
|
326
|
+
expect(generator.main_class_name).to eq('sample_module')
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'creates namespaced function name' do
|
330
|
+
allow(generator).to receive(:function_type).and_return('native')
|
331
|
+
expect(generator.namespaced_name).to eq('sample_module::awesome_parser')
|
332
|
+
end
|
333
|
+
|
324
334
|
it 'return native template path' do
|
325
335
|
allow(generator).to receive(:function_type).and_return('native')
|
326
336
|
expect(generator.template_dir).to match(/functions\/native/)
|
@@ -84,7 +84,9 @@ describe 'HostClassGenerator' do
|
|
84
84
|
File.join(spec_files_path, 'one_resource_spec.rb'),
|
85
85
|
File.join(spec_files_path, 'params_spec.rb'),
|
86
86
|
File.join(spec_files_path, 'array_param_spec.rb'),
|
87
|
-
File.join(spec_files_path, 'sub', 'settings_spec.rb')
|
87
|
+
File.join(spec_files_path, 'sub', 'settings_spec.rb'),
|
88
|
+
File.join(spec_files_path, 'parameter_logic_spec.rb')]
|
89
|
+
|
88
90
|
end
|
89
91
|
|
90
92
|
after(:each) do
|
@@ -222,8 +222,8 @@ describe 'rspec_serializer' do
|
|
222
222
|
|
223
223
|
it 'relationship_exp' do
|
224
224
|
output = serializer.dump(relationship_exp)
|
225
|
-
expect(output).to include(".that_comes_before('Sql::backup[MSSQLSERVER]')")
|
226
|
-
expect(output).to include(".that_requires('Class[sql::install]')")
|
225
|
+
expect(output).to include(")\n .that_comes_before('Sql::backup[MSSQLSERVER]')")
|
226
|
+
expect(output).to include(")\n .that_requires('Class[sql::install]')")
|
227
227
|
end
|
228
228
|
|
229
229
|
it 'should contain correct variables' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-retrospec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Osman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trollop
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/node_file.pp
|
165
165
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/one_define.pp
|
166
166
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/one_resource_class.pp
|
167
|
+
- spec/fixtures/fixture_modules/one_resource_module/manifests/parameter_logic.pp
|
167
168
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/params.pp
|
168
169
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/sub/settings.pp
|
169
170
|
- spec/fixtures/fixture_modules/one_resource_module/manifests/sub/settings_define.pp
|
@@ -175,11 +176,13 @@ files:
|
|
175
176
|
- spec/fixtures/fixture_modules/sample_module/lib/puppet/parser/functions/defined.rb
|
176
177
|
- spec/fixtures/fixture_modules/sample_module/lib/puppet/parser/functions/sha1.rb
|
177
178
|
- spec/fixtures/fixture_modules/sample_module/lib/puppet/reports/test
|
179
|
+
- spec/fixtures/fixture_modules/sample_module/manifests/init.pp
|
178
180
|
- spec/fixtures/fixture_modules/sample_module/spec/unit/facter/fix_installed_spec.rb
|
179
181
|
- spec/fixtures/fixture_modules/zero_resource_module/manifests/empty_class.pp
|
180
182
|
- spec/fixtures/fixture_modules/zero_resource_module/manifests/not_a_resource_defination.pp
|
181
183
|
- spec/fixtures/fixture_modules/zero_resource_module/metadata.json
|
182
184
|
- spec/fixtures/functions/abs.pp
|
185
|
+
- spec/fixtures/functions/absolute.pp
|
183
186
|
- spec/fixtures/host_class_test.txt
|
184
187
|
- spec/fixtures/manifests/apache.pp
|
185
188
|
- spec/fixtures/manifests/includes-class.pp
|