35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
import argparse
|
|
import os
|
|
from pathlib import Path
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
import urllib.request
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
sys.path.insert(0, str(ROOT / "core/relinker/relinker/tests"))
|
|
from test_guest_intel_trampolines import main_fixture
|
|
from test_guest_module_directories import module_with_symbol
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--build", type=Path, required=True)
|
|
args = parser.parse_args()
|
|
with tempfile.TemporaryDirectory(prefix="anyps5-web-") as directory:
|
|
fixture = Path(directory)
|
|
(fixture / "main.elf").write_bytes(main_fixture())
|
|
(fixture / "module.elf").write_bytes(module_with_symbol(True))
|
|
source = (args.build / "web/archive.mjs").read_text(encoding="utf-8")
|
|
url = re.search(r'from "(https://cdn.jsdelivr.net/[^"\n]+)"', source).group(1)
|
|
library = fixture / "zip.mjs"
|
|
with urllib.request.urlopen(url, timeout=30) as response:
|
|
library.write_bytes(response.read())
|
|
environment = dict(os.environ, ANYPS5_TEST_ZIP_URL=url, ANYPS5_TEST_ZIP_PATH=library.as_uri())
|
|
subprocess.run(["node", str(ROOT / "demo/web/tests/archive.test.mjs"), str(args.build.resolve() / "web"), str(fixture)], env=environment, check=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|