gherkin_lint 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gherkin_lint.rb +27 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e4d03b90d6a2f4bd7636cac2dd5431826c9d24d
|
4
|
+
data.tar.gz: 2aedfa50a7bf08385172fa3aa0be2abf10b678a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b83df2773e425662bd91751a4fc4e69cf537c8818cf006807d9cee20d8f8d95dbb15473fe45e53ed67748989025e9aeea12fcc86ff3abde9fdba45cfa9be795
|
7
|
+
data.tar.gz: 907364cb9b95b90dc1d1a1beaa0c2a03a6ba9d6366d44a724d5398192d862a1c3df4ea6c8bdba7f8f8086cc0d1d032ca46abf99d73e0ad331275bd6d7f9692f3
|
data/lib/gherkin_lint.rb
CHANGED
@@ -521,6 +521,22 @@ class GherkinLint
|
|
521
521
|
end
|
522
522
|
end
|
523
523
|
|
524
|
+
# service class to lint for avoiding outline for single example
|
525
|
+
class AvoidOutlineForSingleExample < Linter
|
526
|
+
def lint
|
527
|
+
scenarios do |file, feature, scenario|
|
528
|
+
next unless scenario['keyword'] == 'Scenario Outline'
|
529
|
+
|
530
|
+
next unless scenario.key? 'examples'
|
531
|
+
next if scenario['examples'].length > 1
|
532
|
+
next if scenario['examples'].first['rows'].length > 2
|
533
|
+
|
534
|
+
references = [reference(file, feature, scenario)]
|
535
|
+
add_issue(references, 'Better write a scenario')
|
536
|
+
end
|
537
|
+
end
|
538
|
+
end
|
539
|
+
|
524
540
|
# service class to lint for using same tag on all scenarios
|
525
541
|
class SameTagForAllScenarios < Linter
|
526
542
|
def lint
|
@@ -554,6 +570,7 @@ class GherkinLint
|
|
554
570
|
class UseBackground < Linter
|
555
571
|
def lint
|
556
572
|
features do |file, feature|
|
573
|
+
next if scenarios_with_steps(feature) <= 1
|
557
574
|
givens = gather_givens feature
|
558
575
|
next if givens.nil?
|
559
576
|
next if givens.length <= 1
|
@@ -563,17 +580,23 @@ class GherkinLint
|
|
563
580
|
end
|
564
581
|
end
|
565
582
|
|
583
|
+
def scenarios_with_steps(feature)
|
584
|
+
scenarios = 0
|
585
|
+
feature['elements'].each do |scenario|
|
586
|
+
next unless scenario.include? 'steps'
|
587
|
+
scenarios += 1
|
588
|
+
end
|
589
|
+
scenarios
|
590
|
+
end
|
591
|
+
|
566
592
|
def gather_givens(feature)
|
567
593
|
return unless feature.include? 'elements'
|
568
594
|
has_non_given_step = false
|
569
|
-
scenarios = 0
|
570
595
|
feature['elements'].each do |scenario|
|
571
596
|
next unless scenario.include? 'steps'
|
572
|
-
scenarios += 1
|
573
597
|
has_non_given_step = true unless scenario['steps'].first['keyword'] == 'Given '
|
574
598
|
end
|
575
599
|
return if has_non_given_step
|
576
|
-
return if scenarios <= 1
|
577
600
|
|
578
601
|
result = []
|
579
602
|
expanded_steps(feature) { |given| result.push given }
|
@@ -654,6 +677,7 @@ class GherkinLint
|
|
654
677
|
|
655
678
|
LINTER = [
|
656
679
|
AvoidPeriod,
|
680
|
+
AvoidOutlineForSingleExample,
|
657
681
|
BackgroundDoesMoreThanSetup,
|
658
682
|
BackgroundRequiresMultipleScenarios,
|
659
683
|
BadScenarioName,
|