oyencov 0.0.3 → 0.0.4
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 -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
|