3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-09-30 21:19:30 +00:00

Fix building and running unit tests (#5374)

* Fix building and running unit tests

* Enable unit tests

* Add gtest always

* test-sanitizers.yml: Use makefile.conf

* proper test setup

* make it run on macOS

* Run libyosys build only for unit tests after testing is done

* Disable LTO on public CI

---------

Co-authored-by: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com>
This commit is contained in:
Miodrag Milanović 2025-09-23 17:10:18 +02:00 committed by GitHub
parent b586043647
commit fcc3d7132d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 53 additions and 13 deletions

View file

@ -8,7 +8,7 @@ runs:
shell: bash shell: bash
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install gperf build-essential bison flex libfl-dev libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot pkg-config python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev libbz2-dev sudo apt-get install gperf build-essential bison flex libfl-dev libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot pkg-config python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev libbz2-dev libgtest-dev
- name: Install macOS Dependencies - name: Install macOS Dependencies
if: runner.os == 'macOS' if: runner.os == 'macOS'

View file

@ -48,7 +48,7 @@ jobs:
echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf echo "ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS := 1" >> Makefile.conf
echo "ENABLE_CCACHE := 1" >> Makefile.conf echo "ENABLE_CCACHE := 1" >> Makefile.conf
echo "ENABLE_HELP_SOURCE := 1" >> Makefile.conf echo "ENABLE_HELP_SOURCE := 1" >> Makefile.conf
make -j$procs ENABLE_LTO=1 make -j$procs
- name: Prepare docs - name: Prepare docs
shell: bash shell: bash

View file

@ -67,7 +67,7 @@ jobs:
mkdir build mkdir build
cd build cd build
make -f ../Makefile config-$CC make -f ../Makefile config-$CC
make -f ../Makefile -j$procs ENABLE_LTO=1 make -f ../Makefile -j$procs
- name: Log yosys-config output - name: Log yosys-config output
run: | run: |

View file

@ -97,7 +97,7 @@ jobs:
run: | run: |
make config-$CC make config-$CC
echo 'SANITIZER = ${{ matrix.sanitizer }}' >> Makefile.conf echo 'SANITIZER = ${{ matrix.sanitizer }}' >> Makefile.conf
make -j$procs ENABLE_LTO=1 make -j$procs
- name: Log yosys-config output - name: Log yosys-config output
run: | run: |
@ -106,10 +106,15 @@ jobs:
- name: Run tests - name: Run tests
shell: bash shell: bash
run: | run: |
make -j$procs test TARGETS= EXTRA_TARGETS= CONFIG=$CC make -j$procs test TARGETS= EXTRA_TARGETS=
- name: Report errors - name: Report errors
if: ${{ failure() }} if: ${{ failure() }}
shell: bash shell: bash
run: | run: |
find tests/**/*.err -print -exec cat {} \; find tests/**/*.err -print -exec cat {} \;
- name: Run unit tests
shell: bash
run: |
make -j$procs unit-test ENABLE_LIBYOSYS=1

View file

@ -78,3 +78,8 @@ jobs:
if: ${{ github.ref == 'refs/heads/main' }} if: ${{ github.ref == 'refs/heads/main' }}
run: | run: |
make -C sby run_ci make -C sby run_ci
- name: Run unit tests
shell: bash
run: |
make -j$procs unit-test ENABLE_LTO=1 ENABLE_LIBYOSYS=1

View file

@ -11,3 +11,4 @@ brew "bash"
brew "boost-python3" brew "boost-python3"
brew "llvm@20" brew "llvm@20"
brew "lld" brew "lld"
brew "googletest"

View file

@ -1,11 +1,27 @@
GTESTFLAG := -lgtest -lgtest_main UNAME_S := $(shell uname -s)
RPATH := -Wl,-rpath
EXTRAFLAGS := -lyosys -pthreads # GoogleTest flags
GTEST_PREFIX := $(shell brew --prefix googletest 2>/dev/null)
ifeq ($(GTEST_PREFIX),)
GTEST_CXXFLAGS :=
GTEST_LDFLAGS := -lgtest -lgtest_main
else
GTEST_CXXFLAGS := -I$(GTEST_PREFIX)/include
GTEST_LDFLAGS := -L$(GTEST_PREFIX)/lib -lgtest -lgtest_main
endif
ifeq ($(UNAME_S),Darwin)
RPATH = -Wl,-rpath,$(ROOTPATH)
else
RPATH = -Wl,-rpath=$(ROOTPATH)
endif
EXTRAFLAGS := -lyosys -pthread
OBJTEST := objtest OBJTEST := objtest
BINTEST := bintest BINTEST := bintest
ALLTESTFILE := $(shell find -name '*Test.cc' -printf '%P ') ALLTESTFILE := $(shell find . -name '*Test.cc' | sed 's|^\./||' | tr '\n' ' ')
TESTDIRS := $(sort $(dir $(ALLTESTFILE))) TESTDIRS := $(sort $(dir $(ALLTESTFILE)))
TESTS := $(addprefix $(BINTEST)/, $(basename $(ALLTESTFILE:%Test.cc=%Test.o))) TESTS := $(addprefix $(BINTEST)/, $(basename $(ALLTESTFILE:%Test.cc=%Test.o)))
@ -15,16 +31,26 @@ TESTS := $(addprefix $(BINTEST)/, $(basename $(ALLTESTFILE:%Test.cc=%Test.o)))
all: prepare $(TESTS) run-tests all: prepare $(TESTS) run-tests
$(BINTEST)/%: $(OBJTEST)/%.o $(BINTEST)/%: $(OBJTEST)/%.o
$(CXX) -L$(ROOTPATH) $(RPATH)=$(ROOTPATH) $(LINKFLAGS) -o $@ $^ $(LIBS) \ $(CXX) -L$(ROOTPATH) $(RPATH) $(LINKFLAGS) -o $@ $^ $(LIBS) \
$(GTESTFLAG) $(EXTRAFLAGS) $(GTEST_LDFLAGS) $(EXTRAFLAGS)
$(OBJTEST)/%.o: $(basename $(subst $(OBJTEST),.,%)).cc $(OBJTEST)/%.o: $(basename $(subst $(OBJTEST),.,%)).cc
$(CXX) -o $@ -c -I$(ROOTPATH) $(CPPFLAGS) $(CXXFLAGS) $^ $(CXX) -o $@ -c -I$(ROOTPATH) $(CPPFLAGS) $(CXXFLAGS) $(GTEST_CXXFLAGS) $^
.PHONY: prepare run-tests clean .PHONY: prepare run-tests clean
run-tests: $(TESTS) run-tests: $(TESTS)
$(subst Test ,Test&& ,$^) ifeq ($(UNAME_S),Darwin)
@for t in $^; do \
echo "Running $$t"; \
DYLD_LIBRARY_PATH=$(ROOTPATH) $$t || exit 1; \
done
else
@for t in $^; do \
echo "Running $$t"; \
$$t || exit 1; \
done
endif
prepare: prepare:
mkdir -p $(addprefix $(BINTEST)/,$(TESTDIRS)) mkdir -p $(addprefix $(BINTEST)/,$(TESTDIRS))

View file

@ -20,6 +20,9 @@ namespace RTLIL {
KernelRtlilTest() { KernelRtlilTest() {
if (log_files.empty()) log_files.emplace_back(stdout); if (log_files.empty()) log_files.emplace_back(stdout);
} }
virtual void SetUp() override {
IdString::ensure_prepopulated();
}
}; };
TEST_F(KernelRtlilTest, ConstAssignCompare) TEST_F(KernelRtlilTest, ConstAssignCompare)