puppet-lint 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -4,33 +4,37 @@ describe 'duplicate_params' do
4
4
  let(:msg) { 'duplicate parameter found in resource' }
5
5
 
6
6
  context 'resource with duplicate parameters' do
7
- let(:code) { "
8
- file { '/tmp/foo':
9
- ensure => present,
10
- foo => bar,
11
- baz => gronk,
12
- foo => meh,
13
- }"
14
- }
7
+ let(:code) do
8
+ <<-END
9
+ file { '/tmp/foo':
10
+ ensure => present,
11
+ foo => bar,
12
+ baz => gronk,
13
+ foo => meh,
14
+ }
15
+ END
16
+ end
15
17
 
16
18
  it 'should only detect a single problem' do
17
19
  expect(problems).to have(1).problem
18
20
  end
19
21
 
20
22
  it 'should create an error' do
21
- expect(problems).to contain_error(msg).on_line(6).in_column(9)
23
+ expect(problems).to contain_error(msg).on_line(5).in_column(11)
22
24
  end
23
25
  end
24
26
 
25
27
  context 'bug #145: resource with a hash and no duplicate parameters' do
26
- let(:code) { "
27
- class {'fooname':
28
- hashes => [
29
- { foo => 'bar01',},
30
- { foo => 'bar02', },
31
- ],
32
- }"
33
- }
28
+ let(:code) do
29
+ <<-END
30
+ class {'fooname':
31
+ hashes => [
32
+ { foo => 'bar01',},
33
+ { foo => 'bar02', },
34
+ ],
35
+ }
36
+ END
37
+ end
34
38
 
35
39
  it 'should not detect any errors' do
36
40
  expect(problems).to have(0).problems
@@ -38,52 +42,58 @@ describe 'duplicate_params' do
38
42
  end
39
43
 
40
44
  context 'bug #145: resource with a hash and duplicate parameters in subhash' do
41
- let(:code) { "
42
- class {'fooname':
43
- hashes => [
44
- { foo => 'bar01',
45
- foo => 'bar02', },
46
- ],
47
- }"
48
- }
45
+ let(:code) do
46
+ <<-END
47
+ class {'fooname':
48
+ hashes => [
49
+ { foo => 'bar01',
50
+ foo => 'bar02', },
51
+ ],
52
+ }
53
+ END
54
+ end
49
55
 
50
56
  it 'should only detect a single error' do
51
57
  expect(problems).to have(1).problem
52
58
  end
53
59
 
54
60
  it 'should create an error' do
55
- expect(problems).to contain_error(msg).on_line(5).in_column(13)
61
+ expect(problems).to contain_error(msg).on_line(4).in_column(15)
56
62
  end
57
63
  end
58
64
 
59
65
  context 'bug #145: resource with a hash and duplicate parameters in parent type' do
60
- let(:code) { "
61
- class {'fooname':
62
- hashes => [
63
- { foo => 'bar01', },
64
- { foo => 'bar02', },
65
- ],
66
- something => { hash => 'mini', },
67
- hashes => 'dupe',
68
- }"
69
- }
66
+ let(:code) do
67
+ <<-END
68
+ class {'fooname':
69
+ hashes => [
70
+ { foo => 'bar01', },
71
+ { foo => 'bar02', },
72
+ ],
73
+ something => { hash => 'mini', },
74
+ hashes => 'dupe',
75
+ }
76
+ END
77
+ end
70
78
 
71
79
  it 'should only detect a single problem' do
72
80
  expect(problems).to have(1).problem
73
81
  end
74
82
 
75
83
  it 'should create an error' do
76
- expect(problems).to contain_error(msg).on_line(8).in_column(9)
84
+ expect(problems).to contain_error(msg).on_line(7).in_column(11)
77
85
  end
78
86
  end
79
87
 
80
88
  describe 'bug #145: more hash tests and no duplicate parameters' do
