parallel_tests 2.14.3 → 2.15.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 +4 -4
- data/Readme.md +1 -1
- data/lib/parallel_tests/cucumber/scenario_line_logger.rb +12 -2
- data/lib/parallel_tests/cucumber/scenarios.rb +6 -3
- data/lib/parallel_tests/tasks.rb +10 -10
- data/lib/parallel_tests/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c475b70366d96f840ad6857d86c8ff9cfbf6bc5
|
4
|
+
data.tar.gz: df7751a1d3d61172c1ef0a2ac4d7950f6232f910
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79ffeb8fa61bb454ca5b7bef04fe66a2b8a071a376fff36f65f0fb84e23c0d1e8b3517ce8e51eacd8e88cbf34916a8495f118c6dc56b63efdcf183f7abd5bfcd
|
7
|
+
data.tar.gz: 6c5a8844af6c3f9e1b0ed2dac1426593bca85139ff16dc0aa0624c923b6a765011e861c20aa66a212e6f161e772171531360a7e4843109dcc81d798cfef0e21b
|
data/Readme.md
CHANGED
@@ -362,7 +362,7 @@ inspired by [pivotal labs](https://blog.pivotal.io/labs/labs/parallelize-your-rs
|
|
362
362
|
- [Doc Ritezel](https://github.com/ohrite)
|
363
363
|
- [Alexandre Wilhelm](https://github.com/dogild)
|
364
364
|
- [Jerry](https://github.com/boblington)
|
365
|
-
|
365
|
+
- [Aleksei Gusev](https://github.com/hron)
|
366
366
|
|
367
367
|
[Michael Grosser](http://grosser.it)<br/>
|
368
368
|
michael@grosser.it<br/>
|
@@ -11,12 +11,17 @@ module ParallelTests
|
|
11
11
|
@tag_expression = tag_expression
|
12
12
|
end
|
13
13
|
|
14
|
-
def visit_feature_element(uri, feature_element, feature_tags)
|
14
|
+
def visit_feature_element(uri, feature_element, feature_tags, line_numbers: [])
|
15
15
|
scenario_tags = feature_element[:tags].map {|tag| ::Cucumber::Core::Ast::Tag.new(tag[:location], tag[:name])}
|
16
16
|
scenario_tags = feature_tags + scenario_tags
|
17
17
|
if feature_element[:examples].nil? # :Scenario
|
18
|
+
test_line = feature_element[:location][:line]
|
19
|
+
|
18
20
|
# We don't accept the feature_element if the current tags are not valid
|
19
21
|
return unless @tag_expression.evaluate(scenario_tags)
|
22
|
+
# or if it is not at the correct location
|
23
|
+
return if line_numbers.any? && !line_numbers.include?(test_line)
|
24
|
+
|
20
25
|
@scenarios << [uri, feature_element[:location][:line]].join(":")
|
21
26
|
else # :ScenarioOutline
|
22
27
|
feature_element[:examples].each do |example|
|
@@ -24,7 +29,12 @@ module ParallelTests
|
|
24
29
|
example_tags = scenario_tags + example_tags
|
25
30
|
next unless @tag_expression.evaluate(example_tags)
|
26
31
|
rows = example[:tableBody].select { |body| body[:type] == :TableRow }
|
27
|
-
rows.each
|
32
|
+
rows.each do |row|
|
33
|
+
test_line = row[:location][:line]
|
34
|
+
next if line_numbers.any? && !line_numbers.include?(test_line)
|
35
|
+
|
36
|
+
@scenarios << [uri, test_line].join(':')
|
37
|
+
end
|
28
38
|
end
|
29
39
|
end
|
30
40
|
end
|
@@ -27,8 +27,11 @@ module ParallelTests
|
|
27
27
|
# Create the ScenarioLineLogger which will filter the scenario we want
|
28
28
|
scenario_line_logger = ParallelTests::Cucumber::Formatters::ScenarioLineLogger.new(tag_expression)
|
29
29
|
|
30
|
-
# here we loop on the files map, each file will
|
30
|
+
# here we loop on the files map, each file will contain one or more scenario
|
31
31
|
features ||= files.map do |path|
|
32
|
+
# Gather up any line numbers attached to the file path
|
33
|
+
path, *test_lines = path.split(/:(?=\d+)/)
|
34
|
+
test_lines.map!(&:to_i)
|
32
35
|
|
33
36
|
# We encode the file and get the content of it
|
34
37
|
source = ::Cucumber::Runtime::NormalisedEncodingFile.read(path)
|
@@ -40,7 +43,7 @@ module ParallelTests
|
|
40
43
|
scanner = ::Gherkin::TokenScanner.new(document.body)
|
41
44
|
|
42
45
|
begin
|
43
|
-
# We make an attempt to parse the gherkin document, this could be failed if the document is not well
|
46
|
+
# We make an attempt to parse the gherkin document, this could be failed if the document is not well formatted
|
44
47
|
result = parser.parse(scanner)
|
45
48
|
feature_tags = result[:feature][:tags].map { |tag| ::Cucumber::Core::Ast::Tag.new(tag[:location], tag[:name]) }
|
46
49
|
|
@@ -50,7 +53,7 @@ module ParallelTests
|
|
50
53
|
next unless /Scenario/.match(feature_element[:type])
|
51
54
|
|
52
55
|
# It's a scenario, we add it to the scenario_line_logger
|
53
|
-
scenario_line_logger.visit_feature_element(document.uri, feature_element, feature_tags)
|
56
|
+
scenario_line_logger.visit_feature_element(document.uri, feature_element, feature_tags, line_numbers: test_lines)
|
54
57
|
end
|
55
58
|
|
56
59
|
rescue StandardError => e
|
data/lib/parallel_tests/tasks.rb
CHANGED
@@ -79,23 +79,23 @@ module ParallelTests
|
|
79
79
|
end
|
80
80
|
|
81
81
|
namespace :parallel do
|
82
|
-
desc "
|
82
|
+
desc "Setup test databases via db:setup --> parallel:setup[num_cpus]"
|
83
83
|
task :setup, :count do |_,args|
|
84
84
|
command = "rake db:setup RAILS_ENV=#{ParallelTests::Tasks.rails_env}"
|
85
85
|
ParallelTests::Tasks.run_in_parallel(ParallelTests::Tasks.suppress_schema_load_output(command), args)
|
86
86
|
end
|
87
87
|
|
88
|
-
desc "
|
88
|
+
desc "Create test databases via db:create --> parallel:create[num_cpus]"
|
89
89
|
task :create, :count do |_,args|
|
90
90
|
ParallelTests::Tasks.run_in_parallel("rake db:create RAILS_ENV=#{ParallelTests::Tasks.rails_env}", args)
|
91
91
|
end
|
92
92
|
|
93
|
-
desc "
|
93
|
+
desc "Drop test databases via db:drop --> parallel:drop[num_cpus]"
|
94
94
|
task :drop, :count do |_,args|
|
95
95
|
ParallelTests::Tasks.run_in_parallel("rake db:drop RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1", args)
|
96
96
|
end
|
97
97
|
|
98
|
-
desc "
|
98
|
+
desc "Update test databases by dumping and loading --> parallel:prepare[num_cpus]"
|
99
99
|
task(:prepare, [:count]) do |_,args|
|
100
100
|
ParallelTests::Tasks.check_for_pending_migrations
|
101
101
|
if defined?(ActiveRecord) && ActiveRecord::Base.schema_format == :ruby
|
@@ -111,36 +111,36 @@ namespace :parallel do
|
|
111
111
|
end
|
112
112
|
|
113
113
|
# when dumping/resetting takes too long
|
114
|
-
desc "
|
114
|
+
desc "Update test databases via db:migrate --> parallel:migrate[num_cpus]"
|
115
115
|
task :migrate, :count do |_,args|
|
116
116
|
ParallelTests::Tasks.run_in_parallel("rake db:migrate RAILS_ENV=#{ParallelTests::Tasks.rails_env}", args)
|
117
117
|
end
|
118
118
|
|
119
119
|
# just load the schema (good for integration server <-> no development db)
|
120
|
-
desc "
|
120
|
+
desc "Load dumped schema for test databases via db:schema:load --> parallel:load_schema[num_cpus]"
|
121
121
|
task :load_schema, :count do |_,args|
|
122
122
|
command = "rake #{ParallelTests::Tasks.purge_before_load} db:schema:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1"
|
123
123
|
ParallelTests::Tasks.run_in_parallel(ParallelTests::Tasks.suppress_schema_load_output(command), args)
|
124
124
|
end
|
125
125
|
|
126
126
|
# load the structure from the structure.sql file
|
127
|
-
desc "
|
127
|
+
desc "Load structure for test databases via db:structure:load --> parallel:load_structure[num_cpus]"
|
128
128
|
task :load_structure, :count do |_,args|
|
129
129
|
ParallelTests::Tasks.run_in_parallel("rake #{ParallelTests::Tasks.purge_before_load} db:structure:load RAILS_ENV=#{ParallelTests::Tasks.rails_env} DISABLE_DATABASE_ENVIRONMENT_CHECK=1", args)
|
130
130
|
end
|
131
131
|
|
132
|
-
desc "
|
132
|
+
desc "Load the seed data from db/seeds.rb via db:seed --> parallel:seed[num_cpus]"
|
133
133
|
task :seed, :count do |_,args|
|
134
134
|
ParallelTests::Tasks.run_in_parallel("rake db:seed RAILS_ENV=#{ParallelTests::Tasks.rails_env}", args)
|
135
135
|
end
|
136
136
|
|
137
|
-
desc "
|
137
|
+
desc "Launch given rake command in parallel"
|
138
138
|
task :rake, :command, :count do |_, args|
|
139
139
|
ParallelTests::Tasks.run_in_parallel("RAILS_ENV=#{ParallelTests::Tasks.rails_env} rake #{args.command}", args)
|
140
140
|
end
|
141
141
|
|
142
142
|
['test', 'spec', 'features', 'features-spinach'].each do |type|
|
143
|
-
desc "
|
143
|
+
desc "Run #{type} in parallel with parallel:#{type}[num_cpus]"
|
144
144
|
task type, [:count, :pattern, :options] do |t, args|
|
145
145
|
ParallelTests::Tasks.check_for_pending_migrations
|
146
146
|
|
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.15.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: 2017-
|
11
|
+
date: 2017-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|