allure-ruby-commons 2.19.0 → 2.21.0

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
  SHA256:
3
- metadata.gz: d63128392504c90df6eccbf93a5f3f0cd39e09d0a09c0b5365fc42ee54a07d90
4
- data.tar.gz: e70469671849de4218ed7bd79368cde5cc6d8cdd8bbe495882c13b4cb58c1212
3
+ metadata.gz: 66e09f6d14fc5e93508a0d861d0df40b93b76e86a9b89a1ab8d6a5f72a0e036a
4
+ data.tar.gz: d81cc78375aac9293ffa6f23a35a9ae3dfb8a4a923b20dfddcbae74ce5f8d0be
5
5
  SHA512:
6
- metadata.gz: 79249df603728c94f5a88cfe9879410b331ec1485f2a57be91a6805f10a2fb37211a98653a2719d33c74c5994ecbaa582deac15c6edd399dfde71da9db1af48d
7
- data.tar.gz: 3f72dfec99534df2e5b661799814d36010074fa36d2702947dfbb80084cd22180915a4a96ac9d6da3b98c1ba685d335bacd0459b43f2a3ee59f910fadc4f198d
6
+ metadata.gz: c37fb24ee8dde0d460a3bcef86c2e515421d09ca22579f249320662542ceaa6cc506c8db017c5e1808dd1b24f428db0e4a258c7be20132c2044f271208959cb2
7
+ data.tar.gz: dff9c7508de915a8e834d6715bb25883e5607279e3716d73aa42d502801dde3c1cb274c21d8d7a4081298de5896e74055253c7f6b70460bb36dce992dabc68cf
data/README.md CHANGED
@@ -104,3 +104,7 @@ class TestHelper
104
104
  def standard_method; end
105
105
  end
