puppet-lint 0.4.0.pre1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/.travis.yml +3 -4
  2. data/Gemfile +2 -5
  3. data/README.md +2 -149
  4. data/Rakefile +0 -5
  5. data/lib/puppet-lint.rb +74 -20
  6. data/lib/puppet-lint/bin.rb +20 -85
  7. data/lib/puppet-lint/checkplugin.rb +158 -12
  8. data/lib/puppet-lint/checks.rb +39 -222
  9. data/lib/puppet-lint/configuration.rb +12 -31
  10. data/lib/puppet-lint/data.rb +329 -0
  11. data/lib/puppet-lint/lexer.rb +37 -30
  12. data/lib/puppet-lint/lexer/token.rb +14 -16
  13. data/lib/puppet-lint/monkeypatches/string_prepend.rb +6 -0
  14. data/lib/puppet-lint/optparser.rb +105 -0
  15. data/lib/puppet-lint/plugins.rb +28 -9
  16. data/lib/puppet-lint/plugins/check_classes.rb +162 -238
  17. data/lib/puppet-lint/plugins/check_comments.rb +40 -25
  18. data/lib/puppet-lint/plugins/check_conditionals.rb +16 -20
  19. data/lib/puppet-lint/plugins/check_documentation.rb +14 -20
  20. data/lib/puppet-lint/plugins/check_nodes.rb +23 -0
  21. data/lib/puppet-lint/plugins/check_resources.rb +127 -141
  22. data/lib/puppet-lint/plugins/check_strings.rb +133 -107
  23. data/lib/puppet-lint/plugins/check_variables.rb +11 -11
  24. data/lib/puppet-lint/plugins/check_whitespace.rb +86 -92
  25. data/lib/puppet-lint/tasks/puppet-lint.rb +17 -1
  26. data/lib/puppet-lint/version.rb +1 -1
  27. data/puppet-lint.gemspec +4 -2
  28. data/spec/fixtures/test/manifests/ignore.pp +1 -0
  29. data/spec/fixtures/test/manifests/ignore_reason.pp +1 -0
  30. data/spec/puppet-lint/bin_spec.rb +104 -84
  31. data/spec/puppet-lint/configuration_spec.rb +19 -19
  32. data/spec/puppet-lint/ignore_overrides_spec.rb +97 -0
  33. data/spec/puppet-lint/lexer/token_spec.rb +9 -9
  34. data/spec/puppet-lint/lexer_spec.rb +352 -325
  35. data/spec/puppet-lint/plugins/check_classes/autoloader_layout_spec.rb +77 -23
  36. data/spec/puppet-lint/plugins/check_classes/class_inherits_from_params_class_spec.rb +14 -12
  37. data/spec/puppet-lint/plugins/check_classes/inherits_across_namespaces_spec.rb +18 -14
  38. data/spec/puppet-lint/plugins/check_classes/names_containing_dash_spec.rb +30 -30
  39. data/spec/puppet-lint/plugins/check_classes/nested_classes_or_defines_spec.rb +31 -26
  40. data/spec/puppet-lint/plugins/check_classes/parameter_order_spec.rb +34 -28
  41. data/spec/puppet-lint/plugins/check_classes/right_to_left_relationship_spec.rb +14 -12
  42. data/spec/puppet-lint/plugins/check_classes/variable_scope_spec.rb +74 -30
  43. data/spec/puppet-lint/plugins/check_comments/slash_comments_spec.rb +27 -20
  44. data/spec/puppet-lint/plugins/check_comments/star_comments_spec.rb +78 -13
  45. data/spec/puppet-lint/plugins/check_conditionals/case_without_default_spec.rb +17 -12
  46. data/spec/puppet-lint/plugins/check_conditionals/selector_inside_resource_spec.rb +13 -10
  47. data/spec/puppet-lint/plugins/check_documentation/documentation_spec.rb +21 -16
  48. data/spec/puppet-lint/plugins/check_nodes/unquoted_node_name_spec.rb +69 -0
  49. data/spec/puppet-lint/plugins/check_resources/duplicate_params_spec.rb +42 -38
  50. data/spec/puppet-lint/plugins/check_resources/ensure_first_param_spec.rb +22 -10
  51. data/spec/puppet-lint/plugins/check_resources/ensure_not_symlink_target_spec.rb +81 -18
  52. data/spec/puppet-lint/plugins/check_resources/file_mode_spec.rb +69 -112
  53. data/spec/puppet-lint/plugins/check_resources/unquoted_file_mode_spec.rb +27 -20
  54. data/spec/puppet-lint/plugins/check_resources/unquoted_resource_title_spec.rb +177 -171
  55. data/spec/puppet-lint/plugins/check_strings/double_quoted_strings_spec.rb +165 -88
  56. data/spec/puppet-lint/plugins/check_strings/only_variable_string_spec.rb +97 -22
  57. data/spec/puppet-lint/plugins/check_strings/puppet_url_without_modules_spec.rb +25 -0
  58. data/spec/puppet-lint/plugins/check_strings/quoted_booleans_spec.rb +97 -111
  59. data/spec/puppet-lint/plugins/check_strings/single_quote_string_with_variables_spec.rb +10 -9
  60. data/spec/puppet-lint/plugins/check_strings/variables_not_enclosed_spec.rb +53 -53
  61. data/spec/puppet-lint/plugins/check_variables/variable_contains_dash_spec.rb +26 -14
  62. data/spec/puppet-lint/plugins/check_whitespace/2sp_soft_tabs_spec.rb +10 -9
  63. data/spec/puppet-lint/plugins/check_whitespace/80chars_spec.rb +31 -15
  64. data/spec/puppet-lint/plugins/check_whitespace/arrow_alignment_spec.rb +340 -322
  65. data/spec/puppet-lint/plugins/check_whitespace/hard_tabs_spec.rb +30 -23
  66. data/spec/puppet-lint/plugins/check_whitespace/trailing_whitespace_spec.rb +42 -41
  67. data/spec/puppet-lint_spec.rb +3 -3
  68. data/spec/spec_helper.rb +109 -116
  69. metadata +109 -50
  70. data/spec/puppet-lint/plugins/check_classes/class_parameter_defaults_spec.rb +0 -60
