Skip to content

Commit 245418a

Browse files
bazel: collect code coverage
1 parent 67b15fd commit 245418a

File tree

6 files changed

+38
-72
lines changed

6 files changed

+38
-72
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,6 @@ docs/
135135

136136
**/bazel-*
137137

138-
.ijwb
138+
.ijwb/
139+
140+
genhtml/

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ python.defaults(python_version = "3.11")
66

77
# register multiple toolchains with different Python versions
88
python.toolchain(python_version = "3.10")
9-
python.toolchain(python_version = "3.11")
9+
python.toolchain(python_version = "3.11", configure_coverage_tool = True)
1010

1111
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
1212

Makefile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ requirements:
3434
test:
3535
bazel test //tests/... --nocache_test_results
3636

37+
coverage:
38+
rm -rf genhtml
39+
bazel clean
40+
bazel coverage //tests/... \
41+
--nocache_test_results \
42+
--collect_code_coverage \
43+
--combined_report=lcov \
44+
--instrument_test_targets \
45+
--instrumentation_filter="^//cheeseshop[/:],^//tests[/:]"
46+
genhtml --output genhtml "$(shell bazel info output_path)/_coverage/_coverage_report.dat"
47+
3748
run-python-interpreter:
3849
# run a specific Python interpreter
3950
# @rules_python//python/config_settings:python_version is a build setting defined by the rules_python ruleset

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,26 @@ $ bazel run //cheeseshop/cli -- list-versions \
2121
--arch="aarch64" \
2222
--stable-only
2323
```
24+
25+
Generate code coverage:
26+
27+
```shell
28+
$ bazel coverage //tests/... \
29+
--nocache_test_results \
30+
--collect_code_coverage \
31+
--combined_report=lcov \
32+
--instrumentation_filter="^//cheeseshop[/:],^//tests[/:]"
33+
```
34+
35+
`lcov --list` might expects function and branch data, which Bazel's Python coverage tooling does
36+
not provide, so it defaults to 0% even if line coverage is present:
37+
38+
```shell
39+
$ lcov --list "$(bazel info output_path)/_coverage/_coverage_report.dat"
40+
```
41+
42+
Use `genhtml` instead:
43+
44+
```shell
45+
$ genhtml --output genhtml "$(bazel info output_path)/_coverage/_coverage_report.dat"
46+
```

requirements/requirements-test.lock

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -4,75 +4,6 @@
44
#
55
# bazel run //requirements:requirements-test.update
66
#
7-
coverage==7.9.1 \
8-
--hash=sha256:02532fd3290bb8fa6bec876520842428e2a6ed6c27014eca81b031c2d30e3f71 \
9-
--hash=sha256:0a4be2a28656afe279b34d4f91c3e26eccf2f85500d4a4ff0b1f8b54bf807338 \
10-
--hash=sha256:0b3496922cb5f4215bf5caaef4cf12364a26b0be82e9ed6d050f3352cf2d7ef0 \
11-
--hash=sha256:0c804506d624e8a20fb3108764c52e0eef664e29d21692afa375e0dd98dc384f \
12-
--hash=sha256:0f16649a7330ec307942ed27d06ee7e7a38417144620bb3d6e9a18ded8a2d3e5 \
13-
--hash=sha256:16aa0830d0c08a2c40c264cef801db8bc4fc0e1892782e45bcacbd5889270509 \
14-
--hash=sha256:18a0912944d70aaf5f399e350445738a1a20b50fbea788f640751c2ed9208b6c \
15-
--hash=sha256:1c503289ffef1d5105d91bbb4d62cbe4b14bec4d13ca225f9c73cde9bb46207d \
16-
--hash=sha256:2241ad5dbf79ae1d9c08fe52b36d03ca122fb9ac6bca0f34439e99f8327ac89f \
17-
--hash=sha256:25308bd3d00d5eedd5ae7d4357161f4df743e3c0240fa773ee1b0f75e6c7c0f1 \
18-
--hash=sha256:2a876e4c3e5a2a1715a6608906aa5a2e0475b9c0f68343c2ada98110512ab1d8 \
19-
--hash=sha256:2d04b16a6062516df97969f1ae7efd0de9c31eb6ebdceaa0d213b21c0ca1a683 \
20-
--hash=sha256:30f445f85c353090b83e552dcbbdad3ec84c7967e108c3ae54556ca69955563e \
21-
--hash=sha256:31324f18d5969feef7344a932c32428a2d1a3e50b15a6404e97cba1cc9b2c631 \
22-
--hash=sha256:34ed2186fe52fcc24d4561041979a0dec69adae7bce2ae8d1c49eace13e55c43 \
23-
--hash=sha256:37ab6be0859141b53aa89412a82454b482c81cf750de4f29223d52268a86de67 \
24-
--hash=sha256:37ae0383f13cbdcf1e5e7014489b0d71cc0106458878ccde52e8a12ced4298ed \
25-
--hash=sha256:382e7ddd5289f140259b610e5f5c58f713d025cb2f66d0eb17e68d0a94278875 \
26-
--hash=sha256:3bb5838701ca68b10ebc0937dbd0eb81974bac54447c55cd58dea5bca8451029 \
27-
--hash=sha256:437c576979e4db840539674e68c84b3cda82bc824dd138d56bead1435f1cb5d7 \
28-
--hash=sha256:49f1d0788ba5b7ba65933f3a18864117c6506619f5ca80326b478f72acf3f385 \
29-
--hash=sha256:52e92b01041151bf607ee858e5a56c62d4b70f4dac85b8c8cb7fb8a351ab2c10 \
30-
--hash=sha256:535fde4001b2783ac80865d90e7cc7798b6b126f4cd8a8c54acfe76804e54e58 \
31-
--hash=sha256:56f5eb308b17bca3bbff810f55ee26d51926d9f89ba92707ee41d3c061257e55 \
32-
--hash=sha256:5add197315a054e92cee1b5f686a2bcba60c4c3e66ee3de77ace6c867bdee7cb \
33-
--hash=sha256:5f646a99a8c2b3ff4c6a6e081f78fad0dde275cd59f8f49dc4eab2e394332e74 \
34-
--hash=sha256:600a1d4106fe66f41e5d0136dfbc68fe7200a5cbe85610ddf094f8f22e1b0300 \
35-
--hash=sha256:60c458224331ee3f1a5b472773e4a085cc27a86a0b48205409d364272d67140d \
36-
--hash=sha256:64bdd969456e2d02a8b08aa047a92d269c7ac1f47e0c977675d550c9a0863643 \
37-
--hash=sha256:66b974b145aa189516b6bf2d8423e888b742517d37872f6ee4c5be0073bd9a3c \
38-
--hash=sha256:684e2110ed84fd1ca5f40e89aa44adf1729dc85444004111aa01866507adf363 \
39-
--hash=sha256:68cd53aec6f45b8e4724c0950ce86eacb775c6be01ce6e3669fe4f3a21e768ed \
40-
--hash=sha256:69aa417a030bf11ec46149636314c24c8d60fadb12fc0ee8f10fda0d918c879d \
41-
--hash=sha256:6ad935f0016be24c0e97fc8c40c465f9c4b85cbbe6eac48934c0dc4d2568321e \
42-
--hash=sha256:6b55ad10a35a21b8015eabddc9ba31eb590f54adc9cd39bcf09ff5349fd52125 \
43-
--hash=sha256:6cf43c78c4282708a28e466316935ec7489a9c487518a77fa68f716c67909cec \
44-
--hash=sha256:6f424507f57878e424d9a95dc4ead3fbdd72fd201e404e861e465f28ea469951 \
45-
--hash=sha256:70760b4c5560be6ca70d11f8988ee6542b003f982b32f83d5ac0b72476607b70 \
46-
--hash=sha256:73e9439310f65d55a5a1e0564b48e34f5369bee943d72c88378f2d576f5a5751 \
47-
--hash=sha256:7931b9e249edefb07cd6ae10c702788546341d5fe44db5b6108a25da4dca513f \
48-
--hash=sha256:81f34346dd63010453922c8e628a52ea2d2ccd73cb2487f7700ac531b247c8a5 \
49-
--hash=sha256:888f8eee13f2377ce86d44f338968eedec3291876b0b8a7289247ba52cb984cd \
50-
--hash=sha256:95335095b6c7b1cc14c3f3f17d5452ce677e8490d101698562b2ffcacc304c8d \
51-
--hash=sha256:9565c3ab1c93310569ec0d86b017f128f027cab0b622b7af288696d7ed43a16d \
52-
--hash=sha256:95c765060e65c692da2d2f51a9499c5e9f5cf5453aeaf1420e3fc847cc060582 \
53-
--hash=sha256:9969ef1e69b8c8e1e70d591f91bbc37fc9a3621e447525d1602801a24ceda898 \
54-
--hash=sha256:9ca8e220006966b4a7b68e8984a6aee645a0384b0769e829ba60281fe61ec4f7 \
55-
--hash=sha256:a39d18b3f50cc121d0ce3838d32d58bd1d15dab89c910358ebefc3665712256c \
56-
--hash=sha256:a66e8f628b71f78c0e0342003d53b53101ba4e00ea8dabb799d9dba0abbbcebe \
57-
--hash=sha256:a8de12b4b87c20de895f10567639c0797b621b22897b0af3ce4b4e204a743626 \
58-
--hash=sha256:af41da5dca398d3474129c58cb2b106a5d93bbb196be0d307ac82311ca234342 \
59-
--hash=sha256:b30a25f814591a8c0c5372c11ac8967f669b97444c47fd794926e175c4047ece \
60-
--hash=sha256:ba383dc6afd5ec5b7a0d0c23d38895db0e15bcba7fb0fa8901f245267ac30d86 \
61-
--hash=sha256:bb4fbcab8764dc072cb651a4bcda4d11fb5658a1d8d68842a862a6610bd8cfa3 \
62-
--hash=sha256:be9e3f68ca9edb897c2184ad0eee815c635565dbe7a0e7e814dc1f7cbab92c0a \
63-
--hash=sha256:bfa447506c1a52271f1b0de3f42ea0fa14676052549095e378d5bff1c505ff7b \
64-
--hash=sha256:cc94d7c5e8423920787c33d811c0be67b7be83c705f001f7180c7b186dcf10ca \
65-
--hash=sha256:cea0a27a89e6432705fffc178064503508e3c0184b4f061700e771a09de58187 \
66-
--hash=sha256:cf95981b126f23db63e9dbe4cf65bd71f9a6305696fa5e2262693bc4e2183f5b \
67-
--hash=sha256:d4fe2348cc6ec372e25adec0219ee2334a68d2f5222e0cba9c0d613394e12d86 \
68-
--hash=sha256:db0f04118d1db74db6c9e1cb1898532c7dcc220f1d2718f058601f7c3f499514 \
69-
--hash=sha256:dd24bd8d77c98557880def750782df77ab2b6885a18483dc8588792247174b32 \
70-
--hash=sha256:e1b5191d1648acc439b24721caab2fd0c86679d8549ed2c84d5a7ec1bedcc244 \
71-
--hash=sha256:e5532482344186c543c37bfad0ee6069e8ae4fc38d073b8bc836fc8f03c9e250 \
72-
--hash=sha256:e980b53a959fa53b6f05343afbd1e6f44a23ed6c23c4b4c56c6662bbb40c82ce \
73-
--hash=sha256:ef64c27bc40189f36fcc50c3fb8f16ccda73b6a0b80d9bd6e6ce4cffcd810bbd \
74-
--hash=sha256:f05031cf21699785cd47cb7485f67df619e7bcdae38e0fde40d23d3d0210d3c3
75-
# via -r requirements/requirements-test.txt
767
idna==3.10 \
778
--hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
789
--hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3

requirements/requirements-test.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
pytest
22
pytest-vcr
3-
coverage

0 commit comments

Comments
 (0)