From dcb08510dc34d043a6d11d3a66bc81e3b42b8275 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 28 Jan 2026 14:27:37 -0600 Subject: [PATCH 01/38] PYTHON-5467 Add codecov integration --- .evergreen/config.yml | 1 + .evergreen/generated_configs/functions.yml | 17 ++++++++++++ .evergreen/scripts/generate_config.py | 12 +++++++++ .evergreen/scripts/upload-codecov.sh | 15 +++++++++++ .github/workflows/test-python.yml | 31 ++++++++++++++++++++++ 5 files changed, 76 insertions(+) create mode 100755 .evergreen/scripts/upload-codecov.sh diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 91fa442775..1af19857c1 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -38,6 +38,7 @@ post: # Disabled, causing timeouts # - func: "upload working dir" - func: "teardown system" + - func: "upload codecov" - func: "upload coverage" - func: "upload mo artifacts" - func: "upload test results" diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index bd983abb3e..6f0612da95 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -252,6 +252,23 @@ functions: - TOOLCHAIN_VERSION type: test + # Upload coverage codecov + upload codecov: + - command: ec2.assume_role + params: + role_arn: ${assume_role_arn} + type: setup + - command: subprocess.exec + params: + binary: bash + args: + - .evergreen/scripts/upload-codecov.sh + working_dir: src + silent: true + include_expansions_in_env: + - CODECOV_TOKEN + type: test + # Upload coverage upload coverage: - command: ec2.assume_role diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 04579c521f..25658296a3 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -1077,6 +1077,18 @@ def create_upload_coverage_func(): return "upload coverage", [get_assume_role(), cmd] +def create_upload_coverage_codecov_func(): + # Upload the coverage report to codecov. + include_expansions = ["CODECOV_TOKEN"] + args = [ + ".evergreen/scripts/upload-codecov.sh", + ] + upload_cmd = get_subprocess_exec( + silent=True, include_expansions_in_env=include_expansions, args=args + ) + return "upload codecov", [get_assume_role(), upload_cmd] + + def create_download_and_merge_coverage_func(): include_expansions = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"] args = [ diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh new file mode 100755 index 0000000000..995c9391e1 --- /dev/null +++ b/.evergreen/scripts/upload-codecov.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Upload a coverate report to codecov. +# See coverage job in .github/workflows/test-python.yml for more information. +set -eu + +curl -Os https://cli.codecov.io/latest/linux/codecov +curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM +shasum -a 256 -c codecov.SHA256SUM +sudo chmod +x codecov +./codecov upload-process \ + --report-type test_results \ + --disable-search \ + --fail-on-error \ + --token ${CODECOV_TOKEN} \ + --file .coverage diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 086e22faec..74fa83e875 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -79,6 +79,37 @@ jobs: - name: Run tests run: uv run --extra test pytest -v + coverage: + # This enables a coverage report for a given PR, which will be augmented by + # the combined codecov report uploaded in Evergreen. + runs-on: ubuntu-latest + + name: Coverage + steps: + - uses: actions/checkout@v6 + with: + persist-credentials: false + - name: Install uv + uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7 + with: + enable-cache: true + python-version: "3.10" + - id: setup-mongodb + uses: mongodb-labs/drivers-evergreen-tools@master + with: + version: "8.0" + - name: Install just + run: uv tool install rust-just + - name: Setup tests + run: COVERAGE=1 just setup-tests + - name: Run tests + run: just run-tests + - name: Upload test results to Codecov + uses: codecov/test-results-action@v1 + with: + disable_search: true + files: .coverage + token: ${{ secrets.CODECOV_TOKEN }} doctest: runs-on: ubuntu-latest name: DocTest From 2a3678582ef5bc81abf02b7424ad3fba0bad5be3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 28 Jan 2026 14:55:42 -0600 Subject: [PATCH 02/38] fix coverage target --- .github/workflows/test-python.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 74fa83e875..dbdb9d54a6 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -105,8 +105,9 @@ jobs: - name: Run tests run: just run-tests - name: Upload test results to Codecov - uses: codecov/test-results-action@v1 + uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: + report_type: test_results disable_search: true files: .coverage token: ${{ secrets.CODECOV_TOKEN }} From 2b714fe0f4d1c8521ede82ce9a2b7d14e0845296 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 28 Jan 2026 15:05:29 -0600 Subject: [PATCH 03/38] add codecov config --- .codecov.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .codecov.yml diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000000..2e8a95c34d --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,5 @@ +comment: # this is a top-level key + layout: " diff, flags, files" + behavior: default + require_changes: true + require_base: false From a1a464f255cbd12f48824e0b1a65a682ecad57e2 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 28 Jan 2026 15:43:56 -0600 Subject: [PATCH 04/38] generate xml report --- .evergreen/scripts/setup_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 939423ffcc..0971c56d9e 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,7 +458,7 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - TEST_ARGS = f"{TEST_ARGS} --cov" + TEST_ARGS = f"{TEST_ARGS} --cov --cov-report=xml" write_env("COVERAGE") if opts.green_framework: From 90aea18fa3ebebd294243d1cd1a6771585e38f24 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 07:18:56 -0600 Subject: [PATCH 05/38] allow search to find coverage file --- .github/workflows/test-python.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index dbdb9d54a6..e241791be9 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -108,8 +108,6 @@ jobs: uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: report_type: test_results - disable_search: true - files: .coverage token: ${{ secrets.CODECOV_TOKEN }} doctest: runs-on: ubuntu-latest From 285ee75f0f031908c7a13f31b12651d2637e6355 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 07:54:10 -0600 Subject: [PATCH 06/38] fix handling of codecov --- .evergreen/generated_configs/functions.yml | 6 ++++++ .evergreen/scripts/generate_config.py | 12 ++++++++++-- .evergreen/scripts/upload-codecov.sh | 18 ++++++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 6f0612da95..2ebddbdb02 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -267,6 +267,12 @@ functions: silent: true include_expansions_in_env: - CODECOV_TOKEN + - build_variant + - task_name + - github_commit + - github_pr_number + - github_pr_head_branch + - github_author type: test # Upload coverage diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 25658296a3..14f3600806 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -1078,8 +1078,16 @@ def create_upload_coverage_func(): def create_upload_coverage_codecov_func(): - # Upload the coverage report to codecov. - include_expansions = ["CODECOV_TOKEN"] + # Upload the coverage xml report to codecov. + include_expansions = [ + "CODECOV_TOKEN", + "build_variant", + "task_name", + "github_commit", + "github_pr_number", + "github_pr_head_branch", + "github_author", + ] args = [ ".evergreen/scripts/upload-codecov.sh", ] diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 995c9391e1..b8b63fb2da 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -1,8 +1,18 @@ #!/bin/bash # Upload a coverate report to codecov. -# See coverage job in .github/workflows/test-python.yml for more information. set -eu +if [ -z "${github_pr_number:-}" ]; then + echo "This is not a PR, not running codecov" + exit 0 +fi + +if [ ! -f "xunit-results/TEST-results.xml" ]; then + echo "There are no XML test results, not running codecov" + exit 0 +fi + +# TODO: handle linux and windows. curl -Os https://cli.codecov.io/latest/linux/codecov curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM shasum -a 256 -c codecov.SHA256SUM @@ -12,4 +22,8 @@ sudo chmod +x codecov --disable-search \ --fail-on-error \ --token ${CODECOV_TOKEN} \ - --file .coverage + --pr ${github_pr_number} \ + --sha "${github_commit}" \ + --branch "${github_author}:${github_pr_head_branch}" \ + --flag "${build_variant}-${task_name}" \ + --file xunit-results/TEST-results.xml From e01d66a71d9c8b099756b075a392d4594aef67dd Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 08:29:20 -0600 Subject: [PATCH 07/38] debug --- .evergreen/generated_configs/functions.yml | 4 ---- .evergreen/scripts/generate_config.py | 2 +- .evergreen/scripts/upload-codecov.sh | 3 ++- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index 2ebddbdb02..d3f63f3b42 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -254,10 +254,6 @@ functions: # Upload coverage codecov upload codecov: - - command: ec2.assume_role - params: - role_arn: ${assume_role_arn} - type: setup - command: subprocess.exec params: binary: bash diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 14f3600806..a6f034cff2 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -1094,7 +1094,7 @@ def create_upload_coverage_codecov_func(): upload_cmd = get_subprocess_exec( silent=True, include_expansions_in_env=include_expansions, args=args ) - return "upload codecov", [get_assume_role(), upload_cmd] + return "upload codecov", [upload_cmd] def create_download_and_merge_coverage_func(): diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index b8b63fb2da..c5e127f2c6 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -1,6 +1,7 @@ #!/bin/bash +# shellcheck disable=SC2154 # Upload a coverate report to codecov. -set -eu +set -eux if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" From 399ad55256784bb09266ae686661725b5d545c24 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 09:10:02 -0600 Subject: [PATCH 08/38] debug --- .evergreen/scripts/upload-codecov.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index c5e127f2c6..ff6b3eb6d3 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -3,6 +3,8 @@ # Upload a coverate report to codecov. set -eux +echo "Inside upload-codecov script" + if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" exit 0 From a307de8b7a1726532e9b7fe17007ab49399bc9a7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 10:32:08 -0600 Subject: [PATCH 09/38] dibug --- .evergreen/generated_configs/functions.yml | 1 - .evergreen/scripts/generate_config.py | 4 +--- .evergreen/scripts/upload-codecov.sh | 14 +++++++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.evergreen/generated_configs/functions.yml b/.evergreen/generated_configs/functions.yml index d3f63f3b42..6fcda5e985 100644 --- a/.evergreen/generated_configs/functions.yml +++ b/.evergreen/generated_configs/functions.yml @@ -260,7 +260,6 @@ functions: args: - .evergreen/scripts/upload-codecov.sh working_dir: src - silent: true include_expansions_in_env: - CODECOV_TOKEN - build_variant diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index a6f034cff2..4c72078e07 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -1091,9 +1091,7 @@ def create_upload_coverage_codecov_func(): args = [ ".evergreen/scripts/upload-codecov.sh", ] - upload_cmd = get_subprocess_exec( - silent=True, include_expansions_in_env=include_expansions, args=args - ) + upload_cmd = get_subprocess_exec(include_expansions_in_env=include_expansions, args=args) return "upload codecov", [upload_cmd] diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index ff6b3eb6d3..32a401c6a9 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -1,32 +1,36 @@ #!/bin/bash # shellcheck disable=SC2154 # Upload a coverate report to codecov. -set -eux +set -eu -echo "Inside upload-codecov script" +FNAME=xunit-results/TEST-results.xml if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" exit 0 fi -if [ ! -f "xunit-results/TEST-results.xml" ]; then +if [ ! -f "$FNAME" ]; then echo "There are no XML test results, not running codecov" exit 0 fi # TODO: handle linux and windows. +echo "Installing codecov..." curl -Os https://cli.codecov.io/latest/linux/codecov curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM shasum -a 256 -c codecov.SHA256SUM sudo chmod +x codecov +echo "Installing codecov... done." +echo "Uploading $FNAME..." ./codecov upload-process \ --report-type test_results \ --disable-search \ --fail-on-error \ --token ${CODECOV_TOKEN} \ --pr ${github_pr_number} \ - --sha "${github_commit}" \ + --sha ${github_commit} \ --branch "${github_author}:${github_pr_head_branch}" \ --flag "${build_variant}-${task_name}" \ - --file xunit-results/TEST-results.xml + --file $FNAME +echo "Uploading $FNAME... done." From 2383ce02f2c5e74bceabe87525a0b7cf770c042f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 10:54:28 -0600 Subject: [PATCH 10/38] fix bin handling --- .evergreen/scripts/upload-codecov.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 32a401c6a9..c01fe8fa20 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -15,15 +15,17 @@ if [ ! -f "$FNAME" ]; then exit 0 fi -# TODO: handle linux and windows. -echo "Installing codecov..." +echo "Installing uv..." +export PYMONGO_BIN_DIR=bin +bash $HERE/install-dependencies.sh curl -Os https://cli.codecov.io/latest/linux/codecov curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM shasum -a 256 -c codecov.SHA256SUM sudo chmod +x codecov -echo "Installing codecov... done." +echo "Installing uv... done." + echo "Uploading $FNAME..." -./codecov upload-process \ +$PYMONGO_BIN_DIR/uv tool run --from codecov-cli codecovcli upload-process \ --report-type test_results \ --disable-search \ --fail-on-error \ From 36571a9c2d9b57c78c6c9dbd4ff8f7ef640d1692 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 11:21:48 -0600 Subject: [PATCH 11/38] fix dir handling --- .evergreen/scripts/upload-codecov.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index c01fe8fa20..bb1248f8f9 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -3,6 +3,10 @@ # Upload a coverate report to codecov. set -eu +HERE=$(dirname ${BASH_SOURCE:-$0}) +ROOT=$(dirname "$(dirname $HERE)") + +push $ROOT > /dev/null FNAME=xunit-results/TEST-results.xml if [ -z "${github_pr_number:-}" ]; then @@ -36,3 +40,5 @@ $PYMONGO_BIN_DIR/uv tool run --from codecov-cli codecovcli upload-process \ --flag "${build_variant}-${task_name}" \ --file $FNAME echo "Uploading $FNAME... done." + +popd > /dev/null From 3c6318e85619d7a64dbbd3b608b5cfe1c51c279b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 12:03:38 -0600 Subject: [PATCH 12/38] try with do-upload --- .evergreen/scripts/upload-codecov.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index bb1248f8f9..9634ec8859 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -29,7 +29,7 @@ sudo chmod +x codecov echo "Installing uv... done." echo "Uploading $FNAME..." -$PYMONGO_BIN_DIR/uv tool run --from codecov-cli codecovcli upload-process \ +$PYMONGO_BIN_DIR/uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ --fail-on-error \ From 84782443e1dc20fd99a77c2274e529eb2c5a52e4 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 13:05:40 -0600 Subject: [PATCH 13/38] fix pushd --- .evergreen/scripts/upload-codecov.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 9634ec8859..9c2f46f6b5 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -6,8 +6,8 @@ set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) ROOT=$(dirname "$(dirname $HERE)") -push $ROOT > /dev/null -FNAME=xunit-results/TEST-results.xml +pushd $ROOT > /dev/null +export FNAME=xunit-results/TEST-results.xml if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" From 375c0dc0ba4785e5e6bd998b0be80329444f4312 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 13:05:53 -0600 Subject: [PATCH 14/38] simplify --- .evergreen/scripts/upload-codecov.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 9c2f46f6b5..c3054e9e9f 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -22,10 +22,6 @@ fi echo "Installing uv..." export PYMONGO_BIN_DIR=bin bash $HERE/install-dependencies.sh -curl -Os https://cli.codecov.io/latest/linux/codecov -curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM -shasum -a 256 -c codecov.SHA256SUM -sudo chmod +x codecov echo "Installing uv... done." echo "Uploading $FNAME..." From 80c763211e83e47385dd280570a3672eeba4e96e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 13:23:31 -0600 Subject: [PATCH 15/38] debug --- .evergreen/scripts/upload-codecov.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index c3054e9e9f..1995b93f67 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -21,7 +21,9 @@ fi echo "Installing uv..." export PYMONGO_BIN_DIR=bin +set -x bash $HERE/install-dependencies.sh +set +x echo "Installing uv... done." echo "Uploading $FNAME..." From bf68f3dcd8ec0c6df981428c2e9ca8fcec97df6d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 13:58:44 -0600 Subject: [PATCH 16/38] try uv directly --- .evergreen/scripts/upload-codecov.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 1995b93f67..236396c9e9 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -19,15 +19,8 @@ if [ ! -f "$FNAME" ]; then exit 0 fi -echo "Installing uv..." -export PYMONGO_BIN_DIR=bin -set -x -bash $HERE/install-dependencies.sh -set +x -echo "Installing uv... done." - echo "Uploading $FNAME..." -$PYMONGO_BIN_DIR/uv tool run --from codecov-cli codecovcli do-upload \ +uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ --fail-on-error \ From 8afc9d7c60ea499ae3665315de3ed4ecb6f707f5 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 20:17:14 -0600 Subject: [PATCH 17/38] upload coverage.xml --- .evergreen/scripts/upload-codecov.sh | 6 +++--- .github/workflows/test-python.yml | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 236396c9e9..bfff15a7ef 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -7,7 +7,7 @@ HERE=$(dirname ${BASH_SOURCE:-$0}) ROOT=$(dirname "$(dirname $HERE)") pushd $ROOT > /dev/null -export FNAME=xunit-results/TEST-results.xml +export FNAME=coverage.xml if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" @@ -19,7 +19,7 @@ if [ ! -f "$FNAME" ]; then exit 0 fi -echo "Uploading $FNAME..." +echo "Uploading $FNAME to sha ${github_commit}..." uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ @@ -30,6 +30,6 @@ uv tool run --from codecov-cli codecovcli do-upload \ --branch "${github_author}:${github_pr_head_branch}" \ --flag "${build_variant}-${task_name}" \ --file $FNAME -echo "Uploading $FNAME... done." +echo "Uploading $FNAME ${github_commit}... done." popd > /dev/null diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index e241791be9..a04301c3ed 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -108,6 +108,8 @@ jobs: uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: report_type: test_results + disable_search: true + files: coverage.xml token: ${{ secrets.CODECOV_TOKEN }} doctest: runs-on: ubuntu-latest From f8b74259ddbd8bc8e71656b0674798a4d4bc6f64 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 20:17:52 -0600 Subject: [PATCH 18/38] update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 74ed0bbb70..cb4940a55e 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ test/lambda/*.json # test results and logs xunit-results/ +coverage.xml server.log From 77083057e3222af33d98f345d7cc61a876d73ae6 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 20:41:35 -0600 Subject: [PATCH 19/38] produce legacy file --- .evergreen/scripts/setup_tests.py | 3 ++- .evergreen/scripts/upload-codecov.sh | 8 +++++--- .github/workflows/test-python.yml | 2 +- .gitignore | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 0971c56d9e..5a7ef367d6 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,7 +458,8 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - TEST_ARGS = f"{TEST_ARGS} --cov --cov-report=xml" + # Generate coverage report compatible with codecov.io. + TEST_ARGS = f"{TEST_ARGS} --cov -junitxml=junit.xml -o junit_family=legacy" write_env("COVERAGE") if opts.green_framework: diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index bfff15a7ef..8055b0167f 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -7,7 +7,7 @@ HERE=$(dirname ${BASH_SOURCE:-$0}) ROOT=$(dirname "$(dirname $HERE)") pushd $ROOT > /dev/null -export FNAME=coverage.xml +export FNAME=junit.xml if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" @@ -19,7 +19,8 @@ if [ ! -f "$FNAME" ]; then exit 0 fi -echo "Uploading $FNAME to sha ${github_commit}..." +echo "Uploading..." +set -x uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ @@ -30,6 +31,7 @@ uv tool run --from codecov-cli codecovcli do-upload \ --branch "${github_author}:${github_pr_head_branch}" \ --flag "${build_variant}-${task_name}" \ --file $FNAME -echo "Uploading $FNAME ${github_commit}... done." +set +x +echo "Uploading...done." popd > /dev/null diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index a04301c3ed..b86366afd7 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -109,7 +109,7 @@ jobs: with: report_type: test_results disable_search: true - files: coverage.xml + files: junit.xml token: ${{ secrets.CODECOV_TOKEN }} doctest: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index cb4940a55e..16202b05a1 100644 --- a/.gitignore +++ b/.gitignore @@ -41,5 +41,5 @@ test/lambda/*.json # test results and logs xunit-results/ -coverage.xml +junit.xml server.log From c77b3c9916c57b2673cd3aadf46004d8a9c7403a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 20:45:28 -0600 Subject: [PATCH 20/38] fix coverage param --- .evergreen/scripts/setup_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 5a7ef367d6..35b01eaa17 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -459,7 +459,7 @@ def handle_test_env() -> None: # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") # Generate coverage report compatible with codecov.io. - TEST_ARGS = f"{TEST_ARGS} --cov -junitxml=junit.xml -o junit_family=legacy" + TEST_ARGS = f"{TEST_ARGS} --cov --junitxml=junit.xml -o junit_family=legacy" write_env("COVERAGE") if opts.green_framework: From deafed1f6076289f2210ca6557456d5ef2f77117 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 29 Jan 2026 21:03:35 -0600 Subject: [PATCH 21/38] specify cov --- .evergreen/scripts/setup_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 35b01eaa17..515db6b860 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -459,7 +459,7 @@ def handle_test_env() -> None: # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") # Generate coverage report compatible with codecov.io. - TEST_ARGS = f"{TEST_ARGS} --cov --junitxml=junit.xml -o junit_family=legacy" + TEST_ARGS = f"{TEST_ARGS} --cov pymongo --cov bson --cov gridfs --junitxml=junit.xml -o junit_family=legacy" write_env("COVERAGE") if opts.green_framework: From fb06afae81450150b58fe9e9786daf13218b3807 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 06:18:23 -0600 Subject: [PATCH 22/38] generate xml with coverage command --- .evergreen/scripts/setup_tests.py | 3 +-- .evergreen/scripts/upload-codecov.sh | 3 ++- .github/workflows/test-python.yml | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 515db6b860..939423ffcc 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,8 +458,7 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - # Generate coverage report compatible with codecov.io. - TEST_ARGS = f"{TEST_ARGS} --cov pymongo --cov bson --cov gridfs --junitxml=junit.xml -o junit_family=legacy" + TEST_ARGS = f"{TEST_ARGS} --cov" write_env("COVERAGE") if opts.green_framework: diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 8055b0167f..6373f3f427 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -7,7 +7,7 @@ HERE=$(dirname ${BASH_SOURCE:-$0}) ROOT=$(dirname "$(dirname $HERE)") pushd $ROOT > /dev/null -export FNAME=junit.xml +export FNAME=coverage.xml if [ -z "${github_pr_number:-}" ]; then echo "This is not a PR, not running codecov" @@ -21,6 +21,7 @@ fi echo "Uploading..." set -x +uv tool run coverage xml -o $FNAME uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index b86366afd7..d2bd45c2ac 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -104,12 +104,14 @@ jobs: run: COVERAGE=1 just setup-tests - name: Run tests run: just run-tests + - name: Generate the coverage report + run: uv tool run coverage xml -o coverage.xml - name: Upload test results to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: report_type: test_results disable_search: true - files: junit.xml + files: coverage.xml token: ${{ secrets.CODECOV_TOKEN }} doctest: runs-on: ubuntu-latest From f6ef2f3c88796f4a028be655eee72d0952a0e5a9 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 06:33:34 -0600 Subject: [PATCH 23/38] fix coverage gen --- .evergreen/scripts/upload-codecov.sh | 2 +- .github/workflows/test-python.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 6373f3f427..f6d1e768e4 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -21,7 +21,7 @@ fi echo "Uploading..." set -x -uv tool run coverage xml -o $FNAME +uv tool run --with "coverage[toml]" coverage xml -o $FNAME uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index d2bd45c2ac..9e84671f18 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -105,7 +105,7 @@ jobs: - name: Run tests run: just run-tests - name: Generate the coverage report - run: uv tool run coverage xml -o coverage.xml + run: uv tool run --with "coverage[toml]"" coverage xml -o coverage.xml - name: Upload test results to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: From 90ec59245c2d9c129702005244b86e842de07617 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 06:51:26 -0600 Subject: [PATCH 24/38] fix coverage gen --- .github/workflows/test-python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 9e84671f18..c4274f5298 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -105,7 +105,7 @@ jobs: - name: Run tests run: just run-tests - name: Generate the coverage report - run: uv tool run --with "coverage[toml]"" coverage xml -o coverage.xml + run: uv tool run --with "coverage[toml]" coverage xml -o coverage.xml - name: Upload test results to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 with: From 3f43d3380ec671a3348806921403f798791adf84 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 07:23:33 -0600 Subject: [PATCH 25/38] try with default settings --- .github/workflows/test-python.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index c4274f5298..60e0c68a8a 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -104,15 +104,8 @@ jobs: run: COVERAGE=1 just setup-tests - name: Run tests run: just run-tests - - name: Generate the coverage report - run: uv tool run --with "coverage[toml]" coverage xml -o coverage.xml - name: Upload test results to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 - with: - report_type: test_results - disable_search: true - files: coverage.xml - token: ${{ secrets.CODECOV_TOKEN }} doctest: runs-on: ubuntu-latest name: DocTest From 4824a885b03eebebd1cd7630982889be7d7f3fbf Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 07:41:32 -0600 Subject: [PATCH 26/38] try again --- .evergreen/scripts/setup_tests.py | 2 +- .evergreen/scripts/upload-codecov.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 939423ffcc..6643260595 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,7 +458,7 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - TEST_ARGS = f"{TEST_ARGS} --cov" + TEST_ARGS = f"{TEST_ARGS} --cov=./ --cov-report=xml" write_env("COVERAGE") if opts.green_framework: diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index f6d1e768e4..dad4b27c91 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -21,7 +21,6 @@ fi echo "Uploading..." set -x -uv tool run --with "coverage[toml]" coverage xml -o $FNAME uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ From c5f6356055b93a2bd86a37bdf20f69fe4e49e054 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 07:59:29 -0600 Subject: [PATCH 27/38] add flag config --- .codecov.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index 2e8a95c34d..91f9dd6829 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -3,3 +3,12 @@ comment: # this is a top-level key behavior: default require_changes: true require_base: false +flag_management: + default_rules: # the rules that will be followed for any flag added, generally + carryforward: true + statuses: + - type: project + target: auto + threshold: 1% + - type: patch + target: 90% From 446a4384add945276eae4d3247ddbd77a6e97b44 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 08:34:57 -0600 Subject: [PATCH 28/38] try setting the git server --- .evergreen/scripts/upload-codecov.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index dad4b27c91..1cbaa28ae7 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -25,6 +25,7 @@ uv tool run --from codecov-cli codecovcli do-upload \ --report-type test_results \ --disable-search \ --fail-on-error \ + --git-service github \ --token ${CODECOV_TOKEN} \ --pr ${github_pr_number} \ --sha ${github_commit} \ From b717d0b422dc4119e496f16a0e82d75dca1e8f03 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 09:17:21 -0600 Subject: [PATCH 29/38] fix evg report --- .evergreen/scripts/upload-codecov.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 1cbaa28ae7..70c99e862d 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -21,8 +21,8 @@ fi echo "Uploading..." set -x -uv tool run --from codecov-cli codecovcli do-upload \ - --report-type test_results \ +uv tool run --from codecov-cli codecovcli upload-process \ + --report-type coverage \ --disable-search \ --fail-on-error \ --git-service github \ From 84ba8e4efc920f1299f3e967aa4f38f758d149be Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 09:49:24 -0600 Subject: [PATCH 30/38] fix evg report --- .evergreen/combine-coverage.sh | 2 +- .gitignore | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/combine-coverage.sh b/.evergreen/combine-coverage.sh index 5f04f72adb..ea2be9d2a1 100755 --- a/.evergreen/combine-coverage.sh +++ b/.evergreen/combine-coverage.sh @@ -13,4 +13,4 @@ source .venv/bin/activate ls -la coverage/ coverage combine coverage/coverage.* -coverage html -d htmlcov +coverage html --source=./ -d htmlcov diff --git a/.gitignore b/.gitignore index 16202b05a1..cb4940a55e 100644 --- a/.gitignore +++ b/.gitignore @@ -41,5 +41,5 @@ test/lambda/*.json # test results and logs xunit-results/ -junit.xml +coverage.xml server.log From c2a8c29d73d240d7b373603d174f75f8b50dd657 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 12:18:13 -0600 Subject: [PATCH 31/38] use explicit cov args --- .evergreen/combine-coverage.sh | 2 +- .evergreen/scripts/setup_tests.py | 2 +- .evergreen/scripts/upload-codecov.sh | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.evergreen/combine-coverage.sh b/.evergreen/combine-coverage.sh index ea2be9d2a1..5f04f72adb 100755 --- a/.evergreen/combine-coverage.sh +++ b/.evergreen/combine-coverage.sh @@ -13,4 +13,4 @@ source .venv/bin/activate ls -la coverage/ coverage combine coverage/coverage.* -coverage html --source=./ -d htmlcov +coverage html -d htmlcov diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 6643260595..15bf1e703c 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,7 +458,7 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - TEST_ARGS = f"{TEST_ARGS} --cov=./ --cov-report=xml" + TEST_ARGS = f"{TEST_ARGS} --cov=pymongo --cov=gridfs --cov=bson --cov-report=xml" write_env("COVERAGE") if opts.green_framework: diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 70c99e862d..b1622be8c0 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -20,7 +20,11 @@ if [ ! -f "$FNAME" ]; then fi echo "Uploading..." -set -x +printf 'pr: %s\n' "$github_pr_number" +printf 'sha: %s\n' "$github_commit" +printf 'branch: %s:%s\n' "$github_author" "$github_pr_head_branch" +printf 'flag: %s-%s\n' "$build_variant" "$task_name" +printf 'file: %s\n' "$FNAME" uv tool run --from codecov-cli codecovcli upload-process \ --report-type coverage \ --disable-search \ @@ -32,7 +36,6 @@ uv tool run --from codecov-cli codecovcli upload-process \ --branch "${github_author}:${github_pr_head_branch}" \ --flag "${build_variant}-${task_name}" \ --file $FNAME -set +x echo "Uploading...done." popd > /dev/null From ae5904a5a415e06c59b94109d8e78cb78f6714dc Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 15:23:16 -0600 Subject: [PATCH 32/38] cleanup --- .codecov.yml | 14 -------------- .evergreen/scripts/setup_tests.py | 2 +- pyproject.toml | 6 +++++- 3 files changed, 6 insertions(+), 16 deletions(-) delete mode 100644 .codecov.yml diff --git a/.codecov.yml b/.codecov.yml deleted file mode 100644 index 91f9dd6829..0000000000 --- a/.codecov.yml +++ /dev/null @@ -1,14 +0,0 @@ -comment: # this is a top-level key - layout: " diff, flags, files" - behavior: default - require_changes: true - require_base: false -flag_management: - default_rules: # the rules that will be followed for any flag added, generally - carryforward: true - statuses: - - type: project - target: auto - threshold: 1% - - type: patch - target: 90% diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 15bf1e703c..1def6750c4 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,7 +458,7 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - TEST_ARGS = f"{TEST_ARGS} --cov=pymongo --cov=gridfs --cov=bson --cov-report=xml" + TEST_ARGS = f"{TEST_ARGS} --cov=./" write_env("COVERAGE") if opts.green_framework: diff --git a/pyproject.toml b/pyproject.toml index 65cbeca8b4..acc9fa5b0d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -239,7 +239,11 @@ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?)|dummy.*)$" [tool.coverage.run] branch = true -source = ["pymongo", "bson", "gridfs" ] +include = [ + "pymongo/*", + "bson/*", + "gridfs/*" +] relative_files = true [tool.coverage.report] From 66afe8c6bbef9dacd761703b00cbbf169b8225b6 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 15:34:28 -0600 Subject: [PATCH 33/38] fix cov usage --- .evergreen/scripts/setup_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 1def6750c4..939423ffcc 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -458,7 +458,7 @@ def handle_test_env() -> None: # Keep in sync with combine-coverage.sh. # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") - TEST_ARGS = f"{TEST_ARGS} --cov=./" + TEST_ARGS = f"{TEST_ARGS} --cov" write_env("COVERAGE") if opts.green_framework: From d6cc0dc4f0bbc4704feb95108d76b0d25c4ff06a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 16:20:50 -0600 Subject: [PATCH 34/38] fix cov usage --- .evergreen/scripts/upload-codecov.sh | 1 + .github/workflows/test-python.yml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index b1622be8c0..090dcae25b 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -25,6 +25,7 @@ printf 'sha: %s\n' "$github_commit" printf 'branch: %s:%s\n' "$github_author" "$github_pr_head_branch" printf 'flag: %s-%s\n' "$build_variant" "$task_name" printf 'file: %s\n' "$FNAME" +uv tool run coverage xml uv tool run --from codecov-cli codecovcli upload-process \ --report-type coverage \ --disable-search \ diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 60e0c68a8a..d8d90ec112 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -104,6 +104,8 @@ jobs: run: COVERAGE=1 just setup-tests - name: Run tests run: just run-tests + - name: Generate xml report + run: uv tool run coverage xml - name: Upload test results to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 doctest: From ae533d2bdc9ad617e2f8ca23a1534f144310a9ee Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 16:46:53 -0600 Subject: [PATCH 35/38] fix cov usage --- .evergreen/scripts/upload-codecov.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index 090dcae25b..d23e466980 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -25,7 +25,7 @@ printf 'sha: %s\n' "$github_commit" printf 'branch: %s:%s\n' "$github_author" "$github_pr_head_branch" printf 'flag: %s-%s\n' "$build_variant" "$task_name" printf 'file: %s\n' "$FNAME" -uv tool run coverage xml +uv tool run --with "coverage[toml]" coverage xml uv tool run --from codecov-cli codecovcli upload-process \ --report-type coverage \ --disable-search \ From 6f19bf021bf17488f9d6b22143ad03bda6090c36 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 17:02:19 -0600 Subject: [PATCH 36/38] fix cov usage --- .github/workflows/test-python.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index d8d90ec112..5c0bbe08eb 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -105,7 +105,7 @@ jobs: - name: Run tests run: just run-tests - name: Generate xml report - run: uv tool run coverage xml + run: uv tool run --with "coverage[toml]" coverage xml - name: Upload test results to Codecov uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 doctest: From f4036fd008aef79db098223d41c82fb719431ce4 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 17:17:27 -0600 Subject: [PATCH 37/38] fix cov usage --- .evergreen/scripts/upload-codecov.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/upload-codecov.sh b/.evergreen/scripts/upload-codecov.sh index d23e466980..a7fdb03711 100755 --- a/.evergreen/scripts/upload-codecov.sh +++ b/.evergreen/scripts/upload-codecov.sh @@ -14,7 +14,7 @@ if [ -z "${github_pr_number:-}" ]; then exit 0 fi -if [ ! -f "$FNAME" ]; then +if [ ! -f ".coverage" ]; then echo "There are no XML test results, not running codecov" exit 0 fi From 46d4dee2deb33dd9c964968917233ed365527ade Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 30 Jan 2026 17:34:17 -0600 Subject: [PATCH 38/38] try increasing bson coverage --- .evergreen/scripts/generate_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 4c72078e07..6eb33741cc 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -318,7 +318,7 @@ def create_green_framework_variants(): def create_no_c_ext_variants(): host = DEFAULT_HOST tasks = [".test-standard"] - expansions = dict() + expansions = dict(COVERAGE=1) handle_c_ext(C_EXTS[0], expansions) display_name = get_variant_name("No C Ext", host) return [create_variant(tasks, display_name, host=host)]