diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -505,6 +505,8 @@ .. ping .. + rcorder + .. route .. savecore diff --git a/sbin/rcorder/Makefile b/sbin/rcorder/Makefile --- a/sbin/rcorder/Makefile +++ b/sbin/rcorder/Makefile @@ -1,5 +1,7 @@ # $NetBSD: Makefile,v 1.1 1999/11/23 05:28:20 mrg Exp $ +.include + PACKAGE=rc PROG= rcorder SRCS= ealloc.c hash.c rcorder.c @@ -11,4 +13,7 @@ #CFLAGS+= -DDEBUG +HAS_TESTS= +SUBDIR.${MK_TESTS}+= tests + .include diff --git a/sbin/rcorder/tests/Makefile b/sbin/rcorder/tests/Makefile new file mode 100644 --- /dev/null +++ b/sbin/rcorder/tests/Makefile @@ -0,0 +1,5 @@ +PACKAGE= tests + +ATF_TESTS_SH+= rcorder_test + +.include diff --git a/sbin/rcorder/tests/rcorder_test.sh b/sbin/rcorder/tests/rcorder_test.sh new file mode 100755 --- /dev/null +++ b/sbin/rcorder/tests/rcorder_test.sh @@ -0,0 +1,169 @@ +# +# Copyright (c) 2025 Kyle Evans +# +# SPDX-License-Identifier: BSD-2-Clause +# + +atf_test_case basic +basic_body() +{ + mkdir -p rc + for f in a b c; do + echo "# PROVIDE: $f" > rc/"$f" + done + + cat >expected < rc/"$f" + done + + echo "# BEFORE: c" >> rc/b + cat >expected < rc/"$f" + done + + echo "# REQUIRE: b" >> rc/c + cat >expected < b -> a chain forces a total ordering and we end up executing + # them as you'd expect. + echo "# REQUIRE: a" >> rc/b + cat >expected < rc/"$f" + done + for f in b e; do + echo "# KEYWORD: red" >> rc/"$f" + done + # Leave c untagged entirely + for f in a d; do + echo "# KEYWORD: black" >> rc/"$f" + done + echo "# KEYWORD: none" > rc/f + + cat >expected-nofilter <expected-red <expected-black <expected-redless <expected-fullcolor <expected-colorless < rc/"$f" + echo "# REQUIRE: nonexistent" >> rc/"$f" + done + + cat >expected <