Files
odysseus/tests/test_harmonize_masks_invalid_layers_js.py
T
2026-06-29 19:16:26 +01:00

33 lines
1.0 KiB
Python

"""Pin harmonize mask helpers against invalid layer lists.
Driven through `node --input-type=module`; skips without node.
"""
import json
import shutil
import subprocess
from pathlib import Path
import pytest
_REPO = Path(__file__).resolve().parent.parent
_HELPER = _REPO / "static" / "js" / "editor" / "harmonize-masks.js"
_HAS_NODE = shutil.which("node") is not None
@pytest.mark.skipif(not _HAS_NODE, reason="node binary not on PATH")
def test_layer_union_alpha_returns_null_for_non_array_layers():
js = f"""
import {{ layerUnionAlpha, seamMask, layerBodyMask }} from '{_HELPER.as_posix()}';
console.log(JSON.stringify([
layerUnionAlpha(10, 10, null),
seamMask(10, 10, {{"bad": true}}),
layerBodyMask(10, 10, "bad")
]));
"""
proc = subprocess.run(
["node", "--input-type=module"],
input=js, capture_output=True, text=True, cwd=str(_REPO), timeout=30,
)
assert proc.returncode == 0, proc.stderr
assert json.loads(proc.stdout.strip()) == [None, None, None]