@@ -1,14 +1,29 @@
1
1
  require 'puppet-lint'
2
+ require 'puppet-lint/optparser'
2
3
  require 'rake'
3
4
  require 'rake/tasklib'
4
5
 
5
6
  class PuppetLint
7
+ # Public: A Rake task that can be loaded and used with everything you need.
8
+ #
9
+ # Examples
10
+ #
11
+ # require 'puppet-lint'
12
+ # PuppetLint::RakeTask.new
6
13
  class RakeTask < ::Rake::TaskLib
14
+ # Public: Initialise a new PuppetLint::RakeTask.
15
+ #
16
+ # args - Not used.
17
+ #
18
+ # Example
19
+ #
20
+ # PuppetLint::RakeTask.new
7
21
  def initialize(*args)
8
22
  desc 'Run puppet-lint'
9
23
 
10
24
  task :lint do
11
25
  PuppetLint.configuration.with_filename = true
26
+ PuppetLint::OptParser.build
12
27
 
13
28
  RakeFileUtils.send(:verbose, true) do
14
29
  linter = PuppetLint.new
@@ -21,8 +36,9 @@ class PuppetLint
21
36
  matched_files.to_a.each do |puppet_file|
22
37
  linter.file = puppet_file
23
38
  linter.run
39
+ linter.print_problems
24
40
  end
