cuke_linter 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58a53b185027cee980dfa4801a9e2cb3ca7efdbd2cc0db2119a04636e494ef87
4
- data.tar.gz: f71c950b3132a8141e401f2ec385c0f3ed895385ca8309be636960a34d51c2ec
3
+ metadata.gz: ef55f6c2d957526d16d14a9f9624fe5ea7638ba0f1b7ea2ea52244fe9805e60b
4
+ data.tar.gz: df6e881179035f9edb0f3c7b50a2826ff302049c2926399cee1e1570c0bcfad2
5
5
  SHA512:
6
- metadata.gz: 16060efd013a6f783514efedd830db6a9ce431f786a630ed5a521c99863202ad500a72aaae8c08870d38ef22cc4b7edcba21a2f36e01512e79b7d6f6bad8b597
7
- data.tar.gz: cdb8c1250a9e5bf5b6406ed05c74c4cdf97b46d3927e6bb0b4640ef966961afab29eb712667e8110aa92c610336c3a0edb9c134805c0e2beb2eb5c60a7c600b7
6
+ metadata.gz: a62718d8b395cddf100152b9a6c6b63cc0c4349c2715fc0261ef985000047853753835ff7d341894ad0ce6eef37b032885c75a3a569b2afaf62a2b33809b9a99
7
+ data.tar.gz: 9b239647d5f4f45c7454f0cfbe9c31777b8fe56064c7f99b3cab9ac237551dccc71404afa1cc4e462c10295220f1c3bfd6de7cc60d88e71da7961a13fced62c9
data/CHANGELOG.md CHANGED
@@ -8,6 +8,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
 
9
9
  Nothing yet...
10
10
 
11
+ ## [0.8.0] - 2019-09-07
12
+
13
+ ### Changed
14
+ - The exit codes used by the CLI have been changed in order to better facilitate taking additional actions based on them.
15
+ - 0 - No linting problems found
16
+ - 1 - Linting problems found
17
+ - 2 - Some other problem (e.g. incorrect CLI usage)
11
18
 
12
19
  ## [0.7.0] - 2019-07-12
13
20
 
@@ -78,8 +85,9 @@ Nothing yet...
78
85
  - Custom linters, formatters, and command line usability
79
86
 
80
87
 
81
- [Unreleased]: https://github.com/enkessler/cuke_linter/compare/v0.7.0...HEAD
82
- [0.6.0]: https://github.com/enkessler/cuke_linter/compare/v0.6.0...v0.7.0
88
+ [Unreleased]: https://github.com/enkessler/cuke_linter/compare/v0.8.0...HEAD
89
+ [0.8.0]: https://github.com/enkessler/cuke_linter/compare/v0.7.0...v0.8.0
90
+ [0.7.0]: https://github.com/enkessler/cuke_linter/compare/v0.6.0...v0.7.0
83
91
  [0.6.0]: https://github.com/enkessler/cuke_linter/compare/v0.5.0...v0.6.0
84
92
  [0.5.0]: https://github.com/enkessler/cuke_linter/compare/v0.4.0...v0.5.0
85
93
  [0.4.0]: https://github.com/enkessler/cuke_linter/compare/v0.3.1...v0.4.0
@@ -1,6 +1,7 @@
1
1
  require 'require_all'
2
2
 
3
3
  require 'cuke_linter'
4
+ require 'open3'
4
5
 
5
6
 
6
7
  require_relative '../testing/model_factory'
data/exe/cuke_linter CHANGED
@@ -51,7 +51,7 @@ parser = OptionParser.new do |options|
51
51
 
52
52
  if params[:config]
53
53
  puts 'Cannot specify more than one configuration file!'
54
- exit(1)
54
+ exit(2)
55
55
  end
56
56
 
57
57
  params[:config] = file_path
@@ -75,7 +75,7 @@ rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
75
75
  puts e.message
76
76
  puts parser.help
77
77
 
78
- exit(1)
78
+ exit(2)
79
79
  end
80
80
 
81
81
 
