allure-ruby-commons 2.20.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: 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