coverband 3.0.0 → 4.0.0
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/.gitignore +2 -1
- data/.travis.yml +3 -0
- data/Gemfile +1 -0
- data/Gemfile.rails4 +7 -0
- data/Gemfile.rails4.lock +164 -0
- data/README.md +143 -334
- data/changes.md +41 -17
- data/coverband.gemspec +16 -4
- data/lib/coverband/adapters/base.rb +57 -8
- data/lib/coverband/adapters/file_store.rb +4 -22
- data/lib/coverband/adapters/redis_store.rb +7 -27
- data/lib/coverband/collectors/coverage.rb +7 -10
- data/lib/coverband/configuration.rb +27 -13
- data/lib/coverband/integrations/background.rb +26 -1
- data/lib/coverband/integrations/middleware.rb +5 -1
- data/lib/coverband/integrations/rack_server_check.rb +27 -0
- data/lib/coverband/reporters/simple_cov_report.rb +1 -7
- data/lib/coverband/reporters/web.rb +3 -21
- data/lib/coverband/utils/railtie.rb +17 -0
- data/lib/coverband/utils/s3_report.rb +108 -0
- data/lib/coverband/utils/tasks.rb +6 -6
- data/lib/coverband/version.rb +1 -1
- data/lib/coverband.rb +14 -3
- data/test/benchmarks/benchmark.rake +53 -2
- data/test/rails4_dummy/app/controllers/dummy_controller.rb +5 -0
- data/test/rails4_dummy/config/application.rb +15 -0
- data/test/rails4_dummy/config/boot.rb +3 -0
- data/test/rails4_dummy/config/coverband.rb +8 -0
- data/test/rails4_dummy/config/environment.rb +5 -0
- data/test/rails4_dummy/config/routes.rb +3 -0
- data/test/rails4_dummy/config/secrets.yml +3 -0
- data/test/rails4_dummy/config.ru +4 -0
- data/test/rails5_dummy/app/controllers/dummy_controller.rb +5 -0
- data/test/rails5_dummy/config/application.rb +16 -0
- data/test/rails5_dummy/config/coverband.rb +8 -0
- data/test/rails5_dummy/config/environment.rb +2 -0
- data/test/rails5_dummy/config/routes.rb +3 -0
- data/test/rails5_dummy/config.ru +3 -0
- data/test/rails_test_helper.rb +11 -0
- data/test/test_helper.rb +14 -9
- data/test/unit/adapters_base_test.rb +34 -13
- data/test/unit/adapters_file_store_test.rb +8 -4
- data/test/unit/adapters_redis_store_test.rb +7 -13
- data/test/unit/background_test.rb +24 -0
- data/test/unit/collectors_coverage_test.rb +14 -0
- data/test/unit/configuration_test.rb +12 -0
- data/test/unit/coverband_test.rb +26 -0
- data/test/unit/full_stack_test.rb +2 -1
- data/test/unit/middleware_test.rb +19 -0
- data/test/unit/rack_server_checkout_test.rb +24 -0
- data/test/unit/rails_full_stack_test.rb +60 -0
- data/test/unit/reports_base_test.rb +0 -2
- data/test/unit/reports_console_test.rb +1 -0
- data/test/unit/reports_simple_cov_test.rb +1 -10
- data/test/unit/reports_web_test.rb +1 -3
- data/test/unit/utils_s3_report_test.rb +44 -0
- metadata +89 -19
- data/lib/coverband/utils/s3_report_writer.rb +0 -59
- data/test/unit/utils_s3_report_writer_test.rb +0 -30
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
4
|
+
|
|
5
|
+
class CoverbandTest < Test::Unit::TestCase
|
|
6
|
+
|
|
7
|
+
test 'Coverband#start kicks off background reporting if enabled and not in rack server' do
|
|
8
|
+
Coverband.configuration.stubs(:background_reporting_enabled).returns(:true)
|
|
9
|
+
Coverband::RackServerCheck.expects(:running?).returns(false)
|
|
10
|
+
Coverband::Background.expects(:start)
|
|
11
|
+
Coverband.start
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test 'Coverband#start delays background reporting if enabled and running in a rack server' do
|
|
15
|
+
Coverband.configuration.stubs(:background_reporting_enabled).returns(true)
|
|
16
|
+
Coverband::RackServerCheck.expects(:running?).returns(true)
|
|
17
|
+
Coverband::Background.expects(:start).never
|
|
18
|
+
Coverband.start
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test 'Coverband#start does not kick off background reporting if not enabled' do
|
|
22
|
+
Coverband.configuration.stubs(:background_reporting_enabled).returns(false)
|
|
23
|
+
Coverband::Background.expects(:start).never
|
|
24
|
+
::Coverband.start
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -5,7 +5,7 @@ require 'rack'
|
|
|
5
5
|
|
|
6
6
|
class FullStackTest < Test::Unit::TestCase
|
|
7
7
|
BASE_KEY = Coverband::Adapters::RedisStore::BASE_KEY
|
|
8
|
-
TEST_RACK_APP = '../fake_app/basic_rack.rb'
|
|
8
|
+
TEST_RACK_APP = '../fake_app/basic_rack.rb'
|
|
9
9
|
|
|
10
10
|
def setup
|
|
11
11
|
Coverband::Collectors::Coverage.instance.reset_instance
|
|
@@ -13,6 +13,7 @@ class FullStackTest < Test::Unit::TestCase
|
|
|
13
13
|
config.reporting_frequency = 100.0
|
|
14
14
|
config.store = Coverband::Adapters::RedisStore.new(Redis.new)
|
|
15
15
|
config.s3_bucket = nil
|
|
16
|
+
config.background_reporting_enabled = false
|
|
16
17
|
end
|
|
17
18
|
Coverband.configuration.store.clear!
|
|
18
19
|
Coverband.start
|
|
@@ -9,6 +9,7 @@ class MiddlewareTest < Test::Unit::TestCase
|
|
|
9
9
|
def setup
|
|
10
10
|
Coverband.configure do |config|
|
|
11
11
|
config.store = Coverband::Adapters::RedisStore.new(Redis.new)
|
|
12
|
+
config.background_reporting_enabled = false
|
|
12
13
|
end
|
|
13
14
|
end
|
|
14
15
|
|
|
@@ -27,6 +28,24 @@ class MiddlewareTest < Test::Unit::TestCase
|
|
|
27
28
|
app.call(env)
|
|
28
29
|
end
|
|
29
30
|
|
|
31
|
+
test 'starts background reporter when configured' do
|
|
32
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
|
33
|
+
Coverband.configuration.stubs(:background_reporting_enabled).returns(true)
|
|
34
|
+
Coverband::Collectors::Coverage.instance.expects(:report_coverage).never
|
|
35
|
+
Coverband::Background.expects(:start)
|
|
36
|
+
middleware = Coverband::Middleware.new(fake_app)
|
|
37
|
+
middleware.call(request)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test 'reports coverage when not set to background mode' do
|
|
41
|
+
request = Rack::MockRequest.env_for('/anything.json')
|
|
42
|
+
Coverband.configuration.stubs(:background_reporting_enabled).returns(false)
|
|
43
|
+
Coverband::Collectors::Coverage.instance.expects(:report_coverage)
|
|
44
|
+
Coverband::Background.expects(:start).never
|
|
45
|
+
middleware = Coverband::Middleware.new(fake_app)
|
|
46
|
+
middleware.call(request)
|
|
47
|
+
end
|
|
48
|
+
|
|
30
49
|
test 'never be report coverage with reporting_frequency of 0' do
|
|
31
50
|
request = Rack::MockRequest.env_for('/anything.json')
|
|
32
51
|
Coverband::Collectors::Coverage.instance.reset_instance
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
4
|
+
|
|
5
|
+
class RackServerCheckTest < Test::Unit::TestCase
|
|
6
|
+
|
|
7
|
+
test 'returns true when running in rack server' do
|
|
8
|
+
caller_locations = ['blah/lib/rack/server.rb'].map{ |path| OpenStruct.new(path: path, label: 'foo') }
|
|
9
|
+
Kernel.expects(:caller_locations).returns(caller_locations)
|
|
10
|
+
assert_true(Coverband::RackServerCheck.running?)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test 'returns false when not running in rack server' do
|
|
14
|
+
caller_locations = ['blah/lib/sidekiq/worker.rb'].map{ |path| OpenStruct.new(path: path, label: 'foo') }
|
|
15
|
+
Kernel.expects(:caller_locations).returns(caller_locations)
|
|
16
|
+
assert_false(Coverband::RackServerCheck.running?)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test 'returns true if running within a rails server' do
|
|
20
|
+
caller_locations = [OpenStruct.new(path: '/lib/rails/commands/commands_tasks.rb', label: 'server')]
|
|
21
|
+
Kernel.expects(:caller_locations).returns(caller_locations)
|
|
22
|
+
assert_true(Coverband::RackServerCheck.running?)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require File.expand_path('../rails_test_helper', File.dirname(__FILE__))
|
|
4
|
+
|
|
5
|
+
class RailsFullStackTest < ActionDispatch::IntegrationTest
|
|
6
|
+
def setup
|
|
7
|
+
Coverband.configuration.store.clear!
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test 'this is how we do it' do
|
|
11
|
+
get '/dummy/show'
|
|
12
|
+
assert_response :success
|
|
13
|
+
assert_equal 'I am no dummy', response.body
|
|
14
|
+
assert_equal [1, 1, 1, nil, nil], Coverband.configuration.store.coverage["#{Rails.root}/app/controllers/dummy_controller.rb"]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
###
|
|
18
|
+
# Please keep this test starting on line 22
|
|
19
|
+
# as we run it in single test mode via the benchmarks.
|
|
20
|
+
# Add new tests below this test
|
|
21
|
+
###
|
|
22
|
+
test 'memory usage' do
|
|
23
|
+
return unless ENV['COVERBAND_MEMORY_TEST']
|
|
24
|
+
# we don't want this to run during our standard test suite
|
|
25
|
+
# as the below profiler changes the runtime
|
|
26
|
+
# and shold only be included for isolated processes
|
|
27
|
+
begin
|
|
28
|
+
require 'memory_profiler'
|
|
29
|
+
|
|
30
|
+
# warmup
|
|
31
|
+
3.times do
|
|
32
|
+
get '/dummy/show'
|
|
33
|
+
assert_response :success
|
|
34
|
+
Coverband::Collectors::Coverage.instance.report_coverage(true)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
previous_out = $stdout
|
|
38
|
+
capture = StringIO.new
|
|
39
|
+
$stdout = capture
|
|
40
|
+
|
|
41
|
+
MemoryProfiler.report do
|
|
42
|
+
15.times do
|
|
43
|
+
get '/dummy/show'
|
|
44
|
+
assert_response :success
|
|
45
|
+
Coverband::Collectors::Coverage.instance.report_coverage(true)
|
|
46
|
+
# this is expected to retain memory across requests
|
|
47
|
+
# clear it to remove the false positive from test
|
|
48
|
+
Coverband::Collectors::Coverage.instance.send(:add_previous_results, nil)
|
|
49
|
+
end
|
|
50
|
+
end.pretty_print
|
|
51
|
+
data = $stdout.string
|
|
52
|
+
$stdout = previous_out
|
|
53
|
+
if data.match(/retained objects by gem(.*)retained objects by file/m)[0]&.match(/coverband/)
|
|
54
|
+
raise 'leaking memory!!!'
|
|
55
|
+
end
|
|
56
|
+
ensure
|
|
57
|
+
$stdout = previous_out
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -103,8 +103,6 @@ class ReportsBaseTest < Test::Unit::TestCase
|
|
|
103
103
|
lines_hit = [1, 3, 6]
|
|
104
104
|
store.stubs(:coverage).returns(key => lines_hit)
|
|
105
105
|
expected = { key => [1, 3, 6] }
|
|
106
|
-
File.stubs(:exist?).returns(true)
|
|
107
|
-
File.stubs(:foreach).returns(['line 1', 'line2', 'line3', 'line4', 'line5', 'line6'])
|
|
108
106
|
|
|
109
107
|
assert_equal expected, Coverband::Reporters::Base.send(:get_current_scov_data_imp, store, roots)
|
|
110
108
|
end
|
|
@@ -11,15 +11,6 @@ class ReportsSimpleCovTest < Test::Unit::TestCase
|
|
|
11
11
|
@store.clear!
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def combined_report
|
|
15
|
-
{
|
|
16
|
-
"#{BASE_KEY}.test/unit/dog.rb" => {
|
|
17
|
-
new: example_hash,
|
|
18
|
-
existing: {}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
end
|
|
22
|
-
|
|
23
14
|
test 'generate scov report' do
|
|
24
15
|
Coverband.configure do |config|
|
|
25
16
|
config.reporter = 'scov'
|
|
@@ -28,13 +19,13 @@ class ReportsSimpleCovTest < Test::Unit::TestCase
|
|
|
28
19
|
config.ignore = ['notsomething.rb']
|
|
29
20
|
end
|
|
30
21
|
Coverband.configuration.logger.stubs('info')
|
|
22
|
+
mock_file_hash
|
|
31
23
|
@store.send(:save_report, basic_coverage)
|
|
32
24
|
|
|
33
25
|
SimpleCov.expects(:track_files)
|
|
34
26
|
SimpleCov.expects(:add_not_loaded_files).returns({})
|
|
35
27
|
SimpleCov::Result.any_instance.expects(:format!)
|
|
36
28
|
SimpleCov.stubs(:root)
|
|
37
|
-
|
|
38
29
|
Coverband::Reporters::SimpleCovReport.report(@store, open_report: false)
|
|
39
30
|
end
|
|
40
31
|
end
|
|
@@ -29,9 +29,7 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.2.0')
|
|
|
29
29
|
|
|
30
30
|
test 'renders show content' do
|
|
31
31
|
Coverband.configuration.s3_bucket = 'coverage-bucket'
|
|
32
|
-
|
|
33
|
-
Aws::S3::Client.expects(:new).returns(s3)
|
|
34
|
-
s3.expects(:get_object).with(bucket: 'coverage-bucket', key: 'coverband/index.html').returns mock('response', body: mock('body', read: 'content'))
|
|
32
|
+
Coverband::Utils::S3Report.any_instance.expects(:retrieve).returns('content')
|
|
35
33
|
get '/show'
|
|
36
34
|
assert last_response.ok?
|
|
37
35
|
assert_equal 'content', last_response.body
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
2
|
+
require 'aws-sdk'
|
|
3
|
+
|
|
4
|
+
module Coverband
|
|
5
|
+
class S3ReportTest < Test::Unit::TestCase
|
|
6
|
+
def html_version
|
|
7
|
+
Gem::Specification.find_by_name('simplecov-html').version.version.to_s
|
|
8
|
+
rescue StandardError
|
|
9
|
+
'0.10.1'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test 'it writes the coverage report to s3' do
|
|
13
|
+
if defined?(Aws::S3::Resource)
|
|
14
|
+
# AWS v2
|
|
15
|
+
s3 = mock('s3_resource')
|
|
16
|
+
bucket = mock('bucket')
|
|
17
|
+
object = mock('object')
|
|
18
|
+
s3.expects(:bucket).with('coverage-bucket').returns(bucket)
|
|
19
|
+
bucket.expects(:object).with('coverband/index.html').returns(object)
|
|
20
|
+
File.expects(:read).at_least(0).returns("content ./assets/#{html_version}/")
|
|
21
|
+
object.expects(:put).with(body: 'content ')
|
|
22
|
+
Aws::S3::Resource.expects(:new).returns(s3)
|
|
23
|
+
else
|
|
24
|
+
# AWS v1
|
|
25
|
+
object = mock('object')
|
|
26
|
+
object.expects(:write).with('content ')
|
|
27
|
+
bucket = mock('bucket')
|
|
28
|
+
bucket.expects(:objects).returns('coverband/index.html' => object)
|
|
29
|
+
local_s3 = mock('s3_resource')
|
|
30
|
+
local_s3.expects(:buckets).returns('coverage-bucket' => bucket)
|
|
31
|
+
File.expects(:read).at_least(0).returns("content ./assets/#{html_version}/")
|
|
32
|
+
AWS::S3::Client.expects(:new).returns(nil)
|
|
33
|
+
AWS::S3.expects(:new).returns(local_s3)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
s3_options = {
|
|
37
|
+
region: 'us-west-1',
|
|
38
|
+
access_key_id: '',
|
|
39
|
+
secret_access_key: ''
|
|
40
|
+
}
|
|
41
|
+
Coverband::Utils::S3Report.new('coverage-bucket', s3_options).persist!
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: coverband
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dan Mayer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-12-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '2'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: benchmark-ips
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: bundler
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,21 +53,21 @@ dependencies:
|
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
54
|
version: '1.3'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
56
|
+
name: m
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- - "
|
|
59
|
+
- - ">="
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0
|
|
61
|
+
version: '0'
|
|
48
62
|
type: :development
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- - "
|
|
66
|
+
- - ">="
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0
|
|
68
|
+
version: '0'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
70
|
+
name: memory_profiler
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
73
|
- - ">="
|
|
@@ -67,7 +81,21 @@ dependencies:
|
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
82
|
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
84
|
+
name: mocha
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: 0.14.0
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: 0.14.0
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: rack
|
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
|
72
100
|
requirements:
|
|
73
101
|
- - ">="
|
|
@@ -81,7 +109,7 @@ dependencies:
|
|
|
81
109
|
- !ruby/object:Gem::Version
|
|
82
110
|
version: '0'
|
|
83
111
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
112
|
+
name: rack-test
|
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
|
86
114
|
requirements:
|
|
87
115
|
- - ">="
|
|
@@ -95,7 +123,7 @@ dependencies:
|
|
|
95
123
|
- !ruby/object:Gem::Version
|
|
96
124
|
version: '0'
|
|
97
125
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
126
|
+
name: rake
|
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
|
100
128
|
requirements:
|
|
101
129
|
- - ">="
|
|
@@ -109,7 +137,7 @@ dependencies:
|
|
|
109
137
|
- !ruby/object:Gem::Version
|
|
110
138
|
version: '0'
|
|
111
139
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
140
|
+
name: test-unit
|
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
|
114
142
|
requirements:
|
|
115
143
|
- - ">="
|
|
@@ -123,7 +151,7 @@ dependencies:
|
|
|
123
151
|
- !ruby/object:Gem::Version
|
|
124
152
|
version: '0'
|
|
125
153
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
154
|
+
name: classifier-reborn
|
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
|
128
156
|
requirements:
|
|
129
157
|
- - ">="
|
|
@@ -137,7 +165,7 @@ dependencies:
|
|
|
137
165
|
- !ruby/object:Gem::Version
|
|
138
166
|
version: '0'
|
|
139
167
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
168
|
+
name: pry-byebug
|
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
|
142
170
|
requirements:
|
|
143
171
|
- - ">="
|
|
@@ -151,13 +179,13 @@ dependencies:
|
|
|
151
179
|
- !ruby/object:Gem::Version
|
|
152
180
|
version: '0'
|
|
153
181
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
182
|
+
name: redis
|
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
|
156
184
|
requirements:
|
|
157
185
|
- - ">="
|
|
158
186
|
- !ruby/object:Gem::Version
|
|
159
187
|
version: '0'
|
|
160
|
-
type: :
|
|
188
|
+
type: :runtime
|
|
161
189
|
prerelease: false
|
|
162
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
191
|
requirements:
|
|
@@ -189,6 +217,8 @@ files:
|
|
|
189
217
|
- ".rubocop.yml"
|
|
190
218
|
- ".travis.yml"
|
|
191
219
|
- Gemfile
|
|
220
|
+
- Gemfile.rails4
|
|
221
|
+
- Gemfile.rails4.lock
|
|
192
222
|
- LICENSE
|
|
193
223
|
- LICENSE.txt
|
|
194
224
|
- README.md
|
|
@@ -204,11 +234,13 @@ files:
|
|
|
204
234
|
- lib/coverband/configuration.rb
|
|
205
235
|
- lib/coverband/integrations/background.rb
|
|
206
236
|
- lib/coverband/integrations/middleware.rb
|
|
237
|
+
- lib/coverband/integrations/rack_server_check.rb
|
|
207
238
|
- lib/coverband/reporters/base.rb
|
|
208
239
|
- lib/coverband/reporters/console_report.rb
|
|
209
240
|
- lib/coverband/reporters/simple_cov_report.rb
|
|
210
241
|
- lib/coverband/reporters/web.rb
|
|
211
|
-
- lib/coverband/utils/
|
|
242
|
+
- lib/coverband/utils/railtie.rb
|
|
243
|
+
- lib/coverband/utils/s3_report.rb
|
|
212
244
|
- lib/coverband/utils/tasks.rb
|
|
213
245
|
- lib/coverband/version.rb
|
|
214
246
|
- test/benchmarks/.gitignore
|
|
@@ -216,20 +248,39 @@ files:
|
|
|
216
248
|
- test/benchmarks/dog.rb
|
|
217
249
|
- test/benchmarks/graph_bench.sh
|
|
218
250
|
- test/fake_app/basic_rack.rb
|
|
251
|
+
- test/rails4_dummy/app/controllers/dummy_controller.rb
|
|
252
|
+
- test/rails4_dummy/config.ru
|
|
253
|
+
- test/rails4_dummy/config/application.rb
|
|
254
|
+
- test/rails4_dummy/config/boot.rb
|
|
255
|
+
- test/rails4_dummy/config/coverband.rb
|
|
256
|
+
- test/rails4_dummy/config/environment.rb
|
|
257
|
+
- test/rails4_dummy/config/routes.rb
|
|
258
|
+
- test/rails4_dummy/config/secrets.yml
|
|
259
|
+
- test/rails5_dummy/app/controllers/dummy_controller.rb
|
|
260
|
+
- test/rails5_dummy/config.ru
|
|
261
|
+
- test/rails5_dummy/config/application.rb
|
|
262
|
+
- test/rails5_dummy/config/coverband.rb
|
|
263
|
+
- test/rails5_dummy/config/environment.rb
|
|
264
|
+
- test/rails5_dummy/config/routes.rb
|
|
265
|
+
- test/rails_test_helper.rb
|
|
219
266
|
- test/test_helper.rb
|
|
220
267
|
- test/unit/adapters_base_test.rb
|
|
221
268
|
- test/unit/adapters_file_store_test.rb
|
|
222
269
|
- test/unit/adapters_redis_store_test.rb
|
|
270
|
+
- test/unit/background_test.rb
|
|
223
271
|
- test/unit/collectors_coverage_test.rb
|
|
224
272
|
- test/unit/configuration_test.rb
|
|
273
|
+
- test/unit/coverband_test.rb
|
|
225
274
|
- test/unit/dog.rb
|
|
226
275
|
- test/unit/full_stack_test.rb
|
|
227
276
|
- test/unit/middleware_test.rb
|
|
277
|
+
- test/unit/rack_server_checkout_test.rb
|
|
278
|
+
- test/unit/rails_full_stack_test.rb
|
|
228
279
|
- test/unit/reports_base_test.rb
|
|
229
280
|
- test/unit/reports_console_test.rb
|
|
230
281
|
- test/unit/reports_simple_cov_test.rb
|
|
231
282
|
- test/unit/reports_web_test.rb
|
|
232
|
-
- test/unit/
|
|
283
|
+
- test/unit/utils_s3_report_test.rb
|
|
233
284
|
homepage: https://github.com/danmayer/coverband
|
|
234
285
|
licenses:
|
|
235
286
|
- MIT
|
|
@@ -260,17 +311,36 @@ test_files:
|
|
|
260
311
|
- test/benchmarks/dog.rb
|
|
261
312
|
- test/benchmarks/graph_bench.sh
|
|
262
313
|
- test/fake_app/basic_rack.rb
|
|
314
|
+
- test/rails4_dummy/app/controllers/dummy_controller.rb
|
|
315
|
+
- test/rails4_dummy/config.ru
|
|
316
|
+
- test/rails4_dummy/config/application.rb
|
|
317
|
+
- test/rails4_dummy/config/boot.rb
|
|
318
|
+
- test/rails4_dummy/config/coverband.rb
|
|
319
|
+
- test/rails4_dummy/config/environment.rb
|
|
320
|
+
- test/rails4_dummy/config/routes.rb
|
|
321
|
+
- test/rails4_dummy/config/secrets.yml
|
|
322
|
+
- test/rails5_dummy/app/controllers/dummy_controller.rb
|
|
323
|
+
- test/rails5_dummy/config.ru
|
|
324
|
+
- test/rails5_dummy/config/application.rb
|
|
325
|
+
- test/rails5_dummy/config/coverband.rb
|
|
326
|
+
- test/rails5_dummy/config/environment.rb
|
|
327
|
+
- test/rails5_dummy/config/routes.rb
|
|
328
|
+
- test/rails_test_helper.rb
|
|
263
329
|
- test/test_helper.rb
|
|
264
330
|
- test/unit/adapters_base_test.rb
|
|
265
331
|
- test/unit/adapters_file_store_test.rb
|
|
266
332
|
- test/unit/adapters_redis_store_test.rb
|
|
333
|
+
- test/unit/background_test.rb
|
|
267
334
|
- test/unit/collectors_coverage_test.rb
|
|
268
335
|
- test/unit/configuration_test.rb
|
|
336
|
+
- test/unit/coverband_test.rb
|
|
269
337
|
- test/unit/dog.rb
|
|
270
338
|
- test/unit/full_stack_test.rb
|
|
271
339
|
- test/unit/middleware_test.rb
|
|
340
|
+
- test/unit/rack_server_checkout_test.rb
|
|
341
|
+
- test/unit/rails_full_stack_test.rb
|
|
272
342
|
- test/unit/reports_base_test.rb
|
|
273
343
|
- test/unit/reports_console_test.rb
|
|
274
344
|
- test/unit/reports_simple_cov_test.rb
|
|
275
345
|
- test/unit/reports_web_test.rb
|
|
276
|
-
- test/unit/
|
|
346
|
+
- test/unit/utils_s3_report_test.rb
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Coverband
|
|
4
|
-
module Utils
|
|
5
|
-
###
|
|
6
|
-
# TODO: this is currently a html report writer
|
|
7
|
-
# this should support writing coverage the current method should be fine
|
|
8
|
-
# to write every report to S3 and sum them later or use the 2 pass
|
|
9
|
-
# method we do for redis if in a background thread
|
|
10
|
-
###
|
|
11
|
-
class S3ReportWriter
|
|
12
|
-
def initialize(bucket_name, options = {})
|
|
13
|
-
@bucket_name = bucket_name
|
|
14
|
-
@region = options[:region]
|
|
15
|
-
@access_key_id = options[:access_key_id]
|
|
16
|
-
@secret_access_key = options[:secret_access_key]
|
|
17
|
-
begin
|
|
18
|
-
require 'aws-sdk'
|
|
19
|
-
rescue StandardError
|
|
20
|
-
err_msg = 'coverband requires aws-sdk in order use S3ReportWriter.'
|
|
21
|
-
Coverband.configuration.logger.error err_msg
|
|
22
|
-
return
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def persist!
|
|
27
|
-
object.put(body: coverage_content)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def coverage_content
|
|
33
|
-
version = Gem::Specification.find_by_name('simplecov-html').version.version
|
|
34
|
-
File.read("#{SimpleCov.coverage_dir}/index.html").gsub("./assets/#{version}/", '')
|
|
35
|
-
rescue StandardError
|
|
36
|
-
File.read("#{SimpleCov.coverage_dir}/index.html").to_s.gsub('./assets/0.10.1/', '')
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def object
|
|
40
|
-
bucket.object('coverband/index.html')
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def s3
|
|
44
|
-
client_options = {
|
|
45
|
-
region: @region,
|
|
46
|
-
access_key_id: @access_key_id,
|
|
47
|
-
secret_access_key: @secret_access_key
|
|
48
|
-
}
|
|
49
|
-
resource_options = { client: Aws::S3::Client.new(client_options) }
|
|
50
|
-
resource_options = {} if client_options.values.any?(&:nil?)
|
|
51
|
-
Aws::S3::Resource.new(resource_options)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def bucket
|
|
55
|
-
s3.bucket(@bucket_name)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
2
|
-
require 'aws-sdk'
|
|
3
|
-
|
|
4
|
-
module Coverband
|
|
5
|
-
class S3ReportWriterTest < Test::Unit::TestCase
|
|
6
|
-
def html_version
|
|
7
|
-
Gem::Specification.find_by_name('simplecov-html').version.version.to_s
|
|
8
|
-
rescue StandardError
|
|
9
|
-
'0.10.1'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
test 'it writes the coverage report to s3' do
|
|
13
|
-
s3 = mock('s3_resource')
|
|
14
|
-
bucket = mock('bucket')
|
|
15
|
-
object = mock('object')
|
|
16
|
-
s3.expects(:bucket).with('coverage-bucket').returns(bucket)
|
|
17
|
-
bucket.expects(:object).with('coverband/index.html').returns(object)
|
|
18
|
-
File.expects(:read).at_least(0).returns("content ./assets/#{html_version}/")
|
|
19
|
-
object.expects(:put).with(body: 'content ')
|
|
20
|
-
Aws::S3::Resource.expects(:new).returns(s3)
|
|
21
|
-
|
|
22
|
-
s3_writer_options = {
|
|
23
|
-
region: 'us-west-1',
|
|
24
|
-
access_key_id: '',
|
|
25
|
-
secret_access_key: ''
|
|
26
|
-
}
|
|
27
|
-
Coverband::Utils::S3ReportWriter.new('coverage-bucket', s3_writer_options).persist!
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|