Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 1 | . ./test-lib.sh |
| 2 | |
Nanako Shiraishi | 16805d3 | 2008-09-08 19:02:05 +0900 | [diff] [blame] | 3 | remotes_git_svn=remotes/git""-svn |
| 4 | git_svn_id=git""-svn-id |
| 5 | |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 6 | if test -n "$NO_SVN_TESTS" |
| 7 | then |
Johannes Sixt | fae74a0 | 2009-03-01 19:52:51 +0100 | [diff] [blame] | 8 | say 'skipping git svn tests, NO_SVN_TESTS defined' |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 9 | test_done |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 10 | fi |
Jeff King | 1b19ccd | 2009-04-03 15:33:59 -0400 | [diff] [blame] | 11 | if ! test_have_prereq PERL; then |
| 12 | say 'skipping git svn tests, perl not available' |
| 13 | test_done |
| 14 | fi |
Eric Wong | 60d02cc | 2006-07-06 00:14:16 -0700 | [diff] [blame] | 15 | |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 16 | GIT_DIR=$PWD/.git |
Eric Wong | 883d0a7 | 2006-05-24 01:22:07 -0700 | [diff] [blame] | 17 | GIT_SVN_DIR=$GIT_DIR/svn/git-svn |
Eric Wong | a5e0ced | 2006-06-12 15:23:48 -0700 | [diff] [blame] | 18 | SVN_TREE=$GIT_SVN_DIR/svn-tree |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 19 | |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 20 | svn >/dev/null 2>&1 |
Junio C Hamano | 4b832e8 | 2006-07-07 03:17:16 -0700 | [diff] [blame] | 21 | if test $? -ne 1 |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 22 | then |
Johannes Sixt | fae74a0 | 2009-03-01 19:52:51 +0100 | [diff] [blame] | 23 | say 'skipping git svn tests, svn not found' |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 24 | test_done |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 25 | fi |
| 26 | |
| 27 | svnrepo=$PWD/svnrepo |
Bryan Donlan | cdf3ec0 | 2008-05-04 01:37:57 -0400 | [diff] [blame] | 28 | export svnrepo |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 29 | |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 30 | perl -w -e " |
| 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 |
| 40 | err='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 |
| 42 | err='svnadmin failed to create fsfs repository' |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 43 | else |
| 44 | err='Perl SVN libraries not found or unusable, skipping test' |
| 45 | fi |
Johannes Sixt | fae74a0 | 2009-03-01 19:52:51 +0100 | [diff] [blame] | 46 | say "$err" |
Eric Wong | c6d499a | 2006-12-31 21:49:45 -0800 | [diff] [blame] | 47 | test_done |
Eric Wong | dc62e25 | 2006-06-28 03:07:14 -0700 | [diff] [blame] | 48 | fi |
| 49 | |
sam@vilain.net | 2edb9c5 | 2006-12-05 16:17:38 +1100 | [diff] [blame] | 50 | rawsvnrepo="$svnrepo" |
Eric Wong | e151611 | 2006-11-27 21:46:50 -0800 | [diff] [blame] | 51 | svnrepo="file://$svnrepo" |
Eric Wong | 36f5b1f | 2006-05-23 19:23:41 -0700 | [diff] [blame] | 52 | |
Michael Spang | 7b3fab8 | 2007-02-12 19:33:37 -0500 | [diff] [blame] | 53 | poke() { |
Eric Wong | 56cf980 | 2007-02-24 16:59:52 -0800 | [diff] [blame] | 54 | test-chmtime +1 "$1" |
Michael Spang | 7b3fab8 | 2007-02-12 19:33:37 -0500 | [diff] [blame] | 55 | } |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 56 | |
Kevin Ballard | 3644da7 | 2008-03-21 03:27:35 -0400 | [diff] [blame] | 57 | for d in \ |
| 58 | "$SVN_HTTPD_PATH" \ |
| 59 | /usr/sbin/apache2 \ |
| 60 | /usr/sbin/httpd \ |
| 61 | ; do |
| 62 | if test -f "$d" |
| 63 | then |
| 64 | SVN_HTTPD_PATH="$d" |
| 65 | break |
| 66 | fi |
| 67 | done |
| 68 | for d in \ |
| 69 | "$SVN_HTTPD_MODULE_PATH" \ |
| 70 | /usr/lib/apache2/modules \ |
| 71 | /usr/libexec/apache2 \ |
| 72 | ; do |
| 73 | if test -d "$d" |
| 74 | then |
| 75 | SVN_HTTPD_MODULE_PATH="$d" |
| 76 | break |
| 77 | fi |
| 78 | done |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 79 | |
| 80 | start_httpd () { |
Eric Wong | d1a8d0e | 2008-05-10 17:14:49 -0700 | [diff] [blame] | 81 | repo_base_path="$1" |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 82 | if test -z "$SVN_HTTPD_PORT" |
| 83 | then |
| 84 | echo >&2 'SVN_HTTPD_PORT is not defined!' |
| 85 | return |
| 86 | fi |
Eric Wong | d1a8d0e | 2008-05-10 17:14:49 -0700 | [diff] [blame] | 87 | if test -z "$repo_base_path" |
| 88 | then |
| 89 | repo_base_path=svn |
| 90 | fi |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 91 | |
| 92 | mkdir "$GIT_DIR"/logs |
| 93 | |
| 94 | cat > "$GIT_DIR/httpd.conf" <<EOF |
Nanako Shiraishi | 1364ff2 | 2008-09-08 19:02:08 +0900 | [diff] [blame] | 95 | ServerName "git svn test" |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 96 | ServerRoot "$GIT_DIR" |
| 97 | DocumentRoot "$GIT_DIR" |
| 98 | PidFile "$GIT_DIR/httpd.pid" |
Kevin Ballard | 3644da7 | 2008-03-21 03:27:35 -0400 | [diff] [blame] | 99 | LockFile logs/accept.lock |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 100 | Listen 127.0.0.1:$SVN_HTTPD_PORT |
| 101 | LoadModule dav_module $SVN_HTTPD_MODULE_PATH/mod_dav.so |
| 102 | LoadModule dav_svn_module $SVN_HTTPD_MODULE_PATH/mod_dav_svn.so |
Eric Wong | d1a8d0e | 2008-05-10 17:14:49 -0700 | [diff] [blame] | 103 | <Location /$repo_base_path> |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 104 | DAV svn |
Eric Wong | 3901a8c | 2008-07-14 02:13:56 -0700 | [diff] [blame] | 105 | SVNPath "$rawsvnrepo" |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 106 | </Location> |
| 107 | EOF |
| 108 | "$SVN_HTTPD_PATH" -f "$GIT_DIR"/httpd.conf -k start |
Eric Wong | d1a8d0e | 2008-05-10 17:14:49 -0700 | [diff] [blame] | 109 | svnrepo="http://127.0.0.1:$SVN_HTTPD_PORT/$repo_base_path" |
Eric Wong | 29633bb | 2007-07-15 21:53:50 -0700 | [diff] [blame] | 110 | } |
| 111 | |
| 112 | stop_httpd () { |
| 113 | test -z "$SVN_HTTPD_PORT" && return |
| 114 | "$SVN_HTTPD_PATH" -f "$GIT_DIR"/httpd.conf -k stop |
| 115 | } |
Eric Wong | 060610c | 2007-12-08 23:27:41 -0800 | [diff] [blame] | 116 | |
| 117 | convert_to_rev_db () { |
| 118 | perl -w -- - "$@" <<\EOF |
| 119 | use strict; |
| 120 | @ARGV == 2 or die "Usage: convert_to_rev_db <input> <output>"; |
| 121 | open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]"; |
| 122 | open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]"; |
| 123 | my $size = (stat($rd))[7]; |
| 124 | ($size % 24) == 0 or die "Inconsistent size: $size"; |
| 125 | while (sysread($rd, my $buf, 24) == 24) { |
| 126 | my ($r, $c) = unpack('NH40', $buf); |
| 127 | my $offset = $r * 41; |
| 128 | seek $wr, 0, 2 or die $!; |
| 129 | my $pos = tell $wr; |
| 130 | if ($pos < $offset) { |
| 131 | for (1 .. (($offset - $pos) / 41)) { |
| 132 | print $wr (('0' x 40),"\n") or die $!; |
| 133 | } |
| 134 | } |
| 135 | seek $wr, $offset, 0 or die $!; |
| 136 | print $wr $c,"\n" or die $!; |
| 137 | } |
| 138 | close $wr or die $!; |
| 139 | close $rd or die $!; |
| 140 | EOF |
| 141 | } |
Alec Berryman | dd9da51 | 2008-09-14 17:14:15 -0400 | [diff] [blame] | 142 | |
| 143 | require_svnserve () { |
| 144 | if test -z "$SVNSERVE_PORT" |
| 145 | then |
| 146 | say 'skipping svnserve test. (set $SVNSERVE_PORT to enable)' |
| 147 | test_done |
Alec Berryman | dd9da51 | 2008-09-14 17:14:15 -0400 | [diff] [blame] | 148 | fi |
| 149 | } |
| 150 | |
| 151 | start_svnserve () { |
| 152 | svnserve --listen-port $SVNSERVE_PORT \ |
| 153 | --root "$rawsvnrepo" \ |
| 154 | --listen-once \ |
| 155 | --listen-host 127.0.0.1 & |
| 156 | } |
| 157 | |