From: Ramkumar Ramachandra <artagnon@gmail.com>
To: Git List <git@vger.kernel.org>
Cc: Peter Baumann <waste.manager@gmx.de>,
Jonathan Nieder <jrnieder@gmail.com>,
David Barr <david.barr@cordelta.com>,
Sverre Rabbelier <srabbelier@gmail.com>,
Erik Faye-Lund <kusmabite@gmail.com>,
Junio C Hamano <gitster@pobox.com>
Subject: [PATCH 5/5] t9012-svn-fi: Add tests for svn-fi
Date: Tue, 29 Mar 2011 23:43:12 +0530 [thread overview]
Message-ID: <1301422392-21177-6-git-send-email-artagnon@gmail.com> (raw)
In-Reply-To: <1301422392-21177-1-git-send-email-artagnon@gmail.com>
Create a test-svn-fi in toplevel directory, add rules to build it, and
add some basic tests.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
Verifying svn:date is very non-trivial, because of timezone conversion
issues. I tried fuzzing those out and checking only year and month,
but a timezone shift can cause a change in both of them as
well. Example: 31 Dec 2011 11:45 PM in one timezone can very well be 1
Jan 2012 in another timezone.
More tests? Suggestions for reduced testcases of complex revision
history tasks? I'll probably import some tests from svnrdump in the
next iteration.
.gitignore | 1 +
Makefile | 3 +
t/t9012-svn-fi.sh | 705 +++++++++++++++++++++++++++++++++++++++++++++++++++++
test-svn-fi.c | 17 ++
4 files changed, 726 insertions(+), 0 deletions(-)
create mode 100755 t/t9012-svn-fi.sh
create mode 100644 test-svn-fi.c
diff --git a/.gitignore b/.gitignore
index c460c66..1cf145d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -181,6 +181,7 @@
/test-subprocess
/test-svn-fe
/test-treap
+/test-svn-fi
/common-cmds.h
*.tar.gz
*.dsc
diff --git a/Makefile b/Makefile
index 7206d35..7fc5a2c 100644
--- a/Makefile
+++ b/Makefile
@@ -435,6 +435,7 @@ TEST_PROGRAMS_NEED_X += test-string-pool
TEST_PROGRAMS_NEED_X += test-subprocess
TEST_PROGRAMS_NEED_X += test-svn-fe
TEST_PROGRAMS_NEED_X += test-treap
+TEST_PROGRAMS_NEED_X += test-svn-fi
TEST_PROGRAMS_NEED_X += test-index-version
TEST_PROGRAMS_NEED_X += test-mktemp
@@ -2152,6 +2153,8 @@ test-string-pool$X: vcs-svn/lib.a
test-svn-fe$X: vcs-svn/lib.a
+test-svn-fi$X: vcs-svn/lib.a
+
.PRECIOUS: $(TEST_OBJS)
test-%$X: test-%.o $(GITLIBS)
diff --git a/t/t9012-svn-fi.sh b/t/t9012-svn-fi.sh
new file mode 100755
index 0000000..8bc2075
--- /dev/null
+++ b/t/t9012-svn-fi.sh
@@ -0,0 +1,705 @@
+#!/bin/sh
+
+test_description='check svn dumpfile exporter'
+
+. ./test-lib.sh
+
+svnrepo="testsvn"
+
+if svnadmin --help >/dev/null 2>&1
+then
+ load_dump () {
+ svnadmin load "$1"
+ }
+ test_set_prereq SVN
+fi
+
+reinit_svn () {
+ rm -rf "$svnrepo" &&
+ rm -f stream &&
+ svnadmin create "$svnrepo" &&
+ printf "#!/bin/sh" > "$svnrepo"/hooks/pre-revprop-change &&
+ chmod +x "$svnrepo"/hooks/pre-revprop-change &&
+ mkfifo stream
+}
+
+svn_look () {
+ subcommand=$1 &&
+ shift &&
+ svnlook "$subcommand" "$svnrepo" "$@"
+}
+
+try_load () {
+ input=$1 &&
+ maybe_fail=${2:+test_$2} &&
+
+ {
+ $maybe_fail test-svn-fi "$input" >stream &
+ } &&
+ load_dump "$svnrepo" <stream &&
+ wait $!
+}
+
+test_expect_success SVN 'M: regular files' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ foo
+ bar
+ EOF
+ cat >expect.cat.foo <<-\EOF &&
+ nothing
+ EOF
+ cat >expect.cat.bar <<-\EOF &&
+ nothing again
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline foo
+ data 8
+ nothing
+ M 100644 inline bar
+ data 14
+ nothing again
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ svn_look cat foo >actual.cat.foo &&
+ svn_look cat bar >actual.cat.bar &&
+ test_cmp expect.tree actual.tree &&
+ test_cmp expect.cat.foo actual.cat.foo &&
+ test_cmp expect.cat.bar actual.cat.bar
+'
+
+test_expect_success SVN 'D: regular files' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline foo
+ data 7
+ nothing
+ commit refs/heads/master
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ D foo
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'D: directories' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline subdir/foo
+ data 7
+ nothing
+ commit refs/heads/master
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ D subdir
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'R: regular files' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ bar
+ EOF
+ cat >expect.cat <<-\EOF &&
+ nothing
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline foo
+ data 8
+ nothing
+ commit refs/heads/master
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 6
+ rename
+ R foo bar
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ svn_look cat bar >actual.cat &&
+ test_cmp expect.tree actual.tree &&
+ test_cmp expect.cat actual.cat
+'
+
+test_expect_success SVN 'R: directories' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ subdir2/
+ foo
+ bar
+ EOF
+ cat >expect.cat.foo <<-\EOF &&
+ nothing
+ EOF
+ cat >expect.cat.bar <<-\EOF &&
+ nothing again
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline subdir/foo
+ data 8
+ nothing
+ M 100644 inline subdir/bar
+ data 14
+ nothing again
+ commit refs/heads/master
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 12
+ replace root
+ R subdir subdir2
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ svn_look cat subdir2/foo >actual.cat.foo &&
+ svn_look cat subdir2/bar >actual.cat.bar &&
+ test_cmp expect.tree actual.tree &&
+ test_cmp expect.cat.foo actual.cat.foo &&
+ test_cmp expect.cat.bar actual.cat.bar
+'
+
+test_expect_success SVN 'C: regular files' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ foo
+ bar
+ EOF
+ cat >expect.cat <<-\EOF &&
+ nothing
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline foo
+ data 8
+ nothing
+ commit refs/heads/master
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 6
+ rename
+ C foo bar
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ svn_look cat foo >actual.cat.foo &&
+ svn_look cat bar >actual.cat.bar &&
+ test_cmp expect.tree actual.tree &&
+ test_cmp expect.cat actual.cat.foo &&
+ test_cmp expect.cat actual.cat.bar
+'
+
+test_expect_success SVN 'C: directories' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ subdir/
+ foo
+ bar
+ subdir2/
+ foo
+ bar
+ EOF
+ cat >expect.cat.foo <<-\EOF &&
+ nothing
+ EOF
+ cat >expect.cat.bar <<-\EOF &&
+ nothing again
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 100644 inline subdir/foo
+ data 8
+ nothing
+ M 100644 inline subdir/bar
+ data 14
+ nothing again
+ commit refs/heads/master
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 12
+ replace root
+ C subdir subdir2
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ svn_look cat subdir2/foo >actual.cat.foo &&
+ svn_look cat subdir2/bar >actual.cat.bar &&
+ test_cmp expect.tree actual.tree &&
+ test_cmp expect.cat.foo actual.cat.foo &&
+ test_cmp expect.cat.bar actual.cat.bar
+'
+
+test_expect_success SVN 'ignore checkpoint, progress, feature, option' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ EOF
+ cat >input <<-EOF &&
+ checkpoint
+ progress 3
+ feature foo
+ option bar
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'ignore tag' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ foo
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ M 644 inline foo
+ data 0
+ tag moo
+ from master
+ tagger <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ data 8
+ nothing
+ tag bar
+ from master
+ tagger $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ data 10
+ something
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'ignore notemodify' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ something
+ N moo :1
+ data 8
+ nothing
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'svn:special and svn:executable' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 644 inline baz
+ data 0
+ M 100755 inline foo
+ data 0
+ M 755 inline moo
+ data 0
+ M 120000 inline bar
+ data 0
+ EOF
+ try_load input &&
+ svn_look propget svn:executable foo &&
+ svn_look propget svn:executable moo &&
+ svn_look propget svn:special bar
+'
+
+test_expect_success SVN 'invalid toplevel command' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ marks :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 inline foo
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'invalid command after commit' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ datum 0
+ M 100644 inline foo
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'empty log, empty file' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ foo
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 inline foo
+ data 0
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'missing lf after data' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.log <<-\EOF &&
+ something
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 9
+ somethingM 100644 inline foo
+ data 0
+ EOF
+ try_load input &&
+ svn_look log >actual.log &&
+ test_cmp expect.log actual.log
+'
+
+test_expect_success SVN 'revprops: svn:author, svn:log' '
+ reinit_svn &&
+ test_tick &&
+ echo "nothing" >expect.log &&
+ echo "author" >expect.author &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <author@example.com> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 100644 inline foo
+ data 0
+ EOF
+ try_load input &&
+ svn_look log >actual.log &&
+ svn_look author >actual.author &&
+ test_cmp expect.log actual.log &&
+ test_cmp expect.author actual.author
+'
+
+test_expect_success SVN 'missing author line' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ foo
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 inline foo
+ data 0
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'author email without @' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <example> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 inline foo
+ data 0
+ EOF
+ try_load input
+'
+
+test_expect_success SVN 'blob marks unsupported' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ blob
+ mark :1
+ data 0
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :2
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 :1 foo
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'malformed filemodify line' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 inline
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'malformed author line' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author 2d3%*s&f#k|
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 0
+ M 100644 inline foo
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'missing committer line' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ data 0
+ M 100644 inline foo
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'malformed data length' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_AUTHOR_DATE
+ data 0
+ M 100644 inline foo
+ data 14238
+ EOF
+ test_must_fail try_load input
+'
+
+test_expect_success SVN 'recursive directory creation' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ alpha/
+ beta/
+ gamma
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 100644 inline alpha/beta/gamma
+ data 12
+ some content
+ EOF
+ try_load input &&
+ svn_look tree >actual.tree &&
+ test_cmp expect.tree actual.tree
+'
+
+test_expect_success SVN 'replace symlink with normal file' '
+ reinit_svn &&
+ test_tick &&
+ cat >expect.tree <<-\EOF &&
+ /
+ alpha/
+ beta/
+ gamma
+ EOF
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 120000 inline alpha/beta/gamma
+ data 0
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 100644 inline alpha/beta/gamma
+ data 0
+ EOF
+ try_load input &&
+ svn_look tree -r1 >actual.tree1 &&
+ svn_look tree -r2 >actual.tree2 &&
+ test_cmp expect.tree actual.tree1 &&
+ test_cmp expect.tree actual.tree2
+'
+
+test_expect_success SVN 'path includes symlink' '
+ reinit_svn &&
+ test_tick &&
+ cat >input <<-EOF &&
+ reset refs/heads/master
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 120000 inline alpha/beta/gamma
+ data 0
+ commit refs/heads/master
+ mark :1
+ author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
+ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+ data 7
+ nothing
+ M 100644 inline alpha/beta/gamma/bar
+ data 0
+ EOF
+ test_must_fail try_load input
+'
+
+test_done
diff --git a/test-svn-fi.c b/test-svn-fi.c
new file mode 100644
index 0000000..cc6b312
--- /dev/null
+++ b/test-svn-fi.c
@@ -0,0 +1,17 @@
+/*
+ * test-svn-fe: Code to exercise the svn import lib
+ */
+
+#include "git-compat-util.h"
+#include "vcs-svn/svnload.h"
+
+int main(int argc, char *argv[])
+{
+ if (argc != 2)
+ usage("test-svn-fe <file>");
+ if (svnload_init(argv[1]))
+ return 1;
+ svnload_read();
+ svnload_deinit();
+ return 0;
+}
--
1.7.4.rc1.7.g2cf08.dirty
next prev parent reply other threads:[~2011-03-29 18:15 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-29 18:13 [PATCH 0/5] Towards a Git to SVN bridge Ramkumar Ramachandra
2011-03-29 18:13 ` [PATCH 1/5] date: Expose the time_to_tm function Ramkumar Ramachandra
2011-03-29 18:13 ` [PATCH 2/5] fast-export: Introduce --inline-blobs Ramkumar Ramachandra
2011-03-29 20:44 ` Jonathan Nieder
2011-03-29 18:13 ` [PATCH 3/5] strbuf: Introduce strbuf_fwrite corresponding to strbuf_fread Ramkumar Ramachandra
2011-03-31 2:15 ` Jonathan Nieder
2011-03-29 18:13 ` [PATCH 4/5] vcs-svn: Introduce svnload, a dumpfile producer Ramkumar Ramachandra
2011-03-29 18:13 ` Ramkumar Ramachandra [this message]
2011-03-31 23:23 ` [PATCH 5/5] t9012-svn-fi: Add tests for svn-fi Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1301422392-21177-6-git-send-email-artagnon@gmail.com \
--to=artagnon@gmail.com \
--cc=david.barr@cordelta.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=kusmabite@gmail.com \
--cc=srabbelier@gmail.com \
--cc=waste.manager@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).