oyencov 0.0.3 → 0.0.4
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 -1
- data/lib/oyencov/api_connection.rb +2 -3
- data/lib/oyencov/background.rb +22 -14
- data/lib/oyencov/cli.rb +7 -6
- data/lib/oyencov/configuration.rb +1 -2
- data/lib/oyencov/controller_tracking.rb +18 -6
- data/lib/oyencov/coverage_peek_delta.rb +4 -9
- data/lib/oyencov/logger.rb +24 -0
- data/lib/oyencov/puma/plugin/oyencov.rb +16 -0
- data/lib/oyencov/railtie.rb +23 -4
- data/lib/oyencov/simplecov_resultset_translator.rb +1 -1
- data/lib/oyencov/version.rb +1 -1
- data/lib/oyencov.rb +3 -2
- data.tar.gz.sig +0 -0
- metadata +44 -24
- 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: c88552b88f48f6474413438e3b4043802ead52f3db1b9d26642468f361dc15cc
|
4
|
+
data.tar.gz: 9e5244ef06ef4d24911ac0e86d58986bb36de6b2f660b0412e93f3e8a08f9014
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a50ad8ce049257eb6f6c93f3316cc59efaefcf1f2fcace72bd5d072d4e3c123bc4dafd2c1f8e974bc72d1ecf0786dda47ef2aa144d9ee446e8e6832721ba049
|
7
|
+
data.tar.gz: a95d62de2c84555c2935f826271f09473ebf85f77c041f32823724d091b7b149035976f5ca3a4c5f451950d81b79ea74d626c2185d6fdf08de403ce51f67ed71
|
checksums.yaml.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
dzw�@�_<m�] �b+S h�T-%$A���C$�/�$(<��ָ28�'���J�� :\���@GnW�̠�Ud�M����9���0���g�d��ミ:r*|*�
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "faraday"
|
2
2
|
require "singleton"
|
3
3
|
require_relative "version"
|
4
|
+
require_relative "logger"
|
4
5
|
|
5
6
|
module OyenCov
|
6
7
|
class APIConnection < Faraday::Connection
|
@@ -26,9 +27,7 @@ module OyenCov
|
|
26
27
|
begin
|
27
28
|
response = get("/v1/data_submission_clearance")
|
28
29
|
rescue Faraday::Error => e
|
29
|
-
|
30
|
-
warn(e)
|
31
|
-
end
|
30
|
+
OyenCov::Logger.log(e, 2)
|
32
31
|
|
33
32
|
if attempts > 0
|
34
33
|
attempts -= 1
|
data/lib/oyencov/background.rb
CHANGED
@@ -2,6 +2,7 @@ require "securerandom"
|
|
2
2
|
require "singleton"
|
3
3
|
require_relative "api_connection"
|
4
4
|
require_relative "coverage_peek_delta"
|
5
|
+
require_relative "logger"
|
5
6
|
|
6
7
|
# Bootstrap the thread that starts Coverage module data collection.
|
7
8
|
#
|
@@ -23,11 +24,12 @@ module OyenCov
|
|
23
24
|
@config = OyenCov.config
|
24
25
|
|
25
26
|
def self.start
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
OyenCov::Logger.log(<<~TXT)
|
28
|
+
Env: #{@config.mode}
|
29
|
+
$PROGRAM_NAME: #{$PROGRAM_NAME || "nil"}
|
30
|
+
@process_type: #{@config.process_type}
|
31
|
+
Env vars set: #{ENV.keys.grep(/^OYENCOV_/)}
|
32
|
+
TXT
|
31
33
|
|
32
34
|
# Start `Coverage` as soon as possible before other codes are loaded
|
33
35
|
CoveragePeekDelta.start
|
@@ -41,35 +43,41 @@ module OyenCov
|
|
41
43
|
clearance = @api_conn.get_data_submission_clearance
|
42
44
|
|
43
45
|
if clearance.nil?
|
44
|
-
|
46
|
+
OyenCov::Logger.log "Unable to obtain oyencov submission clearance. Stopping OyenCov background thread."
|
45
47
|
Thread.stop
|
46
48
|
end
|
47
49
|
|
48
|
-
|
49
|
-
puts(clearance.body)
|
50
|
-
end
|
50
|
+
# OyenCov::Logger.log("clearance.body:-\n" + clearance.body)
|
51
51
|
end
|
52
52
|
|
53
53
|
@config.mode == "production" && loop do
|
54
54
|
sleep(@loop_interval + 3 - rand(6))
|
55
55
|
new_method_hits = CoveragePeekDelta.snapshot_delta
|
56
|
+
OyenCov::Logger.log "ControllerTracking.hits = #{ControllerTracking.hits}"
|
56
57
|
new_controller_hits = ControllerTracking.snapshot_and_reset!
|
57
58
|
|
58
|
-
puts new_method_hits
|
59
|
-
|
60
59
|
runtime_report = {
|
61
|
-
git_commit_sha: @config.release,
|
62
60
|
controller_action_hits: new_controller_hits,
|
63
61
|
method_hits: new_method_hits
|
64
62
|
}
|
63
|
+
|
64
|
+
unless runtime_report.values.any?(&:any?)
|
65
|
+
OyenCov::Logger.log("All #{runtime_report.keys.join(", ")} are empty. Skipping submission.")
|
66
|
+
next
|
67
|
+
end
|
68
|
+
|
69
|
+
runtime_report[:git_commit_sha] = @config.release
|
70
|
+
|
65
71
|
response = @api_conn.post_runtime_report(runtime_report)
|
66
72
|
|
67
73
|
if response && response.body["status"] == "ok"
|
68
|
-
|
74
|
+
OyenCov::Logger.log "POST runtime_report ok."
|
69
75
|
else
|
70
|
-
|
76
|
+
OyenCov::Logger.log "POST runtime_report failed. Stopping background thread."
|
71
77
|
Thread.stop
|
72
78
|
end
|
79
|
+
|
80
|
+
# TODO: Set new interval & wiggle.
|
73
81
|
end # loop
|
74
82
|
}
|
75
83
|
|
data/lib/oyencov/cli.rb
CHANGED
@@ -2,6 +2,7 @@ require "thor"
|
|
2
2
|
require_relative "api_connection"
|
3
3
|
require_relative "test_report_merger"
|
4
4
|
require_relative "simplecov_resultset_translator"
|
5
|
+
require_relative "logger"
|
5
6
|
|
6
7
|
# Bootstrapped from `bin/oyencov`
|
7
8
|
#
|
@@ -68,12 +69,12 @@ module OyenCov
|
|
68
69
|
option :token
|
69
70
|
def submit
|
70
71
|
resultset_files = options[:files]
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
72
|
+
if resultset_files.any?
|
73
|
+
OyenCov::Logger.log "Found #{resultset_files.join(", ")}"
|
74
|
+
else
|
75
|
+
puts "No resultset files found"
|
76
|
+
exit 1
|
77
|
+
end
|
77
78
|
|
78
79
|
collated_report = OyenCov::TestReportMerger
|
79
80
|
.collate_job_reports(options[:files])
|
@@ -13,7 +13,7 @@ module OyenCov
|
|
13
13
|
PROGRAM_NAME
|
14
14
|
]
|
15
15
|
|
16
|
-
|
16
|
+
attr_reader :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
|
@@ -60,7 +60,6 @@ module OyenCov
|
|
60
60
|
#
|
61
61
|
# Method 1: $PROGRAM_NAME.split("/")[-1]
|
62
62
|
def suggest_process_type
|
63
|
-
answer = nil
|
64
63
|
sliced_program_name = File.basename($PROGRAM_NAME)
|
65
64
|
|
66
65
|
if %w[sidekiq resque].include?(sliced_program_name)
|
@@ -1,21 +1,33 @@
|
|
1
|
+
require_relative "logger"
|
2
|
+
|
1
3
|
# This module is merely the container data structure.
|
2
4
|
#
|
3
5
|
# The ACTUAL code that tracks controller is in `railtie.rb`
|
4
6
|
module OyenCov
|
5
7
|
module ControllerTracking
|
6
|
-
|
8
|
+
@@hits = {}
|
9
|
+
|
10
|
+
def self.hits
|
11
|
+
@@hits
|
12
|
+
end
|
7
13
|
|
8
14
|
def self.bump(controller_action_name)
|
9
|
-
if
|
10
|
-
|
15
|
+
if @@hits[controller_action_name]
|
16
|
+
@@hits[controller_action_name] += 1
|
11
17
|
else
|
12
|
-
|
18
|
+
@@hits[controller_action_name] = 1
|
13
19
|
end
|
20
|
+
|
21
|
+
OyenCov::Logger.log "ControllerTracking.bump self.object_id = #{object_id}"
|
22
|
+
OyenCov::Logger.log "ControllerTracking.bump @@hits[#{controller_action_name}] = #{@@hits[controller_action_name]}"
|
14
23
|
end
|
15
24
|
|
16
25
|
def self.snapshot_and_reset!
|
17
|
-
|
18
|
-
|
26
|
+
OyenCov::Logger.log "ControllerTracking.snapshot_and_reset! self.object_id = #{object_id}"
|
27
|
+
OyenCov::Logger.log "ControllerTracking.snapshot_and_reset! @@hits = #{@@hits}"
|
28
|
+
|
29
|
+
current_hits = @@hits.dup
|
30
|
+
@@hits = {}
|
19
31
|
current_hits
|
20
32
|
end
|
21
33
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "coverage"
|
2
2
|
require_relative "method_range_parser"
|
3
|
+
require_relative "logger"
|
3
4
|
|
4
5
|
# `CoveragePeekDelta` utility is meant to take...
|
5
6
|
#
|
@@ -28,9 +29,7 @@ module OyenCov
|
|
28
29
|
def self.snapshot_delta
|
29
30
|
current_peek = Coverage.peek_result
|
30
31
|
|
31
|
-
|
32
|
-
$stdout.puts "current_peek size = #{current_peek.size}, keys like: #{current_peek.keys[0, 3]}"
|
33
|
-
end
|
32
|
+
# OyenCov::Logger.log "1st current_peek size = #{current_peek.size}, keys like: #{current_peek.keys[0, 3]}"
|
34
33
|
|
35
34
|
# Filter into project
|
36
35
|
filtered = current_peek.select do |k, _|
|
@@ -39,18 +38,14 @@ module OyenCov
|
|
39
38
|
k.gsub(/#{PWD}\//o, "")
|
40
39
|
end
|
41
40
|
|
42
|
-
|
43
|
-
$stdout.puts "filtered size = #{filtered.size}, keys like: #{filtered.keys[0, 3]}"
|
44
|
-
end
|
41
|
+
# OyenCov::Logger.log "2nd filtered size = #{filtered.size}, keys like: #{filtered.keys[0, 3]}"
|
45
42
|
|
46
43
|
# Filter inside project to just the paths
|
47
44
|
filtered = filtered.select do |k, _|
|
48
45
|
/^(app|lib)/.match?(k)
|
49
46
|
end
|
50
47
|
|
51
|
-
|
52
|
-
$stdout.puts "filtered size = #{filtered.size}, keys like: #{filtered.keys[0, 3]}"
|
53
|
-
end
|
48
|
+
# OyenCov::Logger.log "3rd filtered size = #{filtered.size}, keys like: #{filtered.keys[0, 3]}"
|
54
49
|
|
55
50
|
# Find the method ranges, set
|
56
51
|
current_method_hits = {}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module OyenCov
|
2
|
+
module Logger
|
3
|
+
# ANSI escape code for orange text
|
4
|
+
ORANGE_TEXT = "\e[38;5;214m"
|
5
|
+
RESET_COLOR = "\e[0m"
|
6
|
+
|
7
|
+
# Level 0 = stdout for common users
|
8
|
+
# Level 1 = debug stdout
|
9
|
+
# Level 2 = debug stderr
|
10
|
+
def self.log(msg, level = 1)
|
11
|
+
return unless ENV["OYENCOV_DEBUG"] || level == 0
|
12
|
+
if Exception === msg
|
13
|
+
msg = msg.inspect
|
14
|
+
end
|
15
|
+
formatted_msg = msg.split("\n").map { |m| "#{ORANGE_TEXT}[OyenCov] #{m}#{RESET_COLOR}" }.join("\n")
|
16
|
+
|
17
|
+
if level == 2
|
18
|
+
warn formatted_msg
|
19
|
+
else
|
20
|
+
puts formatted_msg
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "puma/plugin"
|
2
|
+
require_relative "../../background"
|
3
|
+
require_relative "../../logger"
|
4
|
+
|
5
|
+
Puma::Plugin.create do
|
6
|
+
OyenCov::Logger.log("Puma::Plugin.create running...")
|
7
|
+
|
8
|
+
def config(c)
|
9
|
+
OyenCov::Logger.log("Puma::Plugin.create config(c) running...")
|
10
|
+
|
11
|
+
c.on_worker_boot do
|
12
|
+
OyenCov::Logger.log("Puma::Plugin.create config on_worker_boot called")
|
13
|
+
OyenCov::Background.start
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/oyencov/railtie.rb
CHANGED
@@ -1,24 +1,43 @@
|
|
1
1
|
require_relative "background"
|
2
2
|
require_relative "controller_tracking"
|
3
3
|
require_relative "test_reporting"
|
4
|
+
require_relative "logger"
|
4
5
|
|
5
6
|
module OyenCov
|
6
7
|
class Railtie < Rails::Railtie
|
8
|
+
def install_puma_hooks
|
9
|
+
return unless defined?(Puma)
|
10
|
+
OyenCov::Logger.log("Puma defined, installing puma hooks")
|
11
|
+
|
12
|
+
begin
|
13
|
+
require "puma/plugin"
|
14
|
+
rescue LoadError => e
|
15
|
+
OyenCov::Logger.log("Load errors: #{e}")
|
16
|
+
end
|
17
|
+
|
18
|
+
# # Cluster mode
|
19
|
+
if defined?(Puma::Plugin)
|
20
|
+
OyenCov::Logger.log("Puma::Plugin defined, installing hooks for CLUSTER MODE")
|
21
|
+
require_relative "puma/plugin/oyencov"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
7
25
|
initializer "oyencov.configure" do
|
8
|
-
# puts "lib/oyencov/railtie.rb initializer oyencov.configure"
|
9
26
|
OyenCov::Background.start
|
27
|
+
install_puma_hooks
|
10
28
|
end
|
11
29
|
|
12
30
|
config.after_initialize do
|
13
|
-
|
31
|
+
OyenCov::Logger.log("lib/oyencov/railtie.rb config.after_initialize")
|
32
|
+
|
14
33
|
ActiveSupport::Notifications.subscribe("start_processing.action_controller") do |name, start, finish, id, payload|
|
15
|
-
# puts(payload)
|
16
34
|
ControllerTracking.bump("#{payload[:controller]}##{payload[:action]}")
|
35
|
+
OyenCov::Logger.log "ControllerTracking.bump(#{payload[:controller]}##{payload[:action]})"
|
17
36
|
end
|
18
37
|
|
19
38
|
if OyenCov.config.mode == "test"
|
20
39
|
at_exit do
|
21
|
-
|
40
|
+
OyenCov::Logger.log("Testing mode, persisting rails controller action data.")
|
22
41
|
OyenCov::TestReporting.persist_controller_actions!
|
23
42
|
end
|
24
43
|
end
|
@@ -36,7 +36,7 @@ module OyenCov
|
|
36
36
|
all_methods_hits = resultset[resultset.keys[0]]["coverage"].each_pair.map do |file_path, file_attr|
|
37
37
|
# file_path = file_path.gsub(/#{PWD}\//o, "")
|
38
38
|
line_hits = file_attr["lines"]
|
39
|
-
|
39
|
+
MethodRangeParser[file_path]&.each_pair&.map do |method_name, line_num|
|
40
40
|
next if line_num.nil? || line_hits[line_num].nil?
|
41
41
|
[method_name, line_hits[line_num]]
|
42
42
|
end&.compact.to_h
|
data/lib/oyencov/version.rb
CHANGED
data/lib/oyencov.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require_relative "oyencov/configuration"
|
2
2
|
require_relative "oyencov/simplecov_resultset_translator"
|
3
3
|
require_relative "oyencov/version"
|
4
|
+
require_relative "oyencov/logger"
|
4
5
|
|
5
6
|
# For now, support only Rails. We bootstrap from Railtie.
|
6
7
|
module OyenCov
|
@@ -8,9 +9,9 @@ module OyenCov
|
|
8
9
|
@config ||= OyenCov::Configuration.new
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
+
OyenCov::Logger.log("Checking Rails existence")
|
12
13
|
if defined?(Rails::Railtie) # && ENV["OYENCOV_API_KEY"]
|
13
|
-
|
14
|
+
OyenCov::Logger.log("Starting Railtie")
|
14
15
|
require_relative "oyencov/railtie"
|
15
16
|
end
|
16
17
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anonoz Chong
|
@@ -35,78 +35,84 @@ cert_chain:
|
|
35
35
|
K18ySnv/ePkrL7AJhCgkP4tlJvrBvWnt30OuFfFf4K64ja+Hgqren8UabRQGIzn+
|
36
36
|
JcaIEQ0pXyjnNFwGBhHBjPXKHvRYuw/LNUPXBmP/k1a0WY6H
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2024-01-04 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rake
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '13.1'
|
47
47
|
type: :development
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '13.1'
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: minitest
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '5.20'
|
61
61
|
type: :development
|
62
62
|
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '5.20'
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
69
|
name: mocha
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '2.1'
|
75
75
|
type: :development
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '2.1'
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: standard
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '1.33'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
91
|
version_requirements: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
95
|
+
version: '1.33'
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
97
|
name: faraday
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
102
|
+
version: '1.0'
|
103
|
+
- - "<"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '3.0'
|
103
106
|
type: :runtime
|
104
107
|
prerelease: false
|
105
108
|
version_requirements: !ruby/object:Gem::Requirement
|
106
109
|
requirements:
|
107
110
|
- - ">="
|
108
111
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
112
|
+
version: '1.0'
|
113
|
+
- - "<"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '3.0'
|
110
116
|
- !ruby/object:Gem::Dependency
|
111
117
|
name: parser
|
112
118
|
requirement: !ruby/object:Gem::Requirement
|
@@ -133,15 +139,23 @@ dependencies:
|
|
133
139
|
requirements:
|
134
140
|
- - ">="
|
135
141
|
- !ruby/object:Gem::Version
|
136
|
-
version: '0'
|
142
|
+
version: '1.0'
|
143
|
+
- - "<"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '2.0'
|
137
146
|
type: :runtime
|
138
147
|
prerelease: false
|
139
148
|
version_requirements: !ruby/object:Gem::Requirement
|
140
149
|
requirements:
|
141
150
|
- - ">="
|
142
151
|
- !ruby/object:Gem::Version
|
143
|
-
version: '0'
|
144
|
-
|
152
|
+
version: '1.0'
|
153
|
+
- - "<"
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '2.0'
|
156
|
+
description: |2
|
157
|
+
OyenCov is a service that measures usage-weighted test coverage by
|
158
|
+
profiling the codebase line executions in production runtime.
|
145
159
|
email: anonoz@oyencov.com
|
146
160
|
executables:
|
147
161
|
- oyencov
|
@@ -156,7 +170,9 @@ files:
|
|
156
170
|
- lib/oyencov/configuration.rb
|
157
171
|
- lib/oyencov/controller_tracking.rb
|
158
172
|
- lib/oyencov/coverage_peek_delta.rb
|
173
|
+
- lib/oyencov/logger.rb
|
159
174
|
- lib/oyencov/method_range_parser.rb
|
175
|
+
- lib/oyencov/puma/plugin/oyencov.rb
|
160
176
|
- lib/oyencov/railtie.rb
|
161
177
|
- lib/oyencov/simplecov_resultset_translator.rb
|
162
178
|
- lib/oyencov/test_report_merger.rb
|
@@ -164,9 +180,13 @@ files:
|
|
164
180
|
- lib/oyencov/version.rb
|
165
181
|
homepage: https://www.oyencov.com
|
166
182
|
licenses:
|
167
|
-
-
|
183
|
+
- Nonstandard
|
168
184
|
metadata:
|
185
|
+
homepage_uri: https://www.oyencov.com
|
169
186
|
source_code_uri: https://github.com/oyencov/sdk-ruby
|
187
|
+
documentation_uri: https://docs.oyencov.com/category/ruby-on-rails
|
188
|
+
changelog_uri: https://github.com/oyencov/sdk-ruby/blob/main/CHANGELOG.md
|
189
|
+
bug_tracker_uri: https://github.com/oyencov/sdk-ruby/issues
|
170
190
|
post_install_message:
|
171
191
|
rdoc_options: []
|
172
192
|
require_paths:
|
metadata.gz.sig
CHANGED
Binary file
|