mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
264 TemporaryDirectory() and mkdtemp() calls without dir= wrote to the /tmp tmpfs, and a full tmpfs failed modules no change touched. The test package now points tempfile and TMPDIR at tmp/tests, and sets GIT_CEILING_DIRECTORIES there so git run in a scratch directory does not find the checkout above it. The package test asserts both.
42 lines
1.7 KiB
Python
42 lines
1.7 KiB
Python
"""No test downloads a release asset unless it says so.
|
|
|
|
The CI job sets RETROBIOS_OFFLINE, but a local run of the documented command
|
|
did not, and e2e fixtures queried the large-files release and wrote its
|
|
answers into the shared .cache/large. A test that serves its own assets
|
|
clears the variable for itself.
|
|
|
|
Scratch files go under the repository's tmp/, which git does not track: a
|
|
fresh clone has none, and a module run alone raised FileNotFoundError on a
|
|
temporary directory instead of naming the missing parent.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import tempfile
|
|
from pathlib import Path
|
|
|
|
os.environ.setdefault("RETROBIOS_OFFLINE", "1")
|
|
# A test never waits on, nor blocks, the measurements running on the host.
|
|
os.environ.setdefault(
|
|
"RETROBIOS_PROBE_LOCK",
|
|
str(Path(__file__).resolve().parent.parent / "tmp" / "tests" / "probe.lock"),
|
|
)
|
|
|
|
_SCRATCH = Path(__file__).resolve().parent.parent / "tmp" / "tests"
|
|
_SCRATCH.mkdir(parents=True, exist_ok=True)
|
|
# A TemporaryDirectory() without dir= landed in /tmp, a 4 GB tmpfs here: once
|
|
# another run filled it, modules unrelated to any change failed with ENOSPC.
|
|
# The default is the repository's tmp/, for this process and its children.
|
|
os.environ["TMPDIR"] = str(_SCRATCH)
|
|
tempfile.tempdir = str(_SCRATCH)
|
|
# A scratch directory is not part of this checkout: git run inside one must
|
|
# not walk up to the repository, as it could not from /tmp.
|
|
os.environ["GIT_CEILING_DIRECTORIES"] = str(_SCRATCH)
|
|
# The installer's cache (the games index, what reading a card found) is the
|
|
# suite's own: a run never reads nor fills the one of the person running it.
|
|
os.environ.setdefault(
|
|
"RETROBIOS_CACHE",
|
|
str(Path(__file__).resolve().parent.parent / "tmp" / "tests" / "cache"),
|
|
)
|