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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2d777ca8ca29e9ce6af8e7a90eea9d0fcfd57ad
4
- data.tar.gz: 45cc9faafbcac0b885cae897f2c3bd1eca50c75a
3
+ metadata.gz: 9cb81c8593cb7001d07158b437a324dc8b4050b2
4
+ data.tar.gz: 01fc50cd9471f16f733963f2b9484c95e228b3bd
5
5
  SHA512:
6
- metadata.gz: 76d1f7ba0ccf9f06f0237e40dda77e196a6be53df6c8dfda2e82b8995fde5a493d25b821fd1a728dd59806fd5e64bb550bdeb856a5223ecc41cf8b4fa88ca881
7
- data.tar.gz: 740519df6266ff8acd73e837227c15ae04cf080d73c83331ff8614cece3aaa680f31a8d0d7e9985ab42d53e996590fe8a88791f416f7e79825b5e4869a18d6b3
6
+ metadata.gz: be92404b9302c235952e4762458cfc7be49ff1ee8fe55d215540c44bf3d116546d5881cbefb7f1faf555c8d415eeb1865479769e3963ec970b32da1e1ae15adb
7
+ data.tar.gz: 153121c9659c9a598a0bfb012a9bb05ede19bb3142496f6940d1e4acabe4ea45302cd87f78a1a0cab9e34b0f487c1d4d43fb172f7095a1a445d9eda6f2fdf631
@@ -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 |feature|
30
- next if feature['elements'].nil?
31
- background = {}
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 steps.map { |step| step['result'] }.all? { |result| result['status'] == 'passed' }
33
+ when 'passed'
44
34
  Status::PASSED
45
- when steps.map { |step| step['result'] }.any? { |result| result['status'] == 'undefined' }
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
- end
50
- { "#{feature['uri']}:#{scenario['line']}".to_sym => status }
51
- end
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 json --out #{f.path}"
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((unrun + status_totals[Status::FAILED] + status_totals[Status::UNKNOWN]).empty? ? 0 : 1)
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
- PASSED = :passed
4
- FAILED = :failed
5
- SKIPPED = :skipped
6
- UNKNOWN = :unknown
3
+ FAILED = :failed
4
+ PASSED = :passed
5
+ PENDING = :pending
6
+ SKIPPED = :skipped
7
+ UNDEFINED = :undefined
8
+ UNKNOWN = :unknown
7
9
  end
8
10
  end
@@ -1,3 +1,3 @@
1
1
  module ParallelCucumber
2
- VERSION = '0.2.7'.freeze
2
+ VERSION = '0.2.8'.freeze
3
3
  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 json --out #{test_state} #{@cucumber_options} "
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.7
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-05-11 00:00:00.000000000 Z
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