25
- fail if linter.errors? || (
41
+ abort if linter.errors? || (
26
42
  linter.warnings? && PuppetLint.configuration.fail_on_warnings
27
43
  )
28
44
  end
@@ -1,3 +1,3 @@
1
1
  class PuppetLint
2
- VERSION = '0.4.0.pre1'
2
+ VERSION = '1.0.0'
3
3
  end
data/puppet-lint.gemspec CHANGED
@@ -14,8 +14,10 @@ Gem::Specification.new do |s|
14
14
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
15
  s.require_paths = ["lib"]
16
16
 
17
- s.add_development_dependency 'rspec'
18
- s.add_development_dependency 'rcov'
17
+ s.add_development_dependency 'rake', '~> 10.0'
18
+ s.add_development_dependency 'rspec', '~> 3.0'
19
+ s.add_development_dependency 'rspec-its', '~> 1.0'
20
+ s.add_development_dependency 'rspec-collection_matchers', '~> 1.0'
19
21
 
20
22
  s.authors = ['Tim Sharpe']
21
23
  s.email = 'tim@sharpe.id.au'
@@ -0,0 +1 @@
1
+ "test" # lint:ignore:double_quoted_strings
@@ -0,0 +1 @@
1
+ "test" # lint:ignore:double_quoted_strings for a good reason
@@ -38,20 +38,20 @@ describe PuppetLint::Bin do
38
38
  context 'when running normally' do
39
39
  let(:args) { 'spec/fixtures/test/manifests/init.pp' }
40
40
 
41
- its(:exitstatus) { should == 0 }
41
+ its(:exitstatus) { is_expected.to eq(0) }
42
42
  end
43
43
 
44
44
  context 'when running without arguments' do
45
45
  let(:args) { [] }
46
46
 
47
- its(:exitstatus) { should == 1 }
47
+ its(:exitstatus) { is_expected.to eq(1) }
48
48
  end
49
49
 
50
50
  context 'when asked to display version' do
51
51
  let(:args) { '--version' }
52
52
 
53
- its(:exitstatus) { should == 0 }
54
- its(:stdout) { should == "Puppet-lint #{PuppetLint::VERSION}" }
53
+ its(:exitstatus) { is_expected.to eq(0) }
54
+ its(:stdout) { is_expected.to eq("puppet-lint #{PuppetLint::VERSION}") }
55
55
  end
56
56
 
57
57
  context 'when passed multiple files' do
@@ -60,18 +60,18 @@ describe PuppetLint::Bin do
60
60
  'spec/fixtures/test/manifests/fail.pp',
61
61
  ] }
62
62
 
63
- its(:exitstatus) { should == 1 }
64
- its(:stdout) { should == [
65
- 'WARNING: optional parameter listed before required parameter on line 2',
66
- 'ERROR: test::foo not in autoload module layout on line 2',
67
- ].join("\n") }
63
+ its(:exitstatus) { is_expected.to eq(1) }
64
+ its(:stdout) { is_expected.to eq([
65
+ "#{args[0]} - WARNING: optional parameter listed before required parameter on line 2",
66
+ "#{args[1]} - ERROR: test::foo not in autoload module layout on line 2",
67
+ ].join("\n")) }
68
68
  end
69
69
 
70
70
  context 'when passed a malformed file' do
71
71
  let(:args) { 'spec/fixtures/test/manifests/malformed.pp' }
72
72
 
73
- its(:exitstatus) { should == 1 }
74
- its(:stdout) { should == 'ERROR: Syntax error (try running `puppet parser validate <file>`) on line 1' }
73
+ its(:exitstatus) { is_expected.to eq(1) }
74
+ its(:stdout) { is_expected.to eq('ERROR: Syntax error (try running `puppet parser validate <file>`) on line 1') }
75
75
  end
76
76
 
77
77
  context 'when limited to errors only' do
@@ -81,33 +81,46 @@ describe PuppetLint::Bin do
81
81
  'spec/fixtures/test/manifests/fail.pp',
82
82
  ] }
83
83
 
