зеркало из https://github.com/microsoft/git.git
t4201: make use of abbreviation in the test more robust
The test for '--abbrev' in t4201-shortlog.sh assumes that the commits generated in the test can always be uniquely abbreviated to 5 hex digits but this is not always the case. If you were unlucky and happened to run the test at (say) Thu Jun 22 03:04:49 2017 +0000, you would find that the first commit generated would collide with a tree object created later in the same test. This can be simulated in the version of t4201-shortlog.sh prior to this commit by setting GIT_COMMITTER_DATE and GIT_AUTHOR_DATE to 1498100689 after sourcing test-lib.sh. Change the test to test --abbrev=35 instead of --abbrev=5 to almost completely avoid the possibility of a partial collision and add a call to test_tick in the setup to make the test repeatable (the latter alone is sufficient to make it robust enough). Signed-off-by: Charles Bailey <cbailey32@bloomberg.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
9752ad0bb7
Коммит
5555a2aa4b
|
@ -9,6 +9,7 @@ test_description='git shortlog
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
test_tick &&
|
||||||
echo 1 >a1 &&
|
echo 1 >a1 &&
|
||||||
git add a1 &&
|
git add a1 &&
|
||||||
tree=$(git write-tree) &&
|
tree=$(git write-tree) &&
|
||||||
|
@ -59,7 +60,7 @@ fuzz() {
|
||||||
file=$1 &&
|
file=$1 &&
|
||||||
sed "
|
sed "
|
||||||
s/$_x40/OBJECT_NAME/g
|
s/$_x40/OBJECT_NAME/g
|
||||||
s/$_x05/OBJID/g
|
s/$_x35/OBJID/g
|
||||||
s/^ \{6\}[CTa].*/ SUBJECT/g
|
s/^ \{6\}[CTa].*/ SUBJECT/g
|
||||||
s/^ \{8\}[^ ].*/ CONTINUATION/g
|
s/^ \{8\}[^ ].*/ CONTINUATION/g
|
||||||
" <"$file" >"$file.fuzzy" &&
|
" <"$file" >"$file.fuzzy" &&
|
||||||
|
@ -81,7 +82,7 @@ test_expect_success 'pretty format' '
|
||||||
|
|
||||||
test_expect_success '--abbrev' '
|
test_expect_success '--abbrev' '
|
||||||
sed s/SUBJECT/OBJID/ expect.template >expect &&
|
sed s/SUBJECT/OBJID/ expect.template >expect &&
|
||||||
git shortlog --format="%h" --abbrev=5 HEAD >log &&
|
git shortlog --format="%h" --abbrev=35 HEAD >log &&
|
||||||
fuzz log >log.predictable &&
|
fuzz log >log.predictable &&
|
||||||
test_cmp expect log.predictable
|
test_cmp expect log.predictable
|
||||||
'
|
'
|
||||||
|
|
|
@ -166,9 +166,10 @@ esac
|
||||||
|
|
||||||
# Convenience
|
# Convenience
|
||||||
#
|
#
|
||||||
# A regexp to match 5 and 40 hexdigits
|
# A regexp to match 5, 35 and 40 hexdigits
|
||||||
_x05='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
|
_x05='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
|
||||||
_x40="$_x05$_x05$_x05$_x05$_x05$_x05$_x05$_x05"
|
_x35="$_x05$_x05$_x05$_x05$_x05$_x05$_x05"
|
||||||
|
_x40="$_x35$_x05"
|
||||||
|
|
||||||
# Zero SHA-1
|
# Zero SHA-1
|
||||||
_z40=0000000000000000000000000000000000000000
|
_z40=0000000000000000000000000000000000000000
|
||||||
|
@ -184,7 +185,7 @@ LF='
|
||||||
# when case-folding filenames
|
# when case-folding filenames
|
||||||
u200c=$(printf '\342\200\214')
|
u200c=$(printf '\342\200\214')
|
||||||
|
|
||||||
export _x05 _x40 _z40 LF u200c EMPTY_TREE EMPTY_BLOB
|
export _x05 _x35 _x40 _z40 LF u200c EMPTY_TREE EMPTY_BLOB
|
||||||
|
|
||||||
# Each test should start with something like this, after copyright notices:
|
# Each test should start with something like this, after copyright notices:
|
||||||
#
|
#
|
||||||
|
|
Загрузка…
Ссылка в новой задаче