oyencov 0.0.1.pre → 0.0.3
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
- checksums.yaml.gz.sig +1 -0
- data/lib/oyencov/api_connection.rb +2 -1
- data/lib/oyencov/background.rb +18 -10
- data/lib/oyencov/cli.rb +10 -7
- data/lib/oyencov/configuration.rb +25 -5
- data/lib/oyencov/coverage_peek_delta.rb +3 -4
- data/lib/oyencov/railtie.rb +2 -1
- data/lib/oyencov/simplecov_resultset_translator.rb +2 -2
- data/lib/oyencov/version.rb +3 -0
- data/lib/oyencov.rb +4 -3
- data.tar.gz.sig +1 -0
- metadata +36 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c102e275b55a04670f66472c988915b439ffff0bb1244bf030ced28a91f41d2f
|
4
|
+
data.tar.gz: 5eca0a2836563c253c2a4d6d632847f54e2947e146a927e53d2e9f87889ecc17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7096ed5ab32b52780d50003774e747fcd5790133e5f31060ab25081d3f620608690c58d9aa548e9cd8f2898c2124799e21277555ac2941205c0530ada877876
|
7
|
+
data.tar.gz: ce29ca45cdd0a10c8fa03fe31dfa3959ece15af843deb5962775094d93e3e58682ab7ca187980f3afdef191495264a7bc3c029a2f26d013cb282e7d34c8e20a4
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
���S����e)�Ȃ��!����v6P�B���Ϻ���<�g4�<��[�j�����K��u-+���~Y���]X5��q
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "faraday"
|
2
2
|
require "singleton"
|
3
|
+
require_relative "version"
|
3
4
|
|
4
5
|
module OyenCov
|
5
6
|
class APIConnection < Faraday::Connection
|
@@ -11,7 +12,7 @@ module OyenCov
|
|
11
12
|
headers: {
|
12
13
|
"Authorization" => "Bearer #{ENV["OYENCOV_API_KEY"]}",
|
13
14
|
"Content-Type" => "application/json",
|
14
|
-
"User-Agent" => "oyencov-ruby
|
15
|
+
"User-Agent" => "oyencov-ruby #{OyenCov::VERSION}"
|
15
16
|
}
|
16
17
|
}) do |f|
|
17
18
|
f.request :json
|
data/lib/oyencov/background.rb
CHANGED
@@ -23,23 +23,31 @@ module OyenCov
|
|
23
23
|
@config = OyenCov.config
|
24
24
|
|
25
25
|
def self.start
|
26
|
-
|
26
|
+
if ENV["OYENCOV_DEBUG"]
|
27
|
+
puts "[OyenCov] Env: #{Rails.env}"
|
28
|
+
puts "[OyenCov] $PROGRAM_NAME: #{$PROGRAM_NAME || "nil"}"
|
29
|
+
puts "[OyenCov] @process_type: #{@config.process_type}"
|
30
|
+
end
|
27
31
|
|
28
32
|
# Start `Coverage` as soon as possible before other codes are loaded
|
29
33
|
CoveragePeekDelta.start
|
30
34
|
|
35
|
+
# This thread is for production reporting only.
|
31
36
|
@thread = Thread.new {
|
32
37
|
# Check with backend to get parameters
|
33
38
|
sleep(3)
|
34
|
-
clearance = @api_conn.get_data_submission_clearance
|
35
39
|
|
36
|
-
if
|
37
|
-
|
38
|
-
Thread.stop
|
39
|
-
end
|
40
|
+
if @config.mode == "production"
|
41
|
+
clearance = @api_conn.get_data_submission_clearance
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
+
if clearance.nil?
|
44
|
+
puts "[OyenCov] Unable to obtain oyencov submission clearance. Stopping OyenCov background thread."
|
45
|
+
Thread.stop
|
46
|
+
end
|
47
|
+
|
48
|
+
if ENV["OYENCOV_DEBUG"]
|
49
|
+
puts(clearance.body)
|
50
|
+
end
|
43
51
|
end
|
44
52
|
|
45
53
|
@config.mode == "production" && loop do
|
@@ -57,9 +65,9 @@ module OyenCov
|
|
57
65
|
response = @api_conn.post_runtime_report(runtime_report)
|
58
66
|
|
59
67
|
if response && response.body["status"] == "ok"
|
60
|
-
puts "[
|
68
|
+
puts "[OyenCov] POST runtime_report ok."
|
61
69
|
else
|
62
|
-
warn "[
|
70
|
+
warn "[OyenCov] POST runtime_report failed. Stopping background thread."
|
63
71
|
Thread.stop
|
64
72
|
end
|
65
73
|
end # loop
|
data/lib/oyencov/cli.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "thor"
|
2
|
-
require_relative "
|
3
|
-
require_relative "
|
4
|
-
require_relative "
|
2
|
+
require_relative "api_connection"
|
3
|
+
require_relative "test_report_merger"
|
4
|
+
require_relative "simplecov_resultset_translator"
|
5
5
|
|
6
6
|
# Bootstrapped from `bin/oyencov`
|
7
7
|
#
|
@@ -27,11 +27,12 @@ module OyenCov
|
|
27
27
|
simplecov_json_path = Dir.pwd + "/" + options[:simplecov_json_path]
|
28
28
|
|
29
29
|
# Find existing resultset files
|
30
|
+
# We can start with empty JSON instead of exiting with error
|
30
31
|
if File.exist?(oyencov_json_path)
|
31
32
|
oyencov_json = File.read(oyencov_json_path)
|
32
33
|
else
|
33
|
-
warn("Could not find existing oyencov-resultset.json at #{oyencov_json_path}")
|
34
|
-
|
34
|
+
warn("Could not find existing oyencov-resultset.json at #{oyencov_json_path}.")
|
35
|
+
oyencov_json = "{}"
|
35
36
|
end
|
36
37
|
|
37
38
|
warn "Starting to translate simplecov"
|
@@ -43,7 +44,7 @@ module OyenCov
|
|
43
44
|
exit(1)
|
44
45
|
end
|
45
46
|
|
46
|
-
warn "
|
47
|
+
warn "Done translating simplecov"
|
47
48
|
|
48
49
|
# Attempt merging
|
49
50
|
oyencov_resultset = JSON.parse(oyencov_json)
|
@@ -56,11 +57,13 @@ module OyenCov
|
|
56
57
|
else
|
57
58
|
File.write(oyencov_json_path, new_oyencov_resultset_json)
|
58
59
|
end
|
60
|
+
|
61
|
+
warn "Saved oyencov resultset to: #{oyencov_json_path}"
|
59
62
|
end
|
60
63
|
|
61
64
|
desc "submit tmp/coverage-jsons-*/oyencov-resultset.json",
|
62
65
|
"submits the oyencov resultsets data"
|
63
|
-
option :files, type: :array,
|
66
|
+
option :files, type: :array, default: ["coverage/oyencov-resultset.json"]
|
64
67
|
option :git_commit_sha, required: true
|
65
68
|
option :token
|
66
69
|
def submit
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# We encourage configuring
|
1
|
+
# We encourage configuring OyenCov through environment variables.
|
2
2
|
#
|
3
3
|
# But some can be set through config/ if they are meant to be uniform across environments.
|
4
4
|
module OyenCov
|
@@ -13,12 +13,12 @@ module OyenCov
|
|
13
13
|
PROGRAM_NAME
|
14
14
|
]
|
15
15
|
|
16
|
-
attr :api_key, :api_url, :mode, :including_file_paths, :excluding_file_paths, :release, :test_reporting_dir, :test_resultset_path, :program_name
|
16
|
+
attr :api_key, :api_url, :mode, :including_file_paths, :excluding_file_paths, :release, :test_reporting_dir, :test_resultset_path, :program_name, :process_type
|
17
17
|
|
18
18
|
def initialize
|
19
19
|
reset_to_defaults
|
20
20
|
ENV_PARAMETERS.each do |key|
|
21
|
-
if (envvar_value = ENV["
|
21
|
+
if (envvar_value = ENV["OYENCOV_#{key}"])
|
22
22
|
instance_variable_set(
|
23
23
|
:"@#{key.downcase}", envvar_value
|
24
24
|
)
|
@@ -29,10 +29,11 @@ module OyenCov
|
|
29
29
|
def reset_to_defaults
|
30
30
|
@api_key = nil
|
31
31
|
@api_url = "https://telemetry-api.oyencov.com"
|
32
|
-
@mode = ENV["RAILS_ENV"]
|
32
|
+
@mode = ENV["OYENCOV_ENV"] || ENV["RAILS_ENV"]
|
33
33
|
@including_file_paths = %w[app lib]
|
34
34
|
@excluding_file_paths = []
|
35
35
|
@release = suggest_release
|
36
|
+
@process_type = suggest_process_type
|
36
37
|
@test_reporting_dir = "coverage/"
|
37
38
|
@test_resultset_path = "coverage/oyencov-resultset.json"
|
38
39
|
end
|
@@ -56,7 +57,26 @@ module OyenCov
|
|
56
57
|
end
|
57
58
|
|
58
59
|
# We need to know if this is rails, sidekiq, rake task etc
|
59
|
-
|
60
|
+
#
|
61
|
+
# Method 1: $PROGRAM_NAME.split("/")[-1]
|
62
|
+
def suggest_process_type
|
63
|
+
answer = nil
|
64
|
+
sliced_program_name = File.basename($PROGRAM_NAME)
|
65
|
+
|
66
|
+
if %w[sidekiq resque].include?(sliced_program_name)
|
67
|
+
return sliced_program_name
|
68
|
+
end
|
69
|
+
|
70
|
+
# Rails can be server or rake task
|
71
|
+
if sliced_program_name == "rails"
|
72
|
+
if defined?(Rails) && Rails.respond_to?(:server) && !!Rails.server
|
73
|
+
return "rails server"
|
74
|
+
else
|
75
|
+
return "rake"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
"-"
|
60
80
|
end
|
61
81
|
end
|
62
82
|
end
|
@@ -28,7 +28,7 @@ module OyenCov
|
|
28
28
|
def self.snapshot_delta
|
29
29
|
current_peek = Coverage.peek_result
|
30
30
|
|
31
|
-
if ENV["
|
31
|
+
if ENV["OYENCOV_DEBUG"]
|
32
32
|
$stdout.puts "current_peek size = #{current_peek.size}, keys like: #{current_peek.keys[0, 3]}"
|
33
33
|
end
|
34
34
|
|
@@ -39,7 +39,7 @@ module OyenCov
|
|
39
39
|
k.gsub(/#{PWD}\//o, "")
|
40
40
|
end
|
41
41
|
|
42
|
-
if ENV["
|
42
|
+
if ENV["OYENCOV_DEBUG"]
|
43
43
|
$stdout.puts "filtered size = #{filtered.size}, keys like: #{filtered.keys[0, 3]}"
|
44
44
|
end
|
45
45
|
|
@@ -48,7 +48,7 @@ module OyenCov
|
|
48
48
|
/^(app|lib)/.match?(k)
|
49
49
|
end
|
50
50
|
|
51
|
-
if ENV["
|
51
|
+
if ENV["OYENCOV_DEBUG"]
|
52
52
|
$stdout.puts "filtered size = #{filtered.size}, keys like: #{filtered.keys[0, 3]}"
|
53
53
|
end
|
54
54
|
|
@@ -65,7 +65,6 @@ module OyenCov
|
|
65
65
|
# Compare and delta
|
66
66
|
new_method_hits = {}
|
67
67
|
current_method_hits.each_pair do |method_name, counter|
|
68
|
-
if counter.nil?; puts method_name; end
|
69
68
|
new_hits = counter - (@@previous_method_hits[method_name] || 0)
|
70
69
|
if new_hits > 0
|
71
70
|
new_method_hits[method_name] = new_hits
|
data/lib/oyencov/railtie.rb
CHANGED
@@ -10,7 +10,7 @@ module OyenCov
|
|
10
10
|
end
|
11
11
|
|
12
12
|
config.after_initialize do
|
13
|
-
|
13
|
+
!!ENV["OYENCOV_DEBUG"] && puts("lib/oyencov/railtie.rb config.after_initialize")
|
14
14
|
ActiveSupport::Notifications.subscribe("start_processing.action_controller") do |name, start, finish, id, payload|
|
15
15
|
# puts(payload)
|
16
16
|
ControllerTracking.bump("#{payload[:controller]}##{payload[:action]}")
|
@@ -18,6 +18,7 @@ module OyenCov
|
|
18
18
|
|
19
19
|
if OyenCov.config.mode == "test"
|
20
20
|
at_exit do
|
21
|
+
!!ENV["OYENCOV_DEBUG"] && puts("[OyenCov] Testing mode, persisting rails controller action data.")
|
21
22
|
OyenCov::TestReporting.persist_controller_actions!
|
22
23
|
end
|
23
24
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require_relative "
|
2
|
-
require_relative "
|
1
|
+
require_relative "method_range_parser"
|
2
|
+
require_relative "test_report_merger"
|
3
3
|
|
4
4
|
# This is meant to be run at the end of the fan-out jobs, and the output
|
5
5
|
# artefacts are meant to be persisted for the next job in the workflow.
|
data/lib/oyencov.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
require_relative "oyencov/configuration"
|
2
2
|
require_relative "oyencov/simplecov_resultset_translator"
|
3
|
+
require_relative "oyencov/version"
|
3
4
|
|
4
5
|
# For now, support only Rails. We bootstrap from Railtie.
|
5
6
|
module OyenCov
|
6
|
-
VERSION = "0.0.1.pre"
|
7
|
-
|
8
7
|
def self.config
|
9
8
|
@config ||= OyenCov::Configuration.new
|
10
9
|
end
|
11
10
|
|
12
|
-
|
11
|
+
!!ENV["OYENCOV_DEBUG"] && puts("[OyenCov] Checking Rails existence")
|
12
|
+
if defined?(Rails::Railtie) # && ENV["OYENCOV_API_KEY"]
|
13
|
+
puts "[OyenCov] Starting Railtie"
|
13
14
|
require_relative "oyencov/railtie"
|
14
15
|
end
|
15
16
|
end
|
data.tar.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
�`�
|
metadata
CHANGED
@@ -1,14 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oyencov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anonoz Chong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MQ8wDQYDVQQDDAZhbm9u
|
14
|
+
b3oxFzAVBgoJkiaJk/IsZAEZFgdveWVuY292MRMwEQYKCZImiZPyLGQBGRYDY29t
|
15
|
+
MB4XDTIzMTExMDA3NDExNloXDTI0MTEwOTA3NDExNlowPzEPMA0GA1UEAwwGYW5v
|
16
|
+
bm96MRcwFQYKCZImiZPyLGQBGRYHb3llbmNvdjETMBEGCgmSJomT8ixkARkWA2Nv
|
17
|
+
bTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMnANOLEiEoiCsaZymIb
|
18
|
+
KUZSr+tAVJrp6bTKx9o8rl4a2d7mRNaHKM9hv0UxxOTXkehrQLFlJneVAlibS5uy
|
19
|
+
I+bN/QwvSEaxCdWDvau12PvuV3hDzQFN7EYoQG2sH+0cnUxAz0g+TetEvmPllaQ8
|
20
|
+
/Bx+vOu4+bFsktIin86NmycSjIKh8sM/RsRQJmhOyAtBDyWs5SYohpdDhfWchxkE
|
21
|
+
tLwDraG3itMCzW01xuQUXAMIF5RlfFFT2ghpbTCUoFwpjtvTuYdlEgJHtkWoBvdZ
|
22
|
+
s5IFTFZFaN8RP3t6owMmRgwSadM3DFyAirk1mfrPydHiTfgD7wbH4nabpSvb6zWD
|
23
|
+
p+8Uex+9UkosCP4Tt7IKh9R3vDnXdUTGAQhkrcvDNT7KFO5wbaXeLULiEOkoOM71
|
24
|
+
VGTmxTJ0CR3T+EPBdSaqdQg6cLTYte/rZ/T2KYXcWVFzmGIAQE0blvGzjmeBipcT
|
25
|
+
S/2vRLYPUCg2F9LMuoJH09jdsdUR0Y7twOPGS3BOzgA/vQIDAQABo3cwdTAJBgNV
|
26
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUwteTfTOp5JmuRwuP3UgxoA4Q
|
27
|
+
RZgwHQYDVR0RBBYwFIESYW5vbm96QG95ZW5jb3YuY29tMB0GA1UdEgQWMBSBEmFu
|
28
|
+
b25vekBveWVuY292LmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAgNOIULlP+MK0v+dq
|
29
|
+
pkU9pP0MV16qshrgxAiuek9iYHEs2ui/UeF+LAxrKaGEGMor1JBNnseLOkQCiSUm
|
30
|
+
vBkimocNX8XtUUjFFbBBizqwJftX08kzK+RtTvRfKg5q62MQ0LMJZUlCMD2nnT3B
|
31
|
+
rD2PCLiNlQi2qlnKlKQCzRckWLdX/gE51Y+adjYfhZGizf9zK7QfDZKDQeoO1KQa
|
32
|
+
3/wac6GYOzU9iCO9aZuSKZeIBaY06xN0Xmjq+iHjEXAIVubxuLqnc31PWZqP4bvZ
|
33
|
+
M/48FZWADSbULbcx7eELQ60JsY/Ep77JjMRh0MGfDYfUUbMKnhBCkniK5/Lq74wn
|
34
|
+
08NdtmBccXON5C0Z39uERex72tqqW11W4tfX1k2K1k5Lli0HRBlXMQ1hWMHpx8nj
|
35
|
+
K18ySnv/ePkrL7AJhCgkP4tlJvrBvWnt30OuFfFf4K64ja+Hgqren8UabRQGIzn+
|
36
|
+
JcaIEQ0pXyjnNFwGBhHBjPXKHvRYuw/LNUPXBmP/k1a0WY6H
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date: 2023-12-05 00:00:00.000000000 Z
|
12
39
|
dependencies:
|
13
40
|
- !ruby/object:Gem::Dependency
|
14
41
|
name: rake
|
@@ -134,10 +161,12 @@ files:
|
|
134
161
|
- lib/oyencov/simplecov_resultset_translator.rb
|
135
162
|
- lib/oyencov/test_report_merger.rb
|
136
163
|
- lib/oyencov/test_reporting.rb
|
164
|
+
- lib/oyencov/version.rb
|
137
165
|
homepage: https://www.oyencov.com
|
138
166
|
licenses:
|
139
167
|
- MIT
|
140
|
-
metadata:
|
168
|
+
metadata:
|
169
|
+
source_code_uri: https://github.com/oyencov/sdk-ruby
|
141
170
|
post_install_message:
|
142
171
|
rdoc_options: []
|
143
172
|
require_paths:
|
@@ -149,12 +178,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
178
|
version: 3.1.0
|
150
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
180
|
requirements:
|
152
|
-
- - "
|
181
|
+
- - ">="
|
153
182
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
183
|
+
version: '0'
|
155
184
|
requirements: []
|
156
185
|
rubygems_version: 3.3.7
|
157
186
|
signing_key:
|
158
187
|
specification_version: 4
|
159
|
-
summary:
|
188
|
+
summary: Usage-weighted test coverage for Rails
|
160
189
|
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|