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 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