81
- let(:code) { "
82
- class test {
83
- $foo = { param => 'value', }
84
- $bar = { param => 'bar', }
85
- }"
86
- }
89
+ let(:code) do
90
+ <<-END
91
+ class test {
92
+ $foo = { param => 'value', }
93
+ $bar = { param => 'bar', }
94
+ }
95
+ END
96
+ end
87
97
 
88
98
  it 'should not detect any problems' do
89
99
  expect(problems).to have(0).problems
@@ -91,7 +101,7 @@ describe 'duplicate_params' do
91
101
  end
92
102
 
93
103
  context 'colon as last token in file' do
94
- let(:code) { "}:" }
104
+ let(:code) { '}:' }
95
105
 
96
106
  it 'should not detect any problems' do
97
107
  expect(problems).to have(0).problems
@@ -13,11 +13,13 @@ describe 'ensure_first_param' do
13
13
  end
14
14
 
15
15
  context 'ensure as only attr in a multi line resource' do
16
- let(:code) { "
17
- file { 'foo':
18
- ensure => present,
19
- }"
20
- }
16
+ let(:code) do
17
+ <<-END
18
+ file { 'foo':
19
+ ensure => present,
20
+ }
21
+ END
22
+ end
21
23
 
22
24
  it 'should not detect any problems' do
23
25
  expect(problems).to have(0).problems
@@ -25,29 +27,33 @@ describe 'ensure_first_param' do
25
27
  end
26
28
 
27
29
  context 'ensure as second attr in a multi line resource' do
28
- let(:code) { "
29
- file { 'foo':
30
- mode => '0000',
31
- ensure => present,
32
- }"
33
- }
34
-
35
- it 'should only detect a single problem' do
30
+ let(:code) do
31
+ <<-END
32
+ file { 'foo':
33
+ mode => '0000',
34
+ ensure => present,
35
+ }
36
+ END
37
+ end
38
+
39
+ it 'should only detect a single problem' do
36
40
  expect(problems).to have(1).problem
37
41
  end
38
42
 
39
43
  it 'should create a warning' do
40
- expect(problems).to contain_warning(msg).on_line(4).in_column(11)
44
+ expect(problems).to contain_warning(msg).on_line(3).in_column(13)
41
45
  end
42
46
  end
43
47
 
44
48
  context 'ensure as first attr in a multi line resource' do
45
- let(:code) { "
46
- file { 'foo':
47
- ensure => present,
48
- mode => '0000',
49
- }"
50
- }
49
+ let(:code) do
50
+ <<-END
51
+ file { 'foo':
52
+ ensure => present,
53
+ mode => '0000',
54
+ }
55
+ END
56
+ end
51
57
 
52
58
  it 'should not detect any problems' do
53
59
  expect(problems).to have(0).problems
@@ -55,18 +61,20 @@ describe 'ensure_first_param' do
55
61
  end
56
62
 
57
63
  context 'ensure as a hash key in classes does not need to be first' do
