Skip to content

Commit

Permalink
t1402-check-ref-format: skip tests of refs beginning with slash on Wi…
Browse files Browse the repository at this point in the history
…ndows

Bash on Windows converts program arguments that look like absolute POSIX
paths to their Windows form, i.e., drive-letter-colon format. For this
reason, those tests in t1402 that check refs that begin with a slash do not
work as expected on Windows: valid_ref tests are doomed to fail, and
invalid_ref tests fail for the wrong reason (that there is a colon rather
than that they begin with a slash).

Skip these tests.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Sixt authored and Junio C Hamano committed Oct 13, 2011
1 parent dce4bab commit 42afe62
Showing 1 changed file with 52 additions and 36 deletions.
88 changes: 52 additions & 36 deletions t/t1402-check-ref-format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,40 @@ test_description='Test git check-ref-format'
. ./test-lib.sh

valid_ref() {
if test "$#" = 1
then
test_expect_success "ref name '$1' is valid" \
"git check-ref-format '$1'"
else
test_expect_success "ref name '$1' is valid with options $2" \
"git check-ref-format $2 '$1'"
fi
prereq=
case $1 in
[A-Z]*)
prereq=$1
shift
esac
test_expect_success $prereq "ref name '$1' is valid${2:+ with options $2}" "
git check-ref-format $2 '$1'
"
}
invalid_ref() {
if test "$#" = 1
then
test_expect_success "ref name '$1' is invalid" \
"test_must_fail git check-ref-format '$1'"
else
test_expect_success "ref name '$1' is invalid with options $2" \
"test_must_fail git check-ref-format $2 '$1'"
fi
prereq=
case $1 in
[A-Z]*)
prereq=$1
shift
esac
test_expect_success $prereq "ref name '$1' is invalid${2:+ with options $2}" "
test_must_fail git check-ref-format $2 '$1'
"
}

invalid_ref ''
invalid_ref '/'
invalid_ref '/' --allow-onelevel
invalid_ref '/' --normalize
invalid_ref '/' '--allow-onelevel --normalize'
invalid_ref NOT_MINGW '/'
invalid_ref NOT_MINGW '/' --allow-onelevel
invalid_ref NOT_MINGW '/' --normalize
invalid_ref NOT_MINGW '/' '--allow-onelevel --normalize'
valid_ref 'foo/bar/baz'
valid_ref 'foo/bar/baz' --normalize
invalid_ref 'refs///heads/foo'
valid_ref 'refs///heads/foo' --normalize
invalid_ref 'heads/foo/'
invalid_ref '/heads/foo'
valid_ref '/heads/foo' --normalize
invalid_ref NOT_MINGW '/heads/foo'
valid_ref NOT_MINGW '/heads/foo' --normalize
invalid_ref '///heads/foo'
valid_ref '///heads/foo' --normalize
invalid_ref './foo'
Expand Down Expand Up @@ -115,14 +117,14 @@ invalid_ref "$ref" --refspec-pattern
invalid_ref "$ref" '--refspec-pattern --allow-onelevel'

ref='/foo'
invalid_ref "$ref"
invalid_ref "$ref" --allow-onelevel
invalid_ref "$ref" --refspec-pattern
invalid_ref "$ref" '--refspec-pattern --allow-onelevel'
invalid_ref "$ref" --normalize
valid_ref "$ref" '--allow-onelevel --normalize'
invalid_ref "$ref" '--refspec-pattern --normalize'
valid_ref "$ref" '--refspec-pattern --allow-onelevel --normalize'
invalid_ref NOT_MINGW "$ref"
invalid_ref NOT_MINGW "$ref" --allow-onelevel
invalid_ref NOT_MINGW "$ref" --refspec-pattern
invalid_ref NOT_MINGW "$ref" '--refspec-pattern --allow-onelevel'
invalid_ref NOT_MINGW "$ref" --normalize
valid_ref NOT_MINGW "$ref" '--allow-onelevel --normalize'
invalid_ref NOT_MINGW "$ref" '--refspec-pattern --normalize'
valid_ref NOT_MINGW "$ref" '--refspec-pattern --allow-onelevel --normalize'

test_expect_success "check-ref-format --branch @{-1}" '
T=$(git write-tree) &&
Expand Down Expand Up @@ -155,21 +157,35 @@ test_expect_success 'check-ref-format --branch from subdir' '
'

valid_ref_normalized() {
test_expect_success "ref name '$1' simplifies to '$2'" "
prereq=
case $1 in
[A-Z]*)
prereq=$1
shift
esac
test_expect_success $prereq "ref name '$1' simplifies to '$2'" "
refname=\$(git check-ref-format --normalize '$1') &&
test \"\$refname\" = '$2'"
test \"\$refname\" = '$2'
"
}
invalid_ref_normalized() {
test_expect_success "check-ref-format --normalize rejects '$1'" "
test_must_fail git check-ref-format --normalize '$1'"
prereq=
case $1 in
[A-Z]*)
prereq=$1
shift
esac
test_expect_success $prereq "check-ref-format --normalize rejects '$1'" "
test_must_fail git check-ref-format --normalize '$1'
"
}

valid_ref_normalized 'heads/foo' 'heads/foo'
valid_ref_normalized 'refs///heads/foo' 'refs/heads/foo'
valid_ref_normalized '/heads/foo' 'heads/foo'
valid_ref_normalized NOT_MINGW '/heads/foo' 'heads/foo'
valid_ref_normalized '///heads/foo' 'heads/foo'
invalid_ref_normalized 'foo'
invalid_ref_normalized '/foo'
invalid_ref_normalized NOT_MINGW '/foo'
invalid_ref_normalized 'heads/foo/../bar'
invalid_ref_normalized 'heads/./foo'
invalid_ref_normalized 'heads\foo'
Expand Down

0 comments on commit 42afe62

Please sign in to comment.