coverband 6.1.0 → 6.1.1
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/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
|