From 07fe22d6c0c68f524c0a12a717df388913f14d1b Mon Sep 17 00:00:00 2001 From: Kevin Bernal Date: Mon, 3 Feb 2025 09:45:18 +1100 Subject: [PATCH 1/3] fix(coverage): prevent issues when packages execute files in tmp dir. Fixes https://github.com/bazelbuild/rules_python/issues/2575 --- CHANGELOG.md | 2 ++ python/private/python_bootstrap_template.txt | 3 +++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82aeda8117..3f9972fa12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,6 +77,8 @@ Unreleased changes template. The related issue is [#908](https://github.com/bazelbuild/rules_python/issue/908). * (sphinxdocs) Do not crash when `tag_class` does not have a populated `doc` value. Fixes ([#2579](https://github.com/bazelbuild/rules_python/issues/2579)). +* (coverage) Prevent coveragepy report issues when packages execute files in tmp dir. + Fixes ([#2575](https://github.com/bazelbuild/rules_python/issues/2575)). {#v0-0-0-added} ### Added diff --git a/python/private/python_bootstrap_template.txt b/python/private/python_bootstrap_template.txt index e3b39e30cd..2b7288f79e 100644 --- a/python/private/python_bootstrap_template.txt +++ b/python/private/python_bootstrap_template.txt @@ -461,6 +461,9 @@ relative_files = True kparams['stdout'] = sys.stderr kparams['stderr'] = sys.stderr + # Prevent coveragepy report issues when packages execute files in tmp dir. + params.append('--omit="$TMPDIR/*"') + ret_code = subprocess.call( params, **kparams From 91d6cbede1629383ee479ccbc866dd0106e35f7c Mon Sep 17 00:00:00 2001 From: Kevin Lloyd Bernal Date: Mon, 3 Feb 2025 11:45:48 +1100 Subject: [PATCH 2/3] Use tempfile module to instead of $TMPDIR since subprocess.call won't exapnd environment variables. Co-authored-by: Richard Levasseur --- python/private/python_bootstrap_template.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/private/python_bootstrap_template.txt b/python/private/python_bootstrap_template.txt index 2b7288f79e..eb1b7989c1 100644 --- a/python/private/python_bootstrap_template.txt +++ b/python/private/python_bootstrap_template.txt @@ -462,7 +462,9 @@ relative_files = True kparams['stderr'] = sys.stderr # Prevent coveragepy report issues when packages execute files in tmp dir. - params.append('--omit="$TMPDIR/*"') + import tempfile + omit_pattern = os.path.join(tempfile.gettempdir(), "*") + params.append(f'--omit={omit_pattern}') ret_code = subprocess.call( params, From 312d9adfe59958319fd162f54e5269f7da43d79c Mon Sep 17 00:00:00 2001 From: Kevin Bernal Date: Mon, 3 Feb 2025 11:54:46 +1100 Subject: [PATCH 3/3] add link leading to coveragepy reporting issue --- python/private/python_bootstrap_template.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/python/private/python_bootstrap_template.txt b/python/private/python_bootstrap_template.txt index eb1b7989c1..f5ccceedea 100644 --- a/python/private/python_bootstrap_template.txt +++ b/python/private/python_bootstrap_template.txt @@ -462,6 +462,7 @@ relative_files = True kparams['stderr'] = sys.stderr # Prevent coveragepy report issues when packages execute files in tmp dir. + # See https://github.com/nedbat/coveragepy/issues/1921#issuecomment-2629154773. import tempfile omit_pattern = os.path.join(tempfile.gettempdir(), "*") params.append(f'--omit={omit_pattern}')