fix(coverage): Disable certain coverage warnings. (#3191)

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

---------

Co-authored-by: Ignas Anikevicius <240938+aignas@users.noreply.github.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e92b3c2..6b858c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -62,7 +62,8 @@
 
 {#v0-0-0-fixed}
 ### Fixed
-* Nothing fixed.
+* (tests) No more coverage warnings are being printed if there are no sources.
+  ([#2762](https://github.com/bazel-contrib/rules_python/issues/2762))
 
 {#v0-0-0-added}
 ### Added
diff --git a/python/private/py_executable.bzl b/python/private/py_executable.bzl
index f9c9122..73d0c83 100644
--- a/python/private/py_executable.bzl
+++ b/python/private/py_executable.bzl
@@ -668,6 +668,7 @@
         template = template,
         output = output,
         substitutions = {
+            "%coverage_instrumented%": str(int(ctx.configuration.coverage_enabled and ctx.coverage_instrumented())),
             "%coverage_tool%": _get_coverage_tool_runfiles_path(ctx, runtime),
             "%import_all%": "True" if read_possibly_native_flag(ctx, "python_import_all_repositories") else "False",
             "%imports%": ":".join(imports.to_list()),
diff --git a/python/private/stage2_bootstrap_template.py b/python/private/stage2_bootstrap_template.py
index 4d98b03..e3e303b 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 @@
     # 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}
 """