parallel_tests 2.26.2 → 2.27.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01b6de7a12281670eb21d414bac185726fab522f49a17260cfc6e18e0b120c2b
|
4
|
+
data.tar.gz: 8eafb297389404e96a76cf62ef574b785879d530d0b8d771b8d983e8c5f808cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7e98692653ffb21768c0972e54f804d82da4f8ef4c28e057452162531a9267dbef169a4506d30ccf44ac87a7f97adf067a0c499a3449335556c05b08f442968
|
7
|
+
data.tar.gz: aa6d92c2345e5ceebc01605717364670045124459550f90dfb0f9225bd20925f8955641e7e43888e3bd4dee57733e71fe68b0868a23574f458aebfc88e58e557
|
data/Readme.md
CHANGED
@@ -371,6 +371,8 @@ inspired by [pivotal labs](https://blog.pivotal.io/labs/labs/parallelize-your-rs
|
|
371
371
|
- [Andrei Botalov](https://github.com/abotalov)
|
372
372
|
- [Zachary Attas](https://github.com/snackattas)
|
373
373
|
- [David Rodríguez](https://github.com/deivid-rodriguez)
|
374
|
+
- [Justin Doody](https://github.com/justindoody)
|
375
|
+
- [Sandeep Singh](https://github.com/sandeepnagra)
|
374
376
|
|
375
377
|
[Michael Grosser](http://grosser.it)<br/>
|
376
378
|
michael@grosser.it<br/>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'cucumber/tag_expressions/parser'
|
1
2
|
require 'cucumber/core/gherkin/tag_expression'
|
2
3
|
|
3
4
|
module ParallelTests
|
@@ -12,7 +13,7 @@ module ParallelTests
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def visit_feature_element(uri, feature_element, feature_tags, line_numbers: [])
|
15
|
-
scenario_tags = feature_element[:tags].map {|tag|
|
16
|
+
scenario_tags = feature_element[:tags].map { |tag| tag[:name] }
|
16
17
|
scenario_tags = feature_tags + scenario_tags
|
17
18
|
if feature_element[:examples].nil? # :Scenario
|
18
19
|
test_line = feature_element[:location][:line]
|
@@ -25,7 +26,7 @@ module ParallelTests
|
|
25
26
|
@scenarios << [uri, feature_element[:location][:line]].join(":")
|
26
27
|
else # :ScenarioOutline
|
27
28
|
feature_element[:examples].each do |example|
|
28
|
-
example_tags = example[:tags].map {|tag|
|
29
|
+
example_tags = example[:tags].map { |tag| tag[:name] }
|
29
30
|
example_tags = scenario_tags + example_tags
|
30
31
|
next unless @tag_expression.evaluate(example_tags)
|
31
32
|
rows = example[:tableBody].select { |body| body[:type] == :TableRow }
|
@@ -1,31 +1,38 @@
|
|
1
|
+
require 'cucumber/tag_expressions/parser'
|
1
2
|
require 'cucumber/core/gherkin/tag_expression'
|
2
3
|
require 'cucumber/runtime'
|
3
4
|
require 'cucumber'
|
4
5
|
require 'parallel_tests/cucumber/scenario_line_logger'
|
5
6
|
require 'parallel_tests/gherkin/listener'
|
6
7
|
require 'gherkin/errors'
|
8
|
+
require 'shellwords'
|
7
9
|
|
8
10
|
module ParallelTests
|
9
11
|
module Cucumber
|
10
12
|
class Scenarios
|
11
13
|
class << self
|
12
14
|
def all(files, options={})
|
15
|
+
# Parse tag expression from given test options and ignore tag pattern. Refer here to understand how new tag expression syntax works - https://github.com/cucumber/cucumber/tree/master/tag-expressions
|
13
16
|
tags = []
|
14
|
-
|
15
|
-
|
17
|
+
words = options[:test_options].to_s.shellsplit
|
18
|
+
words.each_with_index { |w,i| tags << words[i+1] if ["-t", "--tags"].include?(w) }
|
19
|
+
if ignore = options[:ignore_tag_pattern]
|
20
|
+
tags << "not (#{ignore})"
|
21
|
+
end
|
22
|
+
tags_exp = tags.compact.join(" and ")
|
16
23
|
|
17
|
-
split_into_scenarios files,
|
24
|
+
split_into_scenarios files, tags_exp
|
18
25
|
end
|
19
26
|
|
20
27
|
private
|
21
28
|
|
22
|
-
def split_into_scenarios(files, tags=
|
23
|
-
|
24
|
-
# Create the tag expression instance from gherkin, this is needed to know if the scenario matches with the tags invoked by the request
|
25
|
-
tag_expression = ::Cucumber::Core::Gherkin::TagExpression.new(tags)
|
29
|
+
def split_into_scenarios(files, tags='')
|
26
30
|
|
31
|
+
# Create the tag expression instance from cucumber tag expressions parser, this is needed to know if the scenario matches with the tags invoked by the request
|
27
32
|
# Create the ScenarioLineLogger which will filter the scenario we want
|
28
|
-
|
33
|
+
args = []
|
34
|
+
args << ::Cucumber::TagExpressions::Parser.new.parse(tags) unless tags.empty?
|
35
|
+
scenario_line_logger = ParallelTests::Cucumber::Formatters::ScenarioLineLogger.new(*args)
|
29
36
|
|
30
37
|
# here we loop on the files map, each file will contain one or more scenario
|
31
38
|
features ||= files.map do |path|
|
@@ -45,7 +52,7 @@ module ParallelTests
|
|
45
52
|
begin
|
46
53
|
# We make an attempt to parse the gherkin document, this could be failed if the document is not well formatted
|
47
54
|
result = parser.parse(scanner)
|
48
|
-
feature_tags = result[:feature][:tags].map { |tag|
|
55
|
+
feature_tags = result[:feature][:tags].map { |tag| tag[:name] }
|
49
56
|
|
50
57
|
# We loop on each children of the feature
|
51
58
|
result[:feature][:children].each do |feature_element|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel_tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|