Currently there is no way to clean up the changes that have been made with test_perf for the next run. Add a way to reset the repository to the state before the test for testing commands that modify the git repository, e.g. for perf testing git add. Signed-off-by: Thomas Gummerer <t.gummerer@xxxxxxxxx> --- This enables me to do something like (hint, hint, hint ;-)): Test HEAD~1 HEAD ------------------------------------------------------------------------------------ .... 0003.16: v5 update-index file 0.19(0.12+0.06) 0.08(0.06+0.01) -57.9% There are no performance tests currently using this, but since I have it anyway for a POC of partial writing of index-v5 (which is ugly and will have to wait a bit until I'm ready to send it to the list) I think this may be a worthwhile addition others can use in the meantime. t/perf/README | 11 +++++++++++ t/perf/perf-lib.sh | 25 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/t/perf/README b/t/perf/README index 8848c14..72f8a7b 100644 --- a/t/perf/README +++ b/t/perf/README @@ -123,6 +123,17 @@ tests, use command2 ' +For performance tests that need cleaning up after them that should not +be timed, use + + test_perf_cleanup 'descriptive string' ' + command1 && + command2 + ' ' + cleanupcommand1 && + cleanupcommand2 + ' + test_perf spawns a subshell, for lack of better options. This means that diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh index 95e483c..11a93f1 100644 --- a/t/perf/perf-lib.sh +++ b/t/perf/perf-lib.sh @@ -174,6 +174,22 @@ perf_test_ () { test_failure_ "$@" break fi + say >&3 "cleaning up: $3" + if test "$#" = 3 + then + if test_run_ "$3" + then + if test -z "$verbose"; then + echo -n " c$i" + else + echo "* cleaning up run $i/$GIT_PERF_REPEAT_COUNT:" + fi + else + test -z "$verbose" && echo + test_failure_ "$@" + break + fi + fi done if test -z "$verbose"; then echo " ok" @@ -194,6 +210,15 @@ test_perf () { perf_test_ "$1" "$2" } +test_perf_cleanup () { + test_start_ + test "$#" = 4 && { test_prereq=$1; shift; } || test_prereq= + test "$#" = 3 || + error "bug in the test script: not 3 or 4 parameters to test-expect-success" + export test_prereq + perf_test_ "$1" "$2" "$3" +} + # We extend test_done to print timings at the end (./run disables this # and does it after running everything) test_at_end_hook_ () { -- 1.8.3.4.1238.ga800761 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html