7f733de04e
In order to selectively skip tests, the environment variable GIT_SKIP_TESTS can be set like this: $ GIT_SKIP_TESTS='t1301 t4150.18' make test That is, its value can contain only the test script numbers, but not the full script name. Therefore, it is important that the test scripts are uniquely numbered. This makes it so. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
161 lines
5.5 KiB
Bash
Executable File
161 lines
5.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright (c) 2007 Eric Wong
|
|
test_description='git svn globbing refspecs'
|
|
. ./lib-git-svn.sh
|
|
|
|
cat > expect.end <<EOF
|
|
the end
|
|
hi
|
|
start a new branch
|
|
initial
|
|
EOF
|
|
|
|
test_expect_success 'test refspec globbing' '
|
|
mkdir -p trunk/src/a trunk/src/b trunk/doc &&
|
|
echo "hello world" > trunk/src/a/readme &&
|
|
echo "goodbye world" > trunk/src/b/readme &&
|
|
svn import -m "initial" trunk "$svnrepo"/trunk &&
|
|
svn co "$svnrepo" tmp &&
|
|
(
|
|
cd tmp &&
|
|
mkdir branches branches/v1 tags &&
|
|
svn add branches tags &&
|
|
svn cp trunk branches/v1/start &&
|
|
svn commit -m "start a new branch" &&
|
|
svn up &&
|
|
echo "hi" >> branches/v1/start/src/b/readme &&
|
|
poke branches/v1/start/src/b/readme &&
|
|
echo "hey" >> branches/v1/start/src/a/readme &&
|
|
poke branches/v1/start/src/a/readme &&
|
|
svn commit -m "hi" &&
|
|
svn up &&
|
|
svn cp branches/v1/start tags/end &&
|
|
echo "bye" >> tags/end/src/b/readme &&
|
|
poke tags/end/src/b/readme &&
|
|
echo "aye" >> tags/end/src/a/readme &&
|
|
poke tags/end/src/a/readme &&
|
|
svn commit -m "the end" &&
|
|
echo "byebye" >> tags/end/src/b/readme &&
|
|
poke tags/end/src/b/readme &&
|
|
svn commit -m "nothing to see here"
|
|
) &&
|
|
git config --add svn-remote.svn.url "$svnrepo" &&
|
|
git config --add svn-remote.svn.fetch \
|
|
"trunk/src/a:refs/remotes/trunk" &&
|
|
git config --add svn-remote.svn.branches \
|
|
"branches/*/*/src/a:refs/remotes/branches/*/*" &&
|
|
git config --add svn-remote.svn.tags\
|
|
"tags/*/src/a:refs/remotes/tags/*" &&
|
|
git svn multi-fetch &&
|
|
git log --pretty=oneline refs/remotes/tags/end | \
|
|
sed -e "s/^.\{41\}//" > output.end &&
|
|
test_cmp expect.end output.end &&
|
|
test "`git rev-parse refs/remotes/tags/end~1`" = \
|
|
"`git rev-parse refs/remotes/branches/v1/start`" &&
|
|
test "`git rev-parse refs/remotes/branches/v1/start~2`" = \
|
|
"`git rev-parse refs/remotes/trunk`" &&
|
|
test_must_fail git rev-parse refs/remotes/tags/end@3
|
|
'
|
|
|
|
echo try to try > expect.two
|
|
echo nothing to see here >> expect.two
|
|
cat expect.end >> expect.two
|
|
|
|
test_expect_success 'test left-hand-side only globbing' '
|
|
git config --add svn-remote.two.url "$svnrepo" &&
|
|
git config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&
|
|
git config --add svn-remote.two.branches \
|
|
"branches/*/*:refs/remotes/two/branches/*/*" &&
|
|
git config --add svn-remote.two.tags \
|
|
"tags/*:refs/remotes/two/tags/*" &&
|
|
(
|
|
cd tmp &&
|
|
echo "try try" >> tags/end/src/b/readme &&
|
|
poke tags/end/src/b/readme &&
|
|
svn commit -m "try to try"
|
|
) &&
|
|
git svn fetch two &&
|
|
test `git rev-list refs/remotes/two/tags/end | wc -l` -eq 6 &&
|
|
test `git rev-list refs/remotes/two/branches/v1/start | wc -l` -eq 3 &&
|
|
test `git rev-parse refs/remotes/two/branches/v1/start~2` = \
|
|
`git rev-parse refs/remotes/two/trunk` &&
|
|
test `git rev-parse refs/remotes/two/tags/end~3` = \
|
|
`git rev-parse refs/remotes/two/branches/v1/start` &&
|
|
git log --pretty=oneline refs/remotes/two/tags/end | \
|
|
sed -e "s/^.\{41\}//" > output.two &&
|
|
test_cmp expect.two output.two
|
|
'
|
|
cat > expect.four <<EOF
|
|
adios
|
|
adding more
|
|
Changed 2 in v2/start
|
|
Another versioned branch
|
|
initial
|
|
EOF
|
|
|
|
test_expect_success 'test another branch' '
|
|
(
|
|
cd tmp &&
|
|
mkdir branches/v2 &&
|
|
svn add branches/v2 &&
|
|
svn cp trunk branches/v2/start &&
|
|
svn commit -m "Another versioned branch" &&
|
|
svn up &&
|
|
echo "hello" >> branches/v2/start/src/b/readme &&
|
|
poke branches/v2/start/src/b/readme &&
|
|
echo "howdy" >> branches/v2/start/src/a/readme &&
|
|
poke branches/v2/start/src/a/readme &&
|
|
svn commit -m "Changed 2 in v2/start" &&
|
|
svn up &&
|
|
svn cp branches/v2/start tags/next &&
|
|
echo "bye" >> tags/next/src/b/readme &&
|
|
poke tags/next/src/b/readme &&
|
|
echo "aye" >> tags/next/src/a/readme &&
|
|
poke tags/next/src/a/readme &&
|
|
svn commit -m "adding more" &&
|
|
echo "byebye" >> tags/next/src/b/readme &&
|
|
poke tags/next/src/b/readme &&
|
|
svn commit -m "adios"
|
|
) &&
|
|
git config --add svn-remote.four.url "$svnrepo" &&
|
|
git config --add svn-remote.four.fetch trunk:refs/remotes/four/trunk &&
|
|
git config --add svn-remote.four.branches \
|
|
"branches/*/*:refs/remotes/four/branches/*/*" &&
|
|
git config --add svn-remote.four.tags \
|
|
"tags/*:refs/remotes/four/tags/*" &&
|
|
git svn fetch four &&
|
|
test `git rev-list refs/remotes/four/tags/next | wc -l` -eq 5 &&
|
|
test `git rev-list refs/remotes/four/branches/v2/start | wc -l` -eq 3 &&
|
|
test `git rev-parse refs/remotes/four/branches/v2/start~2` = \
|
|
`git rev-parse refs/remotes/four/trunk` &&
|
|
test `git rev-parse refs/remotes/four/tags/next~2` = \
|
|
`git rev-parse refs/remotes/four/branches/v2/start` &&
|
|
git log --pretty=oneline refs/remotes/four/tags/next | \
|
|
sed -e "s/^.\{41\}//" > output.four &&
|
|
test_cmp expect.four output.four
|
|
'
|
|
|
|
echo "Only one set of wildcard directories" \
|
|
"(e.g. '*' or '*/*/*') is supported: 'branches/*/t/*'" > expect.three
|
|
echo "" >> expect.three
|
|
|
|
test_expect_success 'test disallow multiple globs' '
|
|
git config --add svn-remote.three.url "$svnrepo" &&
|
|
git config --add svn-remote.three.fetch \
|
|
trunk:refs/remotes/three/trunk &&
|
|
git config --add svn-remote.three.branches \
|
|
"branches/*/t/*:refs/remotes/three/branches/*/*" &&
|
|
git config --add svn-remote.three.tags \
|
|
"tags/*:refs/remotes/three/tags/*" &&
|
|
(
|
|
cd tmp &&
|
|
echo "try try" >> tags/end/src/b/readme &&
|
|
poke tags/end/src/b/readme &&
|
|
svn commit -m "try to try"
|
|
) &&
|
|
test_must_fail git svn fetch three 2> stderr.three &&
|
|
test_cmp expect.three stderr.three
|
|
'
|
|
|
|
test_done
|