From: Guillaume Sasdy <guillaume.sasdy@xxxxxxxxxxxxxxx> This patch provides a set of tests for the pull and push fonctionnality of git-remote-mediawiki. Signed-off-by: Simon Cathebras <simon.cathebras@xxxxxxxxxxxxxxx> Signed-off-by: Simon Perrat <simon.perrat@xxxxxxxxxxxxxxx> Signed-off-by: Guillaume Sasdy <guillaume.sasdy@xxxxxxxxxxxxxxx> Signed-off-by: Charles Roussel <charles.roussel@xxxxxxxxxxxxxxx> Signed-off-by: Julien Khayat <julien.khayat@xxxxxxxxxxxxxxx> Signed-off-by: Matthieu Moy <matthieu.moy@xxxxxxx> --- contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh | 151 +++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100755 contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh diff --git a/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh b/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh new file mode 100755 index 0000000..add7c79 --- /dev/null +++ b/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh @@ -0,0 +1,151 @@ +#!/bin/sh +# +# Copyright (C) 2012 +# Charles Roussel <charles.roussel@xxxxxxxxxxxxxxx> +# Simon Cathebras <simon.cathebras@xxxxxxxxxxxxxxx> +# Julien Khayat <julien.khayat@xxxxxxxxxxxxxxx> +# Guillaume Sasdy <guillaume.sasdy@xxxxxxxxxxxxxxx> +# Simon Perrat <simon.perrat@xxxxxxxxxxxxxxx> +# +# License: GPL v2 or later + +# tests for git-remote-mediawiki + +test_description='Test the Git Mediawiki remote helper: git push and git pull simple test cases' + +. ./test-gitmw-lib.sh +. $TEST_DIRECTORY/test-lib.sh + + +test_check_precond + + +test_expect_success 'Git pull works after adding a new wiki page' ' + wiki_reset && + + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_1 && + wiki_editpage Foo "page created after the git clone" false && + + (cd mw_dir_1 && + git pull) && + + wiki_getallpage ref_page_1 && + test_diff_directories mw_dir_1 ref_page_1 +' + +test_expect_success 'Git pull works after editing a wiki page' ' + wiki_reset && + + wiki_editpage Foo "page created before the git clone" false && + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_2 && + wiki_editpage Foo "new line added on the wiki" true && + + (cd mw_dir_2 && + git pull) && + + wiki_getallpage ref_page_2 && + test_diff_directories mw_dir_2 ref_page_2 +' + +test_expect_success 'git pull works on conflict handled by auto-merge' ' + wiki_reset && + + wiki_editpage Foo "1 init +3 +5 +" false && + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_3 && + + wiki_editpage Foo "1 init +2 content added on wiki after clone +3 +5 +" false && + + (cd mw_dir_3 && + echo "1 init +3 +4 content added on git after clone +5 +" > Foo.mw && + git commit -am "conflicting change on foo" && + git pull && + git push) +' + +test_expect_success 'Git push works after adding a file .mw' ' + wiki_reset && + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_4 && + wiki_getallpage ref_page_4 && + (cd mw_dir_4 && + test ! -f Foo.mw && + touch Foo.mw && + echo "hello world" >> Foo.mw && + git add Foo.mw && + git commit -m "Foo" && + git push) && + wiki_getallpage ref_page_4 && + test_diff_directories mw_dir_4 ref_page_4 +' + +test_expect_success 'Git push works after editing a file .mw' ' + wiki_reset && + wiki_editpage "Foo" "page created before the git clone" false && + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_5 && + + (cd mw_dir_5 && + echo "new line added in the file Foo.mw" >> Foo.mw && + git commit -am "edit file Foo.mw" && + git push) && + + wiki_getallpage ref_page_5 && + test_diff_directories mw_dir_5 ref_page_5 +' + +test_expect_failure 'Git push works after deleting a file' ' + wiki_reset && + wiki_editpage Foo "wiki page added before git clone" false && + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_6 && + + (cd mw_dir_6 && + git rm Foo.mw && + git commit -am "page Foo.mw deleted" && + git push) && + + test ! wiki_page_exist Foo +' + + + +test_expect_success 'Merge conflict expected and solving it' ' + wiki_reset && + + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_7 && + wiki_editpage Foo "1 conflict +3 wiki +4" false && + + (cd mw_dir_7 && + echo "1 conflict +2 git +4" > Foo.mw && + git add Foo.mw && + git commit -m "conflict created" && + test_must_fail git pull && + perl -pi -e "s/[<=>].*//g" Foo.mw && + git commit -am "merge conflict solved" && + git push) +' + +test_expect_failure 'git pull works after deleting a wiki page' ' + wiki_reset && + wiki_editpage Foo "wiki page added before the git clone" false && + git clone mediawiki::http://'"$SERVER_ADDR:$PORT/$WIKI_DIR_NAME"' mw_dir_8 && + + wiki_delete_page Foo && + (cd mw_dir_8 && + git pull && + test ! -f Foo.mw) +' + +test_done -- 1.7.10.2.552.gaa3bb87 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html