106
106
  ```
107
+
108
+ ## JSON parsing
109
+
110
+ Internally, allure-ruby-common produces JSON files. To improve performance, [oj](https://www.ohler.com/oj/) gem is used for parsing and generating JSON files if it is available. Otherwise default ruby json implementation is used.
@@ -225,7 +225,7 @@ module Allure
225
225
  lifecycle.update_test_step { |step| step.status = Status::PASSED }
226
226
 
227
227
  result
228
- rescue StandardError => e
228
+ rescue StandardError, RSpec::Expectations::ExpectationNotMetError => e
229
229
  lifecycle.update_test_step do |step|
230
230
  step.status = ResultUtils.status(e)
231
231
  step.status_details = ResultUtils.status_details(e)
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Allure
4
+ # Json helper methods
5
+ #
6
+ # @!method dump_json(obj)
7
+ # Dump object to json using Oj or JSON
8
+ # @param [Hash] obj
9
+ # @return [String]
10
+ # @!method load_json(json)
11
+ # Load json from file using Oj or JSON
12
+ # @param [String] json
13
+ # @return [Hash]
14
+ # @!method json_parse_error
15
+ # Json parse error class
16
+ # @return [Class]
17
+ module JsonHelper
18
+ # @return [Hash] Oj json options
19
+ OJ_OPTIONS = { mode: :custom, use_to_hash: true, ascii_only: true }.freeze
20
+
21
+ begin
22
+ require "oj"
23
+
24
+ define_method(:dump_json) do |obj|
25
+ Oj.dump(obj, OJ_OPTIONS)
26
+ end
27
+
28
+ define_method(:load_json) do |json|
29
+ Oj.load_file(json, symbol_keys: true)
30
+ rescue Oj::ParseError
31
+ nil
32
+ end
33
+ rescue LoadError
34
+ define_method(:dump_json) do |obj|
35
+ JSON.generate(obj)
36
+ end
37
+
38
+ define_method(:load_json) do |json|
39
+ JSON.parse(File.read(json), symbolize_names: true)
40
+ rescue JSON::ParserError
41
+ nil
42
+ end
43
+ end
44
+ end
45
+ end
@@ -3,6 +3,8 @@
3
3
  module Allure
4
4
  # Allure result file writer
5
5
  class FileWriter
6
+ include JsonHelper
7
+
6
8
  # @return [String] test result suffix
7
9
  TEST_RESULT_SUFFIX = "-result.json"
8
10
  # @return [String] test result container suffix
@@ -13,8 +15,6 @@ module Allure
13
15
  ENVIRONMENT_FILE = "environment.properties"
14
16
  # @return [String] categories definition json
15
17
  CATEGORIES_FILE = "categories.json"
16
- # @return [Hash] Oj json options
17
- OJ_OPTIONS = { mode: :custom, use_to_hash: true, ascii_only: true }.freeze
18
18
 
19
19
  # File writer instance
20
20
  #
@@ -27,14 +27,14 @@ module Allure
27
27
  # @param [Allure::TestResult] test_result
28
28
  # @return [void]
29
29
  def write_test_result(test_result)
30
- write("#{test_result.uuid}#{TEST_RESULT_SUFFIX}", Oj.dump(test_result, OJ_OPTIONS))
30
+ write("#{test_result.uuid}#{TEST_RESULT_SUFFIX}", dump_json(test_result))
31
31
  end
32
32
 
33
33
  # Write test result container
34
34
  # @param [Allure::TestResultContainer] test_container_result
35
35
  # @return [void]
36
36
  def write_test_result_container(test_container_result)
37
- write("#{test_container_result.uuid}#{TEST_RESULT_CONTAINER_SUFFIX}", Oj.dump(test_container_result, OJ_OPTIONS))
37
+ write("#{test_container_result.uuid}#{TEST_RESULT_CONTAINER_SUFFIX}", dump_json(test_container_result))
38
38
  end
39
39
 
40
40
  # Write allure attachment file
@@ -61,7 +61,7 @@ module Allure
61
61
  if categories.is_a?(File)
62
62
  copy(categories.path, CATEGORIES_FILE)
63
63
  else
64
- write(CATEGORIES_FILE, Oj.dump(categories, OJ_OPTIONS))
64
+ write(CATEGORIES_FILE, dump_json(categories.map(&:to_hash)))
65
65
  end
66
66
  end
67
67
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "oj"
4
-
5
3
  module Allure
6
4
  # General jsonable object implementation
7
5
  class JSONable
@@ -15,6 +13,14 @@ module Allure
15
13
  end
16
14
  end
17
15
 
16
+ # Return object json string
17
+ #
18
+ # @param [Array] *options
19
+ # @return [String]
20
+ def to_json(*options)
21
+ to_hash.to_json(*options)
22
+ end
23
+
18
24
  # Object comparator
19
25
  # @param [JSONable] other
20
26
  # @return [Booelan]
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Allure
4
4
  class TestPlan
5
+ extend JsonHelper
6
+
5
7
  # @return [String] test plan path env var name
6
8
  TESTPLAN_PATH = "ALLURE_TESTPLAN_PATH"
7
9
 
@@ -26,9 +28,7 @@ module Allure
26
28
  #
27
29
  # @return [Array<Hash>]
28
30
  def tests
29
- @tests ||= Oj.load_file(ENV[TESTPLAN_PATH], symbol_keys: true)&.fetch(:tests) if ENV[TESTPLAN_PATH]
30
- rescue Oj::ParseError
31
- nil
31
+ @tests ||= load_json(ENV[TESTPLAN_PATH])&.fetch(:tests) if ENV[TESTPLAN_PATH]
32
32
  end
33
33
  end
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allure-ruby-commons
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.19.0
4
+ version: 2.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrejs Cunskis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-08 00:00:00.000000000 Z
11
+ date: 2023-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -31,12 +31,12 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: '4'
33
33
  - !ruby/object:Gem::Dependency
34
- name: oj
34
+ name: require_all
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '3.10'
39
+ version: '2'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '4'
@@ -46,30 +46,24 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '3.10'
49
+ version: '2'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '4'
53
53
  - !ruby/object:Gem::Dependency
54
- name: require_all
54
+ name: rspec-expectations
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: '2'
60
- - - "<"
57
+ - - "~>"
61
58
  - !ruby/object:Gem::Version
62
- version: '4'
59
+ version: '3.12'
63
60
  type: :runtime
64
61
  prerelease: false
65
62
  version_requirements: !ruby/object:Gem::Requirement
66
63
  requirements:
67
- - - ">="
64
+ - - "~>"
68
65
  - !ruby/object:Gem::Version
69
- version: '2'
70
- - - "<"
71
- - !ruby/object:Gem::Version
72
- version: '4'
66
+ version: '3.12'
73
67
  - !ruby/object:Gem::Dependency
74
68
  name: uuid
75
69
  requirement: !ruby/object:Gem::Requirement
@@ -99,6 +93,7 @@ extra_rdoc_files: []
99
93
  files:
100
94
  - README.md
101
95
  - lib/allure-ruby-commons.rb
96
+ - lib/allure_ruby_commons/_json_helper.rb
102
97
  - lib/allure_ruby_commons/allure_lifecycle.rb
103
98
  - lib/allure_ruby_commons/config.rb
104
99
  - lib/allure_ruby_commons/file_writer.rb