test: Partition std suite into bounded native images
da9699b94db71e3ec2cf5c496d815c288d349b7c757225d0791e14192ad550d9
1 parent
9637272a
Makefile
+19 -9
| 4 | 4 | STD := -pkg std $(patsubst %,-mod %,$(shell cat std.lib)) |
|
| 5 | 5 | # Session allocation support for standalone lowering fixtures. |
|
| 6 | 6 | TEST_FIXTURE_STD_LIB := $(shell cat test/support/std.lib) |
|
| 7 | 7 | TEST_FIXTURE_STD := -pkg std $(patsubst %,-mod %,$(TEST_FIXTURE_STD_LIB)) |
|
| 8 | 8 | ||
| 9 | - | # Full standard library with test modules. |
|
| 10 | - | STD_TEST := $(STD) $(patsubst %,-mod %,$(shell cat std.lib.test)) |
|
| 9 | + | # Test modules are partitioned so each native image fits the emulator. |
|
| 10 | + | STD_TEST_MODULES := $(shell cat std.lib.test) |
|
| 11 | + | STD_TEST_SUPPORT := lib/std/testing.rad |
|
| 12 | + | # Resolver tests use parser test helpers. |
|
| 13 | + | STD_TEST_FRONTEND := $(filter lib/std/lang/parser/% lib/std/lang/resolver/%,$(STD_TEST_MODULES)) |
|
| 14 | + | STD_TEST_CORE := $(filter-out $(STD_TEST_SUPPORT) $(STD_TEST_FRONTEND),$(STD_TEST_MODULES)) |
|
| 15 | + | STD_TEST = $(STD) $(patsubst %,-mod %,$(STD_TEST_SUPPORT) $(STD_TEST_SOURCES)) |
|
| 11 | 16 | ||
| 12 | 17 | # Source files. |
|
| 13 | 18 | STD_LIB := $(shell find lib -name '*.rad') |
|
| 14 | 19 | BIN_DIR := bin |
|
| 15 | 20 | RAD_BIN := $(BIN_DIR)/radiance.rv64.dev |
| 51 | 56 | $(BIN_DIR): |
|
| 52 | 57 | @mkdir -p $@ |
|
| 53 | 58 | ||
| 54 | 59 | # Standard Library Tests |
|
| 55 | 60 | ||
| 56 | - | STD_LIB_TEST := lib/std.test.rv64 |
|
| 61 | + | STD_LIB_TEST := lib/std.core.test.rv64 lib/std.frontend.test.rv64 |
|
| 62 | + | ||
| 63 | + | lib/std.core.test.rv64: STD_TEST_SOURCES := $(STD_TEST_CORE) |
|
| 64 | + | lib/std.frontend.test.rv64: STD_TEST_SOURCES := $(STD_TEST_FRONTEND) |
|
| 57 | 65 | ||
| 58 | 66 | std-test: $(STD_LIB_TEST) |
|
| 59 | 67 | @echo |
|
| 60 | - | @$(EMU) $(EMU_FLAGS) -run $(STD_LIB_TEST) |
|
| 68 | + | @set -e; for image in $(STD_LIB_TEST); do \ |
|
| 69 | + | $(EMU) $(EMU_FLAGS) -run $$image; \ |
|
| 70 | + | done |
|
| 61 | 71 | ||
| 62 | - | $(STD_LIB_TEST): $(STD_LIB) $(RAD_BIN) std.lib std.lib.test |
|
| 72 | + | $(STD_LIB_TEST): $(STD_LIB) $(RAD_BIN) std.lib std.lib.test Makefile |
|
| 63 | 73 | @echo "radiance -test $(STD_TEST) -entry std -o $@" |
|
| 64 | 74 | @$(RADIANCE) -test $(STD_TEST) -entry std -o $@ |
|
| 65 | 75 | ||
| 66 | 76 | clean-std-test: |
|
| 67 | - | @rm -f lib/std.test.rv64 \ |
|
| 68 | - | lib/std.test.rv64.debug \ |
|
| 69 | - | lib/std.test.rv64.s \ |
|
| 70 | - | lib/std.test.rv64.o |
|
| 77 | + | @rm -f $(STD_LIB_TEST) \ |
|
| 78 | + | $(addsuffix .debug,$(STD_LIB_TEST)) \ |
|
| 79 | + | $(addsuffix .s,$(STD_LIB_TEST)) \ |
|
| 80 | + | $(addsuffix .o,$(STD_LIB_TEST)) |
|
| 71 | 81 | ||
| 72 | 82 | # Binary Tests |
|
| 73 | 83 | ||
| 74 | 84 | BIN_TEST_DIR := test/tests |
|
| 75 | 85 | # Only tests with `//! returns:` are compiled to binaries and executed. |