From 4dbdc42d9e7c3968ff7f690d00680419c9b8cb0f Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 9 Apr 2024 15:34:27 +0200 Subject: Adding upstream version 1:2.43.0. Signed-off-by: Daniel Baumann --- t/t3302-notes-index-expensive.sh | 139 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100755 t/t3302-notes-index-expensive.sh (limited to 't/t3302-notes-index-expensive.sh') diff --git a/t/t3302-notes-index-expensive.sh b/t/t3302-notes-index-expensive.sh new file mode 100755 index 0000000..d0c4d38 --- /dev/null +++ b/t/t3302-notes-index-expensive.sh @@ -0,0 +1,139 @@ +#!/bin/sh +# +# Copyright (c) 2007 Johannes E. Schindelin +# + +test_description='Test commit notes index (expensive!)' + +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + +TEST_PASSES_SANITIZE_LEAK=true +. ./test-lib.sh + +create_repo () { + number_of_commits=$1 + nr=0 + test -d .git || { + git init && + ( + while test $nr -lt $number_of_commits + do + nr=$(($nr+1)) + mark=$(($nr+$nr)) + notemark=$(($mark+1)) + test_tick && + cat <<-INPUT_END && + commit refs/heads/main + mark :$mark + committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE + data <>note_commit + done && + test_tick && + cat <<-INPUT_END && + commit refs/notes/commits + committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE + data <tmp && + grep "^ " tmp >output && + i=$count && + while test $i -gt 0 + do + echo " commit #$i" && + echo " note for commit #$i" && + i=$(($i-1)) + done >expect && + test_cmp expect output +} + +write_script time_notes <<\EOF + mode=$1 + i=1 + while test $i -lt $2 + do + case $1 in + no-notes) + GIT_NOTES_REF=non-existing + export GIT_NOTES_REF + ;; + notes) + unset GIT_NOTES_REF + ;; + esac + git log || exit $? + i=$(($i+1)) + done >/dev/null +EOF + +time_notes () { + for mode in no-notes notes + do + echo $mode + /usr/bin/time ../time_notes $mode $1 + done +} + +do_tests () { + count=$1 pr=${2-} + + test_expect_success $pr "setup $count" ' + mkdir "$count" && + ( + cd "$count" && + create_repo "$count" + ) + ' + + test_expect_success $pr 'notes work' ' + ( + cd "$count" && + test_notes "$count" + ) + ' + + test_expect_success "USR_BIN_TIME${pr:+,$pr}" 'notes timing with /usr/bin/time' ' + ( + cd "$count" && + time_notes 100 + ) + ' +} + +do_tests 10 +for count in 100 1000 10000 +do + do_tests "$count" EXPENSIVE +done + +test_done -- cgit v1.2.3