From 131205b0cfeef0af6c3d51a823c6348ba1b81ce9 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Mon, 18 Aug 2025 09:42:02 +0200 Subject: [PATCH] fix(coverage): Disable certain coverage warnings. These warnings appear if there are no Python source files in the instrumented directories, cf. https://github.com/bazel-contrib/rules_python/issues/2762. Work towards #2762 --- python/private/py_executable.bzl | 1 + python/private/stage2_bootstrap_template.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/python/private/py_executable.bzl b/python/private/py_executable.bzl index ea00eed17b..4b770fead3 100644 --- a/python/private/py_executable.bzl +++ b/python/private/py_executable.bzl @@ -670,6 +670,7 @@ def _create_stage2_bootstrap( "%venv_rel_site_packages%": venv.venv_site_packages, "%venv_root%": venv.venv_root, "%workspace_name%": ctx.workspace_name, + "%coverage_instrumented%": str(int(ctx.configuration.coverage_enabled and ctx.coverage_instrumented())), }, is_executable = True, ) diff --git a/python/private/stage2_bootstrap_template.py b/python/private/stage2_bootstrap_template.py index 4d98b03846..e3e303b3b1 100644 --- a/python/private/stage2_bootstrap_template.py +++ b/python/private/stage2_bootstrap_template.py @@ -41,6 +41,9 @@ # string otherwise. VENV_SITE_PACKAGES = "%venv_rel_site_packages%" +# Whether we should generate coverage data. +COVERAGE_INSTRUMENTED = "%coverage_instrumented%" == "1" + # ===== Template substitutions end ===== @@ -319,11 +322,14 @@ def _maybe_collect_coverage(enable): # We need for coveragepy to use relative paths. This can only be configured # using an rc file. rcfile_name = os.path.join(coverage_dir, ".coveragerc_{}".format(unique_id)) + disable_warnings = ('disable_warnings = module-not-imported, no-data-collected' + if COVERAGE_INSTRUMENTED else '') print_verbose_coverage("coveragerc file:", rcfile_name) with open(rcfile_name, "w") as rcfile: rcfile.write( f"""[run] relative_files = True +{disable_warnings} source = \t{source} """