@@ -105,4 +105,6 @@ elsif File.exist?("#{Dir.pwd}/.cuke_linter")
105
105
  CukeLinter.load_configuration
106
106
  end
107
107
 
108
- CukeLinter.lint(options)
108
+ results = CukeLinter.lint(options)
109
+
110
+ exit(1) unless results.empty?
@@ -1,4 +1,4 @@
1
1
  module CukeLinter
2
2
  # The release version of this gem
3
- VERSION = "0.7.0"
3
+ VERSION = "0.8.0"
4
4
  end
@@ -189,3 +189,11 @@ Feature: Using cuke_linter on the command line
189
189
  """
190
190
  0 issues found
191
191
  """
192
+
193
+ Scenario: Interpreting exit codes
194
+ When the executable finds no linting problems
195
+ Then the exit code is "0"
196
+ When the executable finds linting problems
197
+ Then the exit code is "1"
198
+ When the executable has a problem
199
+ Then the exit code is "2"
@@ -37,3 +37,48 @@ end
37
37
  When(/^"([^"]*)" is the current directory$/) do |directory|
38
38
  @working_directory = "#{@root_test_directory}/#{directory}"
39
39
  end
40
+
41
+ When(/^the executable finds no linting problems$/) do
42
+ # Linting an empty directory doesn't (currently) find and problems
43
+ command = "bundle exec ruby #{PROJECT_ROOT}/exe/cuke_linter"
44
+
45
+ std_out, std_err, status = [nil, nil, nil]
46
+
47
+ Dir.chdir(@root_test_directory) do
48
+ std_out, std_err, status = Open3.capture3(command)
49
+ end
50
+
51
+ @results = { std_out: std_out, std_err: std_err, status: status }
52
+ end
53
+
54
+ When(/^the executable finds linting problems$/) do
55
+ # This should be a problematic feature file
56
+ CukeLinter::FileHelper.create_file(directory: @root_test_directory,
57
+ name: 'pretty_empty',
58
+ extension: '.feature',
59
+ text: 'Feature: ')
60
+
61
+
62
+ command = "bundle exec ruby #{PROJECT_ROOT}/exe/cuke_linter"
63
+
64
+ std_out, std_err, status = [nil, nil, nil]
65
+
66
+ Dir.chdir(@root_test_directory) do
67
+ std_out, std_err, status = Open3.capture3(command)
68
+ end
69
+
70
+ @results = { std_out: std_out, std_err: std_err, status: status }
71
+ end
72
+
73
+ When(/^the executable has a problem$/) do
74
+ # Missing a required argument for a flag should be a problem
75
+ command = "bundle exec ruby #{PROJECT_ROOT}/exe/cuke_linter -r"
76
+
77
+ std_out, std_err, status = [nil, nil, nil]
78
+
79
+ Dir.chdir(@root_test_directory) do
80
+ std_out, std_err, status = Open3.capture3(command)
81
+ end
82
+
83
+ @results = { std_out: std_out, std_err: std_err, status: status }
84
+ end
@@ -62,3 +62,7 @@ And(/^the file "([^"]*)" contains:$/) do |file_path, text|
62
62
 
63
63
  expect(File.read(file_path)).to eq(text)
64
64
  end
65
+
66
+ Then(/^the exit code is "([^"]*)"$/) do |exit_code|
67
+ expect(@results[:status].exitstatus).to eq(exit_code.to_i)
68
+ end
@@ -4,6 +4,9 @@ require 'open3'
4
4
 
5
5
  RSpec.describe 'the Command Line Interface' do
6
6
 
7
+ # Exit codes that are expected during normal use of the CLI
8
+ let(:normal_exit_codes) { [0, 1] }
9
+
7
10
  # A minimal fake test suite that should be available for every spec
8
11
  let!(:test_directory) { CukeLinter::FileHelper.create_directory }
