diff --git a/Makefile b/Makefile index 95bbdc61..36e8de32 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -export BR2_EXTERNAL := $(CURDIR) +export BR2_EXTERNAL ?= $(CURDIR) export PATH := $(CURDIR)/bin:$(PATH) ARCH ?= $(shell uname -m) diff --git a/test/env b/test/env index f1ece93b..c5c26f43 100755 --- a/test/env +++ b/test/env @@ -15,6 +15,10 @@ usage: test/env [] -f -q [...] Options: + -b + Use this directory as the top-level bind mount inside the container. + If not specified, Infix's top directory is used. + -c Clean up cruft, lingering images, old containers, unused volumes. Used by GitHub action to prevent issues with running tests. @@ -126,9 +130,13 @@ name() containerize=yes [ -c /dev/kvm ] && kvm="--device=/dev/kvm" files= +basedir="$ixdir" -while getopts "cCDf:hiKp:q:rt:" opt; do +while getopts "b:cCDf:hiKp:q:rt:" opt; do case ${opt} in + b) + basedir="$OPTARG" + ;; c) $(runner) image prune -af $(runner) volume prune -f @@ -177,7 +185,7 @@ while getopts "cCDf:hiKp:q:rt:" opt; do done if [ "$containerize" ]; then - volumes="--volume $ixdir:$ixdir --workdir=$ixdir/test" + volumes="--volume $basedir:$basedir --workdir=$ixdir/test" case "$(runner)" in docker) volumes="$volumes --env HOST_CHOWN_PATH=$ixdir/test" diff --git a/test/test.mk b/test/test.mk index fd7e183d..12492563 100644 --- a/test/test.mk +++ b/test/test.mk @@ -1,28 +1,35 @@ +base-dir := $(lastword $(subst :, ,$(BR2_EXTERNAL))) test-dir := $(BR2_EXTERNAL_INFIX_PATH)/test ninepm := $(BR2_EXTERNAL_INFIX_PATH)/test/9pm/9pm.py UNIT_TESTS ?= $(test-dir)/case/all-repo.yaml $(test-dir)/case/all-unit.yaml -INFIX_TESTS ?= $(test-dir)/case/all.yaml +TESTS ?= $(test-dir)/case/all.yaml + +IMAGE ?= infix +TOPOLOGY-DIR ?= $(test-dir)/virt/quad + +base := -b $(base-dir) TEST_MODE ?= qeneth -mode-qeneth := -q $(test-dir)/virt/quad +mode-qeneth := -q $(TOPOLOGY-DIR) mode-host := -t $(or $(TOPOLOGY),/etc/infamy.dot) mode-run := -t $(BINARIES_DIR)/qemu.dot mode := $(mode-$(TEST_MODE)) -binaries-$(ARCH) := $(addprefix infix-$(ARCH),.img -disk.img .pkg) + +binaries-$(ARCH) := $(addprefix $(IMAGE)-$(ARCH),.img -disk.img .pkg) binaries-x86_64 += OVMF.fd binaries := $(foreach bin,$(binaries-$(ARCH)),-f $(BINARIES_DIR)/$(bin)) test: - $(test-dir)/env -r $(mode) $(binaries) $(ninepm) $(INFIX_TESTS) + $(test-dir)/env -r $(base) $(mode) $(binaries) $(ninepm) $(TESTS) test-sh: - $(test-dir)/env $(mode) $(binaries) -i /bin/sh + $(test-dir)/env $(base) $(mode) $(binaries) -i /bin/sh # Unit tests run with random (-r) hostname and container name to # prevent race conditions when running in CI environments. test-unit: - $(test-dir)/env -r $(ninepm) $(UNIT_TESTS) + $(test-dir)/env -r $(base) $(ninepm) $(UNIT_TESTS) .PHONY: test test-sh test-unit