allure-ruby-commons 2.20.0 → 2.21.0

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
  SHA256:
3
- metadata.gz: 45a1f4e2bc042a8f2b67fe58b8284e74cb4d0d168d459afc27bdea01321ae9f6
4
- data.tar.gz: 7f30563da1d722fbc6b23336a2b62d013ca60ab90ad1d71acfb7c4bcdc9cea78
3
+ metadata.gz: 66e09f6d14fc5e93508a0d861d0df40b93b76e86a9b89a1ab8d6a5f72a0e036a
4
+ data.tar.gz: d81cc78375aac9293ffa6f23a35a9ae3dfb8a4a923b20dfddcbae74ce5f8d0be
5
5
  SHA512:
6
- metadata.gz: fa6429c14832af4f93443251b2a99d285bfa489ef877e5ea2498365faba17ffb6cfaff094baae188653f42f88a871de9002c27f8c374ebb5f1050d8561f1d5ac
7
- data.tar.gz: 14995f7ec541d876461bf89326006bbaf205c64ab55da75acd1bdde263b0e69d955083a544a7dfaf8342ba5133aa54dab81014be6346c0cd588df4c1df29ccaf
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.
@@ -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.20.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-28 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
@@ -30,26 +30,6 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '4'
33
- - !ruby/object:Gem::Dependency
34
- name: oj
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '3.10'
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '4'
43
- type: :runtime
44
- prerelease: false
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '3.10'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '4'
53
33
  - !ruby/object:Gem::Dependency
54
34
  name: require_all
55
35
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +93,7 @@ extra_rdoc_files: []
113
93
  files:
114
94
  - README.md
115
95
  - lib/allure-ruby-commons.rb
96
+ - lib/allure_ruby_commons/_json_helper.rb
116
97
  - lib/allure_ruby_commons/allure_lifecycle.rb
117
98
  - lib/allure_ruby_commons/config.rb
118
99
  - lib/allure_ruby_commons/file_writer.rb