Merge branch 'mh/blame-worktree'
[gitweb.git] / t / perf / perf-lib.sh
index 5ef17440c0e1e63102adddba958686c28b4e80ec..46f08ee0870ffd2b1e0eb7d159b159d25ef61ffb 100644 (file)
@@ -52,6 +52,9 @@ TEST_NO_MALLOC_CHECK=t
 # need to export them for test_perf subshells
 export TEST_DIRECTORY TRASH_DIRECTORY GIT_BUILD_DIR GIT_TEST_CMP
 
+MODERN_GIT=$GIT_BUILD_DIR/bin-wrappers/git
+export MODERN_GIT
+
 perf_results_dir=$TEST_OUTPUT_DIRECTORY/test-results
 mkdir -p "$perf_results_dir"
 rm -f "$perf_results_dir"/$(basename "$0" .sh).subtests
@@ -81,9 +84,10 @@ test_perf_create_repo_from () {
        repo="$1"
        source="$2"
        source_git="$(git -C "$source" rev-parse --git-dir)"
-       objects_dir="$(git -C "$source" rev-parse --git-path objects)"
+       objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)"
        mkdir -p "$repo/.git"
        (
+               cd "$source" &&
                { cp -Rl "$objects_dir" "$repo/.git/" 2>/dev/null ||
                        cp -R "$objects_dir" "$repo/.git/"; } &&
                for stuff in "$source_git"/*; do
@@ -94,7 +98,9 @@ test_perf_create_repo_from () {
                                        cp -R "$stuff" "$repo/.git/" || exit 1
                                        ;;
                        esac
-               done &&
+               done
+       ) &&
+       (
                cd "$repo" &&
                git init -q && {
                        test_have_prereq SYMLINKS ||
@@ -124,11 +130,15 @@ test_checkout_worktree () {
 # Performance tests should never fail.  If they do, stop immediately
 immediate=t
 
+# Perf tests require GNU time
+case "$(uname -s)" in Darwin) GTIME="${GTIME:-gtime}";; esac
+GTIME="${GTIME:-/usr/bin/time}"
+
 test_run_perf_ () {
        test_cleanup=:
        test_export_="test_cleanup"
        export test_cleanup test_export_
-       /usr/bin/time -f "%E %U %S" -o test_time.$i "$SHELL" -c '
+       "$GTIME" -f "%E %U %S" -o test_time.$i "$SHELL" -c '
 . '"$TEST_DIRECTORY"/test-lib-functions.sh'
 test_export () {
        [ $# != 0 ] || return 0