44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
|
|
"""Tests for issue #2558 -- container path translation for Reveal in File Manager.
|
||
|
|
|
||
|
|
Pins that _handle_file_reveal applies the same container_path_prefix /
|
||
|
|
host_path_prefix substitution used by _handle_file_open_vscode.
|
||
|
|
"""
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import pathlib
|
||
|
|
import re
|
||
|
|
|
||
|
|
ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||
|
|
ROUTES = ROOT / "api" / "routes.py"
|
||
|
|
|
||
|
|
|
||
|
|
class TestRevealPathTranslation:
|
||
|
|
def test_handler_supports_path_prefix_mapping(self):
|
||
|
|
"""_handle_file_reveal must contain container_path_prefix / host_path_prefix
|
||
|
|
so Docker users get the same path translation as _handle_file_open_vscode."""
|
||
|
|
src = ROUTES.read_text(encoding="utf-8")
|
||
|
|
m = re.search(
|
||
|
|
r"def _handle_file_reveal\(handler, body\):.*?(?=\ndef )",
|
||
|
|
src,
|
||
|
|
re.DOTALL,
|
||
|
|
)
|
||
|
|
assert m, "_handle_file_reveal not found in api/routes.py"
|
||
|
|
body = m.group(0)
|
||
|
|
assert "container_path_prefix" in body
|
||
|
|
assert "host_path_prefix" in body
|
||
|
|
|
||
|
|
def test_handler_uses_target_str_in_subprocess(self):
|
||
|
|
"""The subprocess dispatch must use the translated string, not str(target)."""
|
||
|
|
src = ROUTES.read_text(encoding="utf-8")
|
||
|
|
m = re.search(
|
||
|
|
r"def _handle_file_reveal\(handler, body\):.*?(?=\ndef )",
|
||
|
|
src,
|
||
|
|
re.DOTALL,
|
||
|
|
)
|
||
|
|
assert m
|
||
|
|
body = m.group(0)
|
||
|
|
# After translation the variable must be named target_str (not str(target))
|
||
|
|
assert "target_str" in body
|
||
|
|
# Ensure the translation assignment is present
|
||
|
|
assert "target_str = host_prefix + target_str[len(container_prefix):]" in body
|