mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
fix: hide host paths in probe logs and errors
MAME logs the folder above the content's ("Parent path"), which no
place named, and a pack probe kept core_probe's traceback with the
checkout spelled out. The first is written <content>/.., the second
<repo>, <dest> and <work>, replaced before the error is cut.
This commit is contained in:
1 parent
0b36d77071
commit
9d37c46bb3
3 files changed
+29
-2
No files matched your search
@@ -965,7 +965,11 @@ def run_once(args: argparse.Namespace, system_dir: Path, scratch: Path, state_ou
|
||||
result["exit"] = exit_description(proc.returncode)
|
||||
places = [(str(system_dir.resolve()), "<system>"), (str(save_dir.resolve()), "<save>")]
|
||||
if args.content:
|
||||
places.append((str(Path(args.content).resolve().parent), "<content>"))
|
||||
folder = Path(args.content).resolve().parent
|
||||
# MAME prints the folder above the content's too ("Parent path").
|
||||
places.append((str(folder), "<content>"))
|
||||
if folder.parent != folder.parent.parent:
|
||||
places.append((str(folder.parent), "<content>/.."))
|
||||
places.append((str(ROOT), "<repo>"))
|
||||
for line in result.get("logs", []):
|
||||
line["text"] = host_paths_hidden(line["text"], places)
|
||||
|
||||
@@ -508,7 +508,13 @@ def core_probe(argv: list[str], staged: set[str], layout: Layout, work: Path) ->
|
||||
record = json.loads(proc.stdout)
|
||||
except ValueError:
|
||||
record = None
|
||||
return proc.returncode, record, proc.stderr.strip()[-1500:]
|
||||
# A traceback spells the checkout and the scratch folders: a record read
|
||||
# on another machine names them by role.
|
||||
places = [(str(work), "<work>"), (str(layout.root), "<dest>"), (str(ROOT), "<repo>")]
|
||||
error = proc.stderr.strip()
|
||||
for prefix, name in sorted(places, key=lambda place: -len(place[0])):
|
||||
error = error.replace(prefix, name)
|
||||
return proc.returncode, record, error[-1500:]
|
||||
|
||||
|
||||
def probe_argv(core: dict, choice: CoreChoice, content: campaign.Content, load: Path,
|
||||
|
||||
@@ -299,6 +299,23 @@ class RecordsNameNoLocalPath(unittest.TestCase):
|
||||
self.assertEqual(summary, "Copy it from an owned copy of the game into <dest>/jazz2/Source/. "
|
||||
"Saves go to <save-dir>.")
|
||||
|
||||
def test_a_probe_error_names_the_checkout(self) -> None:
|
||||
"""A core_probe traceback spelled the worktree it ran from."""
|
||||
import subprocess
|
||||
import unittest.mock
|
||||
|
||||
work = TMP / "error-paths"
|
||||
script = pp.ROOT / "scripts" / "core_probe.py"
|
||||
|
||||
def fake_run(command, **kwargs):
|
||||
return subprocess.CompletedProcess(command, 1, "", f' File "{script}", line 9\n')
|
||||
|
||||
with unittest.mock.patch.object(pp, "PROBE_LOCK", work / "probe.lock"), \
|
||||
unittest.mock.patch.object(pp.subprocess, "run", fake_run):
|
||||
code, record, error = pp.core_probe(["run"], set(), layout({}), work)
|
||||
self.assertEqual((code, record), (1, None))
|
||||
self.assertEqual(error, 'File "<repo>/scripts/core_probe.py", line 9')
|
||||
|
||||
def test_no_committed_record_holds_a_local_path(self) -> None:
|
||||
"""Ten records cut at 400 characters inside the scratch path kept
|
||||
its tail, which no absolute-path pattern sees."""
|
||||
|
||||
Reference in new issue
Block a user