@ -1,21 +1,34 @@
#!/bin/sh
#!/bin/sh
case "$1" in
die () {
echo >&2 "error: $*"
exit 1
}
while [ $# -gt 0 ]; do
arg="$1"
case "$arg" in
--)
break ;;
--help)
--help)
echo "usage: $0 [--config file] [other_git_tree...] [--] [test_scripts]"
echo "usage: $0 [--config file] [--subsection subsec] [other_git_tree...] [--] [test_scripts]"
exit 0
exit 0 ;;
;;
--config)
--config)
shift
shift
GIT_PERF_CONFIG_FILE=$(cd "$(dirname "$1")"; pwd)/$(basename "$1")
GIT_PERF_CONFIG_FILE=$(cd "$(dirname "$1")"; pwd)/$(basename "$1")
export GIT_PERF_CONFIG_FILE
export GIT_PERF_CONFIG_FILE
shift ;;
shift ;;
esac
--subsection)
shift
die () {
GIT_PERF_SUBSECTION="$1"
echo >&2 "error: $*"
export GIT_PERF_SUBSECTION
exit 1
shift ;;
}
--*)
die "unrecognised option: '$arg'" ;;
*)
break ;;
esac
done
run_one_dir () {
run_one_dir () {
if test $# -eq 0; then
if test $# -eq 0; then
@ -172,9 +185,32 @@ get_subsections "perf" >test-results/run_subsections.names
if test $(wc -l <test-results/run_subsections.names) -eq 0
if test $(wc -l <test-results/run_subsections.names) -eq 0
then
then
if test -n "$GIT_PERF_SUBSECTION"
then
if test -n "$GIT_PERF_CONFIG_FILE"
then
die "no subsections are defined in config file '$GIT_PERF_CONFIG_FILE'"
else
die "subsection '$GIT_PERF_SUBSECTION' defined without a config file"
fi
fi
(
(
run_subsection "$@"
run_subsection "$@"
)
)
elif test -n "$GIT_PERF_SUBSECTION"
then
egrep "^$GIT_PERF_SUBSECTION\$" test-results/run_subsections.names >/dev/null ||
die "subsection '$GIT_PERF_SUBSECTION' not found in '$GIT_PERF_CONFIG_FILE'"
egrep "^$GIT_PERF_SUBSECTION\$" test-results/run_subsections.names | while read -r subsec
do
(
GIT_PERF_SUBSECTION="$subsec"
export GIT_PERF_SUBSECTION
echo "======== Run for subsection '$GIT_PERF_SUBSECTION' ========"
run_subsection "$@"
)
done
else
else
while read -r subsec
while read -r subsec
do
do