puppet-lint 2.3.0 → 2.3.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.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +74 -0
  3. data/.rubocop_todo.yml +89 -0
  4. data/.travis.yml +11 -9
  5. data/CHANGELOG.md +54 -0
  6. data/Gemfile +3 -0
  7. data/Rakefile +14 -3
  8. data/appveyor.yml +1 -4
  9. data/bin/puppet-lint +1 -1
  10. data/lib/puppet-lint.rb +25 -21
  11. data/lib/puppet-lint/bin.rb +15 -19
  12. data/lib/puppet-lint/checkplugin.rb +24 -17
  13. data/lib/puppet-lint/checks.rb +42 -31
  14. data/lib/puppet-lint/configuration.rb +11 -8
  15. data/lib/puppet-lint/data.rb +236 -164
  16. data/lib/puppet-lint/lexer.rb +225 -203
  17. data/lib/puppet-lint/lexer/token.rb +34 -18
  18. data/lib/puppet-lint/optparser.rb +33 -30
  19. data/lib/puppet-lint/plugins.rb +42 -38
  20. data/lib/puppet-lint/plugins/check_classes/arrow_on_right_operand_line.rb +26 -28
  21. data/lib/puppet-lint/plugins/check_classes/autoloader_layout.rb +21 -20
  22. data/lib/puppet-lint/plugins/check_classes/class_inherits_from_params_class.rb +8 -9
  23. data/lib/puppet-lint/plugins/check_classes/code_on_top_scope.rb +9 -8
  24. data/lib/puppet-lint/plugins/check_classes/inherits_across_namespaces.rb +12 -11
  25. data/lib/puppet-lint/plugins/check_classes/names_containing_dash.rb +13 -12
  26. data/lib/puppet-lint/plugins/check_classes/names_containing_uppercase.rb +14 -13
  27. data/lib/puppet-lint/plugins/check_classes/nested_classes_or_defines.rb +9 -10
  28. data/lib/puppet-lint/plugins/check_classes/parameter_order.rb +40 -31
  29. data/lib/puppet-lint/plugins/check_classes/right_to_left_relationship.rb +3 -2
  30. data/lib/puppet-lint/plugins/check_classes/variable_scope.rb +21 -24
  31. data/lib/puppet-lint/plugins/check_comments/slash_comments.rb +3 -2
  32. data/lib/puppet-lint/plugins/check_comments/star_comments.rb +6 -5
  33. data/lib/puppet-lint/plugins/check_conditionals/case_without_default.rb +21 -20
  34. data/lib/puppet-lint/plugins/check_conditionals/selector_inside_resource.rb +10 -13
  35. data/lib/puppet-lint/plugins/check_documentation/documentation.rb +26 -17
  36. data/lib/puppet-lint/plugins/check_nodes/unquoted_node_name.rb +11 -11
  37. data/lib/puppet-lint/plugins/check_resources/duplicate_params.rb +4 -3
  38. data/lib/puppet-lint/plugins/check_resources/ensure_first_param.rb +17 -18
  39. data/lib/puppet-lint/plugins/check_resources/ensure_not_symlink_target.rb +17 -16
  40. data/lib/puppet-lint/plugins/check_resources/file_mode.rb +22 -23
  41. data/lib/puppet-lint/plugins/check_resources/unquoted_file_mode.rb +14 -13
  42. data/lib/puppet-lint/plugins/check_resources/unquoted_resource_title.rb +9 -8
  43. data/lib/puppet-lint/plugins/check_strings/double_quoted_strings.rb +8 -8
  44. data/lib/puppet-lint/plugins/check_strings/only_variable_string.rb +29 -42
  45. data/lib/puppet-lint/plugins/check_strings/puppet_url_without_modules.rb +5 -4
  46. data/lib/puppet-lint/plugins/check_strings/quoted_booleans.rb +3 -2
  47. data/lib/puppet-lint/plugins/check_strings/single_quote_string_with_variables.rb +4 -3
  48. data/lib/puppet-lint/plugins/check_strings/variables_not_enclosed.rb +3 -2
  49. data/lib/puppet-lint/plugins/check_variables/variable_contains_dash.rb +9 -8
  50. data/lib/puppet-lint/plugins/check_variables/variable_is_lowercase.rb +9 -8
  51. data/lib/puppet-lint/plugins/check_whitespace/140chars.rb +9 -9
  52. data/lib/puppet-lint/plugins/check_whitespace/2sp_soft_tabs.rb +4 -3
  53. data/lib/puppet-lint/plugins/check_whitespace/80chars.rb +10 -10
  54. data/lib/puppet-lint/plugins/check_whitespace/arrow_alignment.rb +23 -22
  55. data/lib/puppet-lint/plugins/check_whitespace/hard_tabs.rb +3 -2
  56. data/lib/puppet-lint/plugins/check_whitespace/trailing_whitespace.rb +3 -2
  57. data/lib/puppet-lint/tasks/puppet-lint.rb +3 -3
  58. data/lib/puppet-lint/version.rb +1 -1
  59. data/puppet-lint.gemspec +4 -4
  60. data/spec/puppet-lint/bin_spec.rb +268 -140
  61. data/spec/puppet-lint/checks_spec.rb +229 -0
  62. data/spec/puppet-lint/configuration_spec.rb +10 -9
  63. data/spec/puppet-lint/data_spec.rb +84 -0
  64. data/spec/puppet-lint/ignore_overrides_spec.rb +71 -40
  65. data/spec/puppet-lint/lexer/token_spec.rb +1 -1
  66. data/spec/puppet-lint/lexer_spec.rb +306 -73
  67. data/spec/puppet-lint/plugins/check_classes/arrow_on_right_operand_line_spec.rb +12 -6
  68. data/spec/puppet-lint/plugins/check_classes/autoloader_layout_spec.rb +10 -10
  69. data/spec/puppet-lint/plugins/check_classes/class_inherits_from_params_class_spec.rb +15 -11
  70. data/spec/puppet-lint/plugins/check_classes/code_on_top_scope_spec.rb +26 -21
  71. data/spec/puppet-lint/plugins/check_classes/inherits_across_namespaces_spec.rb +3 -3
  72. data/spec/puppet-lint/plugins/check_classes/name_contains_uppercase_spec.rb +4 -5
  73. data/spec/puppet-lint/plugins/check_classes/names_containing_dash_spec.rb +13 -0
  74. data/spec/puppet-lint/plugins/check_classes/nested_classes_or_defines_spec.rb +33 -25
  75. data/spec/puppet-lint/plugins/check_classes/parameter_order_spec.rb +80 -55
  76. data/spec/puppet-lint/plugins/check_classes/right_to_left_relationship_spec.rb +2 -2
  77. data/spec/puppet-lint/plugins/check_classes/variable_scope_spec.rb +165 -130
  78. data/spec/puppet-lint/plugins/check_comments/slash_comments_spec.rb +2 -2
  79. data/spec/puppet-lint/plugins/check_comments/star_comments_spec.rb +53 -35
  80. data/spec/puppet-lint/plugins/check_conditionals/case_without_default_spec.rb +59 -49
  81. data/spec/puppet-lint/plugins/check_conditionals/selector_inside_resource_spec.rb +18 -14
  82. data/spec/puppet-lint/plugins/check_documentation/documentation_spec.rb +14 -10
  83. data/spec/puppet-lint/plugins/check_nodes/unquoted_node_name_spec.rb +7 -7
  84. data/spec/puppet-lint/plugins/check_resources/duplicate_params_spec.rb +54 -44
  85. data/spec/puppet-lint/plugins/check_resources/ensure_first_param_spec.rb +114 -89
  86. data/spec/puppet-lint/plugins/check_resources/ensure_not_symlink_target_spec.rb +41 -30
  87. data/spec/puppet-lint/plugins/check_resources/file_mode_spec.rb +46 -40
  88. data/spec/puppet-lint/plugins/check_resources/unquoted_file_mode_spec.rb +46 -40
  89. data/spec/puppet-lint/plugins/check_resources/unquoted_resource_title_spec.rb +95 -71
  90. data/spec/puppet-lint/plugins/check_strings/double_quoted_strings_spec.rb +28 -24
  91. data/spec/puppet-lint/plugins/check_strings/only_variable_string_spec.rb +11 -9
  92. data/spec/puppet-lint/plugins/check_strings/puppet_url_without_modules_spec.rb +1 -2
  93. data/spec/puppet-lint/plugins/check_strings/single_quote_string_with_variables_spec.rb +18 -14
  94. data/spec/puppet-lint/plugins/check_variables/variable_contains_dash_spec.rb +1 -1
  95. data/spec/puppet-lint/plugins/check_variables/variable_is_lowercase_spec.rb +1 -1
  96. data/spec/puppet-lint/plugins/check_whitespace/140chars_spec.rb +22 -15
  97. data/spec/puppet-lint/plugins/check_whitespace/2sp_soft_tabs_spec.rb +8 -6
  98. data/spec/puppet-lint/plugins/check_whitespace/80chars_spec.rb +23 -29
  99. data/spec/puppet-lint/plugins/check_whitespace/arrow_alignment_spec.rb +588 -494
  100. data/spec/puppet-lint/plugins/check_whitespace/hard_tabs_spec.rb +1 -1
  101. data/spec/puppet-lint/plugins/check_whitespace/trailing_whitespace_spec.rb +27 -19
  102. data/spec/puppet-lint_spec.rb +2 -12
  103. data/spec/spec_helper.rb +35 -30
  104. metadata +6 -5
  105. data/lib/puppet-lint/monkeypatches.rb +0 -2
  106. data/lib/puppet-lint/monkeypatches/string_percent.rb +0 -52
  107. data/lib/puppet-lint/monkeypatches/string_prepend.rb +0 -13
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'arrow_on_right_operand_line' do
4
- {'chain' => '->', 'subscribe chain' => '~>'}.each do |name, operator|
4
+ { 'chain' => '->', 'subscribe chain' => '~>' }.each do |name, operator|
5
5
  context "#{name} operator" do
