mirror of
https://github.com/storytold/craft-common-actions.git
synced 2026-11-02 18:06:16 +00:00
ci: share Python coverage configuration with XML reporting
This commit is contained in:
@@ -380,9 +380,14 @@ jobs:
|
||||
python3 -m venv "$coverage_env"
|
||||
"$coverage_env/bin/python" -m pip install --disable-pip-version-check coverage==7.10.7
|
||||
export COVERAGE_FILE="$coverage_env/.coverage"
|
||||
export PYTHON_COVERAGE_SOURCE_REAL="$source_dir"
|
||||
export PYTHON_COVERAGE_SCRIPT_REAL="$test_script"
|
||||
coverage_config="$coverage_env/coverage.ini"
|
||||
# Environment substitution keeps paths literal and shares selection with reporting.
|
||||
printf '%s\n' '[run]' 'branch = true' 'source = ${PYTHON_COVERAGE_SOURCE_REAL}' 'omit = ${PYTHON_COVERAGE_SCRIPT_REAL}' > "$coverage_config"
|
||||
status=0
|
||||
"$coverage_env/bin/python" -m coverage run --rcfile=/dev/null --branch --source="$source_dir" --omit="$test_script" "$test_script" || status=$?
|
||||
"$coverage_env/bin/python" -m coverage xml --rcfile=/dev/null -o python-coverage.xml
|
||||
"$coverage_env/bin/python" -m coverage run --rcfile="$coverage_config" "$test_script" || status=$?
|
||||
"$coverage_env/bin/python" -m coverage xml --rcfile="$coverage_config" -o python-coverage.xml
|
||||
exit "$status"
|
||||
- name: SonarCloud Scan
|
||||
if: steps.token.outputs.available == 'true'
|
||||
|
||||
@@ -63,7 +63,7 @@ else:
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
run = next(args for args in calls if args[:3] == ['-m', 'coverage', 'run'])
|
||||
self.assertEqual(run[-1], script)
|
||||
self.assertIn('--omit=' + script, run)
|
||||
self.assertEqual(len([arg for arg in run if arg.startswith('--rcfile=')]), 1)
|
||||
|
||||
def test_failed_tests_still_generate_report_but_fail_job(self):
|
||||
result, calls, _ = self.run_coverage(test_status=7)
|
||||
@@ -97,9 +97,11 @@ else:
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
run = next(args for args in calls if args[:3] == ['-m', 'coverage', 'run'])
|
||||
report = next(args for args in calls if args[:3] == ['-m', 'coverage', 'xml'])
|
||||
self.assertIn('--source=' + str(Path(script).parent), run)
|
||||
self.assertIn('--rcfile=/dev/null', run)
|
||||
self.assertEqual(report, ['-m', 'coverage', 'xml', '--rcfile=/dev/null', '-o', 'python-coverage.xml'])
|
||||
config = next(arg for arg in run if arg.startswith('--rcfile='))
|
||||
self.assertNotEqual(config, '--rcfile=/dev/null')
|
||||
self.assertEqual(report, ['-m', 'coverage', 'xml', config, '-o', 'python-coverage.xml'])
|
||||
self.assertIn('source = ${PYTHON_COVERAGE_SOURCE_REAL}', self.step['run'])
|
||||
self.assertIn('omit = ${PYTHON_COVERAGE_SCRIPT_REAL}', self.step['run'])
|
||||
|
||||
def test_failure_is_not_suppressed_and_step_precedes_scan(self):
|
||||
self.assertNotIn('continue-on-error', self.step)
|
||||
|
||||
Reference in New Issue
Block a user