diff --git a/changelog/4903.bugfix.rst b/changelog/4903.bugfix.rst new file mode 100644 index 000000000..116e1b0fd --- /dev/null +++ b/changelog/4903.bugfix.rst @@ -0,0 +1 @@ +Use the correct modified time for years after 2038 in rewritten ``.pyc`` files. diff --git a/src/_pytest/assertion/rewrite.py b/src/_pytest/assertion/rewrite.py index 301bdedc5..04ecbce5f 100644 --- a/src/_pytest/assertion/rewrite.py +++ b/src/_pytest/assertion/rewrite.py @@ -344,9 +344,11 @@ def _write_pyc(state, co, source_stat, pyc): try: with atomicwrites.atomic_write(pyc, mode="wb", overwrite=True) as fp: fp.write(imp.get_magic()) - mtime = int(source_stat.mtime) + # as of now, bytecode header expects 32-bit numbers for size and mtime (#4903) + mtime = int(source_stat.mtime) & 0xFFFFFFFF size = source_stat.size & 0xFFFFFFFF - fp.write(struct.pack("