6
6
  context 'both operands on same line' do
7
7
  let(:code) { "Package['httpd'] #{operator} Service['httpd']" }
@@ -11,7 +11,8 @@ describe 'arrow_on_right_operand_line' do
11
11
 
12
12
  context 'arrow on the line of left operand' do
13
13
  let(:code) do
14
- "Package['httpd'] #{operator}
14
+ "
15
+ Package['httpd'] #{operator}
15
16
  Service['httpd']"
16
17
  end
17
18
 
@@ -27,17 +28,22 @@ describe 'arrow_on_right_operand_line' do
27
28
  end
28
29
 
29
30
  let(:fixed) do
30
- "Package['httpd']
31
+ "
32
+ Package['httpd']
31
33
  #{operator} Service['httpd']"
32
34
  end
33
35
 
34
- it { expect(manifest).to eq (fixed) }
36
+ it { expect(manifest).to eq(fixed) }
35
37
  end
36
38
  end
37
39
 
38
40
  context 'arrow on the line of right operand' do
39
- let(:code) { "Package['httpd']
40
- #{operator} Service['httpd']" }
41
+ let(:code) do
42
+ <<-END
43
+ Package['httpd']
44
+ #{operator} Service['httpd']
45
+ END
46
+ end
41
47
 
42
48
  it { expect(problems).to have(0).problems }
43
49
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe 'autoloader_layout' do
4
4
  context 'foo::bar in foo/manifests/bar.pp' do
5
- let(:code) { "class foo::bar { }" }
5
+ let(:code) { 'class foo::bar { }' }
6
6
  let(:path) { 'foo/manifests/bar.pp' }
7
7
 
8
8
  it 'should not detect any problems' do
@@ -43,14 +43,16 @@ describe 'autoloader_layout' do
43
43
  end
44
44
 
45
45
  context 'foo included in bar/manifests/init.pp' do
46
- let(:code) { "
47
- class bar {
48
- class {'foo':
49
- someparam => 'somevalue',
46
+ let(:code) do
47
+ <<-END
48
+ class bar {
49
+ class {'foo':
50
+ someparam => 'somevalue',
51
+ }
50
52
  }
51
- }
52
- "
53
- }
53
+ END
54
+ end
55
+
54
56
  let(:path) { 'bar/manifests/init.pp' }
55
57
 
56
58
  it 'should not detect any problems' do
@@ -100,6 +102,4 @@ describe 'autoloader_layout' do
100
102
  expect(problems).to have(0).problems
101
103
  end
102
104
  end
103
-
104
-
105
105
  end
@@ -4,29 +4,33 @@ describe 'class_inherits_from_params_class' do
4
4
  let(:msg) { 'class inheriting from params class' }
5
5
 
6
6
  context 'parameterised class that inherits from a params class' do
7
- let(:code) { "
8
- # commented
9
- class foo($bar = $name) inherits foo::params { }"
10
- }
7
+ let(:code) do
8
+ <<-END
9
+ # commented
10
+ class foo($bar = $name) inherits foo::params { }
11
+ END
12
+ end
11
13
 
12
14
  it 'should only detect a single problem' do
13
15
  expect(problems).to have(1).problem
14
16
  end
15
17
 
16
18
  it 'should create a warning' do
17
- expect(problems).to contain_warning(msg).on_line(3).in_column(40)
19
+ expect(problems).to contain_warning(msg).on_line(2).in_column(42)
18
20
  end
19
21
  end
20
22
 
21
23
  context 'class without parameters' do
22
- let(:code) {"
23
- class myclass {
24
+ let(:code) do
25
+ <<-END
26
+ class myclass {
24
27
 
25
- if ( $::lsbdistcodename == 'squeeze' ) {
26
- #TODO
28
+ if ( $::lsbdistcodename == 'squeeze' ) {
29
+ #TODO
30
+ }
27
31
  }
28
- }
29
- "}
32
+ END
33
+ end
30
34
 
31
35
  it 'should not detect any problems' do
32
36
  expect(problems).to have(0).problems
@@ -2,42 +2,47 @@ require 'spec_helper'
2
2
 
3
3
  describe 'code_on_top_scope' do
4
4
  describe 'comments outside class block' do
5
- let(:code) { "
6
- # Baz
7
- class foo:bar {
8
- }"
9
- }
5
+ let(:code) do
6
+ <<-END
7
+ # Baz
8
+ class foo:bar {
9
+ }
10
+ END
11
+ end
10
12
 
11
13
  its(:problems) { should be_empty }
12
14
  end
13
15
 
14
16
  describe 'new lines outside of class-define block' do
15
- let(:code) { "
17
+ let(:code) do
18
+ <<-END
16
19
 
17
- class foo:bar {
18
- }
20
+ class foo:bar {
21
+ }
19
22
 
20
- "
21
- }
23
+ END
24
+ end
22
25
 
23
26
  its(:problems) { should be_empty }
24
27
  end
25
28
 
26
29
  describe 'code outside class block' do
27
- let(:code) { "
28
- include('something')
30
+ let(:code) do
31
+ <<-END
32
+ include('something')
29
33
 
30
- # Baz
31
- class foo:bar {
32
- }
34
+ # Baz
35
+ class foo:bar {
36
+ }
33
37
 
34
- define whatever {
35
- }"
36
- }
38
+ define whatever {
39
+ }
40
+ END
41
+ end
37
42
 
38
- its(:problems) {
39
- should contain_warning("code outside of class or define block - include")
43
+ its(:problems) do
44
+ should contain_warning('code outside of class or define block - include')
40
45
  should have(4).problems
41
- }
46
+ end
42
47
  end
43
48
  end
@@ -4,7 +4,7 @@ describe 'inherits_across_namespaces' do
4
4
  let(:msg) { 'class inherits across module namespaces' }
5
5
 
6
6
  context 'class inheriting from parent in same module namespace' do
7
- let(:code) { "class foo::bar inherits foo { }" }
7
+ let(:code) { 'class foo::bar inherits foo { }' }
8
8
 
9
9
  it 'should not detect any problems' do
10
10
  expect(problems).to have(0).problems
@@ -12,7 +12,7 @@ describe 'inherits_across_namespaces' do
12
12
  end
13
13
 
14
14
  context 'class inheriting from sister in same module namespace' do
15
- let(:code) { "class foo::bar inherits foo::baz { }" }
15
+ let(:code) { 'class foo::bar inherits foo::baz { }' }
16
16
 
17
17
  it 'should not detect any problems' do
18
18
  expect(problems).to have(0).problems
@@ -20,7 +20,7 @@ describe 'inherits_across_namespaces' do
20
20
  end
21
21
 
22
22
  context 'class inheriting from another module namespace' do
23
- let(:code) { "class foo::bar inherits baz { }" }
23
+ let(:code) { 'class foo::bar inherits baz { }' }
24
24
 
25
25
  it 'should only detect a single problem' do
26
26
  expect(problems).to have(1).problem
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'names_containing_uppercase' do
4
-
5
4
  context 'defined type named FooBar' do
6
5
  let(:code) { 'define FooBar { }' }
7
6
  let(:path) { 'foobar/manifests/init.pp' }
@@ -47,17 +46,17 @@ describe 'names_containing_uppercase' do
47
46
  before do
48
47
  PuppetLint.configuration.fix = true
49
48
  end
50
-
49
+
51
50
  after do
52
51
  PuppetLint.configuration.fix = false
53
52
  end
54
-
53
+
55
54
  let(:fixed) { code.downcase }
56
-
55
+
57
56
  it 'should create an error' do
58
57
  expect(problems).to contain_fixed(class_msg).on_line(1).in_column(7)
59
58
  end
60
-
59
+
61
60
  it 'should downcase the class name' do
62
61
  expect(manifest).to eq(fixed)
63
62
  end
@@ -42,4 +42,17 @@ describe 'names_containing_dash' do
42
42
  expect(problems).to contain_error(class_msg).on_line(1).in_column(7)
43
43
  end
44
44
  end
45
+
46
+ context 'multiple classes' do
47
+ let(:code) do
48
+ <<-END
49
+ class foo::bar_foo { }
50
+ class foo::baz-foo { }
51
+ END
52
+ end
53
+
54
+ it 'should create an error' do
55
+ expect(problems).to contain_error(class_msg).on_line(2).in_column(15)
56
+ end
57
+ end
45
58
  end
@@ -5,7 +5,7 @@ describe 'nested_classes_or_defines' do
5
5
  let(:define_msg) { 'defined type defined inside a class' }
6
6
 
7
7
  context 'class on its own' do
8
- let(:code) { "class foo { }" }
8
+ let(:code) { 'class foo { }' }
9
9
 
10
10
  it 'should not detect any problems' do
11
11
  expect(problems).to have(0).problems
@@ -13,30 +13,34 @@ describe 'nested_classes_or_defines' do
13
13
  end
14
14
 
15
15
  context 'class inside a class' do
16
- let(:code) { "
17
- class foo {
18
- class bar {
16
+ let(:code) do
17
+ <<-END
18
+ class foo {
19
+ class bar {
20
+ }
19
21
  }
20
- }"
21
- }
22
+ END
23
+ end
22
24
 
23
25
  it 'should only detect a single problem' do
24
26
  expect(problems).to have(1).problem
25
27
  end
26
28
 
27
29
  it 'should create a warning' do
28
- expect(problems).to contain_warning(class_msg).on_line(3).in_column(9)
30
+ expect(problems).to contain_warning(class_msg).on_line(2).in_column(11)
29
31
  end
30
32
  end
31
33
 
32
34
  context 'instantiating a parametised class inside a class' do
33
- let(:code) { "
34
- class bar {
35
- class { 'foo':
36
- bar => 'foobar'
35
+ let(:code) do
36
+ <<-END
37
+ class bar {
38
+ class { 'foo':
39
+ bar => 'foobar'
40
+ }
37
41
  }
38
- }"
39
- }
42
+ END
43
+ end
40
44
 
41
45
  it 'should not detect any problems' do
42
46
  expect(problems).to have(0).problems
@@ -44,13 +48,15 @@ describe 'nested_classes_or_defines' do
44
48
  end
45
49
 
46
50
  context 'instantiating a parametised class inside a define' do
47
- let(:code) { "
48
- define bar() {
49
- class { 'foo':
50
- bar => 'foobar'
51
+ let(:code) do
52
+ <<-END
53
+ define bar() {
54
+ class { 'foo':
55
+ bar => 'foobar'
56
+ }
51
57
  }
52
- }"
53
- }
58
+ END
59
+ end
54
60
 
55
61
  it 'should not detect any problems' do
56
62
  expect(problems).to have(0).problems
@@ -58,19 +64,21 @@ describe 'nested_classes_or_defines' do
58
64
  end
59
65
 
60
66
  context 'define inside a class' do
61
- let(:code) { "
62
- class foo {
63
- define bar() {
67
+ let(:code) do
68
+ <<-END
69
+ class foo {
70
+ define bar() {
71
+ }
64
72
  }
65
- }"
66
- }
73
+ END
74
+ end
67
75
 
68
76
  it 'should only detect a single problem' do
69
77
  expect(problems).to have(1).problems
70
78
  end
71
79
 
72
80
  it 'should create a warning' do
73
- expect(problems).to contain_warning(define_msg).on_line(3).in_column(9)
81
+ expect(problems).to contain_warning(define_msg).on_line(2).in_column(11)
74
82
  end
75
83
  end
76
84
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe 'parameter_order' do
4
4
  let(:msg) { 'optional parameter listed before required parameter' }
5
5
 
6
- ['define', 'class'].each do |type|
6
+ %w[define class].each do |type|
7
7
  context "#{type} with attrs in order" do
8
8
  let(:code) { "#{type} foo($bar, $baz='gronk') { }" }
9
9
 
@@ -27,17 +27,19 @@ describe 'parameter_order' do
27
27
  expect(problems).to have(1).problem
28
28
  end
29
29
 
30
- col = (type == "class" ? 23 : 24)
30
+ col = (type == 'class' ? 23 : 24)
31
31
  it 'should create a warning' do
32
32
  expect(problems).to contain_warning(msg).on_line(1).in_column(col)
33
33
  end
34
34
  end
35
35
 
36
36
  context "#{type} parameter set to another variable" do
37
- let(:code) { "
38
- #{type} foo($bar, $baz = $name, $gronk=$::fqdn) {
39
- }"
40
- }
37
+ let(:code) do
38
+ <<-END
39
+ #{type} foo($bar, $baz = $name, $gronk=$::fqdn) {
40
+ }
41
+ END
42
+ end
41
43
 
42
44
  it 'should not detect any problems' do
43
45
  expect(problems).to have(0).problems
@@ -45,29 +47,33 @@ describe 'parameter_order' do
45
47
  end
46
48
 
47
49
  context "#{type} parameter set to another variable with incorrect order" do
48
- let(:code) { "
49
- #{type} foo($baz = $name, $bar, $gronk=$::fqdn) {
50
- }"
51
- }
50
+ let(:code) do
51
+ <<-END
52
+ #{type} foo($baz = $name, $bar, $gronk=$::fqdn) {
53
+ }
54
+ END
55
+ end
52
56
 
53
57
  it 'should only detect a single problem' do
54
58
  expect(problems).to have(1).problem
55
59
  end
56
60
 
57
- col = (type == "class" ? 33 : 34)
61
+ col = (type == 'class' ? 35 : 36)
58
62
  it 'should create a warning' do
59
- expect(problems).to contain_warning(msg).on_line(2).in_column(col)
63
+ expect(problems).to contain_warning(msg).on_line(1).in_column(col)
60
64
  end
61
65
  end
62
66
 
63
67
  context 'issue-101' do
64
- let(:code) { "
65
- #{type} b (
66
- $foo,
67
- $bar='',
68
- $baz={}
69
- ) { }
70
- " }
68
+ let(:code) do
69
+ <<-END
70
+ #{type} b (
71
+ $foo,
72
+ $bar='',
73
+ $baz={}
74
+ ) { }
75
+ END
76
+ end
71
77
 
72
78
  it 'should not detect any problems' do
73
79
  expect(problems).to have(0).problems
@@ -75,52 +81,71 @@ describe 'parameter_order' do
75
81
  end
76
82
 
77
83
  context "#{type} parameter w/a hash containing a variable and no optional parameters" do
78
- let(:code) { "
79
- $var1 = 'test'
80
-
81
- #{type} test (
82
- $entries = {
83
- '200 xxx' => {
84
- param1 => $var1,
85
- param2 => 'value2',
86
- param3 => 'value3',
87
- }
88
- },
89
- $mandatory => undef,
90
- ) { }
91
- "}
84
+ let(:code) do
85
+ <<-END
86
+ $var1 = 'test'
87
+
88
+ #{type} test (
89
+ $entries = {
90
+ '200 xxx' => {
91
+ param1 => $var1,
92
+ param2 => 'value2',
93
+ param3 => 'value3',
94
+ }
95
+ },
96
+ $mandatory => undef,
97
+ ) { }
98
+ END
99
+ end
92
100
 
93
101
  it { expect(problems).to have(0).problem }
94
102
  end
95
103
 
96
104
  context "#{type} parameter w/a hash containing a variable followed by an optional parameter" do
97
- let(:code) { "
98
- $var1 = 'test'
99
-
100
- #{type} test (
101
- $entries = {
102
- '200 xxx' => {
103
- param1 => $var1,
104
- param2 => 'value2',
105
- param3 => 'value3',
106
- }
107
- },
108
- $optional,
109
- $mandatory => undef,
110
- ) { }
111
- "}
112
-
113
- it { expect(problems).to contain_warning(msg).on_line(12).in_column(11) }
105
+ let(:code) do
106
+ <<-END
107
+ $var1 = 'test'
108
+
109
+ #{type} test (
110
+ $entries = {
111
+ '200 xxx' => {
112
+ param1 => $var1,
113
+ param2 => 'value2',
114
+ param3 => 'value3',
115
+ }
116
+ },
117
+ $optional,
118
+ $mandatory => undef,
119
+ ) { }
120
+ END
121
+ end
122
+
123
+ it { expect(problems).to contain_warning(msg).on_line(11).in_column(13) }
114
124
  end
115
125
 
116
126
  context "#{type} parameter w/array containing a variable" do
117
- let(:code) {"
118
- #{type} test (
119
- $var1 = [$::hostname, 'host'],
120
- ) { }
121
- "}
127
+ let(:code) do
128
+ <<-END
129
+ #{type} test (
130
+ $var1 = [$::hostname, 'host'],
131
+ ) { }
132
+ END
133
+ end
122
134
 
123
135
  it { expect(problems).to have(0).problem }
124
136
  end
137
+
138
+ context "#{type} parameter with Optional data type" do
139
+ let(:code) do
140
+ <<-END
141
+ #{type} test(
142
+ String $test = 'value',
143
+ Optional[String] $optional,
144
+ ) { }
145
+ END
146
+ end
147
+
148
+ it { expect(problems).to have(0).problems }
149
+ end
125
150
  end
126
151
  end