84
- its(:exitstatus) { should == 1 }
85
- its(:stdout) { should match(/^ERROR/) }
84
+ its(:exitstatus) { is_expected.to eq(1) }
85
+ its(:stdout) { is_expected.to match(/^#{args.last} - ERROR/) }
86
86
  end
87
87
 
88
- context 'when limited to errors only' do
88
+ context 'when limited to warnings only' do
89
89
  let(:args) { [
90
90
  '--error-level', 'warning',
91
91
  'spec/fixtures/test/manifests/warning.pp',
92
92
  'spec/fixtures/test/manifests/fail.pp',
93
93
  ] }
94
94
 
95
- its(:exitstatus) { should == 1 }
96
- its(:stdout) { should match(/^WARNING/) }
95
+ its(:exitstatus) { is_expected.to eq(1) }
96
+ its(:stdout) { is_expected.to match(/WARNING/) }
97
+ its(:stdout) { is_expected.to_not match(/ERROR/) }
98
+ end
99
+
100
+ context 'when specifying a specific check to run' do
101
+ let(:args) { [
102
+ '--only-check', 'parameter_order',
103
+ 'spec/fixtures/test/manifests/warning.pp',
104
+ 'spec/fixtures/test/manifests/fail.pp',
105
+ ] }
106
+
107
+ its(:exitstatus) { is_expected.to eq(0) }
108
+ its(:stdout) { is_expected.to_not match(/ERROR/) }
109
+ its(:stdout) { is_expected.to match(/WARNING/) }
97
110
  end
98
111
 
99
112
  context 'when asked to display filenames ' do
100
113
  let(:args) { ['--with-filename', 'spec/fixtures/test/manifests/fail.pp'] }
101
114
 
102
- its(:exitstatus) { should == 1 }
103
- its(:stdout) { should match(%r{^spec/fixtures/test/manifests/fail\.pp -}) }
115
+ its(:exitstatus) { is_expected.to eq(1) }
116
+ its(:stdout) { is_expected.to match(%r{^spec/fixtures/test/manifests/fail\.pp -}) }
104
117
  end
105
118
 
106
119
  context 'when not asked to fail on warnings' do
107
120
  let(:args) { ['spec/fixtures/test/manifests/warning.pp'] }
108
121
 
109
- its(:exitstatus) { should == 0 }
110
- its(:stdout) { should match(/optional parameter/) }
122
+ its(:exitstatus) { is_expected.to eq(0) }
123
+ its(:stdout) { is_expected.to match(/optional parameter/) }
111
124
  end
112
125
 
113
126
  context 'when asked to provide context to problems' do
@@ -116,13 +129,13 @@ describe PuppetLint::Bin do
116
129
  'spec/fixtures/test/manifests/warning.pp',
117
130
  ] }
118
131
 
119
- its(:exitstatus) { should == 0 }
120
- its(:stdout) { should == [
132
+ its(:exitstatus) { is_expected.to eq(0) }
133
+ its(:stdout) { is_expected.to eq([
121
134
  'WARNING: optional parameter listed before required parameter on line 2',
122
135
  '',
123
136
  " define test::warning($foo='bar', $baz) { }",
124
137
  ' ^',
125
- ].join("\n")
138
+ ].join("\n"))
126
139
  }
127
140
  end
128
141
 
@@ -132,29 +145,29 @@ describe PuppetLint::Bin do
132
145
  'spec/fixtures/test/manifests/warning.pp',
133
146
  ] }
134
147
 
135
- its(:exitstatus) { should == 1 }
136
- its(:stdout) { should match(/optional parameter/) }
148
+ its(:exitstatus) { is_expected.to eq(1) }
149
+ its(:stdout) { is_expected.to match(/optional parameter/) }
137
150
  end
138
151
 
139
152
  context 'when used with an invalid option' do
140
153
  let(:args) { '--foo-bar-baz' }
141
154
 
142
- its(:exitstatus) { should == 1 }
143
- its(:stdout) { should match(/invalid option/) }
155
+ its(:exitstatus) { is_expected.to eq(1) }
156
+ its(:stdout) { is_expected.to match(/invalid option/) }
144
157
  end
145
158
 
146
159
  context 'when passed a file that does not exist' do
147
160
  let(:args) { 'spec/fixtures/test/manifests/enoent.pp' }
