aboutsummaryrefslogtreecommitdiff
path: root/tests/drivers/runtime_image_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/drivers/runtime_image_test.py')
-rw-r--r--tests/drivers/runtime_image_test.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/tests/drivers/runtime_image_test.py b/tests/drivers/runtime_image_test.py
index c1f4b9c..d214613 100644
--- a/tests/drivers/runtime_image_test.py
+++ b/tests/drivers/runtime_image_test.py
@@ -1,14 +1,18 @@
#!/usr/bin/env python3
"""self-hosted run-only images retain enhancements and generic method bodies."""
+import sys
import argparse
import subprocess
import tempfile
from pathlib import Path
+sys.dont_write_bytecode = True # importing imagekit must not leave __pycache__ in the tree
+from imagekit import micro_image
parser = argparse.ArgumentParser()
parser.add_argument('--case', default='')
-parser.add_argument('--host', default='bin/zy')
-parser.add_argument('--mkgenome', default='bin/mkgenome')
+parser.add_argument('--host', default='build/bin/zy')
+parser.add_argument('--mkgenome', default='build/bin/mkgenome')
+parser.add_argument('--map', default='build/core/map/memmap.h')
args = parser.parse_args()
cases = [
('enhancements', 'include rt; fn main() { rt.put_n(17 % 5); rt.put_c(32); rt.put_n(17 / 5); }', b'2 3'),
@@ -23,12 +27,9 @@ for name, source, expected in cases:
directory = Path(work)
r = subprocess.run([args.host], input=Path('src/tools/build.zc').read_bytes() + b'`' + prefix + source.encode(), capture_output=True, timeout=30)
assert r.returncode == 0 and len(r.stdout) >= 56 and not r.stdout.startswith(b'zc:'), (name, r.stdout[:1000], r.stderr)
- header = subprocess.run([args.mkgenome], input=r.stdout, capture_output=True, timeout=5)
- assert header.returncode == 0, (name, header.stderr)
- (directory / 'genome.h').write_bytes(header.stdout)
- for f in ['src/core/memmap.h', 'src/core/fops.h', 'src/core/bops.h', 'src/core/stack.h', 'src/micro/micro.c', 'src/micro/micro_port.h', 'src/micro/port_linux.c']:
- (directory / Path(f).name).write_bytes(Path(f).read_bytes())
- subprocess.run(['cc', '-O2', '-w', '-fwrapv', '-pthread', '-DZY_THREADS', str(directory / 'micro.c'), str(directory / 'port_linux.c'), '-I' + work, '-o', str(directory / 'image')], check=True, timeout=30)
- r = subprocess.run([str(directory / 'image')], capture_output=True, timeout=10)
+ image = subprocess.run([args.mkgenome], input=r.stdout, capture_output=True, timeout=5)
+ assert image.returncode == 0, (name, image.stderr)
+ binary = micro_image(directory, image.stdout, args.map)
+ r = subprocess.run([str(binary)], capture_output=True, timeout=10)
assert r.returncode == 0 and r.stdout == expected, (name, r.returncode, r.stdout, r.stderr, expected)
print('ok self-hosted run-only image: ' + name)