gherkin_lint 0.0.14 → 0.1.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
  SHA1:
3
- metadata.gz: 0f46709be4aaa5ea2b3e333bee9cbbed73b845a4
4
- data.tar.gz: 69359d535eae291d385dd3881e5494251dfd66f5
3
+ metadata.gz: 6cdef24fc92e7521e9ca9994e41562dac5afa094
4
+ data.tar.gz: 707f5a596fb69a69ab80597edc91c0cfdb017f8f
5
5
  SHA512:
6
- metadata.gz: 9d769a7b4ec15bd5c4b9a3127ea94d02b5d0cd22c359510019792d01f2d381775ccf33e93ec747db664cfd7557fc4f305f68f0338ee5bb638cf8eb69fc52998e
7
- data.tar.gz: 61aa2a9d95b6a06c7ba4a2fe401561d3e57aa7905519917306b51fbec0d6fb97c3cb62eadcfd299d5906193bff3f4eb935fc014f7b639c13e0c1202b2b6f51b8
6
+ metadata.gz: 1ca646959b80d6112965790512885b7aeb86fd32b742d8a0245fbd502e7b6880d296a8ef5c069c7e4d705328732a232bf673c4b54631b15143af944a50c292ca
7
+ data.tar.gz: fcfc1d844dfafcfa9b40960c991087df43528c7c2482c716d4241044434ddf438001dae287bc48ff43c92d03d7e3cc016108ee19448224f75a150351ef7f0a5f
data/.rubocop.yml CHANGED
@@ -1,11 +1,18 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-07-05 00:19:49 +0200 using RuboCop version 0.31.0.
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-02-28 13:48:49 +0100 using RuboCop version 0.36.0.
3
4
  # The point is for the user to remove these configuration records
4
5
  # one by one as the offenses are removed from the code base.
5
6
  # Note that changes in the inspected code, or installation of new
6
7
  # versions of RuboCop, may require this file to be generated again.
7
8
 
8
- # Offense count: 16
9
- # Configuration parameters: AllowURI, URISchemes.
9
+ # Offense count: 1
10
+ # Configuration parameters: CountComments.
11
+ Metrics/ClassLength:
12
+ Max: 116
13
+
14
+ # Offense count: 3
15
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
16
+ # URISchemes: http, https
10
17
  Metrics/LineLength:
11
18
  Max: 118
data/README.md CHANGED
@@ -11,6 +11,10 @@ run `gherkin_lint` on a list of files
11
11
 
12
12
  gherkin_lint FEATURE_FILES
13
13
 
14
+ With `--disable CHECK` or `--enable CHECK` it's possible to disable respectivly enable program wide checks.
15
+
16
+ Checks could be disabled using tags within Feature Files. To do so, add @disableCHECK. Detailed usage within the disable_tags feature.
17
+
14
18
  ## Checks
15
19
 
16
20
  ### Feature Avoid colon (features/avoid_colon.feature)
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ end
11
11
 
12
12
  desc 'Publishes the Gem'
13
13
  task :push do
14
- sh 'gem push gherkin_lint-0.0.14.gem'
14
+ sh 'gem push gherkin_lint-0.1.0.gem'
15
15
  end
16
16
 
17
17
  desc 'Checks ruby style'
@@ -0,0 +1,77 @@
1
+ Feature: Disable Tags
2
+ As a Business Analyst
3
+ I want to disable checks for specific scenarios
4
+ so that I can have exceptions on the exception, not on the whole code base
5
+
6
+ Background: Prepare Testee
7
+ Given a file named "lint.rb" with:
8
+ """
9
+ $LOAD_PATH << '../../lib'
10
+ require 'gherkin_lint'
11
+
12
+ linter = GherkinLint::GherkinLint.new
13
+ linter.enable %w(InvalidStepFlow)
14
+ linter.analyze 'lint.feature'
15
+ exit linter.report
16
+
17
+ """
18
+
19
+ Scenario: Broken
20
+ Given a file named "lint.feature" with:
21
+ """
22
+ Feature: Test
23
+ Background: Preparation
24
+ Given setup
25
+
26
+ Scenario: Test
27
+ Then check
28
+ When action
29
+ Given setup
30
+ """
31
+ When I run `ruby lint.rb`
32
+ Then it should fail with exactly:
33
+ """
34
+ InvalidStepFlow - Given after Action or Verification
35
+ lint.feature (8): Test.Test step: setup
36
+ InvalidStepFlow - Missing Action
37
+ lint.feature (6): Test.Test step: check
38
+
39
+ """
40
+
41
+ Scenario: Disable on Scenario Level
42
+ Given a file named "lint.feature" with:
43
+ """
44
+ Feature: Test
45
+ Background: Preparation
46
+ Given setup
47
+
48
+ @disableInvalidStepFlow
49
+ Scenario: Test
50
+ Then check
51
+ When action
52
+ Given setup
53
+ """
54
+ When I run `ruby lint.rb`
55
+ Then it should pass with exactly:
56
+ """
57
+
58
+ """
59
+
60
+ Scenario: Disable on Feature Level
61
+ Given a file named "lint.feature" with:
62
+ """
63
+ @disableInvalidStepFlow
64
+ Feature: Test
65
+ Background: Preparation
66
+ Given setup
67
+
68
+ Scenario: Test
69
+ Then check
70
+ When action
71
+ Given setup
72
+ """
73
+ When I run `ruby lint.rb`
74
+ Then it should pass with exactly:
75
+ """
76
+
77
+ """
data/gherkin_lint.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'gherkin_lint'
3
- s.version = '0.0.14'
4
- s.date = '2016-01-17'
3
+ s.version = '0.1.0'
4
+ s.date = '2016-02-28'
5
5
  s.summary = 'Gherkin Lint'