9
12
  let!(:linted_file) { CukeLinter::FileHelper.create_file(directory: test_directory,
@@ -18,6 +21,7 @@ RSpec.describe 'the Command Line Interface' do
18
21
  let(:executable_directory) { "#{PROJECT_ROOT}/exe" }
19
22
  let(:executable_name) { 'cuke_linter' }
20
23
  let(:executable_path) { "#{executable_directory}/#{executable_name}" }
24
+ let(:command) { "bundle exec ruby #{executable_path}" }
21
25
  let(:results) { std_out, std_err, status = [nil, nil, nil]
22
26
 
23
27
  Dir.chdir(test_directory) do
@@ -53,7 +57,7 @@ RSpec.describe 'the Command Line Interface' do
53
57
  let(:command) { "bundle exec ruby #{executable_path}" }
54
58
 
55
59
  it 'can run cleanly by default' do
56
- expect(results[:status].exitstatus).to eq(0)
60
+ expect(normal_exit_codes).to include(results[:status].exitstatus)
57
61
  end
58
62
 
59
63
  context 'when the default configuration file exists' do
@@ -81,13 +85,58 @@ RSpec.describe 'the Command Line Interface' do
81
85
  end
82
86
 
83
87
  it 'can still run cleanly' do
88
+ expect(normal_exit_codes).to include(results[:status].exitstatus)
89
+ end
90
+
91
+ end
92
+
93
+ end
94
+
95
+ describe 'exit codes' do
96
+
97
+ context 'when no problems are found' do
98
+ # This file does not have any problems with the current linter set
99
+ let!(:linted_file) { CukeLinter::FileHelper.create_file(directory: test_directory,
100
+ name: 'nothing_wrong',
101
+ extension: '.feature',
102
+ text: 'Feature: A name
103
+ A description
104
+ Scenario: A scenario
105
+ When a step
106
+ Then a step') }
107
+
108
+ it 'returns a zero exit code' do
84
109
  expect(results[:status].exitstatus).to eq(0)
85
110
  end
86
111
 
87
112
  end
88
113
 
114
+ context 'when linting problems are found' do
115
+ # This should be a problematic feature file
116
+ let!(:linted_file) { CukeLinter::FileHelper.create_file(directory: test_directory,
117
+ name: 'pretty_empty',
118
+ extension: '.feature',
119
+ text: 'Feature: ') }
120
+
121
+ it 'returns a non-zero exit code' do
122
+ expect(results[:status].exitstatus).to eq(1)
123
+ end
124
+
125
+ end
126
+
127
+ context 'when something else goes wrong' do
128
+
129
+ # Bad CLI usage due to missing required flag arguments
130
+ let(:command) { "bundle exec ruby #{executable_path} -r" }
131
+
132
+ it 'returns a different non-zero exit code' do
133
+ expect(results[:status].exitstatus).to eq(2)
134
+ end
135
+
136
+ end
89
137
  end
90
138
 
139
+
91
140
  describe 'option flags' do
92
141
 
93
142
  context 'with a path flag' do
@@ -143,7 +192,7 @@ RSpec.describe 'the Command Line Interface' do
143
192
  end
144
193
 
145
194
  it 'exits with an error' do
146
- expect(results[:status].exitstatus).to eq(1)
195
+ expect(results[:status].exitstatus).to eq(2)
147
196
  end
148
197
 
149
198
  end
@@ -207,7 +256,7 @@ RSpec.describe 'the Command Line Interface' do
207
256
  end
208
257
 
209
258
  it 'exits with an error' do
210
- expect(results[:status].exitstatus).to eq(1)
259
+ expect(results[:status].exitstatus).to eq(2)
211
260
  end
212
261
 
213
262
  end
@@ -324,7 +373,7 @@ RSpec.describe 'the Command Line Interface' do
324
373
  end
325
374
 
326
375
  it 'exits with an error' do
327
- expect(results[:status].exitstatus).to eq(1)
376
+ expect(results[:status].exitstatus).to eq(2)
328
377
  end
329
378
 
330
379
  end
@@ -371,7 +420,7 @@ RSpec.describe 'the Command Line Interface' do
371
420
  end
372
421
 
373
422
  it 'exits with an error' do
374
- expect(results[:status].exitstatus).to eq(1)
423
+ expect(results[:status].exitstatus).to eq(2)
375
424
  end
376
425
 
377
426
  end
@@ -410,7 +459,7 @@ RSpec.describe 'the Command Line Interface' do
410
459
  end
411
460
 
412
461
  it 'exits with an error' do
413
- expect(results[:status].exitstatus).to eq(1)
462
+ expect(results[:status].exitstatus).to eq(2)
414
463
  end
415
464
 
416
465
  end
@@ -429,7 +478,7 @@ RSpec.describe 'the Command Line Interface' do
429
478
  end
430
479
 
431
480
  it 'exits with an error' do
432
- expect(results[:status].exitstatus).to eq(1)
481
+ expect(results[:status].exitstatus).to eq(2)
433
482
  end
434
483
 
435
484
  end
@@ -496,7 +545,7 @@ RSpec.describe 'the Command Line Interface' do
496
545
  end
497
546
 
498
547
  it 'exits with an error' do
499
- expect(results[:status].exitstatus).to eq(1)
548
+ expect(results[:status].exitstatus).to eq(2)
500
549
  end
501
550
 
502
551
  end
@@ -0,0 +1,120 @@
1
+ require_relative '../../../../environments/rspec_env'
2
+
3
+ RSpec.describe CukeLinter do
4
+
5
+ describe 'configuration' do
6
+
7
+ let(:test_model_tree) { CukeLinter::ModelFactory.generate_lintable_model }
8
+ let(:test_linters) { [CukeLinter::LinterFactory.generate_fake_linter] }
9
+ let(:test_formatters) { [[CukeLinter::FormatterFactory.generate_fake_formatter, "#{CukeLinter::FileHelper::create_directory}/junk_output_file.txt"]] }
10
+ let(:linting_options) { { model_trees: [test_model_tree], linters: test_linters, formatters: test_formatters } }
11
+
12
+
13
+ it 'unregisters disabled linters' do
14
+ config = { 'FakeLinter1' => { 'Enabled' => false } }
15
+ configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
16
+
17
+ CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter1'), name: 'FakeLinter1')
18
+ expect(subject.registered_linters['FakeLinter1']).to_not be nil
19
+
20
+ subject.load_configuration(config_file_path: configuration_file)
21
+
22
+ expect(subject.registered_linters['FakeLinter1']).to be nil
23
+ end
24
+
25
+ it 'can apply a property to all linters' do
26
+ configuration = { 'AllLinters' => { 'Enabled' => false } }
27
+
28
+ # Restore the default linters
29
+ CukeLinter.reset_linters
30
+
31
+ # Also add some custom ones
32
+ CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter, name: 'Foo')
33
+
34
+
35
+ subject.load_configuration(config: configuration)
36
+
37
+ expect(subject.registered_linters).to be_empty
38
+ end
39
+
40
+ it 'uses linter specific properties over general properties' do
41
+ configuration = { 'AllLinters' => { 'Enabled' => false },
42
+ 'FakeLinter1' => { 'Enabled' => true } }
43
+
44
+ CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter, name: 'FakeLinter1')
45
+ expect(subject.registered_linters['FakeLinter1']).to_not be nil
46
+
47
+ subject.load_configuration(config: configuration)
48
+
49
+ expect(subject.registered_linters['FakeLinter1']).to_not be nil
50
+ end
51
+
52
+ it 'even unregisters non-configurable disabled linters' do
53
+ config = { 'FakeLinter' => { 'Enabled' => false } }
54
+ configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
55
+ non_configurable_linter = CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter')
56
+ non_configurable_linter.instance_eval('undef :configure')
57
+
58
+ CukeLinter.register_linter(linter: non_configurable_linter, name: 'FakeLinter')
59
+ expect(subject.registered_linters['FakeLinter']).to_not be nil
60
+
61
+ subject.load_configuration(config_file_path: configuration_file)
62
+
63
+ expect(subject.registered_linters['FakeLinter']).to be nil
64
+ end
65
+
66
+ it 'uses the default configuration file in the current directory if no configuration file is provided' do
67
+ config = { 'FakeLinter1' => { 'Enabled' => false } }
68
+ configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
69
+
70
+ CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter1'), name: 'FakeLinter1')
71
+ expect(subject.registered_linters['FakeLinter1']).to_not be nil
72
+
73
+ Dir.chdir(File.dirname(configuration_file)) do
74
+ subject.load_configuration
75
+ end
76
+
77
+ expect(subject.registered_linters['FakeLinter1']).to be nil
78
+ end
79
+
80
+ it 'raises an exception if no default configuration file is found and no configuration or file is provided' do
81
+ some_empty_directory = CukeLinter::FileHelper.create_directory
82
+
83
+ Dir.chdir(File.dirname(some_empty_directory)) do
84
+ expect { subject.load_configuration }.to raise_error('No configuration or configuration file given and no .cuke_linter file found')
85
+ end
86
+ end
87
+
88
+ it 'configures every linter for which it has a configuration' do
89
+ config = { 'FakeLinter1' => { 'Problem' => 'My custom message for FakeLinter1' },
90
+ 'FakeLinter2' => { 'Problem' => 'My custom message for FakeLinter2' } }
91
+
92
+ CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter1'), name: 'FakeLinter1')
93
+ CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter2'), name: 'FakeLinter2')
94
+ linting_options.delete(:linters)
95
+
96
+ subject.load_configuration(config: config)
97
+ results = subject.lint(linting_options)
98
+
99
+ expect(results).to match_array([{ linter: 'FakeLinter1', location: 'path_to_file:1', problem: 'My custom message for FakeLinter1' },
100
+ { linter: 'FakeLinter2', location: 'path_to_file:1', problem: 'My custom message for FakeLinter2' }])
101
+ end
102
+
103
+ it "does not try to configure linters that don't know how to be configured" do
104
+ config = { 'FakeLinter' => { 'Problem' => 'My custom message for FakeLinter' } }
105
+ non_configurable_linter = CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter')
106
+ non_configurable_linter.instance_eval('undef :configure')
107
+
108
+ CukeLinter.clear_registered_linters
109
+ CukeLinter.register_linter(linter: non_configurable_linter, name: 'FakeLinter')
110
+ linting_options.delete(:linters)
111
+
112
+ subject.load_configuration(config: config)
113
+ results = subject.lint(linting_options)
114
+
115
+ expect(results).to match_array([{ linter: 'FakeLinter', location: 'path_to_file:1', problem: 'FakeLinter problem' }])
116
+ end
117
+
118
+ end
119
+
120
+ end
@@ -232,113 +232,4 @@ RSpec.describe CukeLinter do
232
232
  expect { subject.lint(linting_options) }.to_not raise_error
233
233
  end
234
234
 
235
- describe 'configuration' do
236
-
237
- it 'unregisters disabled linters' do
238
- config = { 'FakeLinter1' => { 'Enabled' => false } }
239
- configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
240
-
241
- CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter1'), name: 'FakeLinter1')
242
- expect(subject.registered_linters['FakeLinter1']).to_not be nil
243
-
244
- subject.load_configuration(config_file_path: configuration_file)
245
-
246
- expect(subject.registered_linters['FakeLinter1']).to be nil
247
- end
248
-
249
- it 'can apply a property to all linters' do
250
- configuration = { 'AllLinters' => { 'Enabled' => false } }
251
-
252
- # Restore the default linters
253
- CukeLinter.reset_linters
254
-
255
- # Also add some custom ones
256
- CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter, name: 'Foo')
257
-
258
-
259
- subject.load_configuration(config: configuration)
260
-
261
- expect(subject.registered_linters).to be_empty
262
- end
263
-
264
- it 'uses linter specific properties over general properties' do
265
- configuration = { 'AllLinters' => { 'Enabled' => false },
266
- 'FakeLinter1' => { 'Enabled' => true } }
267
-
268
- CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter, name: 'FakeLinter1')
269
- expect(subject.registered_linters['FakeLinter1']).to_not be nil
270
-
271
- subject.load_configuration(config: configuration)
272
-
273
- expect(subject.registered_linters['FakeLinter1']).to_not be nil
274
- end
275
-
276
- it 'even unregisters non-configurable disabled linters' do
277
- config = { 'FakeLinter' => { 'Enabled' => false } }
278
- configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
279
- non_configurable_linter = CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter')
280
- non_configurable_linter.instance_eval('undef :configure')
281
-
282
- CukeLinter.register_linter(linter: non_configurable_linter, name: 'FakeLinter')
283
- expect(subject.registered_linters['FakeLinter']).to_not be nil
284
-
285
- subject.load_configuration(config_file_path: configuration_file)
286
-
287
- expect(subject.registered_linters['FakeLinter']).to be nil
288
- end
289
-
290
- it 'uses the default configuration file in the current directory if no configuration file is provided' do
291
- config = { 'FakeLinter1' => { 'Enabled' => false } }
292
- configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
293
-
294
- CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter1'), name: 'FakeLinter1')
295
- expect(subject.registered_linters['FakeLinter1']).to_not be nil
296
-
297
- Dir.chdir(File.dirname(configuration_file)) do
298
- subject.load_configuration
299
- end
300
-
301
- expect(subject.registered_linters['FakeLinter1']).to be nil
302
- end
303
-
304
- it 'raises an exception if no default configuration file is found and no configuration or file is provided' do
305
- some_empty_directory = CukeLinter::FileHelper.create_directory
306
-
307
- Dir.chdir(File.dirname(some_empty_directory)) do
308
- expect { subject.load_configuration }.to raise_error('No configuration or configuration file given and no .cuke_linter file found')
309
- end
310
- end
311
-
312
- it 'configures every linter for which it has a configuration' do
313
- config = { 'FakeLinter1' => { 'Problem' => 'My custom message for FakeLinter1' },
314
- 'FakeLinter2' => { 'Problem' => 'My custom message for FakeLinter2' } }
315
-
316
- CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter1'), name: 'FakeLinter1')
317
- CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter2'), name: 'FakeLinter2')
318
- linting_options.delete(:linters)
319
-
320
- subject.load_configuration(config: config)
321
- results = subject.lint(linting_options)
322
-
323
- expect(results).to match_array([{ linter: 'FakeLinter1', location: 'path_to_file:1', problem: 'My custom message for FakeLinter1' },
324
- { linter: 'FakeLinter2', location: 'path_to_file:1', problem: 'My custom message for FakeLinter2' }])
325
- end
326
-
327
- it "does not try to configure linters that don't know how to be configured" do
328
- config = { 'FakeLinter' => { 'Problem' => 'My custom message for FakeLinter' } }
329
- non_configurable_linter = CukeLinter::LinterFactory.generate_fake_linter(name: 'FakeLinter')
330
- non_configurable_linter.instance_eval('undef :configure')
331
-
332
- CukeLinter.clear_registered_linters
333
- CukeLinter.register_linter(linter: non_configurable_linter, name: 'FakeLinter')
334
- linting_options.delete(:linters)
335
-
336
- subject.load_configuration(config: config)
337
- results = subject.lint(linting_options)
338
-
339
- expect(results).to match_array([{ linter: 'FakeLinter', location: 'path_to_file:1', problem: 'FakeLinter problem' }])
340
- end
341
-
342
- end
343
-
344
235
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuke_linter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Kessler
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-12 00:00:00.000000000 Z
11
+ date: 2019-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cuke_modeler
@@ -220,6 +220,7 @@ files:
220
220
  - testing/linter_factory.rb
221
221
  - testing/model_factory.rb
222
222
  - testing/rspec/spec/integration/cli_integration_spec.rb
223
+ - testing/rspec/spec/integration/configuration_spec.rb
223
224
  - testing/rspec/spec/integration/cuke_linter_integration_spec.rb
224
225
  - testing/rspec/spec/integration/formatters/formatter_integration_specs.rb
225
226
  - testing/rspec/spec/integration/formatters/pretty_formatter_integration_spec.rb