cuke_linter 0.7.0 → 0.8.0

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 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