Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 1 | . ./test-lib.sh |
| 2 | |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 3 | if test -n "$NO_SVN_TESTS" |
| 4 | then |
Ævar Arnfjörð Bjarmason | fadb515 | 2010-06-24 17:44:48 +0000 | [diff] [blame] | 5 | skip_all='skipping git svn tests, NO_SVN_TESTS defined' |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 6 | test_done |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 7 | fi |
Jeff King | 1b19ccd | 2009-04-03 15:33:59 -0400 | [diff] [blame] | 8 | if ! test_have_prereq PERL; then |
Ævar Arnfjörð Bjarmason | fadb515 | 2010-06-24 17:44:48 +0000 | [diff] [blame] | 9 | skip_all='skipping git svn tests, perl not available' |
Jeff King | 1b19ccd | 2009-04-03 15:33:59 -0400 | [diff] [blame] | 10 | test_done |
| 11 | fi |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 12 | |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 13 | GIT_DIR=$PWD/.git |
Adam Brewster | 6f5748e | 2009-08-11 23:14:27 -0400 | [diff] [blame] | 14 | GIT_SVN_DIR=$GIT_DIR/svn/refs/remotes/git-svn |
Eric Wong | a5e0ced | 2006-06-12 15:23:48 -0700 | [diff] [blame] | 15 | SVN_TREE=$GIT_SVN_DIR/svn-tree |
SZEDER Gábor | fa84058 | 2019-01-05 02:08:58 +0100 | [diff] [blame] | 16 | test_set_port SVNSERVE_PORT |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 17 | |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 18 | svn >/dev/null 2>&1 |
Junio C Hamano | 4b832e8 | 2006-07-07 03:17:16 -0700 | [diff] [blame] | 19 | if test $? -ne 1 |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 20 | then |
Todd Zullinger | 7810977 | 2017-12-01 10:56:52 -0500 | [diff] [blame] | 21 | skip_all='skipping git svn tests, svn not found' |
| 22 | test_done |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 23 | fi |
| 24 | |
| 25 | svnrepo=$PWD/svnrepo |
Bryan Donlan | cdf3ec0 | 2008-05-04 01:37:57 -0400 | [diff] [blame] | 26 | export svnrepo |
Eygene Ryabinkin | da083d6 | 2009-05-08 12:06:16 +0400 | [diff] [blame] | 27 | svnconf=$PWD/svnconf |
| 28 | export svnconf |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 29 | |
Jeff King | 94221d2 | 2013-10-28 21:23:03 -0400 | [diff] [blame] | 30 | perl -w -e " |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 31 | use SVN::Core; |
| 32 | use SVN::Repos; |
| 33 | \$SVN::Core::VERSION gt '1.1.0' or exit(42); |
Bryan Donlan | cdf3ec0 | 2008-05-04 01:37:57 -0400 | [diff] [blame] | 34 | system(qw/svnadmin create --fs-type fsfs/, \$ENV{svnrepo}) == 0 or exit(41); |
Shawn O. Pearce | 38434f2 | 2007-01-14 03:22:47 -0500 | [diff] [blame] | 35 | " >&3 2>&4 |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 36 | x=$? |
| 37 | if test $x -ne 0 |
Eric Wong | dc62e25 | 2006-06-28 03:07:14 -0700 | [diff] [blame] | 38 | then |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 39 | if test $x -eq 42; then |
Ævar Arnfjörð Bjarmason | e8344e8 | 2010-07-08 01:16:06 +0000 | [diff] [blame] | 40 | skip_all='Perl SVN libraries must be >= 1.1.0' |
Eric Wong | e66191f | 2007-01-13 02:47:53 -0800 | [diff] [blame] | 41 | elif test $x -eq 41; then |
Ævar Arnfjörð Bjarmason | e8344e8 | 2010-07-08 01:16:06 +0000 | [diff] [blame] | 42 | skip_all='svnadmin failed to create fsfs repository' |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 43 | else |
Ævar Arnfjörð Bjarmason | e8344e8 | 2010-07-08 01:16:06 +0000 | [diff] [blame] | 44 | skip_all='Perl SVN libraries not found or unusable' |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 45 | fi |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 46 | test_done |
Eric Wong | dc62e25 | 2006-06-28 03:07:14 -0700 | [diff] [blame] | 47 | fi |
| 48 | |
sam@vilain.net | 2edb9c5 | 2006-12-05 16:17:38 +1100 | [diff] [blame] | 49 | rawsvnrepo="$svnrepo" |
Eric Wong | e151611 | 2006-11-27 21:46:50 -0800 | [diff] [blame] | 50 | svnrepo="file://$svnrepo" |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 51 | |
Michael Spang | 7b3fab8 | 2007-02-12 19:33:37 -0500 | [diff] [blame] | 52 | poke() { |
Nguyễn Thái Ngọc Duy | 0e49649 | 2018-03-24 08:44:31 +0100 | [diff] [blame] | 53 | test-tool chmtime +1 "$1" |
Michael Spang | 7b3fab8 | 2007-02-12 19:33:37 -0500 | [diff] [blame] | 54 | } |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 55 | |
Eygene Ryabinkin | da083d6 | 2009-05-08 12:06:16 +0400 | [diff] [blame] | 56 | # We need this, because we should pass empty configuration directory to |
| 57 | # the 'svn commit' to avoid automated property changes and other stuff |
| 58 | # that could be set from user's configuration files in ~/.subversion. |
| 59 | svn_cmd () { |
| 60 | [ -d "$svnconf" ] || mkdir "$svnconf" |
| 61 | orig_svncmd="$1"; shift |
| 62 | if [ -z "$orig_svncmd" ]; then |
| 63 | svn |
| 64 | return |
| 65 | fi |
| 66 | svn "$orig_svncmd" --config-dir "$svnconf" "$@" |
| 67 | } |
| 68 | |
Eric Wong | a8a5d25 | 2016-07-23 04:26:08 +0000 | [diff] [blame] | 69 | maybe_start_httpd () { |
| 70 | loc=${1-svn} |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 71 | |
Eric Wong | a8a5d25 | 2016-07-23 04:26:08 +0000 | [diff] [blame] | 72 | test_tristate GIT_SVN_TEST_HTTPD |
| 73 | case $GIT_SVN_TEST_HTTPD in |
| 74 | true) |
| 75 | . "$TEST_DIRECTORY"/lib-httpd.sh |
| 76 | LIB_HTTPD_SVN="$loc" |
| 77 | start_httpd |
| 78 | ;; |
Eric Wong | a8a5d25 | 2016-07-23 04:26:08 +0000 | [diff] [blame] | 79 | esac |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 80 | } |
Eric Wong | 060610c | 2007-12-08 23:27:41 -0800 | [diff] [blame] | 81 | |
| 82 | convert_to_rev_db () { |
Jeff King | 94221d2 | 2013-10-28 21:23:03 -0400 | [diff] [blame] | 83 | perl -w -- - "$@" <<\EOF |
Eric Wong | 060610c | 2007-12-08 23:27:41 -0800 | [diff] [blame] | 84 | use strict; |
David Aguilar | b978403 | 2013-02-24 14:48:39 -0800 | [diff] [blame] | 85 | @ARGV == 2 or die "usage: convert_to_rev_db <input> <output>"; |
Eric Wong | 060610c | 2007-12-08 23:27:41 -0800 | [diff] [blame] | 86 | open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]"; |
| 87 | open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]"; |
| 88 | my $size = (stat($rd))[7]; |
| 89 | ($size % 24) == 0 or die "Inconsistent size: $size"; |
| 90 | while (sysread($rd, my $buf, 24) == 24) { |
| 91 | my ($r, $c) = unpack('NH40', $buf); |
| 92 | my $offset = $r * 41; |
| 93 | seek $wr, 0, 2 or die $!; |
| 94 | my $pos = tell $wr; |
| 95 | if ($pos < $offset) { |
| 96 | for (1 .. (($offset - $pos) / 41)) { |
| 97 | print $wr (('0' x 40),"\n") or die $!; |
| 98 | } |
| 99 | } |
| 100 | seek $wr, $offset, 0 or die $!; |
| 101 | print $wr $c,"\n" or die $!; |
| 102 | } |
| 103 | close $wr or die $!; |
| 104 | close $rd or die $!; |
| 105 | EOF |
| 106 | } |
Alec Berryman | dd9da51 | 2008-09-14 17:14:15 -0400 | [diff] [blame] | 107 | |
| 108 | require_svnserve () { |
Todd Zullinger | bf9d7df | 2017-12-01 10:56:53 -0500 | [diff] [blame] | 109 | test_tristate GIT_TEST_SVNSERVE |
| 110 | if ! test "$GIT_TEST_SVNSERVE" = true |
Todd Zullinger | 7810977 | 2017-12-01 10:56:52 -0500 | [diff] [blame] | 111 | then |
Todd Zullinger | bf9d7df | 2017-12-01 10:56:53 -0500 | [diff] [blame] | 112 | skip_all='skipping svnserve test. (set $GIT_TEST_SVNSERVE to enable)' |
Todd Zullinger | 7810977 | 2017-12-01 10:56:52 -0500 | [diff] [blame] | 113 | test_done |
| 114 | fi |
Alec Berryman | dd9da51 | 2008-09-14 17:14:15 -0400 | [diff] [blame] | 115 | } |
| 116 | |
| 117 | start_svnserve () { |
Todd Zullinger | 7810977 | 2017-12-01 10:56:52 -0500 | [diff] [blame] | 118 | svnserve --listen-port $SVNSERVE_PORT \ |
| 119 | --root "$rawsvnrepo" \ |
| 120 | --listen-once \ |
| 121 | --listen-host 127.0.0.1 & |
Alec Berryman | dd9da51 | 2008-09-14 17:14:15 -0400 | [diff] [blame] | 122 | } |
| 123 | |
Eric Wong | 3df0d26 | 2016-02-22 02:17:51 +0000 | [diff] [blame] | 124 | prepare_a_utf8_locale () { |
| 125 | a_utf8_locale=$(locale -a | sed -n '/\.[uU][tT][fF]-*8$/{ |
| 126 | p |
| 127 | q |
| 128 | }') |
| 129 | if test -n "$a_utf8_locale" |
| 130 | then |
| 131 | test_set_prereq UTF8 |
| 132 | else |
| 133 | say "# UTF-8 locale not available, some tests are skipped" |
| 134 | fi |
| 135 | } |