parallel_cucumber 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|