git-svn: Add test for --ignore-paths parameter
authorVitaly \"_Vi\" Shukela <public_vi@tut.by>
Sun, 25 Jan 2009 22:21:42 +0000 (00:21 +0200)
committerEric Wong <normalperson@yhbt.net>
Mon, 26 Jan 2009 01:09:45 +0000 (17:09 -0800)
Added a test for this option, similar to (and based on) t9133 about
ignorance of .git directories

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: replaced 'echo -e' with printf so it works on POSIX shells]
[ew: added Vitaly to copyright even though it's based on my test]

t/t9134-git-svn-ignore-paths.sh [new file with mode: 0755]

diff --git a/t/t9134-git-svn-ignore-paths.sh b/t/t9134-git-svn-ignore-paths.sh
new file mode 100755 (executable)
index 0000000..c4b5b8b
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# Copyright (c) 2009 Vitaly Shukela
+# Copyright (c) 2009 Eric Wong
+#
+
+test_description='git svn property tests'
+. ./lib-git-svn.sh
+
+test_expect_success 'setup test repository' '
+       svn co "$svnrepo" s &&
+       (
+               cd s &&
+               mkdir qqq www &&
+               echo test_qqq > qqq/test_qqq.txt &&
+               echo test_www > www/test_www.txt &&
+               svn add qqq &&
+               svn add www &&
+               svn commit -m "create some files" &&
+               svn up &&
+               echo hi >> www/test_www.txt &&
+               svn commit -m "modify www/test_www.txt" &&
+               svn up
+       )
+'
+
+test_expect_success 'clone an SVN repository with ignored www directory' '
+       git svn clone --ignore-paths="^www" "$svnrepo" g &&
+       echo test_qqq > expect &&
+       for i in g/*/*.txt; do cat $i >> expect2; done &&
+       test_cmp expect expect2
+'
+
+test_expect_success 'SVN-side change outside of www' '
+       (
+               cd s &&
+               echo b >> qqq/test_qqq.txt &&
+               svn commit -m "SVN-side change outside of www" &&
+               svn up &&
+               svn log -v | fgrep "SVN-side change outside of www"
+       )
+'
+
+test_expect_success 'update git svn-cloned repo' '
+       (
+               cd g &&
+               git svn rebase --ignore-paths="^www" &&
+               printf "test_qqq\nb\n" > expect &&
+               for i in */*.txt; do cat $i >> expect2; done &&
+               test_cmp expect2 expect &&
+               rm expect expect2
+       )
+'
+
+test_expect_success 'SVN-side change inside of ignored www' '
+       (
+               cd s &&
+               echo zaq >> www/test_www.txt
+               svn commit -m "SVN-side change inside of www/test_www.txt" &&
+               svn up &&
+               svn log -v | fgrep "SVN-side change inside of www/test_www.txt"
+       )
+'
+
+test_expect_success 'update git svn-cloned repo' '
+       (
+               cd g &&
+               git svn rebase --ignore-paths="^www" &&
+               printf "test_qqq\nb\n" > expect &&
+               for i in */*.txt; do cat $i >> expect2; done &&
+               test_cmp expect2 expect &&
+               rm expect expect2
+       )
+'
+
+test_expect_success 'SVN-side change in and out of ignored www' '
+       (
+               cd s &&
+               echo cvf >> www/test_www.txt
+               echo ygg >> qqq/test_qqq.txt
+               svn commit -m "SVN-side change in and out of ignored www" &&
+               svn up &&
+               svn log -v | fgrep "SVN-side change in and out of ignored www"
+       )
+'
+
+test_expect_success 'update git svn-cloned repo again' '
+       (
+               cd g &&
+               git svn rebase --ignore-paths="^www" &&
+               printf "test_qqq\nb\nygg\n" > expect &&
+               for i in */*.txt; do cat $i >> expect2; done &&
+               test_cmp expect2 expect &&
+               rm expect expect2
+       )
+'
+
+test_done