]>
Commit | Line | Data |
---|---|---|
60d02ccc EW |
1 | . ./test-lib.sh |
2 | ||
3 | if test -n "$NO_SVN_TESTS" | |
36f5b1f0 | 4 | then |
60d02ccc EW |
5 | test_expect_success 'skipping git-svn tests, NO_SVN_TESTS defined' : |
6 | test_done | |
7 | exit | |
36f5b1f0 EW |
8 | fi |
9 | ||
b9c85187 EW |
10 | GIT_DIR=$PWD/.git |
11 | GIT_SVN_DIR=$GIT_DIR/svn/git-svn | |
12 | SVN_TREE=$GIT_SVN_DIR/svn-tree | |
13 | ||
36f5b1f0 | 14 | svn >/dev/null 2>&1 |
4b832e81 | 15 | if test $? -ne 1 |
36f5b1f0 | 16 | then |
60d02ccc | 17 | test_expect_success 'skipping git-svn tests, svn not found' : |
36f5b1f0 EW |
18 | test_done |
19 | exit | |
20 | fi | |
21 | ||
22 | svnrepo=$PWD/svnrepo | |
23 | ||
c6d499a8 EW |
24 | perl -w -e " |
25 | use SVN::Core; | |
26 | use SVN::Repos; | |
27 | \$SVN::Core::VERSION gt '1.1.0' or exit(42); | |
e66191f4 | 28 | system(qw/svnadmin create --fs-type fsfs/, '$svnrepo') == 0 or exit(41); |
38434f2e | 29 | " >&3 2>&4 |
c6d499a8 EW |
30 | x=$? |
31 | if test $x -ne 0 | |
dc62e25c | 32 | then |
c6d499a8 EW |
33 | if test $x -eq 42; then |
34 | err='Perl SVN libraries must be >= 1.1.0' | |
e66191f4 EW |
35 | elif test $x -eq 41; then |
36 | err='svnadmin failed to create fsfs repository' | |
c6d499a8 EW |
37 | else |
38 | err='Perl SVN libraries not found or unusable, skipping test' | |
39 | fi | |
40 | test_expect_success "$err" : | |
41 | test_done | |
42 | exit | |
dc62e25c EW |
43 | fi |
44 | ||
2edb9c5c | 45 | rawsvnrepo="$svnrepo" |
e1516119 | 46 | svnrepo="file://$svnrepo" |
36f5b1f0 | 47 | |
7b3fab87 | 48 | poke() { |
56cf9806 | 49 | test-chmtime +1 "$1" |
7b3fab87 | 50 | } |
29633bb9 EW |
51 | |
52 | SVN_HTTPD_MODULE_PATH=${SVN_HTTPD_MODULE_PATH-'/usr/lib/apache2/modules'} | |
53 | SVN_HTTPD_PATH=${SVN_HTTPD_PATH-'/usr/sbin/apache2'} | |
54 | ||
55 | start_httpd () { | |
56 | if test -z "$SVN_HTTPD_PORT" | |
57 | then | |
58 | echo >&2 'SVN_HTTPD_PORT is not defined!' | |
59 | return | |
60 | fi | |
61 | ||
62 | mkdir "$GIT_DIR"/logs | |
63 | ||
64 | cat > "$GIT_DIR/httpd.conf" <<EOF | |
65 | ServerName "git-svn test" | |
66 | ServerRoot "$GIT_DIR" | |
67 | DocumentRoot "$GIT_DIR" | |
68 | PidFile "$GIT_DIR/httpd.pid" | |
69 | Listen 127.0.0.1:$SVN_HTTPD_PORT | |
70 | LoadModule dav_module $SVN_HTTPD_MODULE_PATH/mod_dav.so | |
71 | LoadModule dav_svn_module $SVN_HTTPD_MODULE_PATH/mod_dav_svn.so | |
72 | <Location /svn> | |
73 | DAV svn | |
74 | SVNPath $rawsvnrepo | |
75 | </Location> | |
76 | EOF | |
77 | "$SVN_HTTPD_PATH" -f "$GIT_DIR"/httpd.conf -k start | |
78 | svnrepo=http://127.0.0.1:$SVN_HTTPD_PORT/svn | |
79 | } | |
80 | ||
81 | stop_httpd () { | |
82 | test -z "$SVN_HTTPD_PORT" && return | |
83 | "$SVN_HTTPD_PATH" -f "$GIT_DIR"/httpd.conf -k stop | |
84 | } | |
060610c5 EW |
85 | |
86 | convert_to_rev_db () { | |
87 | perl -w -- - "$@" <<\EOF | |
88 | use strict; | |
89 | @ARGV == 2 or die "Usage: convert_to_rev_db <input> <output>"; | |
90 | open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]"; | |
91 | open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]"; | |
92 | my $size = (stat($rd))[7]; | |
93 | ($size % 24) == 0 or die "Inconsistent size: $size"; | |
94 | while (sysread($rd, my $buf, 24) == 24) { | |
95 | my ($r, $c) = unpack('NH40', $buf); | |
96 | my $offset = $r * 41; | |
97 | seek $wr, 0, 2 or die $!; | |
98 | my $pos = tell $wr; | |
99 | if ($pos < $offset) { | |
100 | for (1 .. (($offset - $pos) / 41)) { | |
101 | print $wr (('0' x 40),"\n") or die $!; | |
102 | } | |
103 | } | |
104 | seek $wr, $offset, 0 or die $!; | |
105 | print $wr $c,"\n" or die $!; | |
106 | } | |
107 | close $wr or die $!; | |
108 | close $rd or die $!; | |
109 | EOF | |
110 | } |