git-remote-mediawiki (t9361): test git-remote-mediawiki pull and push
This patch provides a set of tests for the pull and push fonctionnality of git-remote-mediawiki. The actual tests are kept in a separate function to allow further tests to re-run the same set of commands with different push and pull strategies. Signed-off-by: Simon CATHEBRAS <Simon.Cathebras@ensimag.imag.fr> Signed-off-by: Julien KHAYAT <Julien.Khayat@ensimag.imag.fr> Signed-off-by: Simon Perrat <simon.perrat@ensimag.imag.fr> Signed-off-by: Charles ROUSSEL <Charles.Roussel@ensimag.imag.fr> Signed-off-by: Guillaume SASDY <Guillaume.Sasdy@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Guillaume Sasdy committed
Jul 6, 2012 at 12:03 UTC
36840225df08e962156b0df25662e1cfa240f9dd
2 files changed
+168
contrib/mw-to-git/t/push-pull-tests.sh
new
+144
@@ -0,0 +1,144 @@
1
+test_push_pull () {
2
+
3
+ test_expect_success 'Git pull works after adding a new wiki page' '
4
+ wiki_reset &&
5
+
6
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_1 &&
7
+ wiki_editpage Foo "page created after the git clone" false &&
8
+
9
+ (
10
+ cd mw_dir_1 &&
11
+ git pull
12
+ ) &&
13
+
14
+ wiki_getallpage ref_page_1 &&
15
+ test_diff_directories mw_dir_1 ref_page_1
16
+ '
17
+
18
+ test_expect_success 'Git pull works after editing a wiki page' '
19
+ wiki_reset &&
20
+
21
+ wiki_editpage Foo "page created before the git clone" false &&
22
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_2 &&
23
+ wiki_editpage Foo "new line added on the wiki" true &&
24
+
25
+ (
26
+ cd mw_dir_2 &&
27
+ git pull
28
+ ) &&
29
+
30
+ wiki_getallpage ref_page_2 &&
31
+ test_diff_directories mw_dir_2 ref_page_2
32
+ '
33
+
34
+ test_expect_success 'git pull works on conflict handled by auto-merge' '
35
+ wiki_reset &&
36
+
37
+ wiki_editpage Foo "1 init
38
+3
39
+5
40
+ " false &&
41
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_3 &&
42
+
43
+ wiki_editpage Foo "1 init
44
+2 content added on wiki after clone
45
+3
46
+5
47
+ " false &&
48
+
49
+ (
50
+ cd mw_dir_3 &&
51
+ echo "1 init
52
+3
53
+4 content added on git after clone
54
+5
55
+" >Foo.mw &&
56
+ git commit -am "conflicting change on foo" &&
57
+ git pull &&
58
+ git push
59
+ )
60
+ '
61
+
62
+ test_expect_success 'Git push works after adding a file .mw' '
63
+ wiki_reset &&
64
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_4 &&
65
+ wiki_getallpage ref_page_4 &&
66
+ (
67
+ cd mw_dir_4 &&
68
+ test_path_is_missing Foo.mw &&
69
+ touch Foo.mw &&
70
+ echo "hello world" >>Foo.mw &&
71
+ git add Foo.mw &&
72
+ git commit -m "Foo" &&
73
+ git push
74
+ ) &&
75
+ wiki_getallpage ref_page_4 &&
76
+ test_diff_directories mw_dir_4 ref_page_4
77
+ '
78
+
79
+ test_expect_success 'Git push works after editing a file .mw' '
80
+ wiki_reset &&
81
+ wiki_editpage "Foo" "page created before the git clone" false &&
82
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_5 &&
83
+
84
+ (
85
+ cd mw_dir_5 &&
86
+ echo "new line added in the file Foo.mw" >>Foo.mw &&
87
+ git commit -am "edit file Foo.mw" &&
88
+ git push
89
+ ) &&
90
+
91
+ wiki_getallpage ref_page_5 &&
92
+ test_diff_directories mw_dir_5 ref_page_5
93
+ '
94
+
95
+ test_expect_failure 'Git push works after deleting a file' '
96
+ wiki_reset &&
97
+ wiki_editpage Foo "wiki page added before git clone" false &&
98
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_6 &&
99
+
100
+ (
101
+ cd mw_dir_6 &&
102
+ git rm Foo.mw &&
103
+ git commit -am "page Foo.mw deleted" &&
104
+ git push
105
+ ) &&
106
+
107
+ test ! wiki_page_exist Foo
108
+ '
109
+
110
+ test_expect_success 'Merge conflict expected and solving it' '
111
+ wiki_reset &&
112
+
113
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_7 &&
114
+ wiki_editpage Foo "1 conflict
115
+3 wiki
116
+4" false &&
117
+
118
+ (
119
+ cd mw_dir_7 &&
120
+ echo "1 conflict
121
+2 git
122
+4" >Foo.mw &&
123
+ git add Foo.mw &&
124
+ git commit -m "conflict created" &&
125
+ test_must_fail git pull &&
126
+ "$PERL_PATH" -pi -e "s/[<=>].*//g" Foo.mw &&
127
+ git commit -am "merge conflict solved" &&
128
+ git push
129
+ )
130
+ '
131
+
132
+ test_expect_failure 'git pull works after deleting a wiki page' '
133
+ wiki_reset &&
134
+ wiki_editpage Foo "wiki page added before the git clone" false &&
135
+ git clone mediawiki::'"$WIKI_URL"' mw_dir_8 &&
136
+
137
+ wiki_delete_page Foo &&
138
+ (
139
+ cd mw_dir_8 &&
140
+ git pull &&
141
+ test_path_is_missing Foo.mw
142
+ )
143
+ '
144
+}
contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh
new
+24
@@ -0,0 +1,24 @@
1
+#!/bin/sh
2
+#
3
+# Copyright (C) 2012
4
+# Charles Roussel <charles.roussel@ensimag.imag.fr>
5
+# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
6
+# Julien Khayat <julien.khayat@ensimag.imag.fr>
7
+# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
8
+# Simon Perrat <simon.perrat@ensimag.imag.fr>
9
+#
10
+# License: GPL v2 or later
11
+
12
+# tests for git-remote-mediawiki
13
+
14
+test_description='Test the Git Mediawiki remote helper: git push and git pull simple test cases'
15
+
16
+. ./test-gitmw-lib.sh
17
+. ./push-pull-tests.sh
18
+. $TEST_DIRECTORY/test-lib.sh
19
+
20
+test_check_precond
21
+
22
+test_push_pull
23
+
24
+test_done