allure-ruby-commons 2.13.0 → 2.13.1
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 +4 -4
- data/lib/allure-ruby-commons.rb +1 -1
- data/lib/allure_ruby_commons/allure_lifecycle.rb +36 -17
- data/lib/allure_ruby_commons/result_utils.rb +17 -5
- metadata +8 -18
- data/lib/allure_ruby_commons/util.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a9115fbeeca5e229495d548047fa91edac5cb364a3a18c629f7d860fff43b3c
|
4
|
+
data.tar.gz: 302ce724cd87c8c8a392687355c693774e40e0dfeb6d00cc4e67c5202a2dd733
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7392a3abf6e355d4e1a7e1dfddca5c39c68ffe89549eaf72db2a0e7e4793c4019e7f2dfb5877c82be92775476ac70349218e1c85087ed17aa7374a0d6c461beb
|
7
|
+
data.tar.gz: 9a263ffc1763bbb4647c5341259bf12f6e8e766feb026fc4f7fae41c51b109609b64b410baaadb0080f9bd07edfccb113ffb47553e5ddbf7632770188ed8190a
|
data/lib/allure-ruby-commons.rb
CHANGED
@@ -76,7 +76,7 @@ module Allure
|
|
76
76
|
# Add description to current test case
|
77
77
|
# @param [String] description
|
78
78
|
# @return [void]
|
79
|
-
def
|
79
|
+
def add_description(description)
|
80
80
|
lifecycle.update_test_case do |test_case|
|
81
81
|
test_case.description = description
|
82
82
|
end
|
@@ -1,9 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "fileutils"
|
4
|
+
|
3
5
|
module Allure
|
4
6
|
# Main class for creating and writing allure results
|
5
7
|
class AllureLifecycle
|
6
8
|
def initialize
|
9
|
+
@test_context = []
|
7
10
|
@step_context = []
|
8
11
|
end
|
9
12
|
|
@@ -11,8 +14,10 @@ module Allure
|
|
11
14
|
# @param [Allure::TestResultContainer] test_result_container
|
12
15
|
# @return [Allure::TestResultContainer]
|
13
16
|
def start_test_container(test_result_container)
|
14
|
-
test_result_container.
|
15
|
-
|
17
|
+
test_result_container.tap do |container|
|
18
|
+
container.start = ResultUtils.timestamp
|
19
|
+
@test_context.push(container)
|
20
|
+
end
|
16
21
|
end
|
17
22
|
|
18
23
|
# @example Update current test container
|
@@ -23,23 +28,25 @@ module Allure
|
|
23
28
|
# @yieldreturn [void]
|
24
29
|
# @return [void]
|
25
30
|
def update_test_container
|
26
|
-
unless
|
31
|
+
unless current_test_result_container
|
27
32
|
return logger.error("Could not update test container, no container is running.")
|
28
33
|
end
|
29
34
|
|
30
|
-
yield(
|
35
|
+
yield(current_test_result_container)
|
31
36
|
end
|
32
37
|
|
33
38
|
# Stop current test container and write result
|
34
39
|
# @return [void]
|
35
40
|
def stop_test_container
|
36
|
-
unless
|
41
|
+
unless current_test_result_container
|
37
42
|
return logger.error("Could not stop test container, no container is running.")
|
38
43
|
end
|
39
44
|
|
40
|
-
|
41
|
-
|
42
|
-
|
45
|
+
current_test_result_container.tap do |container|
|
46
|
+
container.stop = ResultUtils.timestamp
|
47
|
+
file_writer.write_test_result_container(container)
|
48
|
+
clear_last_test_container
|
49
|
+
end
|
43
50
|
end
|
44
51
|
|
45
52
|
# Start test case and add to current test container
|
@@ -47,14 +54,14 @@ module Allure
|
|
47
54
|
# @return [Allure::TestResult]
|
48
55
|
def start_test_case(test_result)
|
49
56
|
clear_step_context
|
50
|
-
unless
|
57
|
+
unless current_test_result_container
|
51
58
|
return logger.error("Could not start test case, test container is not started")
|
52
59
|
end
|
53
60
|
|
54
61
|
test_result.start = ResultUtils.timestamp
|
55
62
|
test_result.stage = Stage::RUNNING
|
56
63
|
test_result.labels.push(ResultUtils.thread_label, ResultUtils.host_label, ResultUtils.language_label)
|
57
|
-
|
64
|
+
current_test_result_container.children.push(test_result.uuid)
|
58
65
|
@current_test_case = test_result
|
59
66
|
end
|
60
67
|
|
@@ -123,7 +130,7 @@ module Allure
|
|
123
130
|
# @return [Allure::FixtureResult]
|
124
131
|
def start_prepare_fixture(fixture_result)
|
125
132
|
start_fixture(fixture_result) || return
|
126
|
-
|
133
|
+
current_test_result_container.befores.push(fixture_result)
|
127
134
|
@current_fixture = fixture_result
|
128
135
|
end
|
129
136
|
|
@@ -132,7 +139,7 @@ module Allure
|
|
132
139
|
# @return [Allure::FixtureResult]
|
133
140
|
def start_tear_down_fixture(fixture_result)
|
134
141
|
start_fixture(fixture_result) || return
|
135
|
-
|
142
|
+
current_test_result_container.afters.push(fixture_result)
|
136
143
|
@current_fixture = fixture_result
|
137
144
|
end
|
138
145
|
|
@@ -141,7 +148,7 @@ module Allure
|
|
141
148
|
# @return [Allure::FixtureResult]
|
142
149
|
def start_fixture(fixture_result)
|
143
150
|
clear_step_context
|
144
|
-
unless
|
151
|
+
unless current_test_result_container
|
145
152
|
logger.error("Could not start fixture, test container is not started")
|
146
153
|
return false
|
147
154
|
end
|
@@ -218,6 +225,14 @@ module Allure
|
|
218
225
|
step_result
|
219
226
|
end
|
220
227
|
|
228
|
+
# Clean results directory
|
229
|
+
# @return [void]
|
230
|
+
def clean_results_dir
|
231
|
+
Allure.configuration.tap do |c|
|
232
|
+
FileUtils.rm_f(Dir.glob("#{c.results_directory}/*")) if c.clean_results_directory
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
221
236
|
private
|
222
237
|
|
223
238
|
def logger
|
@@ -232,12 +247,12 @@ module Allure
|
|
232
247
|
current_test_step || @current_fixture || @current_test_case
|
233
248
|
end
|
234
249
|
|
235
|
-
def
|
236
|
-
@
|
250
|
+
def current_test_result_container
|
251
|
+
@test_context.last
|
237
252
|
end
|
238
253
|
|
239
|
-
def
|
240
|
-
@
|
254
|
+
def clear_last_test_container
|
255
|
+
@test_context.pop
|
241
256
|
end
|
242
257
|
|
243
258
|
def current_test_step
|
@@ -252,6 +267,10 @@ module Allure
|
|
252
267
|
@step_context.clear
|
253
268
|
end
|
254
269
|
|
270
|
+
def clear_current_test_case
|
271
|
+
@current_test_case = nil
|
272
|
+
end
|
273
|
+
|
255
274
|
def clear_current_fixture
|
256
275
|
@current_fixture = nil
|
257
276
|
end
|
@@ -75,6 +75,20 @@ module Allure
|
|
75
75
|
Label.new(SUITE_LABEL_NAME, value)
|
76
76
|
end
|
77
77
|
|
78
|
+
# Parent suite label
|
79
|
+
# @param [String] value
|
80
|
+
# @return [Allure::Label]
|
81
|
+
def parent_suite_label(value)
|
82
|
+
Label.new(PARENT_SUITE_LABEL_NAME, value)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Parent suite label
|
86
|
+
# @param [String] value
|
87
|
+
# @return [Allure::Label]
|
88
|
+
def sub_suite_label(value)
|
89
|
+
Label.new(SUB_SUITE_LABEL_NAME, value)
|
90
|
+
end
|
91
|
+
|
78
92
|
# Story label
|
79
93
|
# @param [String] value
|
80
94
|
# @return [Allure::Label]
|
@@ -119,16 +133,16 @@ module Allure
|
|
119
133
|
|
120
134
|
# Get status based on exception type
|
121
135
|
# @param [Exception] exception
|
122
|
-
# @return [
|
136
|
+
# @return [Symbol]
|
123
137
|
def status(exception)
|
124
138
|
expectation_error?(exception) ? Status::FAILED : Status::BROKEN
|
125
139
|
end
|
126
140
|
|
127
141
|
# Get exception status detail
|
128
142
|
# @param [Exception] exception
|
129
|
-
# @return [
|
143
|
+
# @return [Allure::StatusDetails]
|
130
144
|
def status_details(exception)
|
131
|
-
StatusDetails.new(message: exception
|
145
|
+
StatusDetails.new(message: exception&.message, trace: exception&.backtrace&.join("\n"))
|
132
146
|
end
|
133
147
|
|
134
148
|
private
|
@@ -144,8 +158,6 @@ module Allure
|
|
144
158
|
def expectation_error?(exception)
|
145
159
|
exception.instance_of?(RSpec::Expectations::ExpectationNotMetError) ||
|
146
160
|
exception.instance_of?(RSpec::Expectations::MultipleExpectationsNotMetError)
|
147
|
-
rescue NameError
|
148
|
-
false
|
149
161
|
end
|
150
162
|
end
|
151
163
|
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.13.
|
4
|
+
version: 2.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrejs Cunskis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09
|
11
|
+
date: 2019-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: uuid
|
@@ -58,20 +58,6 @@ dependencies:
|
|
58
58
|
- - "<"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '3'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rubyzip
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '1.2'
|
68
|
-
type: :runtime
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '1.2'
|
75
61
|
- !ruby/object:Gem::Dependency
|
76
62
|
name: mime-types
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,11 +99,15 @@ files:
|
|
113
99
|
- lib/allure_ruby_commons/model/test_result.rb
|
114
100
|
- lib/allure_ruby_commons/model/test_result_container.rb
|
115
101
|
- lib/allure_ruby_commons/result_utils.rb
|
116
|
-
- lib/allure_ruby_commons/util.rb
|
117
102
|
homepage: https://github.com/allure-framework/allure-ruby
|
118
103
|
licenses:
|
119
104
|
- Apache-2.0
|
120
|
-
metadata:
|
105
|
+
metadata:
|
106
|
+
bug_tracker_uri: https://github.com/allure-framework/allure-ruby/issues
|
107
|
+
changelog_uri: https://github.com/allure-framework/allure-ruby/releases
|
108
|
+
documentation_uri: https://github.com/allure-framework/allure-ruby/blob/master/allure-ruby-commons/README.md
|
109
|
+
source_code_uri: https://github.com/allure-framework/allure-ruby/tree/master/allure-ruby-commons
|
110
|
+
wiki_uri: https://github.com/allure-framework/allure-ruby/wiki
|
121
111
|
post_install_message:
|
122
112
|
rdoc_options: []
|
123
113
|
require_paths:
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "open-uri"
|
4
|
-
require "zip"
|
5
|
-
require "pathname"
|
6
|
-
|
7
|
-
module Allure
|
8
|
-
# Utility for downloading allure commandline binary
|
9
|
-
class Util
|
10
|
-
# @return [String] CLI version
|
11
|
-
ALLURE_CLI_VERSION = "2.12.1"
|
12
|
-
# @return [String] CLI bin download url
|
13
|
-
ALLURE_BIN_URL = "http://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/"\
|
14
|
-
"#{ALLURE_CLI_VERSION}/allure-commandline-#{ALLURE_CLI_VERSION}.zip"
|
15
|
-
|
16
|
-
class << self
|
17
|
-
# Download allure bin if appropriate version is not in path
|
18
|
-
# @return [String] allure executable
|
19
|
-
def allure_cli
|
20
|
-
return "allure" if ALLURE_CLI_VERSION == `allure --version`.chomp
|
21
|
-
|
22
|
-
cli_dir = File.join(".allure", "allure-#{ALLURE_CLI_VERSION}")
|
23
|
-
zip = File.join(".allure", "allure.zip")
|
24
|
-
bin = File.join(cli_dir, "bin", "allure")
|
25
|
-
|
26
|
-
FileUtils.mkpath(".allure")
|
27
|
-
download_allure(zip) unless File.exist?(zip) || File.exist?(bin)
|
28
|
-
extract_allure(zip, ".allure") unless File.exist?(bin)
|
29
|
-
|
30
|
-
bin
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def download_allure(destination)
|
36
|
-
File.open(destination, "w") { |file| file.write(open(ALLURE_BIN_URL).read) } # rubocop:disable Security/Open
|
37
|
-
end
|
38
|
-
|
39
|
-
def extract_allure(zip, destination)
|
40
|
-
Zip::File.foreach(zip) do |entry|
|
41
|
-
entry.restore_permissions = true
|
42
|
-
entry.extract(File.join(destination, entry.name))
|
43
|
-
end
|
44
|
-
FileUtils.rm(zip)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|