parallel_cucumber 0.2.7 → 0.2.8
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/lib/parallel_cucumber.rb +3 -2
- data/lib/parallel_cucumber/helper/{cucumber.rb → cucumber/cucumber.rb} +16 -21
- data/lib/parallel_cucumber/helper/cucumber/json_status_formatter.rb +28 -0
- data/lib/parallel_cucumber/main.rb +1 -2
- data/lib/parallel_cucumber/status.rb +6 -4
- data/lib/parallel_cucumber/version.rb +1 -1
- data/lib/parallel_cucumber/worker.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cb81c8593cb7001d07158b437a324dc8b4050b2
|
4
|
+
data.tar.gz: 01fc50cd9471f16f733963f2b9484c95e228b3bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be92404b9302c235952e4762458cfc7be49ff1ee8fe55d215540c44bf3d116546d5881cbefb7f1faf555c8d415eeb1865479769e3963ec970b32da1e1ae15adb
|
7
|
+
data.tar.gz: 153121c9659c9a598a0bfb012a9bb05ede19bb3142496f6940d1e4acabe4ea45302cd87f78a1a0cab9e34b0f487c1d4d43fb172f7095a1a445d9eda6f2fdf631
|
data/lib/parallel_cucumber.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'parallel_cucumber/cli'
|
2
2
|
require 'parallel_cucumber/helper/command'
|
3
|
-
require 'parallel_cucumber/helper/cucumber'
|
3
|
+
require 'parallel_cucumber/helper/cucumber/cucumber'
|
4
|
+
require 'parallel_cucumber/helper/cucumber/json_status_formatter'
|
4
5
|
require 'parallel_cucumber/helper/multi_delegator'
|
5
6
|
require 'parallel_cucumber/helper/processes'
|
6
7
|
require 'parallel_cucumber/helper/queue'
|
7
8
|
require 'parallel_cucumber/helper/utils'
|
9
|
+
require 'parallel_cucumber/hooks'
|
8
10
|
require 'parallel_cucumber/logger'
|
9
11
|
require 'parallel_cucumber/main'
|
10
12
|
require 'parallel_cucumber/status'
|
11
13
|
require 'parallel_cucumber/version'
|
12
14
|
require 'parallel_cucumber/worker'
|
13
|
-
require 'parallel_cucumber/hooks'
|
@@ -25,31 +25,26 @@ module ParallelCucumber
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def parse_json_report(json_report)
|
28
|
-
report = JSON.parse(json_report)
|
29
|
-
report.map do |
|
30
|
-
|
31
|
-
|
32
|
-
feature['elements'].map do |scenario|
|
33
|
-
if scenario['type'] == 'background'
|
34
|
-
background = scenario
|
35
|
-
next
|
36
|
-
end
|
37
|
-
steps = [background['steps'], scenario['steps']].flatten.compact
|
38
|
-
status = case # rubocop:disable Style/EmptyCaseCondition
|
39
|
-
when steps.map { |step| step['result'] }.all? { |result| result['status'] == 'skipped' }
|
40
|
-
Status::SKIPPED
|
41
|
-
when steps.map { |step| step['result'] }.any? { |result| result['status'] == 'failed' }
|
28
|
+
report = JSON.parse(json_report, symbolize_names: true)
|
29
|
+
report.map do |scenario, cucumber_status|
|
30
|
+
status = case cucumber_status
|
31
|
+
when 'failed'
|
42
32
|
Status::FAILED
|
43
|
-
when
|
33
|
+
when 'passed'
|
44
34
|
Status::PASSED
|
45
|
-
when
|
35
|
+
when 'pending'
|
36
|
+
Status::PENDING
|
37
|
+
when 'skipped'
|
38
|
+
Status::SKIPPED
|
39
|
+
when 'undefined'
|
40
|
+
Status::UNDEFINED
|
41
|
+
when 'unknown'
|
46
42
|
Status::UNKNOWN
|
47
43
|
else
|
48
44
|
Status::UNKNOWN
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end.flatten.compact.inject(&:merge) || {}
|
45
|
+
end
|
46
|
+
[scenario, status]
|
47
|
+
end.to_h
|
53
48
|
end
|
54
49
|
|
55
50
|
private
|
@@ -63,7 +58,7 @@ module ParallelCucumber
|
|
63
58
|
content = nil
|
64
59
|
|
65
60
|
Tempfile.open(%w(dry-run .json)) do |f|
|
66
|
-
dry_run_options = "--dry-run --format
|
61
|
+
dry_run_options = "--dry-run --format ParallelCucumber::Helper::Cucumber::JsonStatusFormatter --out #{f.path}"
|
67
62
|
|
68
63
|
cmd = "cucumber #{options} #{dry_run_options} #{args_string}"
|
69
64
|
_stdout, stderr, status = Open3.capture3(cmd)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'cucumber/formatter/io'
|
2
|
+
|
3
|
+
module ParallelCucumber
|
4
|
+
module Helper
|
5
|
+
module Cucumber
|
6
|
+
class JsonStatusFormatter
|
7
|
+
include ::Cucumber::Formatter::Io
|
8
|
+
|
9
|
+
def initialize(config)
|
10
|
+
config.on_event :after_test_case, &method(:on_after_test_case)
|
11
|
+
config.on_event :finished_testing, &method(:on_finished_testing)
|
12
|
+
|
13
|
+
@io = ensure_io(config.out_stream)
|
14
|
+
@result = {}
|
15
|
+
end
|
16
|
+
|
17
|
+
def on_after_test_case(event)
|
18
|
+
@result[event.test_case.location.to_s] = event.result.to_sym
|
19
|
+
end
|
20
|
+
|
21
|
+
def on_finished_testing(*)
|
22
|
+
@io.write(@result.to_json)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -69,7 +69,6 @@ module ParallelCucumber
|
|
69
69
|
|
70
70
|
number_of_workers = determine_work_and_batch_size(count)
|
71
71
|
|
72
|
-
unrun = []
|
73
72
|
status_totals = {}
|
74
73
|
total_mm, total_ss = time_it do
|
75
74
|
results = run_parallel_workers(number_of_workers) || {}
|
@@ -100,7 +99,7 @@ module ParallelCucumber
|
|
100
99
|
|
101
100
|
@logger.info("\nTook #{total_mm} minutes #{total_ss} seconds")
|
102
101
|
|
103
|
-
exit((
|
102
|
+
exit((tests - status_totals[Status::PASSED] - status_totals[Status::SKIPPED]).empty? ? 0 : 1)
|
104
103
|
end
|
105
104
|
|
106
105
|
def report_by_group(results)
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module ParallelCucumber
|
2
2
|
module Status
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
FAILED = :failed
|
4
|
+
PASSED = :passed
|
5
|
+
PENDING = :pending
|
6
|
+
SKIPPED = :skipped
|
7
|
+
UNDEFINED = :undefined
|
8
|
+
UNKNOWN = :unknown
|
7
9
|
end
|
8
10
|
end
|
@@ -237,7 +237,7 @@ module ParallelCucumber
|
|
237
237
|
FileUtils.mkpath(test_batch_dir)
|
238
238
|
|
239
239
|
test_state = "#{test_batch_dir}/test_state.json"
|
240
|
-
cmd = "#{@test_command} --format
|
240
|
+
cmd = "#{@test_command} --format ParallelCucumber::Helper::Cucumber::JsonStatusFormatter --out #{test_state} #{@cucumber_options} "
|
241
241
|
batch_env = {
|
242
242
|
:TEST_BATCH_ID.to_s => batch_id,
|
243
243
|
:TEST_BATCH_DIR.to_s => test_batch_dir,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel_cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Bayandin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -93,7 +93,8 @@ files:
|
|
93
93
|
- lib/parallel_cucumber/cli.rb
|
94
94
|
- lib/parallel_cucumber/dsl.rb
|
95
95
|
- lib/parallel_cucumber/helper/command.rb
|
96
|
-
- lib/parallel_cucumber/helper/cucumber.rb
|
96
|
+
- lib/parallel_cucumber/helper/cucumber/cucumber.rb
|
97
|
+
- lib/parallel_cucumber/helper/cucumber/json_status_formatter.rb
|
97
98
|
- lib/parallel_cucumber/helper/multi_delegator.rb
|
98
99
|
- lib/parallel_cucumber/helper/processes.rb
|
99
100
|
- lib/parallel_cucumber/helper/queue.rb
|