Commit 4abdff51 authored by Roman Yurchak's avatar Roman Yurchak

Add test_pywasmcross.py

parent 4879b77e
......@@ -73,10 +73,14 @@ jobs:
<<: *defaults
steps:
- checkout
- run:
name: deps
command: |
sudo pip install pytest-cov
- run:
name: test
command: |
pytest test -v -k 'not (chrome or firefox)'
pytest test -v -k 'not (chrome or firefox)' --cov=pyodide_build --cov=pyodide
benchmark:
<<: *defaults
......
......@@ -105,7 +105,7 @@ def capture_compile(args):
sys.exit(result.returncode)
def handle_command(line, args):
def handle_command(line, args, pretend=False):
# This is a special case to skip the compilation tests in numpy that aren't
# actually part of the build
for arg in line:
......@@ -156,9 +156,10 @@ def handle_command(line, args):
print(' '.join(new_args))
result = subprocess.run(new_args)
if result.returncode != 0:
sys.exit(result.returncode)
if not pretend:
result = subprocess.run(new_args)
if result.returncode != 0:
sys.exit(result.returncode)
# Emscripten .so files shouldn't have the native platform slug
if shared:
......@@ -169,7 +170,9 @@ def handle_command(line, args):
if renamed.endswith(ext):
renamed = renamed[:-len(ext)] + '.so'
break
os.rename(output, renamed)
if not pretend:
os.rename(output, renamed)
return new_args
def replay_compile(args):
......
from collections import namedtuple
from pathlib import Path
import sys
sys.path.append(str(Path(__file__).parents[2]))
from pyodide_build.pywasmcross import handle_command # noqa: E402
def _args_wrapper(func):
"""Convert function to take as input / return a string instead of a
list of arguments
Also sets pretend=True
"""
def _inner(line, *pargs):
args = line.split()
res = func(args, *pargs, pretend=True)
if hasattr(res, '__len__'):
return ' '.join(res)
else:
return res
return _inner
handle_command_wrap = _args_wrapper(handle_command)
# TODO: add f2c here
def test_handle_command():
Args = namedtuple('args', ['cflags', 'ldflags'])
args = Args(cflags='', ldflags='')
assert handle_command_wrap('gcc -print-multiarch', args) is None
assert handle_command_wrap('gcc test.c', args) == 'emcc test.c'
assert handle_command_wrap('gcc -shared -c test.o -o test.so', args) == \
'emcc -shared -c test.bc -o test.wasm'
# check ldflags injection
args = Args(cflags='', ldflags='-lm')
assert handle_command_wrap('gcc -shared -c test.o -o test.so', args) == \
'emcc -lm -shared -c test.bc -o test.wasm'
# compilation checks in numpy
assert handle_command_wrap('gcc /usr/file.c', args) is None
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment