| test_push_pull () { |
| |
| test_expect_success 'Git pull works after adding a new wiki page' ' |
| wiki_reset && |
| |
| git clone mediawiki::'"$WIKI_URL"' 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::'"$WIKI_URL"' 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::'"$WIKI_URL"' 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::'"$WIKI_URL"' mw_dir_4 && |
| wiki_getallpage ref_page_4 && |
| ( |
| cd mw_dir_4 && |
| test_path_is_missing 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::'"$WIKI_URL"' 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::'"$WIKI_URL"' mw_dir_6 && |
| |
| ( |
| cd mw_dir_6 && |
| git rm Foo.mw && |
| git commit -am "page Foo.mw deleted" && |
| git push |
| ) && |
| |
| test_must_fail wiki_page_exist Foo |
| ' |
| |
| test_expect_success 'Merge conflict expected and solving it' ' |
| wiki_reset && |
| |
| git clone mediawiki::'"$WIKI_URL"' 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_PATH" -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::'"$WIKI_URL"' mw_dir_8 && |
| |
| wiki_delete_page Foo && |
| ( |
| cd mw_dir_8 && |
| git pull && |
| test_path_is_missing Foo.mw |
| ) |
| ' |
| } |