6
6
  s.description = 'Lint Gherkin Files'
7
7
  s.authors = ['Stefan Rohe']
data/lib/gherkin_lint.rb CHANGED
@@ -77,7 +77,7 @@ module GherkinLint
77
77
  end
78
78
 
79
79
  def disable(disabled_linter)
80
- set_linter([], disabled_linter)
80
+ set_linter(LINTER.map { |linter| linter.new.name.split('::').last }, disabled_linter)
81
81
  end
82
82
 
83
83
  def set_linter(enabled_linter, disabled_linter = [])
@@ -104,13 +104,14 @@ module GherkinLint
104
104
 
105
105
  def report
106
106
  issues = @linter.map do |linter|
107
- linter.lint_files @files
107
+ tags_to_suppress = LINTER.map { |lint| "disable#{lint.new.class.name.split('::').last}" }
108
+ linter.lint_files(@files, tags_to_suppress)
108
109
  linter.issues
109
110
  end.flatten
110
111
 
111
112
  issues.each { |issue| puts issue.render }
112
- return 0 if issues.length == 0
113
- -1
113
+
114
+ issues.empty? ? 0 : -1
114
115
  end
115
116
 
116
117
  def to_json(input, file = 'generated.feature')
@@ -66,11 +66,45 @@ module GherkinLint
66
66
  self.class.name.split('::').last
67
67
  end
68
68
 
69
- def lint_files(files)
69
+ def lint_files(files, tags_to_suppress)
70
70
  @files = files
71
+ @files = filter_tag(@files, "disable#{name}")
72
+ @files = suppress_tags(@files, tags_to_suppress)
71
73
  lint
72
74
  end
73
75
 
76
+ def tag?(data, tag)
77
+ return false if data.class != Hash
78
+ return false unless data.key? 'tags'
79
+ data['tags'].map { |item| item['name'] }.include? "@#{tag}"
80
+ end
81
+
82
+ def filter_tag(data, tag)
83
+ return data.select { |item| !tag?(item, tag) }.map { |item| filter_tag(item, tag) } if data.class == Array
84
+ return data unless data.class == Hash
85
+ result = {}
86
+
87
+ data.each_pair { |key, value| result[key] = filter_tag(value, tag) }
88
+ result
89
+ end
90
+
91
+ def suppress(data, tags)
92
+ data.select { |item| !tags.map { |tag| "@#{tag}" }.include? item['name'] }
93
+ end
94
+
95
+ def suppress_tags(data, tags)
96
+ return data.map { |item| suppress_tags(item, tags) } if data.class == Array
97
+ return data unless data.class == Hash
98
+ result = {}
99
+
100
+ data.each_pair do |key, value|
101
+ value = suppress(value, tags) if key == 'tags'
102
+
103
+ result[key] = suppress_tags(value, tags)
104
+ end
105
+ result
106
+ end
107
+
74
108
  def lint
75
109
  fail 'not implemented'
76
110
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gherkin_lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Rohe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-17 00:00:00.000000000 Z
11
+ date: 2016-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gherkin
@@ -87,6 +87,7 @@ files:
87
87
  - features/background_does_more_than_setup.feature
88
88
  - features/background_requires_scenario.feature
89
89
  - features/bad_scenario_name.feature
90
+ - features/disable_tags.feature
90
91
  - features/file_name_differs_feature_name.feature
91
92
  - features/invalid_file_name.feature
92
93
  - features/invalid_step_flow.feature
@@ -156,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
157
  version: '0'
157
158
  requirements: []
158
159
  rubyforge_project:
159
- rubygems_version: 2.2.5
160
+ rubygems_version: 2.2.2
160
161
  signing_key:
161
162
  specification_version: 4
162
163
  summary: Gherkin Lint