148
161
 
149
- its(:exitstatus) { should == 1 }
150
- its(:stdout) { should match(/specified file does not exist/) }
162
+ its(:exitstatus) { is_expected.to eq(1) }
163
+ its(:stdout) { is_expected.to match(/specified file does not exist/) }
151
164
  end
152
165
 
153
166
  context 'when passed a directory' do
154
167
  let(:args) { 'spec/fixtures/' }
155
168
 
156
- its(:exitstatus) { should == 1 }
157
- its(:stdout) { should match(/^ERROR/) }
169
+ its(:exitstatus) { is_expected.to eq(1) }
170
+ its(:stdout) { is_expected.to match(/ERROR/) }
158
171
  end
159
172
 
160
173
  context 'when disabling a check' do
@@ -163,8 +176,8 @@ describe PuppetLint::Bin do
163
176
  'spec/fixtures/test/manifests/fail.pp'
164
177
  ] }
165
178
 
166
- its(:exitstatus) { should == 0 }
167
- its(:stdout) { should == "" }
179
+ its(:exitstatus) { is_expected.to eq(0) }
180
+ its(:stdout) { is_expected.to eq("") }
168
181
  end
169
182
 
170
183
  context 'when changing the log format' do
@@ -174,8 +187,8 @@ describe PuppetLint::Bin do
174
187
  'spec/fixtures/test/manifests/fail.pp'
175
188
  ] }
176
189
 
177
- its(:exitstatus) { should == 1 }
178
- its(:stdout) { should == 'fail.pp' }
190
+ its(:exitstatus) { is_expected.to eq(1) }
191
+ its(:stdout) { is_expected.to eq('fail.pp') }
179
192
  end
180
193
 
181
194
  context 'to print %{path}' do
@@ -184,8 +197,8 @@ describe PuppetLint::Bin do
184
197
  'spec/fixtures/test/manifests/fail.pp'
185
198
  ] }
186
199
 
187
- its(:exitstatus) { should == 1 }
188
- its(:stdout) { should == 'spec/fixtures/test/manifests/fail.pp' }
200
+ its(:exitstatus) { is_expected.to eq(1) }
201
+ its(:stdout) { is_expected.to eq('spec/fixtures/test/manifests/fail.pp') }
189
202
  end
190
203
 
191
204
  context 'to print %{fullpath}' do
@@ -194,9 +207,9 @@ describe PuppetLint::Bin do
194
207
  'spec/fixtures/test/manifests/fail.pp'
195
208
  ] }
196
209
 
197
- its(:exitstatus) { should == 1 }
210
+ its(:exitstatus) { is_expected.to eq(1) }
198
211
  its(:stdout) {
199
- should match(%r{^/.+/spec/fixtures/test/manifests/fail\.pp$})
212
+ is_expected.to match(%r{^/.+/spec/fixtures/test/manifests/fail\.pp$})
200
213
  }
201
214
  end
202
215
 
@@ -206,8 +219,19 @@ describe PuppetLint::Bin do
206
219
  'spec/fixtures/test/manifests/fail.pp'
207
220
  ] }
208
221
 
209
- its(:exitstatus) { should == 1 }
210
- its(:stdout) { should == '2' }
222
+ its(:exitstatus) { is_expected.to eq(1) }
223
+ its(:stdout) { is_expected.to eq('2') }
224
+ its(:stderr) { is_expected.to eq('DEPRECATION: Please use %{line} instead of %{linenumber}') }
225
+ end
226
+
227
+ context 'to print %{line}' do
228
+ let(:args) { [
229
+ '--log-format', '%{line}',
230
+ 'spec/fixtures/test/manifests/fail.pp'
231
+ ] }
232
+
233
+ its(:exitstatus) { is_expected.to eq(1) }
234
+ its(:stdout) { is_expected.to eq('2') }
211
235
  end
212
236
 
213
237
  context 'to print %{kind}' do
