mirror of
https://github.com/git/git.git
synced 2024-11-25 02:44:48 +08:00
1bb207e0fe
Two tests (t3302 and t3419) used to have their own environment variable to trigger expensive tests without enabling expensive tests in other scripts; a user could set GIT_NOTES_TIMING_TESTS but not GIT_TEST_LONG and run the whole test suite and trigger expensive tests only in t3302 but not other tests. The same for GIT_PATCHID_TIMING_TESTS in t3419. While this may have seemed a good flexibility, in reality if you are concentrating on a single test (e.g. t3302), you can just run that single test with the GIT_TEST_LONG to trigger expensive tests. It does not seem worth forcing other people who may want to come up with their own expensive tests to invent new environment variables by keeping this convention. Drop them. Signed-off-by: Junio C Hamano <gitster@pobox.com>
135 lines
2.1 KiB
Bash
Executable File
135 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2007 Johannes E. Schindelin
|
|
#
|
|
|
|
test_description='Test commit notes index (expensive!)'
|
|
|
|
. ./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/master
|
|
mark :$mark
|
|
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
|
data <<COMMIT
|
|
commit #$nr
|
|
COMMIT
|
|
|
|
M 644 inline file
|
|
data <<EOF
|
|
file in commit #$nr
|
|
EOF
|
|
|
|
blob
|
|
mark :$notemark
|
|
data <<EOF
|
|
note for commit #$nr
|
|
EOF
|
|
|
|
INPUT_END
|
|
echo "N :$notemark :$mark" >>note_commit
|
|
done &&
|
|
test_tick &&
|
|
cat <<-INPUT_END &&
|
|
commit refs/notes/commits
|
|
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
|
data <<COMMIT
|
|
notes
|
|
COMMIT
|
|
|
|
INPUT_END
|
|
|
|
cat note_commit
|
|
) |
|
|
git fast-import --quiet &&
|
|
git config core.notesRef refs/notes/commits
|
|
}
|
|
}
|
|
|
|
test_notes () {
|
|
count=$1 &&
|
|
git config core.notesRef refs/notes/commits &&
|
|
git log | grep "^ " >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
|
|
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
|