oyencov 0.0.1.pre → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|