@@ -216,8 +240,8 @@ describe PuppetLint::Bin do
216
240
  'spec/fixtures/test/manifests/fail.pp'
217
241
  ] }
218
242
 
219
- its(:exitstatus) { should == 1 }
220
- its(:stdout) { should == 'error' }
243
+ its(:exitstatus) { is_expected.to eq(1) }
244
+ its(:stdout) { is_expected.to eq('error') }
221
245
  end
222
246
 
223
247
  context 'to print %{KIND}' do
@@ -226,8 +250,8 @@ describe PuppetLint::Bin do
226
250
  'spec/fixtures/test/manifests/fail.pp'
227
251
  ] }
228
252
 
229
- its(:exitstatus) { should == 1 }
230
- its(:stdout) { should == 'ERROR' }
253
+ its(:exitstatus) { is_expected.to eq(1) }
254
+ its(:stdout) { is_expected.to eq('ERROR') }
231
255
  end
232
256
 
233
257
  context 'to print %{check}' do
@@ -236,8 +260,8 @@ describe PuppetLint::Bin do
236
260
  'spec/fixtures/test/manifests/fail.pp'
237
261
  ] }
238
262
 
239
- its(:exitstatus) { should == 1 }
240
- its(:stdout) { should == 'autoloader_layout' }
263
+ its(:exitstatus) { is_expected.to eq(1) }
264
+ its(:stdout) { is_expected.to eq('autoloader_layout') }
241
265
  end
242
266
 
243
267
  context 'to print %{message}' do
@@ -246,44 +270,40 @@ describe PuppetLint::Bin do
246
270
  'spec/fixtures/test/manifests/fail.pp'
247
271
  ] }
248
272
 
249
- its(:exitstatus) { should == 1 }
250
- its(:stdout) { should == 'test::foo not in autoload module layout' }
273
+ its(:exitstatus) { is_expected.to eq(1) }
274
+ its(:stdout) { is_expected.to eq('test::foo not in autoload module layout') }
251
275
  end
276
+ end
252
277
 
253
- context 'when loading options from a file' do
254
- let(:args) { 'spec/fixtures/test/manifests/fail.pp' }
255
-
256
- it 'should have ~/.puppet-lintrc as depreciated' do
257
- OptionParser.any_instance.stub(:load).
258
- with(File.expand_path('~/.puppet-lintrc')).and_return(true)
259
- OptionParser.any_instance.stub(:load).
260
- with(File.expand_path('~/.puppet-lint.rc')).and_return(false)
261
- OptionParser.any_instance.stub(:load).
262
- with('.puppet-lintrc').and_return(false)
263
- OptionParser.any_instance.stub(:load).
264
- with('.puppet-lint.rc').and_return(false)
265
- OptionParser.any_instance.stub(:load).
266
- with('/etc/puppet-lint.rc').and_return(false)
267
-
268
- msg = 'Depreciated: Found ~/.puppet-lintrc instead of ~/.puppet-lint.rc'
269
- subject.stderr.should == msg
270
- end
271
-
272
- it 'should have .puppet-lintrc as depreciated' do
273
- OptionParser.any_instance.stub(:load).
274
- with(File.expand_path('~/.puppet-lintrc')).and_return(false)
275
- OptionParser.any_instance.stub(:load).
276
- with(File.expand_path('~/.puppet-lint.rc')).and_return(false)
277
- OptionParser.any_instance.stub(:load).
278
- with('.puppet-lintrc').and_return(true)
279
- OptionParser.any_instance.stub(:load).
280
- with('.puppet-lint.rc').and_return(false)
281
- OptionParser.any_instance.stub(:load).
282
- with('/etc/puppet-lint.rc').and_return(false)
283
-
284
- msg = 'Depreciated: Read .puppet-lintrc instead of .puppet-lint.rc'
285
- subject.stderr.should == msg
286
- end
287
- end
278
+ context 'when hiding ignored problems' do
279
+ let(:args) { [
280
+ 'spec/fixtures/test/manifests/ignore.pp'
281
+ ] }
282
+
283
+ its(:exitstatus) { is_expected.to eq(0) }
284
+ its(:stdout) { is_expected.to_not match(/IGNORED/) }
285
+ end
286
+
287
+ context 'when showing ignored problems' do
288
+ let(:args) { [
289
+ '--show-ignored',
290
+ 'spec/fixtures/test/manifests/ignore.pp',
291
+ ] }
292
+
293
+ its(:exitstatus) { is_expected.to eq(0) }
294
+ its(:stdout) { is_expected.to match(/IGNORED/) }
295
+ end
296
+
297
+ context 'when showing ignored problems with a reason' do
298
+ let(:args) { [
299
+ '--show-ignored',
300
+ 'spec/fixtures/test/manifests/ignore_reason.pp',
301
+ ] }
302
+
303
+ its(:exitstatus) { is_expected.to eq(0) }
304
+ its(:stdout) { is_expected.to eq([
305
+ "IGNORED: double quoted string containing no variables on line 1",
306
+ " for a good reason",
307
+ ].join("\n")) }
288
308
  end
