mirror of
https://github.com/YosysHQ/yosys
synced 2025-10-09 01:11:58 +00:00
tests/pyosys: print log on failed test, fix make clean
This commit is contained in:
parent
54799bb8be
commit
dc88906c91
3 changed files with 29 additions and 20 deletions
3
.github/workflows/wheels.yml
vendored
3
.github/workflows/wheels.yml
vendored
|
@ -2,6 +2,7 @@ name: Build Wheels for PyPI
|
||||||
|
|
||||||
# run every Sunday at 10 AM
|
# run every Sunday at 10 AM
|
||||||
on:
|
on:
|
||||||
|
push: # TODO: REMOVE THIS, DO NOT MERGE TO UPSTREAM THIS IS JUST SO I DON'T HAVE TO MANUALLY RUN THE WORKFLOW WITH EVERY PUSH
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 10 * * 0"
|
- cron: "0 10 * * 0"
|
||||||
|
@ -107,7 +108,7 @@ jobs:
|
||||||
makeFlags='CONFIG=clang'
|
makeFlags='CONFIG=clang'
|
||||||
PATH="$PWD/bison/src:$PATH"
|
PATH="$PWD/bison/src:$PATH"
|
||||||
CIBW_BEFORE_BUILD: bash ./.github/workflows/wheels/cibw_before_build.sh
|
CIBW_BEFORE_BUILD: bash ./.github/workflows/wheels/cibw_before_build.sh
|
||||||
CIBW_TEST_COMMAND: python3 {project}/tests/pyosys/run_tests.py python3
|
CIBW_TEST_COMMAND: python3 {project}/tests/pyosys/run_tests.py
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: python-wheels-${{ matrix.os.runner }}
|
name: python-wheels-${{ matrix.os.runner }}
|
||||||
|
|
7
Makefile
7
Makefile
|
@ -344,6 +344,8 @@ ifeq ($(ENABLE_LIBYOSYS),1)
|
||||||
TARGETS += libyosys.so
|
TARGETS += libyosys.so
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
PY_WRAPPER_FILE = pyosys/wrappers
|
||||||
|
|
||||||
ifeq ($(ENABLE_PYOSYS),1)
|
ifeq ($(ENABLE_PYOSYS),1)
|
||||||
# python-config --ldflags includes -l and -L, but LINKFLAGS is only -L
|
# python-config --ldflags includes -l and -L, but LINKFLAGS is only -L
|
||||||
LINKFLAGS += $(filter-out -l%,$(shell $(PYTHON_CONFIG) --ldflags))
|
LINKFLAGS += $(filter-out -l%,$(shell $(PYTHON_CONFIG) --ldflags))
|
||||||
|
@ -353,7 +355,6 @@ PYBIND11_INCLUDE ?= $(shell $(PYTHON_EXECUTABLE) -m pybind11 --includes)
|
||||||
CXXFLAGS += -I$(PYBIND11_INCLUDE) -DWITH_PYTHON
|
CXXFLAGS += -I$(PYBIND11_INCLUDE) -DWITH_PYTHON
|
||||||
CXXFLAGS += $(shell $(PYTHON_CONFIG) --includes) -DWITH_PYTHON
|
CXXFLAGS += $(shell $(PYTHON_CONFIG) --includes) -DWITH_PYTHON
|
||||||
|
|
||||||
PY_WRAPPER_FILE = pyosys/wrappers
|
|
||||||
OBJS += $(PY_WRAPPER_FILE).o
|
OBJS += $(PY_WRAPPER_FILE).o
|
||||||
PY_GEN_SCRIPT = pyosys/generator.py
|
PY_GEN_SCRIPT = pyosys/generator.py
|
||||||
PY_WRAP_INCLUDES := $(shell $(PYTHON_EXECUTABLE) $(PY_GEN_SCRIPT) --print-includes)
|
PY_WRAP_INCLUDES := $(shell $(PYTHON_EXECUTABLE) $(PY_GEN_SCRIPT) --print-includes)
|
||||||
|
@ -1110,9 +1111,9 @@ docs: docs/prep
|
||||||
clean:
|
clean:
|
||||||
rm -rf share
|
rm -rf share
|
||||||
rm -rf kernel/*.pyh
|
rm -rf kernel/*.pyh
|
||||||
rm -f $(OBJS) $(GENFILES) $(TARGETS) $(EXTRA_TARGETS) $(EXTRA_OBJS) $(PY_WRAP_INCLUDES) $(PY_WRAPPER_FILE).cc
|
rm -f $(OBJS) $(GENFILES) $(TARGETS) $(EXTRA_TARGETS) $(EXTRA_OBJS) $(PY_WRAP_INCLUDES) $(PY_WRAPPER_FILE).inc.cc $(PY_WRAPPER_FILE).cc
|
||||||
rm -f kernel/version_*.o kernel/version_*.cc
|
rm -f kernel/version_*.o kernel/version_*.cc
|
||||||
rm -f kernel/python_wrappers.o
|
rm -f $(PY_WRAPPER_FILE).o
|
||||||
rm -f libs/*/*.d frontends/*/*.d passes/*/*.d backends/*/*.d kernel/*.d techlibs/*/*.d
|
rm -f libs/*/*.d frontends/*/*.d passes/*/*.d backends/*/*.d kernel/*.d techlibs/*/*.d
|
||||||
rm -rf tests/asicworld/*.out tests/asicworld/*.log
|
rm -rf tests/asicworld/*.out tests/asicworld/*.log
|
||||||
rm -rf tests/hana/*.out tests/hana/*.log
|
rm -rf tests/hana/*.out tests/hana/*.log
|
||||||
|
|
|
@ -1,39 +1,46 @@
|
||||||
from pathlib import Path
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
import sys
|
import sys
|
||||||
|
import shutil
|
||||||
|
import shlex
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
__file_dir__ = Path(__file__).absolute().parent
|
__file_dir__ = Path(__file__).absolute().parent
|
||||||
|
|
||||||
if len(sys.argv) != 2:
|
if len(sys.argv) > 2 or len(sys.argv) == 2 and sys.argv[1] != 'yosys':
|
||||||
print(f"Usage: {sys.argv[0]} {sys.argv[1]}")
|
print(f"Usage: {sys.argv[0]} [yosys]")
|
||||||
exit(64)
|
exit(64)
|
||||||
|
|
||||||
binary = []
|
if len(sys.argv) == 2:
|
||||||
if sys.argv[1] in ["yosys"]:
|
binary = [str(__file_dir__.parents[1] / "yosys"), "-Qy"]
|
||||||
binary = [__file_dir__.parents[1] / "yosys", "-Qy"]
|
|
||||||
else:
|
else:
|
||||||
binary = [sys.argv[1]]
|
binary = [sys.executable or shutil.which("python3") or "python3"] # sys.executable can actually be None
|
||||||
|
|
||||||
tests = __file_dir__.glob("test_*.py")
|
tests = __file_dir__.glob("test_*.py")
|
||||||
errors = False
|
|
||||||
log_dir = __file_dir__ / "logs"
|
log_dir = __file_dir__ / "logs"
|
||||||
try:
|
try:
|
||||||
shutil.rmtree(log_dir)
|
shutil.rmtree(log_dir)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
fail_logs = set()
|
||||||
for test in tests:
|
for test in tests:
|
||||||
print(f"* {test.name} ", end="")
|
print(f"* {test.name} ", end="")
|
||||||
log_dir.mkdir(parents=True, exist_ok=True)
|
log_dir.mkdir(parents=True, exist_ok=True)
|
||||||
log = log_dir / (test.stem + ".log")
|
log = log_dir / (test.stem + ".log")
|
||||||
result = subprocess.run([
|
cmd = [*binary, str(test)]
|
||||||
*binary,
|
log_file = open(log, "w", encoding="utf8")
|
||||||
test
|
log_file.write(f"$ {shlex.join(cmd)}\n")
|
||||||
], stdout=open(log, "w"), stderr=subprocess.STDOUT)
|
log_file.flush()
|
||||||
|
result = subprocess.run(cmd, stdout=log_file, stderr=subprocess.STDOUT)
|
||||||
if result.returncode == 0:
|
if result.returncode == 0:
|
||||||
print("OK!")
|
print("OK!")
|
||||||
else:
|
else:
|
||||||
print(f"FAILED: {log}")
|
print(f"FAILED: {log}")
|
||||||
errors = True
|
fail_logs.add(log)
|
||||||
if errors:
|
log_file.close()
|
||||||
|
for log in fail_logs:
|
||||||
|
print(f">>> {log}")
|
||||||
|
with open(log, encoding="utf8") as f:
|
||||||
|
print(f.read())
|
||||||
|
if len(fail_logs):
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue