blinka-reporter 0.3.1 → 0.3.6
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/blinka_client.rb +35 -24
- data/lib/blinka_minitest.rb +18 -27
- data/lib/blinka_reporter/version.rb +3 -0
- data/lib/minitest/blinka_plugin.rb +14 -2
- metadata +26 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06c9c5c7a1de551d63e7b5c847e8f63141b3947b2e2438bb99682df7533dbf65
|
4
|
+
data.tar.gz: 04efe62851c48eb4b956f9ab749a3c9910edaa13fdb910e3e21ab1b8687815ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2f18d7a70bec74bfa5df5777f3a31b0b87ec7d957d74a1571e1f6ee25c2e71b897f4ce89314c808579ae3448e28c98263dfe3cdbe03d262a6223d6a821a0c90
|
7
|
+
data.tar.gz: 9212e1935d61b03e366407c0a964fa5726c2d523031a61066f8b19233c9f1da23f38de3b21d5ade2e123f60498402dae054a16c8416856c6f338d81e07c5a725
|
data/lib/blinka_client.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
1
|
-
require 'mimemagic'
|
2
1
|
require 'httparty'
|
3
2
|
|
4
3
|
class BlinkaClient
|
4
|
+
DEFAULT_HOST = 'https://www.blinka.app'.freeze
|
5
|
+
SUPPORTED_MIME_TYPES = {
|
6
|
+
jpg: 'image/jpeg',
|
7
|
+
jpeg: 'image/jpeg',
|
8
|
+
png: 'image/png'
|
9
|
+
}
|
10
|
+
|
11
|
+
include HTTParty
|
12
|
+
|
5
13
|
class BlinkaConfig
|
6
|
-
attr_reader(
|
7
|
-
|
8
|
-
:commit,
|
9
|
-
:host,
|
10
|
-
:repository,
|
11
|
-
:team_id,
|
12
|
-
:team_secret,
|
13
|
-
:jwt_token
|
14
|
-
)
|
14
|
+
attr_reader(:host, :repository, :team_id, :team_secret, :jwt_token)
|
15
|
+
|
15
16
|
def initialize
|
16
|
-
@host = ENV.fetch('BLINKA_HOST',
|
17
|
+
@host = ENV.fetch('BLINKA_HOST', DEFAULT_HOST)
|
17
18
|
@team_id = ENV.fetch('BLINKA_TEAM_ID', nil)
|
18
19
|
@team_secret = ENV.fetch('BLINKA_TEAM_SECRET', nil)
|
19
20
|
@repository = ENV.fetch('BLINKA_REPOSITORY', nil)
|
20
|
-
@tag = ENV.fetch('BLINKA_TAG', '')
|
21
|
-
@commit = ENV.fetch('BLINKA_COMMIT', `git rev-parse HEAD`.chomp)
|
22
21
|
|
23
22
|
if @team_id.nil? || @team_secret.nil? || @repository.nil?
|
24
23
|
raise(BlinkaError, <<~EOS)
|
@@ -32,7 +31,6 @@ class BlinkaClient
|
|
32
31
|
end
|
33
32
|
|
34
33
|
class BlinkaError < StandardError; end
|
35
|
-
include HTTParty
|
36
34
|
|
37
35
|
def initialize
|
38
36
|
@config = BlinkaConfig.new
|
@@ -46,6 +44,12 @@ class BlinkaClient
|
|
46
44
|
'Could not find blinka_results.json, did tests run with environment variable BLINKA_JSON=true set?'
|
47
45
|
)
|
48
46
|
end
|
47
|
+
|
48
|
+
if ENV.fetch('BLINKA_ALLOW_WEBMOCK_DISABLE', 'true') == 'true' &&
|
49
|
+
defined?(WebMock) && WebMock.respond_to?(:disable!)
|
50
|
+
WebMock.disable!
|
51
|
+
end
|
52
|
+
|
49
53
|
self.authenticate
|
50
54
|
data = JSON.parse(File.open(filepath).read)
|
51
55
|
|
@@ -65,13 +69,13 @@ class BlinkaClient
|
|
65
69
|
body = {
|
66
70
|
report: {
|
67
71
|
repository: @config.repository,
|
68
|
-
tag:
|
69
|
-
commit:
|
72
|
+
tag: data['tag'],
|
73
|
+
commit: data['commit'],
|
70
74
|
metadata: {
|
71
|
-
total_time: data
|
72
|
-
nbr_tests: data
|
73
|
-
nbr_assertions: data
|
74
|
-
seed: data
|
75
|
+
total_time: data['total_time'],
|
76
|
+
nbr_tests: data['nbr_tests'],
|
77
|
+
nbr_assertions: data['nbr_assertions'],
|
78
|
+
seed: data['seed']
|
75
79
|
}.compact,
|
76
80
|
results: results
|
77
81
|
}
|
@@ -88,9 +92,7 @@ class BlinkaClient
|
|
88
92
|
)
|
89
93
|
case response.code
|
90
94
|
when 200
|
91
|
-
puts "Reported #{data
|
92
|
-
@config.commit
|
93
|
-
}!"
|
95
|
+
puts "Reported #{data['nbr_tests']} tests of commit #{data['commit']}!"
|
94
96
|
else
|
95
97
|
raise(BlinkaError, "Could not report, got response code #{response.code}")
|
96
98
|
end
|
@@ -100,6 +102,13 @@ class BlinkaClient
|
|
100
102
|
Failed to create report because of #{error.class} with message:
|
101
103
|
#{error.message}
|
102
104
|
EOS
|
105
|
+
ensure
|
106
|
+
WebMock.enable! if defined?(WebMock) && WebMock.respond_to?(:enable!)
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.report(filepath: './blinka_results.json')
|
110
|
+
client = BlinkaClient.new
|
111
|
+
client.report(filepath: filepath)
|
103
112
|
end
|
104
113
|
|
105
114
|
def self.upload_image(filepath:)
|
@@ -107,7 +116,9 @@ class BlinkaClient
|
|
107
116
|
|
108
117
|
file = File.open(filepath)
|
109
118
|
filename = File.basename(filepath)
|
110
|
-
|
119
|
+
extension = File.extname(filepath).delete('.').to_sym
|
120
|
+
content_type = SUPPORTED_MIME_TYPES[extension]
|
121
|
+
return if content_type.nil?
|
111
122
|
|
112
123
|
presigned_post =
|
113
124
|
BlinkaClient.presign_image(filename: filename, content_type: content_type)
|
data/lib/blinka_minitest.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
class BlinkaMinitest
|
2
|
-
attr_reader(:test_result)
|
3
2
|
def initialize(test_result)
|
4
3
|
@test_result = test_result
|
5
4
|
end
|
@@ -8,14 +7,19 @@ class BlinkaMinitest
|
|
8
7
|
@path ||= source_location.first.gsub(Dir.getwd, '').delete_prefix('/')
|
9
8
|
end
|
10
9
|
|
10
|
+
def line
|
11
|
+
@line ||= source_location.last
|
12
|
+
end
|
13
|
+
|
11
14
|
# Handle broken API in Minitest between 5.10 and 5.11
|
12
15
|
# https://github.com/minitest-reporters/minitest-reporters/blob/e9092460b5a5cf5ca9eb375428217cbb2a7f6dbb/lib/minitest/reporters/default_reporter.rb#L159
|
13
16
|
def source_location
|
14
|
-
|
15
|
-
test_result.
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
@source_location ||=
|
18
|
+
if @test_result.respond_to?(:klass)
|
19
|
+
@test_result.source_location
|
20
|
+
else
|
21
|
+
@test_result.method(@test_result.name).source_location
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
25
|
def kind
|
@@ -24,47 +28,34 @@ class BlinkaMinitest
|
|
24
28
|
end
|
25
29
|
|
26
30
|
def message
|
27
|
-
failure = test_result.failure
|
31
|
+
failure = @test_result.failure
|
28
32
|
return unless failure
|
29
33
|
"#{failure.error.class}: #{failure.error.message}"
|
30
34
|
end
|
31
35
|
|
32
36
|
def backtrace
|
33
|
-
return unless test_result.failure
|
34
|
-
Minitest.filter_backtrace(test_result.failure.backtrace)
|
37
|
+
return unless @test_result.failure
|
38
|
+
Minitest.filter_backtrace(@test_result.failure.backtrace)
|
35
39
|
end
|
36
40
|
|
37
41
|
def result
|
38
|
-
if test_result.error?
|
42
|
+
if @test_result.error?
|
39
43
|
:error
|
40
|
-
elsif test_result.skipped?
|
44
|
+
elsif @test_result.skipped?
|
41
45
|
:skip
|
42
|
-
elsif test_result.failure
|
46
|
+
elsif @test_result.failure
|
43
47
|
:failed
|
44
48
|
else
|
45
49
|
:pass
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
49
|
-
def line
|
50
|
-
current_backtrace = backtrace
|
51
|
-
return if current_backtrace.nil?
|
52
|
-
|
53
|
-
row =
|
54
|
-
current_backtrace
|
55
|
-
.map { |row| row.split(':')[0..1] }
|
56
|
-
.detect { |row| row[0] == path }
|
57
|
-
|
58
|
-
return if row.nil?
|
59
|
-
row[1].to_i
|
60
|
-
end
|
61
|
-
|
62
53
|
def time
|
63
|
-
test_result.time
|
54
|
+
@test_result.time
|
64
55
|
end
|
65
56
|
|
66
57
|
def name
|
67
|
-
test_result.name
|
58
|
+
@test_result.name
|
68
59
|
end
|
69
60
|
|
70
61
|
def image
|
@@ -26,13 +26,13 @@ module Minitest
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def report
|
29
|
+
super
|
30
|
+
|
29
31
|
tap_report if ENV['BLINKA_TAP']
|
30
32
|
json_report if ENV['BLINKA_JSON'] || ENV['BLINKA_REPORT']
|
31
33
|
BlinkaClient.new.report if ENV['BLINKA_REPORT']
|
32
34
|
rescue BlinkaClient::BlinkaError => error
|
33
35
|
puts(error)
|
34
|
-
ensure
|
35
|
-
super
|
36
36
|
end
|
37
37
|
|
38
38
|
private
|
@@ -42,6 +42,8 @@ module Minitest
|
|
42
42
|
total_time: total_time,
|
43
43
|
nbr_tests: count,
|
44
44
|
nbr_assertions: assertions,
|
45
|
+
commit: find_commit,
|
46
|
+
tag: ENV.fetch('BLINKA_TAG', ''),
|
45
47
|
seed: options[:seed],
|
46
48
|
results:
|
47
49
|
tests.map { |test_result| BlinkaMinitest.new(test_result).report }
|
@@ -83,6 +85,16 @@ module Minitest
|
|
83
85
|
def print_padded_comment(line)
|
84
86
|
puts "##{' ' * TAP_COMMENT_PAD + line}"
|
85
87
|
end
|
88
|
+
|
89
|
+
def find_commit
|
90
|
+
ENV.fetch(
|
91
|
+
'BLINKA_COMMIT',
|
92
|
+
ENV.fetch(
|
93
|
+
'HEROKU_TEST_RUN_COMMIT_VERSION',
|
94
|
+
`git rev-parse HEAD`.chomp
|
95
|
+
)
|
96
|
+
)
|
97
|
+
end
|
86
98
|
end
|
87
99
|
end
|
88
100
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blinka-reporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Wessman
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.18.1
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: mimemagic
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.3.5
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.3.5
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: dotenv
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +80,20 @@ dependencies:
|
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '13'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.11'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.11'
|
97
97
|
description: Use to format test results from Minitest to use with Blinka.
|
98
98
|
email: david@wessman.co
|
99
99
|
executables: []
|
@@ -102,12 +102,18 @@ extra_rdoc_files: []
|
|
102
102
|
files:
|
103
103
|
- lib/blinka_client.rb
|
104
104
|
- lib/blinka_minitest.rb
|
105
|
+
- lib/blinka_reporter/version.rb
|
105
106
|
- lib/minitest/blinka_plugin.rb
|
106
107
|
homepage: https://github.com/davidwessman/blinka_reporter
|
107
108
|
licenses:
|
108
109
|
- MIT
|
109
|
-
metadata:
|
110
|
-
|
110
|
+
metadata:
|
111
|
+
homepage_uri: https://github.com/davidwessman/blinka_reporter
|
112
|
+
bug_tracker_uri: https://github.com/davidwessman/blinka_reporter/issues
|
113
|
+
documentation_uri: https://github.com/davidwessman/blinka_reporter
|
114
|
+
changelog_uri: https://github.com/davidwessman/blinka_reporter/main/CHANGELOG.md
|
115
|
+
source_code_uri: https://github.com/davidwessman/blinka_reporter
|
116
|
+
post_install_message:
|
111
117
|
rdoc_options: []
|
112
118
|
require_paths:
|
113
119
|
- lib
|
@@ -123,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
129
|
version: '0'
|
124
130
|
requirements: []
|
125
131
|
rubygems_version: 3.2.7
|
126
|
-
signing_key:
|
132
|
+
signing_key:
|
127
133
|
specification_version: 4
|
128
134
|
summary: Format tests for Blinka
|
129
135
|
test_files: []
|