about summary refs log tree commit homepage
path: root/t/t9148-git-svn-propset.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t9148-git-svn-propset.sh')
-rwxr-xr-xt/t9148-git-svn-propset.sh95
1 files changed, 95 insertions, 0 deletions
diff --git a/t/t9148-git-svn-propset.sh b/t/t9148-git-svn-propset.sh
new file mode 100755
index 0000000000..102639090c
--- /dev/null
+++ b/t/t9148-git-svn-propset.sh
@@ -0,0 +1,95 @@
+#!/bin/sh
+#
+# Copyright (c) 2014 Alfred Perlstein
+#
+
+test_description='git svn propset tests'
+
+. ./lib-git-svn.sh
+
+foo_subdir2="subdir/subdir2/foo_subdir2"
+
+set -e
+mkdir import &&
+(set -e ; cd import
+        mkdir subdir
+        mkdir subdir/subdir2
+        touch foo                 # for 'add props top level'
+        touch subdir/foo_subdir # for 'add props relative'
+        touch "$foo_subdir2"        # for 'add props subdir'
+        svn_cmd import -m 'import for git svn' . "$svnrepo" >/dev/null
+)
+rm -rf import
+
+test_expect_success 'initialize git svn' '
+        git svn init "$svnrepo"
+        '
+
+test_expect_success 'fetch revisions from svn' '
+        git svn fetch
+        '
+
+set_props () {
+        subdir="$1"
+        file="$2"
+        shift;shift;
+        (cd "$subdir" &&
+                while [ $# -gt 0 ] ; do
+                        git svn propset "$1" "$2" "$file" || exit 1
+                        shift;shift;
+                done &&
+                echo hello >> "$file" &&
+                git commit -m "testing propset" "$file")
+}
+
+confirm_props () {
+        subdir="$1"
+        file="$2"
+        shift;shift;
+        (set -e ; cd "svn_project/$subdir" &&
+                while [ $# -gt 0 ] ; do
+                        test "$(svn_cmd propget "$1" "$file")" = "$2" || exit 1
+                        shift;shift;
+                done)
+}
+
+
+#The current implementation has a restriction:
+#svn propset will be taken as a delta for svn dcommit only
+#if the file content is also modified
+test_expect_success 'add props top level' '
+        set_props "." "foo" "svn:keywords" "FreeBSD=%H" &&
+        git svn dcommit &&
+        svn_cmd co "$svnrepo" svn_project &&
+        confirm_props "." "foo" "svn:keywords" "FreeBSD=%H" &&
+        rm -rf svn_project
+        '
+
+test_expect_success 'add multiple props' '
+        set_props "." "foo" \
+                "svn:keywords" "FreeBSD=%H" fbsd:nokeywords yes &&
+        git svn dcommit &&
+        svn_cmd co "$svnrepo" svn_project &&
+        confirm_props "." "foo" \
+                "svn:keywords" "FreeBSD=%H" fbsd:nokeywords yes &&
+        rm -rf svn_project
+        '
+
+test_expect_success 'add props subdir' '
+        set_props "." "$foo_subdir2" svn:keywords "FreeBSD=%H" &&
+        git svn dcommit &&
+        svn_cmd co "$svnrepo" svn_project &&
+        confirm_props "." "$foo_subdir2" "svn:keywords" "FreeBSD=%H" &&
+        rm -rf svn_project
+        '
+
+test_expect_success 'add props relative' '
+        set_props "subdir/subdir2" "../foo_subdir" \
+                svn:keywords "FreeBSD=%H" &&
+        git svn dcommit &&
+        svn_cmd co "$svnrepo" svn_project &&
+        confirm_props "subdir/subdir2" "../foo_subdir" \
+                svn:keywords "FreeBSD=%H" &&
+        rm -rf svn_project
+        '
+test_done