2006-07-06 09:14:16 +02:00
|
|
|
. ./test-lib.sh
|
|
|
|
|
|
|
|
if test -n "$NO_SVN_TESTS"
|
2006-05-24 04:23:41 +02:00
|
|
|
then
|
2010-06-24 19:44:48 +02:00
|
|
|
skip_all='skipping git svn tests, NO_SVN_TESTS defined'
|
2006-07-06 09:14:16 +02:00
|
|
|
test_done
|
2006-05-24 04:23:41 +02:00
|
|
|
fi
|
2009-04-03 21:33:59 +02:00
|
|
|
if ! test_have_prereq PERL; then
|
2010-06-24 19:44:48 +02:00
|
|
|
skip_all='skipping git svn tests, perl not available'
|
2009-04-03 21:33:59 +02:00
|
|
|
test_done
|
|
|
|
fi
|
2006-05-24 04:23:41 +02:00
|
|
|
|
2006-12-16 08:58:07 +01:00
|
|
|
GIT_DIR=$PWD/.git
|
2009-08-12 05:14:27 +02:00
|
|
|
GIT_SVN_DIR=$GIT_DIR/svn/refs/remotes/git-svn
|
2006-12-16 08:58:07 +01:00
|
|
|
SVN_TREE=$GIT_SVN_DIR/svn-tree
|
test-lib-functions: introduce the 'test_set_port' helper function
Several test scripts run daemons like 'git-daemon' or Apache, and
communicate with them through TCP sockets. To have unique ports where
these daemons are accessible, the ports are usually the number of the
corresponding test scripts, unless the user overrides them via
environment variables, and thus all those tests and test libs contain
more or less the same bit of one-liner boilerplate code to find out
the port. The last patch in this series will make this a bit more
complicated.
Factor out finding the port for a daemon into the common helper
function 'test_set_port' to avoid repeating ourselves.
Take special care of test scripts with "low" numbers:
- Test numbers below 1024 would result in a port that's only usable
as root, so set their port to '10000 + test-nr' to make sure it
doesn't interfere with other tests in the test suite. This makes
the hardcoded port number in 't0410-partial-clone.sh' unnecessary,
remove it.
- The shell's arithmetic evaluation interprets numbers with leading
zeros as octal values, which means that test number below 1000 and
containing the digits 8 or 9 will trigger an error. Remove all
leading zeros from the test numbers to prevent this.
Note that the 'git p4' tests are unlike the other tests involving
daemons in that:
- 'lib-git-p4.sh' doesn't use the test's number for unique port as
is, but does a bit of additional arithmetic on top [1].
- The port is not overridable via an environment variable.
With this patch even 'git p4' tests will use the test's number as
default port, and it will be overridable via the P4DPORT environment
variable.
[1] Commit fc00233071 (git-p4 tests: refactor and cleanup, 2011-08-22)
introduced that "unusual" unique port computation without
explaining why it was necessary (as opposed to simply using the
test number as is). It seems to be just unnecessary complication,
and in any case that commit came way before the "test nr as unique
port" got "standardized" for other daemons in commits c44132fcf3
(tests: auto-set git-daemon port, 2014-02-10), 3bb486e439 (tests:
auto-set LIB_HTTPD_PORT from test name, 2014-02-10), and
bf9d7df950 (t/lib-git-svn.sh: improve svnserve tests with parallel
make test, 2017-12-01).
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-01-05 02:08:58 +01:00
|
|
|
test_set_port SVNSERVE_PORT
|
2006-12-16 08:58:07 +01:00
|
|
|
|
2006-05-24 04:23:41 +02:00
|
|
|
svn >/dev/null 2>&1
|
2006-07-07 12:17:16 +02:00
|
|
|
if test $? -ne 1
|
2006-05-24 04:23:41 +02:00
|
|
|
then
|
2017-12-01 16:56:52 +01:00
|
|
|
skip_all='skipping git svn tests, svn not found'
|
|
|
|
test_done
|
2006-05-24 04:23:41 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
svnrepo=$PWD/svnrepo
|
2008-05-04 07:37:57 +02:00
|
|
|
export svnrepo
|
2009-05-08 10:06:16 +02:00
|
|
|
svnconf=$PWD/svnconf
|
|
|
|
export svnconf
|
2006-05-24 04:23:41 +02:00
|
|
|
|
2013-10-29 02:23:03 +01:00
|
|
|
perl -w -e "
|
2007-01-01 06:49:45 +01:00
|
|
|
use SVN::Core;
|
|
|
|
use SVN::Repos;
|
|
|
|
\$SVN::Core::VERSION gt '1.1.0' or exit(42);
|
2008-05-04 07:37:57 +02:00
|
|
|
system(qw/svnadmin create --fs-type fsfs/, \$ENV{svnrepo}) == 0 or exit(41);
|
2007-01-14 09:22:47 +01:00
|
|
|
" >&3 2>&4
|
2007-01-01 06:49:45 +01:00
|
|
|
x=$?
|
|
|
|
if test $x -ne 0
|
git-svn: SVN 1.1.x library compatibility
Tested on a plain Ubuntu Hoary installation
using subversion 1.1.1-2ubuntu3
1.1.x issues I had to deal with:
* Avoid the noisy command-line client compatibility check if we
use the libraries.
* get_log() arguments differ (now using a nice wrapper from
Junio's suggestion)
* get_file() is picky about what kind of file handles it gets,
so I ended up redirecting STDOUT. I'm probably overflushing
my file handles, but that's the safest thing to do...
* BDB kept segfaulting on me during tests, so svnadmin will use FSFS
whenever we can.
* If somebody used an expanded CVS $Id$ line inside a file, then
propsetting it to use svn:keywords will cause the original CVS
$Id$ to be retained when asked for the original file. As far as
I can see, this is a server-side issue. We won't care in the
test anymore, as long as it's not expanded by SVN, a static
CVS $Id$ line is fine.
While we're at making ourselves more compatible, avoid grep
along with the -q flag, which is GNU-specific. (grep avoidance
tip from Junio, too)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-06-28 12:07:14 +02:00
|
|
|
then
|
2007-01-01 06:49:45 +01:00
|
|
|
if test $x -eq 42; then
|
2010-07-08 03:16:06 +02:00
|
|
|
skip_all='Perl SVN libraries must be >= 1.1.0'
|
2007-01-13 11:47:53 +01:00
|
|
|
elif test $x -eq 41; then
|
2010-07-08 03:16:06 +02:00
|
|
|
skip_all='svnadmin failed to create fsfs repository'
|
2007-01-01 06:49:45 +01:00
|
|
|
else
|
2010-07-08 03:16:06 +02:00
|
|
|
skip_all='Perl SVN libraries not found or unusable'
|
2007-01-01 06:49:45 +01:00
|
|
|
fi
|
|
|
|
test_done
|
git-svn: SVN 1.1.x library compatibility
Tested on a plain Ubuntu Hoary installation
using subversion 1.1.1-2ubuntu3
1.1.x issues I had to deal with:
* Avoid the noisy command-line client compatibility check if we
use the libraries.
* get_log() arguments differ (now using a nice wrapper from
Junio's suggestion)
* get_file() is picky about what kind of file handles it gets,
so I ended up redirecting STDOUT. I'm probably overflushing
my file handles, but that's the safest thing to do...
* BDB kept segfaulting on me during tests, so svnadmin will use FSFS
whenever we can.
* If somebody used an expanded CVS $Id$ line inside a file, then
propsetting it to use svn:keywords will cause the original CVS
$Id$ to be retained when asked for the original file. As far as
I can see, this is a server-side issue. We won't care in the
test anymore, as long as it's not expanded by SVN, a static
CVS $Id$ line is fine.
While we're at making ourselves more compatible, avoid grep
along with the -q flag, which is GNU-specific. (grep avoidance
tip from Junio, too)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-06-28 12:07:14 +02:00
|
|
|
fi
|
|
|
|
|
2006-12-05 06:17:38 +01:00
|
|
|
rawsvnrepo="$svnrepo"
|
2006-11-28 06:46:50 +01:00
|
|
|
svnrepo="file://$svnrepo"
|
2006-05-24 04:23:41 +02:00
|
|
|
|
2007-02-13 01:33:37 +01:00
|
|
|
poke() {
|
2018-03-24 08:44:31 +01:00
|
|
|
test-tool chmtime +1 "$1"
|
2007-02-13 01:33:37 +01:00
|
|
|
}
|
2007-07-16 06:53:50 +02:00
|
|
|
|
2009-05-08 10:06:16 +02:00
|
|
|
# We need this, because we should pass empty configuration directory to
|
|
|
|
# the 'svn commit' to avoid automated property changes and other stuff
|
|
|
|
# that could be set from user's configuration files in ~/.subversion.
|
|
|
|
svn_cmd () {
|
|
|
|
[ -d "$svnconf" ] || mkdir "$svnconf"
|
|
|
|
orig_svncmd="$1"; shift
|
|
|
|
if [ -z "$orig_svncmd" ]; then
|
|
|
|
svn
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
svn "$orig_svncmd" --config-dir "$svnconf" "$@"
|
|
|
|
}
|
|
|
|
|
2016-07-23 06:26:08 +02:00
|
|
|
maybe_start_httpd () {
|
|
|
|
loc=${1-svn}
|
|
|
|
|
|
|
|
test_tristate GIT_SVN_TEST_HTTPD
|
|
|
|
case $GIT_SVN_TEST_HTTPD in
|
|
|
|
true)
|
|
|
|
. "$TEST_DIRECTORY"/lib-httpd.sh
|
|
|
|
LIB_HTTPD_SVN="$loc"
|
|
|
|
start_httpd
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
stop_httpd () {
|
|
|
|
: noop
|
|
|
|
}
|
|
|
|
;;
|
|
|
|
esac
|
2007-07-16 06:53:50 +02:00
|
|
|
}
|
2007-12-09 08:27:41 +01:00
|
|
|
|
|
|
|
convert_to_rev_db () {
|
2013-10-29 02:23:03 +01:00
|
|
|
perl -w -- - "$@" <<\EOF
|
2007-12-09 08:27:41 +01:00
|
|
|
use strict;
|
2013-02-24 23:48:39 +01:00
|
|
|
@ARGV == 2 or die "usage: convert_to_rev_db <input> <output>";
|
2007-12-09 08:27:41 +01:00
|
|
|
open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]";
|
|
|
|
open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]";
|
|
|
|
my $size = (stat($rd))[7];
|
|
|
|
($size % 24) == 0 or die "Inconsistent size: $size";
|
|
|
|
while (sysread($rd, my $buf, 24) == 24) {
|
|
|
|
my ($r, $c) = unpack('NH40', $buf);
|
|
|
|
my $offset = $r * 41;
|
|
|
|
seek $wr, 0, 2 or die $!;
|
|
|
|
my $pos = tell $wr;
|
|
|
|
if ($pos < $offset) {
|
|
|
|
for (1 .. (($offset - $pos) / 41)) {
|
|
|
|
print $wr (('0' x 40),"\n") or die $!;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
seek $wr, $offset, 0 or die $!;
|
|
|
|
print $wr $c,"\n" or die $!;
|
|
|
|
}
|
|
|
|
close $wr or die $!;
|
|
|
|
close $rd or die $!;
|
|
|
|
EOF
|
|
|
|
}
|
2008-09-14 23:14:15 +02:00
|
|
|
|
|
|
|
require_svnserve () {
|
2017-12-01 16:56:53 +01:00
|
|
|
test_tristate GIT_TEST_SVNSERVE
|
|
|
|
if ! test "$GIT_TEST_SVNSERVE" = true
|
2017-12-01 16:56:52 +01:00
|
|
|
then
|
2017-12-01 16:56:53 +01:00
|
|
|
skip_all='skipping svnserve test. (set $GIT_TEST_SVNSERVE to enable)'
|
2017-12-01 16:56:52 +01:00
|
|
|
test_done
|
|
|
|
fi
|
2008-09-14 23:14:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
start_svnserve () {
|
2017-12-01 16:56:52 +01:00
|
|
|
svnserve --listen-port $SVNSERVE_PORT \
|
|
|
|
--root "$rawsvnrepo" \
|
|
|
|
--listen-once \
|
|
|
|
--listen-host 127.0.0.1 &
|
2008-09-14 23:14:15 +02:00
|
|
|
}
|
|
|
|
|
2016-02-22 03:17:51 +01:00
|
|
|
prepare_a_utf8_locale () {
|
|
|
|
a_utf8_locale=$(locale -a | sed -n '/\.[uU][tT][fF]-*8$/{
|
|
|
|
p
|
|
|
|
q
|
|
|
|
}')
|
|
|
|
if test -n "$a_utf8_locale"
|
|
|
|
then
|
|
|
|
test_set_prereq UTF8
|
|
|
|
else
|
|
|
|
say "# UTF-8 locale not available, some tests are skipped"
|
|
|
|
fi
|
|
|
|
}
|