289
309
  end
@@ -4,53 +4,53 @@ describe PuppetLint::Configuration do
4
4
  subject { PuppetLint::Configuration.new }
5
5
 
6
6
  it 'should create check methods on the fly' do
7
- method = Proc.new { true }
8
- subject.add_check('foo', &method)
7
+ klass = Class.new
8
+ subject.add_check('foo', klass)
9
9
 
10
- subject.should respond_to(:foo_enabled?)
11
- subject.should_not respond_to(:bar_enabled?)
12
- subject.should respond_to(:enable_foo)
13
- subject.should respond_to(:disable_foo)
10
+ expect(subject).to respond_to(:foo_enabled?)
11
+ expect(subject).to_not respond_to(:bar_enabled?)
12
+ expect(subject).to respond_to(:enable_foo)
13
+ expect(subject).to respond_to(:disable_foo)
14
14
 
15
15
  subject.disable_foo
16
- subject.settings['foo_disabled'].should == true
17
- subject.foo_enabled?.should == false
16
+ expect(subject.settings['foo_disabled']).to be_truthy
17
+ expect(subject.foo_enabled?).to be_falsey
18
18
 
19
19
  subject.enable_foo
20
- subject.settings['foo_disabled'].should == false
21
- subject.foo_enabled?.should == true
20
+ expect(subject.settings['foo_disabled']).to be_falsey
21
+ expect(subject.foo_enabled?).to be_truthy
22
22
  end
23
23
 
24
24
  it 'should know what checks have been added' do
25
- method = Proc.new { true }
26
- subject.add_check('foo', &method)
27
- subject.checks.should include('foo')
25
+ klass = Class.new
26
+ subject.add_check('foo', klass)
27
+ expect(subject.checks).to include('foo')
28
28
  end
29
29
 
30
30
  it 'should respond nil to unknown config options' do
31
- subject.foobarbaz.should == nil
31
+ expect(subject.foobarbaz).to be_nil
32
32
  end
33
33
 
34
34
  it 'should create options on the fly' do
35
35
  subject.add_option('bar')
36
36
 
37
- subject.bar.should == nil
37
+ expect(subject.bar).to be_nil
38
38
 
39
39
  subject.bar = 'aoeui'
40
- subject.bar.should == 'aoeui'
40
+ expect(subject.bar).to eq('aoeui')
41
41
  end
42
42
 
43
43
  it 'should be able to set sane defaults' do
44
44
  subject.defaults
45
45
 
46
- subject.settings.should == {
46
+ expect(subject.settings).to eq({
47
47
  'with_filename' => false,
48
48
  'fail_on_warnings' => false,
49
49
  'error_level' => :all,
50
50
  'log_format' => '',
51
51
  'with_context' => false,
52
52
  'fix' => false,
53
- }
53
+ 'show_ignored' => false,
54
+ })
54
55
  end
55
56
  end
56
-