cucumber-ctrf 0.1.0 → 0.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ctrf/cucumber_formatter.rb +41 -2
  3. metadata +7 -50
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d509c1be2d3c524d21068cd9d5bedf0fa5bacbd449dcb3e87ee925e245b1dcae
4
- data.tar.gz: d0de76409da2a8d3d85a1324e7e9b040bd33707ac9ebd30ca21962f84cb0cbd3
3
+ metadata.gz: d1a78625b0862673be40e725f58a4496f43bd348ad44698445c4d55e83261c97
4
+ data.tar.gz: deb499d53afc3903aee01fcba49ce9660528c8ac28b004bed357eb1e52a5fca7
5
5
  SHA512:
6
- metadata.gz: 22f16bdd1c69721eb0b9b9fc3aedf488abccb0333458cd0fdabb0227fb56f53adc642b151052b2e794d39da28bcda179a99cf91d59dff17a4b485ef83899dd4a
7
- data.tar.gz: c07667e558fed7f950462fe5eebd21e86b48b39fe4357db15f0acce6e78b469160ca97381ed60bd553e0efb8867aec3e78506a8e273954e2c62b168c52e6e59c
6
+ metadata.gz: 378598143457383d7c8bdbeea598dd73df3feefded92fd464cf88d3a0c4b9299cbe9be016608a51bc1326d991a2890a6f1a5d6c6f71f270f7a3f2b77987f4066
7
+ data.tar.gz: 05f0d9f5fb4f813f9a8d47ba329eb585ca0384a0cc9a282c326059cb156101e67e1cf73ba19173f78eaa26449a076559f775fc2926dcf92ddac35de366a5b35a
@@ -9,16 +9,30 @@ module Ctrf
9
9
  include Cucumber::Formatter::Io
10
10
 
11
11
  def initialize(config)
12
+ # The Cucumber Formatter can get re-run many times (e.g. Knapsack)
13
+ # So, we need to make sure we load any existing file into the test object array, if one is provided.
14
+ if !io?(config.out_stream) && File.exist?(config.out_stream)
15
+ data = JSON.load_file(config.out_stream)
16
+ tests = deep_symbolize_keys(
17
+ data.dig('results', 'tests').to_h do |test|
18
+ [test.dig('extra', 'hash'), test]
19
+ end
20
+ )
21
+ run_start = data.dig('results', 'summary', 'start')
22
+ end
23
+
12
24
  @io = ensure_io(config.out_stream, config.error_stream)
13
25
  @ast_lookup = Cucumber::Formatter::AstLookup.new(config)
14
- @tests = {}
26
+
27
+ @tests = tests || {}
15
28
  begin
16
29
  @bc = Rails::ActiveSupport::BacktraceCleaner.new
17
30
  rescue StandardError
18
31
  @bc = nil
19
32
  end
20
33
 
21
- @run_start = Time.now.to_i
34
+ # Use the existing run_start if there is one
35
+ @run_start = run_start || Time.now.to_i
22
36
  config.on_event :test_case_started, &method(:on_test_case_started)
23
37
  config.on_event :test_case_finished, &method(:on_test_case_finished)
24
38
  config.on_event :test_step_started, &method(:on_test_step_started)
@@ -143,5 +157,30 @@ module Ctrf
143
157
  'other'
144
158
  end
145
159
  end
160
+
161
+ def deep_symbolize_keys(obj)
162
+ deep_transform_keys(obj) do |key|
163
+ key.to_sym
164
+ rescue StandardError
165
+ key
166
+ end
167
+ end
168
+
169
+ def deep_transform_keys(obj, &block)
170
+ _deep_transform_keys_in_object(obj, &block)
171
+ end
172
+
173
+ def _deep_transform_keys_in_object(object, &block)
174
+ case object
175
+ when Hash
176
+ object.each_with_object({}) do |(key, value), result|
177
+ result[yield(key)] = _deep_transform_keys_in_object(value, &block)
178
+ end
179
+ when Array
180
+ object.map { |e| _deep_transform_keys_in_object(e, &block) }
181
+ else
182
+ object
183
+ end
184
+ end
146
185
  end
147
186
  end
metadata CHANGED
@@ -1,84 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-ctrf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Meneghello
8
8
  - DUSC
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2025-01-07 00:00:00.000000000 Z
11
+ date: 2025-01-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: cucumber
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - "~>"
17
+ - - ">="
19
18
  - !ruby/object:Gem::Version
20
19
  version: '8'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
- - - "~>"
24
+ - - ">="
26
25
  - !ruby/object:Gem::Version
27
26
  version: '8'
28
- - !ruby/object:Gem::Dependency
29
- name: cucumber-messages
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "<"
33
- - !ruby/object:Gem::Version
34
- version: '25'
35
- - - ">"
36
- - !ruby/object:Gem::Version
37
- version: '19'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - "<"
43
- - !ruby/object:Gem::Version
44
- version: '25'
45
- - - ">"
46
- - !ruby/object:Gem::Version
47
- version: '19'
48
27
  - !ruby/object:Gem::Dependency
49
28
  name: cucumber
50
29
  requirement: !ruby/object:Gem::Requirement
51
30
  requirements:
52
- - - "~>"
31
+ - - ">="
53
32
  - !ruby/object:Gem::Version
54
33
  version: '8'
55
34
  type: :development
56
35
  prerelease: false
57
36
  version_requirements: !ruby/object:Gem::Requirement
58
37
  requirements:
59
- - - "~>"
38
+ - - ">="
60
39
  - !ruby/object:Gem::Version
61
40
  version: '8'
62
- - !ruby/object:Gem::Dependency
63
- name: cucumber-messages
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "<"
67
- - !ruby/object:Gem::Version
68
- version: '25'
69
- - - ">"
70
- - !ruby/object:Gem::Version
71
- version: '19'
72
- type: :development
73
- prerelease: false
74
- version_requirements: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - "<"
77
- - !ruby/object:Gem::Version
78
- version: '25'
79
- - - ">"
80
- - !ruby/object:Gem::Version
81
- version: '19'
82
41
  - !ruby/object:Gem::Dependency
83
42
  name: rake
84
43
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +137,6 @@ licenses:
178
137
  - MIT
179
138
  metadata:
180
139
  rubygems_mfa_required: 'true'
181
- post_install_message:
182
140
  rdoc_options: []
183
141
  require_paths:
184
142
  - lib
@@ -193,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
151
  - !ruby/object:Gem::Version
194
152
  version: '0'
195
153
  requirements: []
196
- rubygems_version: 3.5.23
197
- signing_key:
154
+ rubygems_version: 3.6.2
198
155
  specification_version: 4
199
156
  summary: Cucumber formatter to output test results in CTRF (https://www.ctrf.io/)
200
157
  JSON format.