58
- let(:code) { "
59
- class thing {
60
- class {'thang':
61
- stuff => {
62
- 'stuffing' => {
63
- ensure => 'present',
64
- blah => 'bleah',
65
- }
66
- },
64
+ let(:code) do
65
+ <<-END
66
+ class thing {
67
+ class { 'thang':
68
+ stuff => {
69
+ 'stuffing' => {
70
+ ensure => 'present',
71
+ blah => 'bleah',
72
+ }
73
+ },
67
74
  }
68
- }"
69
- }
75
+ }
76
+ END
77
+ end
70
78
 
71
79
  it 'should not detect any problems' do
72
80
  expect(problems).to have(0).problems
@@ -92,11 +100,13 @@ describe 'ensure_first_param' do
92
100
  end
93
101
 
94
102
  context 'ensure as only attr in a multi line resource' do
95
- let(:code) { "
96
- file { 'foo':
97
- ensure => present,
98
- }"
99
- }
103
+ let(:code) do
104
+ <<-END
105
+ file { 'foo':
106
+ ensure => present,
107
+ }
108
+ END
109
+ end
100
110
 
101
111
  it 'should not detect any problems' do
102
112
  expect(problems).to have(0).problems
@@ -104,37 +114,46 @@ describe 'ensure_first_param' do
104
114
  end
105
115
 
106
116
  context 'ensure as second attr in a multi line resource' do
107
- let(:code) { "
108
- file { 'foo':
109
- mode => '0000',
110
- ensure => present,
111
- }"
112
- }
117
+ let(:code) do
118
+ <<-END
119
+ file { 'foo':
120
+ mode => '0000',
121
+ ensure => present,
122
+ }
123
+ END
124
+ end
125
+
126
+ let(:fixed) do
127
+ <<-END
128
+ file { 'foo':
129
+ ensure => present,
130
+ mode => '0000',
131
+ }
132
+ END
133
+ end
113
134
 
114
135
  it 'should only detect a single problem' do
115
136
  expect(problems).to have(1).problem
116
137
  end
117
138
 
118
139
  it 'should create a warning' do
119
- expect(problems).to contain_fixed(msg).on_line(4).in_column(11)
140
+ expect(problems).to contain_fixed(msg).on_line(3).in_column(13)
120
141
  end
121
142
 
122
143
  it 'should make ensure the first attr' do
123
- expect(manifest).to eq("
124
- file { 'foo':
125
- ensure => present,
126
- mode => '0000',
127
- }")
144
+ expect(manifest).to eq(fixed)
128
145
  end
129
146
  end
130
147
 
131
148
  context 'ensure as first attr in a multi line resource' do
132
- let(:code) { "
133
- file { 'foo':
134
- ensure => present,
135
- mode => '0000',
136
- }"
137
- }
149
+ let(:code) do
150
+ <<-END
151
+ file { 'foo':
152
+ ensure => present,
153
+ mode => '0000',
154
+ }
155
+ END
156
+ end
138
157
 
139
158
  it 'should not detect any problems' do
140
159
  expect(problems).to have(0).problems
@@ -142,18 +161,20 @@ describe 'ensure_first_param' do
142
161
  end
143
162
 
144
163
  context 'ensure as a hash key in classes does not need to be first' do
145
- let(:code) { "
146
- class thing {
147
- class {'thang':
148
- stuff => {
149
- 'stuffing' => {
150
- ensure => 'present',
151
- blah => 'bleah',
152
- }
153
- },
164
+ let(:code) do
165
+ <<-END
166
+ class thing {
167
+ class { 'thang':
168
+ stuff => {
169
+ 'stuffing' => {
170
+ ensure => 'present',
171
+ blah => 'bleah',
172
+ }
173
+ },
154
174
  }
155
- }"
156
- }
175
+ }
176
+ END
177
+ end
157
178
 
158
179
  it 'should not detect any problems' do
159
180
  expect(problems).to have(0).problems
@@ -161,38 +182,42 @@ describe 'ensure_first_param' do
161
182
  end
162
183
 
163
184
  context 'ensure is a selector' do
164
- let(:code) { "
165
- file { 'foo':
166
- mode => '0640',
167
- ensure => $::operatingsystem ? {
168
- 'redhat' => absent,
169
- default => $::phase_of_the_moon ? {
170
- 'full' => absent,
171
- default => present,
185
+ let(:code) do
186
+ <<-END
187
+ file { 'foo':
188
+ mode => '0640',
189
+ ensure => $::operatingsystem ? {
190
+ 'redhat' => absent,
191
+ default => $::phase_of_the_moon ? {
192
+ 'full' => absent,
193
+ default => present,
194
+ },
172
195
  },
173
- },
174
- }
175
- " }
176
-
177
- let(:fixed) { "
178
- file { 'foo':
179
- ensure => $::operatingsystem ? {
180
- 'redhat' => absent,
181
- default => $::phase_of_the_moon ? {
182
- 'full' => absent,
183
- default => present,
196
+ }
197
+ END
198
+ end
199
+
200
+ let(:fixed) do
201
+ <<-END
202
+ file { 'foo':
203
+ ensure => $::operatingsystem ? {
204
+ 'redhat' => absent,
205
+ default => $::phase_of_the_moon ? {
206
+ 'full' => absent,
207
+ default => present,
208
+ },
184
209
  },
185
- },
186
- mode => '0640',
187
- }
188
- " }
210
+ mode => '0640',
211
+ }
212
+ END
213
+ end
189
214
 
190
215
  it 'should detect a problem' do
191
216
  expect(problems).to have(1).problem
192
217
  end
193
218
 
194
219
  it 'should fix the problem' do
195
- expect(problems).to contain_fixed(msg).on_line(4).in_column(11)
220
+ expect(problems).to contain_fixed(msg).on_line(3).in_column(13)
196
221
  end
197
222
 
198
223
  it 'should move the whole ensure parameter to the top' do
@@ -5,12 +5,14 @@ describe 'ensure_not_symlink_target' do
5
5
 
6
6
  context 'with fix disabled' do
7
7
  context 'file resource creating a symlink with seperate target attr' do
8
- let(:code) { "
9
- file { 'foo':
10
- ensure => link,
11
- target => '/foo/bar',
12
- }"
13
- }
8
+ let(:code) do
9
+ <<-END
10
+ file { 'foo':
11
+ ensure => link,
12
+ target => '/foo/bar',
13
+ }
14
+ END
15
+ end
14
16
 
15
17
  it 'should not detect any problems' do
16
18
  expect(problems).to have(0).problems
@@ -18,18 +20,20 @@ describe 'ensure_not_symlink_target' do
18
20
  end
19
21
 
20
22
  context 'file resource creating a symlink with target specified in ensure' do
21
- let(:code) { "
22
- file { 'foo':
23
- ensure => '/foo/bar',
24
- }"
25
- }
23
+ let(:code) do
24
+ <<-END
25
+ file { 'foo':
26
+ ensure => '/foo/bar',
27
+ }
28
+ END
29
+ end
26
30
 
27
31
  it 'should only detect a single problem' do
28
32
  expect(problems).to have(1).problem
29
33
  end
30
34
 
31
35
  it 'should create a warning' do
32
- expect(problems).to contain_warning(msg).on_line(3).in_column(21)
36
+ expect(problems).to contain_warning(msg).on_line(2).in_column(23)
33
37
  end
34
38
  end
35
39
  end
@@ -44,12 +48,14 @@ describe 'ensure_not_symlink_target' do
44
48
  end
45
49
 
46
50
  context 'file resource creating a symlink with seperate target attr' do
47
- let(:code) { "
48
- file { 'foo':
49
- ensure => link,
50
- target => '/foo/bar',
51
- }"
52
- }
51
+ let(:code) do
52
+ <<-END
53
+ file { 'foo':
54
+ ensure => link,
55
+ target => '/foo/bar',
56
+ }
57
+ END
58
+ end
53
59
 
54
60
  it 'should not detect any problems' do
55
61
  expect(problems).to have(0).problems
@@ -61,24 +67,29 @@ describe 'ensure_not_symlink_target' do
61
67
  end
62
68
 
63
69
  context 'file resource creating a symlink with target specified in ensure' do
64
- let(:code) { "
65
- file { 'foo':
66
- ensure => '/foo/bar',
67
- }"
68
- }
69
- let(:fixed) { "
70
- file { 'foo':
71
- ensure => symlink,
72
- target => '/foo/bar',
73
- }"
74
- }
70
+ let(:code) do
71
+ <<-END
72
+ file { 'foo':
73
+ ensure => '/foo/bar',
74
+ }
75
+ END
76
+ end
77
+
78
+ let(:fixed) do
79
+ <<-END
80
+ file { 'foo':
81
+ ensure => symlink,
82
+ target => '/foo/bar',
83
+ }
84
+ END
85
+ end
75
86
 
76
87
  it 'should only detect a single problem' do
77
88
  expect(problems).to have(1).problem
78
89
  end
79
90
 
80
91
  it 'should fix the problem' do
81
- expect(problems).to contain_fixed(msg).on_line(3).in_column(21)
92
+ expect(problems).to contain_fixed(msg).on_line(2).in_column(23)
82
93
  end
83
94
 
84
95
  it 'should create a new target param' do