From: Darrick J. Wong <djwong@xxxxxxxxxx> Now that we've moved the group membership details into the test case files themselves, automatically generate the group files during build. The autogenerated files are named "group.list" instead of "group" to avoid conflicts between generated and (stale) SCM files as everyone rebases. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- .gitignore | 3 +++ common/preamble | 8 ++++++++ include/buildgrouplist | 8 ++++++++ tests/Makefile | 4 ++++ tests/btrfs/Makefile | 4 ++++ tests/ceph/Makefile | 4 ++++ tests/cifs/Makefile | 4 ++++ tests/ext4/Makefile | 4 ++++ tests/f2fs/Makefile | 4 ++++ tests/generic/Makefile | 4 ++++ tests/nfs/Makefile | 4 ++++ tests/ocfs2/Makefile | 4 ++++ tests/overlay/Makefile | 4 ++++ tests/perf/Makefile | 4 ++++ tests/shared/Makefile | 4 ++++ tests/udf/Makefile | 4 ++++ tests/xfs/Makefile | 4 ++++ tools/mkgroupfile | 42 ++++++++++++++++++++++++++++++++++++++++++ 18 files changed, 117 insertions(+) create mode 100644 include/buildgrouplist create mode 100755 tools/mkgroupfile diff --git a/.gitignore b/.gitignore index c62c1556..ab366961 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ tags /local.config /results +# autogenerated group files +/tests/*/group.list + # autoconf generated files /aclocal.m4 /autom4te.cache diff --git a/common/preamble b/common/preamble index 63f66957..4fe8fd3f 100644 --- a/common/preamble +++ b/common/preamble @@ -32,6 +32,14 @@ _begin_fstest() fi seq=`basename $0` + + # If we're only running the test to generate a group.list file, + # spit out the group data and exit. + if [ -n "$GENERATE_GROUPS" ]; then + echo "$seq $@" + exit 0 + fi + seqres=$RESULT_DIR/$seq echo "QA output created by $seq" diff --git a/include/buildgrouplist b/include/buildgrouplist new file mode 100644 index 00000000..d898efa3 --- /dev/null +++ b/include/buildgrouplist @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2021 Oracle, Inc. All Rights Reserved. +# +.PHONY: group.list + +group.list: + @echo " [GROUP] $$PWD/$@" + $(Q)$(TOPDIR)/tools/mkgroupfile $@ diff --git a/tests/Makefile b/tests/Makefile index 8ce8f209..5c8f0b10 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -7,6 +7,10 @@ include $(TOPDIR)/include/builddefs TESTS_SUBDIRS = $(sort $(dir $(wildcard $(CURDIR)/[[:lower:]]*/))) +SUBDIRS = $(wildcard [[:lower:]]*) + +default: $(SUBDIRS) + include $(BUILDRULES) install: $(addsuffix -install,$(TESTS_SUBDIRS)) diff --git a/tests/btrfs/Makefile b/tests/btrfs/Makefile index 2d936421..cc2b2fc9 100644 --- a/tests/btrfs/Makefile +++ b/tests/btrfs/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist BTRFS_DIR = btrfs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(BTRFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/ceph/Makefile b/tests/ceph/Makefile index 55e35d77..61ab01d4 100644 --- a/tests/ceph/Makefile +++ b/tests/ceph/Makefile @@ -2,9 +2,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist CEPH_DIR = ceph TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(CEPH_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/cifs/Makefile b/tests/cifs/Makefile index 0c5cf3be..5356a682 100644 --- a/tests/cifs/Makefile +++ b/tests/cifs/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist CIFS_DIR = cifs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(CIFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/ext4/Makefile b/tests/ext4/Makefile index beb1541f..9c765497 100644 --- a/tests/ext4/Makefile +++ b/tests/ext4/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist EXT4_DIR = ext4 TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(EXT4_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/f2fs/Makefile b/tests/f2fs/Makefile index d13bca3f..d2374018 100644 --- a/tests/f2fs/Makefile +++ b/tests/f2fs/Makefile @@ -5,9 +5,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist F2FS_DIR = f2fs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(F2FS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/generic/Makefile b/tests/generic/Makefile index 3878d05c..95cd403c 100644 --- a/tests/generic/Makefile +++ b/tests/generic/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist GENERIC_DIR = generic TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(GENERIC_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/nfs/Makefile b/tests/nfs/Makefile index 754f2b25..e372b305 100644 --- a/tests/nfs/Makefile +++ b/tests/nfs/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist NFS_DIR = nfs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(NFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/ocfs2/Makefile b/tests/ocfs2/Makefile index e1337908..d85c4fd3 100644 --- a/tests/ocfs2/Makefile +++ b/tests/ocfs2/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist OCFS2_DIR = ocfs2 TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(OCFS2_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/overlay/Makefile b/tests/overlay/Makefile index b07f8925..b995a6ec 100644 --- a/tests/overlay/Makefile +++ b/tests/overlay/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist TEST_DIR = overlay TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(TEST_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/perf/Makefile b/tests/perf/Makefile index 620f1dbf..5d82cccc 100644 --- a/tests/perf/Makefile +++ b/tests/perf/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist PERF_DIR = perf TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(PERF_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/shared/Makefile b/tests/shared/Makefile index 8a832782..6c6533c8 100644 --- a/tests/shared/Makefile +++ b/tests/shared/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist SHARED_DIR = shared TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(SHARED_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/udf/Makefile b/tests/udf/Makefile index c9c9f1bd..bfaa1b0e 100644 --- a/tests/udf/Makefile +++ b/tests/udf/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist UDF_DIR = udf TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(UDF_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tests/xfs/Makefile b/tests/xfs/Makefile index d64800ea..c2f0ba48 100644 --- a/tests/xfs/Makefile +++ b/tests/xfs/Makefile @@ -4,9 +4,13 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist XFS_DIR = xfs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(XFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) diff --git a/tools/mkgroupfile b/tools/mkgroupfile new file mode 100755 index 00000000..0681e5d2 --- /dev/null +++ b/tools/mkgroupfile @@ -0,0 +1,42 @@ +#!/bin/bash + +# Generate a group file from the _begin_fstest call in each test. + +if [ "$1" = "--help" ]; then + echo "Usage: (cd tests/XXX/ ; ../../tools/mkgroupfile [output])" + exit 1 +fi + +test_dir="$PWD" +groupfile="$1" + +if [ ! -x ../../check ]; then + echo "$0: Run this from tests/XXX/." + exit 1 +fi + +generate_groupfile() { + cat << ENDL +# QA groups control file, automatically generated. +# See _begin_fstest in each test for details. + +ENDL + cd ../../ + export GENERATE_GROUPS=yes + grep -R -l "^_begin_fstest" "$test_dir/" 2>/dev/null | while read testfile; do + test -x "$testfile" && "$testfile" + done | sort -g + cd "$test_dir" +} + +if [ -z "$groupfile" ] || [ "$groupfile" = "-" ]; then + # Dump the group file to stdout and exit + generate_groupfile + exit 0 +fi + +# Otherwise, write the group file to disk somewhere. +ngroupfile="${groupfile}.new" +rm -f "$ngroupfile" +generate_groupfile >> "$ngroupfile" +mv "$ngroupfile" "$groupfile"