diff --git a/changelog/9521.improvement.rst b/changelog/9521.improvement.rst new file mode 100644 index 00000000000..0c402ad242b --- /dev/null +++ b/changelog/9521.improvement.rst @@ -0,0 +1 @@ +Add test coverage to assertion rewrite path. diff --git a/testing/test_assertrewrite.py b/testing/test_assertrewrite.py index 61f5760e725..4417eb4350f 100644 --- a/testing/test_assertrewrite.py +++ b/testing/test_assertrewrite.py @@ -1123,6 +1123,28 @@ def test_read_pyc(self, tmp_path: Path) -> None: assert _read_pyc(source, pyc) is None # no error + def test_read_pyc_success(self, tmp_path: Path, pytester: Pytester) -> None: + """ + Ensure that the _rewrite_test() -> _write_pyc() produces a pyc file + that can be properly read with _read_pyc() + """ + from _pytest.assertion import AssertionState + from _pytest.assertion.rewrite import _read_pyc + from _pytest.assertion.rewrite import _rewrite_test + from _pytest.assertion.rewrite import _write_pyc + + config = pytester.parseconfig() + state = AssertionState(config, "rewrite") + + fn = tmp_path / "source.py" + pyc = Path(str(fn) + "c") + + fn.write_text("def test(): assert True") + + source_stat, co = _rewrite_test(fn, config) + _write_pyc(state, co, source_stat, pyc) + assert _read_pyc(fn, pyc, state.trace) is not None + @pytest.mark.skipif( sys.version_info < (3, 7), reason="Only the Python 3.7 format for simplicity" )