Git 2.32
[git] / t / t9148-git-svn-propset.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2014 Alfred Perlstein
4 #
5
6 test_description='git svn propset tests'
7
8 . ./lib-git-svn.sh
9
10 test_expect_success 'setup propset via import' '
11         test_when_finished "rm -rf import" &&
12
13         foo_subdir2="subdir/subdir2/foo_subdir2" &&
14         mkdir -p import/subdir/subdir2 &&
15         (
16                 cd import &&
17                 # for "add props top level"
18                 >foo &&
19                 # for "add props relative"
20                 >subdir/foo_subdir &&
21                 # for "add props subdir"
22                 >"$foo_subdir2" &&
23                 svn_cmd import -m "import for git svn" . "$svnrepo"
24         )
25 '
26
27 test_expect_success 'initialize git svn' '
28         git svn init "$svnrepo"
29         '
30
31 test_expect_success 'fetch revisions from svn' '
32         git svn fetch
33         '
34
35 set_props () {
36         subdir="$1"
37         file="$2"
38         shift;shift;
39         (cd "$subdir" &&
40                 while [ $# -gt 0 ] ; do
41                         git svn propset "$1" "$2" "$file" || exit 1
42                         shift;shift;
43                 done &&
44                 echo hello >> "$file" &&
45                 git commit -m "testing propset" "$file")
46 }
47
48 confirm_props () {
49         subdir="$1"
50         file="$2"
51         shift;shift;
52         (set -e ; cd "svn_project/$subdir" &&
53                 while [ $# -gt 0 ] ; do
54                         test "$(svn_cmd propget "$1" "$file")" = "$2" || exit 1
55                         shift;shift;
56                 done)
57 }
58
59
60 #The current implementation has a restriction:
61 #svn propset will be taken as a delta for svn dcommit only
62 #if the file content is also modified
63 test_expect_success 'add props top level' '
64         set_props "." "foo" "svn:keywords" "FreeBSD=%H" &&
65         git svn dcommit &&
66         svn_cmd co "$svnrepo" svn_project &&
67         confirm_props "." "foo" "svn:keywords" "FreeBSD=%H" &&
68         rm -rf svn_project
69         '
70
71 test_expect_success 'add multiple props' '
72         set_props "." "foo" \
73                 "svn:keywords" "FreeBSD=%H" fbsd:nokeywords yes &&
74         git svn dcommit &&
75         svn_cmd co "$svnrepo" svn_project &&
76         confirm_props "." "foo" \
77                 "svn:keywords" "FreeBSD=%H" fbsd:nokeywords yes &&
78         rm -rf svn_project
79         '
80
81 test_expect_success 'add props subdir' '
82         set_props "." "$foo_subdir2" svn:keywords "FreeBSD=%H" &&
83         git svn dcommit &&
84         svn_cmd co "$svnrepo" svn_project &&
85         confirm_props "." "$foo_subdir2" "svn:keywords" "FreeBSD=%H" &&
86         rm -rf svn_project
87         '
88
89 test_expect_success 'add props relative' '
90         set_props "subdir/subdir2" "../foo_subdir" \
91                 svn:keywords "FreeBSD=%H" &&
92         git svn dcommit &&
93         svn_cmd co "$svnrepo" svn_project &&
94         confirm_props "subdir/subdir2" "../foo_subdir" \
95                 svn:keywords "FreeBSD=%H" &&
96         rm -rf svn_project
97         '
98 test_done