summaryrefslogtreecommitdiff
path: root/common/preamble
blob: e60cd949ac4135b124b0195ccb310e835d7eeaa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2021 Oracle.  All Rights Reserved.

# Boilerplate fstests functionality

# Standard cleanup function.  Individual tests can override this.
_cleanup()
{
	cd /
	rm -r -f $tmp.*
}

# Install the supplied cleanup code as a signal handler for HUP, INT, QUIT,
# TERM, or when the test exits.  Extra signals can be specified as subsequent
# parameters.
_register_cleanup()
{
	local cleanup="$1"
	shift

	test -n "$cleanup" && cleanup="${cleanup}; "
	trap "${cleanup}exit \$status" EXIT HUP INT QUIT TERM $*
}

# Prepare to run a fstest by initializing the required global variables to
# their defaults, sourcing common functions, registering a cleanup function,
# and removing the $seqres.full file.
#
# The list of group memberships for this test (e.g. auto quick rw) must be
# passed as arguments to this helper.  It is not necessary to name this test
# explicitly as a member of the 'all' group.
_begin_fstest()
{
	if [ -n "$seq" ]; then
		echo "_begin_fstest can only be called once!"
		exit 1
	fi

	seq=`basename $0`

	seqres=$RESULT_DIR/$seq
	echo "QA output created by $seq"

	here=`pwd`
	tmp=/tmp/$$
	status=1	# failure is the default!

	_register_cleanup _cleanup

	. ./common/rc

	# remove previous $seqres.full before test
	rm -f $seqres.full $seqres.hints

}