[LTP] [PATCH 2/2] openposix: Add runtest files for kirk
Anders Roxell
anders.roxell@linaro.org
Fri Oct 23 14:34:36 CEST 2026
LTP has no runtest files for the Open POSIX tests, so kirk can not run
them. They are only run with run.sh, which prints its own summary.
Generate a runtest file for each suite at install time. The speculative
tests are left out, like in run.sh, and the arguments from a test's
.args file go on its runtest line. Each line calls a small wrapper,
openposix_run.sh, which runs the test from its own directory like
run-tests.sh does.
The wrapper also maps PTS_UNSUPPORTED and PTS_UNTESTED to TCONF.
Without it kirk reports them as TWARN and TFAIL.
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
---
testcases/open_posix_testsuite/Makefile | 13 ++++++++-
testcases/open_posix_testsuite/bin/Makefile | 6 +++-
.../open_posix_testsuite/bin/openposix_run.sh | 29 +++++++++++++++++++
.../include/mk/config.mk.in | 3 ++
.../scripts/generate-runtest.sh | 29 +++++++++++++++++++
5 files changed, 78 insertions(+), 2 deletions(-)
create mode 100755 testcases/open_posix_testsuite/bin/openposix_run.sh
create mode 100755 testcases/open_posix_testsuite/scripts/generate-runtest.sh
diff --git a/testcases/open_posix_testsuite/Makefile b/testcases/open_posix_testsuite/Makefile
index 4bead182170d..db141ba3cd8b 100644
--- a/testcases/open_posix_testsuite/Makefile
+++ b/testcases/open_posix_testsuite/Makefile
@@ -74,7 +74,7 @@ generate-makefiles: distclean-makefiles
$(top_srcdir)/scripts/generate-makefiles.sh
.PHONY: install
-install: bin-install conformance-install functional-install stress-install
+install: bin-install conformance-install functional-install stress-install runtest-install
.PHONY: test
test: conformance-test functional-test stress-test
@@ -119,6 +119,17 @@ stress-test:
@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
@$(TEST_MAKE) -C stress test
+RUNTEST_SUITES= conformance functional stress
+
+.PHONY: runtest-install
+runtest-install: $(addsuffix -install,$(RUNTEST_SUITES))
+ @mkdir -p $(DESTDIR)/$(runtestdir)
+ @set -e; for suite in $(RUNTEST_SUITES); do \
+ $(top_srcdir)/scripts/generate-runtest.sh \
+ $(DESTDIR)/$(testdir) "$(testdir_rel)" $$suite \
+ > $(DESTDIR)/$(runtestdir)/openposix-$$suite; \
+ done
+
# Tools build and install targets.
.PHONY: bin-install
bin-install:
diff --git a/testcases/open_posix_testsuite/bin/Makefile b/testcases/open_posix_testsuite/bin/Makefile
index 262a6567c5b6..5dfff99effcb 100644
--- a/testcases/open_posix_testsuite/bin/Makefile
+++ b/testcases/open_posix_testsuite/bin/Makefile
@@ -16,7 +16,7 @@ clean:
@rm -f t0.val
.PHONY: install
-install: clean $(DESTDIR)/$(bindir) $(DESTDIR)/$(testdir_bin)
+install: clean $(DESTDIR)/$(bindir) $(DESTDIR)/$(testdir_bin) $(DESTDIR)/$(ltp_bindir)
set -e; for file in $(INSTALL_BIN_TARGETS); do \
install -m 00755 $$file $(DESTDIR)/$(bindir)/$$file; \
done
@@ -27,9 +27,13 @@ install: clean $(DESTDIR)/$(bindir) $(DESTDIR)/$(testdir_bin)
install -m 00755 $$file $(DESTDIR)/$(testdir_bin)/$$file; \
done
+ install -m 00755 openposix_run.sh $(DESTDIR)/$(ltp_bindir)/
$(DESTDIR)/$(bindir):
mkdir -p $@
$(DESTDIR)/$(testdir_bin):
mkdir -p $@
+
+$(DESTDIR)/$(ltp_bindir):
+ mkdir -p $@
diff --git a/testcases/open_posix_testsuite/bin/openposix_run.sh b/testcases/open_posix_testsuite/bin/openposix_run.sh
new file mode 100755
index 000000000000..43c52a38d956
--- /dev/null
+++ b/testcases/open_posix_testsuite/bin/openposix_run.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2026 Linaro Limited
+
+LTPROOT=${LTPROOT:-$(cd "$(dirname "$0")/../.." && pwd)}
+
+if [ $# -lt 1 ]; then
+ echo "Usage: $(basename "$0") <test path relative to LTPROOT> [args]" >&2
+ exit 2
+fi
+
+test_path=$LTPROOT/$1
+test_file=${test_path##*/}
+shift
+
+if [ ! -x "$test_path" ]; then
+ echo "$test_path is missing or not executable" >&2
+ exit 2
+fi
+
+cd "${test_path%/*}" || exit 2
+
+./"$test_file" "$@"
+ret=$?
+
+case $ret in
+4|5) exit 32 ;;
+*) exit $ret ;;
+esac
diff --git a/testcases/open_posix_testsuite/include/mk/config.mk.in b/testcases/open_posix_testsuite/include/mk/config.mk.in
index 20422e0f1047..fae80116bbf7 100644
--- a/testcases/open_posix_testsuite/include/mk/config.mk.in
+++ b/testcases/open_posix_testsuite/include/mk/config.mk.in
@@ -14,4 +14,7 @@ testdir_rel := @testdir@
testdir := ${prefix}/${testdir_rel}
testdir_bin := ${testdir}/bin
+ltp_bindir := ${prefix}/testcases/bin
+runtestdir := ${prefix}/runtest
+
CFLAGS += -std=c99 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -Wall -Wextra
diff --git a/testcases/open_posix_testsuite/scripts/generate-runtest.sh b/testcases/open_posix_testsuite/scripts/generate-runtest.sh
new file mode 100755
index 000000000000..e561a7adcf21
--- /dev/null
+++ b/testcases/open_posix_testsuite/scripts/generate-runtest.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2026 Linaro Limited
+
+if [ $# -ne 3 ]; then
+ echo "Usage: $(basename "$0") <installed testdir> <testdir relative to LTPROOT> <suite>" >&2
+ exit 1
+fi
+
+installed_testdir=$1
+testdir_rel=$2
+suite=$3
+
+cd "$installed_testdir" || exit 1
+
+if [ ! -d "$suite" ]; then
+ echo "$installed_testdir/$suite does not exist" >&2
+ exit 1
+fi
+
+find "$suite" -name speculative -prune -o -type f \
+ \( -name '*.run-test' -o -name '*.sh' ! -name run.sh \) -print | sort | \
+while read -r test_path; do
+ test_name=${test_path##*/}
+ args_file=${test_path%/*}/${test_name%%.*}.args
+ args=
+ [ -f "$args_file" ] && read -r args < "$args_file"
+ echo "${test_name%.*} openposix_run.sh ${testdir_rel:+$testdir_rel/}$test_path${args:+ $args}"
+done
--
2.53.0
More information about the ltp
mailing list