coverband 6.1.0 → 6.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/changes.md +4 -0
- data/coverband.gemspec +1 -0
- data/lib/coverband/adapters/hash_redis_store.rb +7 -6
- data/lib/coverband/version.rb +1 -1
- data/test/coverband/adapters/hash_redis_store_test.rb +48 -0
- data/test/test_helper.rb +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed2b063179cbc773c9b3b8fab3403820f9855c32a9de007c347b58873eecf13a
|
4
|
+
data.tar.gz: 7968b26ac22e3209b0bf2a9baabdfe107ed9029a0d4557eea5b80c22439e3278
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bccf2dbc8e92d5980365a99b5ae2852fd8e04d224202a58e3a8490991b88eb88a881fbf620e4ea60d66cd4714a70f11a8015ebd96aa772a65a35e1fb642ea24
|
7
|
+
data.tar.gz: 784f5e0905989f865199261270072c397e520b2269ed387f0ecd1276ef5a7395fc5d4de7ec9990aceeda1cc883778bcfcf4c7c2260c792e81557914298778d87
|
data/changes.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
### Coverband 6.1.1
|
2
|
+
|
3
|
+
* Performance fix making paged report loading 10X faster
|
4
|
+
|
1
5
|
### Coverband 6.1.0
|
2
6
|
|
3
7
|
This release has a number of smaller fixes and improvements. It includes a sizable refactoring around the UI which should simplify improvements going forward. This release is mostly targetting large projects with 6K+ ruby files, use the new `config.paged_reporting = true` option with the HashRedisStore to enable paged reporting for large projects. The HashRedisStore now also includes the last time a line in a file was executed.
|
data/coverband.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "memory_profiler"
|
37
37
|
# breaking change in minitest and mocha...
|
38
38
|
# note: we are also adding 'spy' as mocha doesn't want us to spy on redis calls...
|
39
|
+
spec.add_development_dependency "spy"
|
39
40
|
# ^^^ probably need a large test cleanup refactor
|
40
41
|
spec.add_development_dependency "minitest", "= 5.18.1"
|
41
42
|
spec.add_development_dependency "minitest-fork_executor"
|
@@ -231,14 +231,14 @@ module Coverband
|
|
231
231
|
end
|
232
232
|
end
|
233
233
|
|
234
|
+
# NOTE: This is kind of hacky, we find all the matching eager loading data
|
235
|
+
# for current page of runtime data.
|
234
236
|
eager_key_pre = key_prefix(Coverband::EAGER_TYPE)
|
235
237
|
runtime_key_pre = key_prefix(Coverband::RUNTIME_TYPE)
|
236
|
-
matched_file_set =
|
237
|
-
.
|
238
|
-
|
239
|
-
|
240
|
-
end
|
241
|
-
end || []
|
238
|
+
matched_file_set = runtime_file_set.map do |runtime_key|
|
239
|
+
runtime_key.sub(runtime_key_pre, eager_key_pre)
|
240
|
+
end
|
241
|
+
|
242
242
|
hash_data[Coverband::EAGER_TYPE] = matched_file_set.each_slice(page_size).flat_map do |key_batch|
|
243
243
|
@redis.pipelined do |pipeline|
|
244
244
|
key_batch.each do |key|
|
@@ -246,6 +246,7 @@ module Coverband
|
|
246
246
|
end
|
247
247
|
end
|
248
248
|
end
|
249
|
+
|
249
250
|
hash_data[Coverband::RUNTIME_TYPE] = hash_data[Coverband::RUNTIME_TYPE].each_with_object({}) do |data_from_redis, hash|
|
250
251
|
add_coverage_for_file(data_from_redis, hash)
|
251
252
|
end
|
data/lib/coverband/version.rb
CHANGED
@@ -242,4 +242,52 @@ class HashRedisStoreTest < Minitest::Test
|
|
242
242
|
@store.coverage["./dog.rb"]
|
243
243
|
)
|
244
244
|
end
|
245
|
+
|
246
|
+
def test_split_coverage
|
247
|
+
@store = Coverband::Adapters::HashRedisStore.new(
|
248
|
+
@redis,
|
249
|
+
redis_namespace: "coverband_test",
|
250
|
+
relative_file_converter: MockRelativeFileConverter
|
251
|
+
)
|
252
|
+
|
253
|
+
mock_file_hash
|
254
|
+
yesterday = DateTime.now.prev_day.to_time
|
255
|
+
mock_time(yesterday)
|
256
|
+
|
257
|
+
@store.type = :eager_loading
|
258
|
+
data = {
|
259
|
+
"app_path/dog.rb" => [0, nil, 1]
|
260
|
+
}
|
261
|
+
@store.save_report(data)
|
262
|
+
|
263
|
+
@store.type = :runtime
|
264
|
+
@store.save_report(
|
265
|
+
"app_path/dog.rb" => [0, 1, 2]
|
266
|
+
)
|
267
|
+
redis_pipelined = Spy.on(@redis, :pipelined).and_call_through
|
268
|
+
assert_equal(
|
269
|
+
{
|
270
|
+
runtime: {
|
271
|
+
"./dog.rb" => {
|
272
|
+
"first_updated_at" => yesterday.to_i,
|
273
|
+
"last_updated_at" => yesterday.to_i,
|
274
|
+
"file_hash" => "abcd",
|
275
|
+
"data" => [0, 1, 2],
|
276
|
+
"timedata" => [nil, Time.at(yesterday.to_i), Time.at(yesterday.to_i)]
|
277
|
+
}
|
278
|
+
},
|
279
|
+
eager_loading: {
|
280
|
+
"./dog.rb" => {
|
281
|
+
"first_updated_at" => yesterday.to_i,
|
282
|
+
"last_updated_at" => nil,
|
283
|
+
"file_hash" => "abcd",
|
284
|
+
"data" => [0, nil, 1],
|
285
|
+
"timedata" => [nil, nil, Time.at(yesterday.to_i)]
|
286
|
+
}
|
287
|
+
}
|
288
|
+
},
|
289
|
+
@store.split_coverage([Coverband::RUNTIME_TYPE, Coverband::EAGER_TYPE], {}, {page: 1})
|
290
|
+
)
|
291
|
+
assert_equal 2, redis_pipelined.calls.count
|
292
|
+
end
|
245
293
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coverband
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
4
|
+
version: 6.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-04-
|
12
|
+
date: 2024-04-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: benchmark-ips
|
@@ -67,6 +67,20 @@ dependencies:
|
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: spy
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: minitest
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|