(CommandList
  children: [
    (FuncDef
      name: test_push_pull
      body: 
        (BraceGroup
          children: [
            (C {(test_expect_success)} {(SQ <"Git pull works after adding a new wiki page">)} 
              {(SQ <"\n"> <"\t\twiki_reset &&\n"> <"\n"> <"\t\tgit clone mediawiki::">) 
                (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_1 &&\n"> 
                  <"\t\twiki_editpage Foo \"page created after the git clone\" false &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tcd mw_dir_1 &&\n"> <"\t\t\tgit pull\n"> <"\t\t) &&\n"> <"\n"> 
                  <"\t\twiki_getallpage ref_page_1 &&\n"> <"\t\ttest_diff_directories mw_dir_1 ref_page_1\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"Git pull works after editing a wiki page">)} 
              {
                (SQ <"\n"> <"\t\twiki_reset &&\n"> <"\n"> 
                  <"\t\twiki_editpage Foo \"page created before the git clone\" false &&\n"> <"\t\tgit clone mediawiki::">
                ) (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_2 &&\n"> 
                  <"\t\twiki_editpage Foo \"new line added on the wiki\" true &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tcd mw_dir_2 &&\n"> <"\t\t\tgit pull\n"> <"\t\t) &&\n"> <"\n"> 
                  <"\t\twiki_getallpage ref_page_2 &&\n"> <"\t\ttest_diff_directories mw_dir_2 ref_page_2\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"git pull works on conflict handled by auto-merge">)} 
              {
                (SQ <"\n"> <"\t\twiki_reset &&\n"> <"\n"> <"\t\twiki_editpage Foo \"1 init\n"> <"3\n"> 
                  <"5\n"> <"\t\" false &&\n"> <"\t\tgit clone mediawiki::">
                ) (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_3 &&\n"> <"\n"> <"\t\twiki_editpage Foo \"1 init\n"> 
                  <"2 content added on wiki after clone\n"> <"3\n"> <"5\n"> <"\t\" false &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tcd mw_dir_3 &&\n"> <"\t\techo \"1 init\n"> 
                  <"3\n"> <"4 content added on git after clone\n"> <"5\n"> <"\" >Foo.mw &&\n"> 
                  <"\t\t\tgit commit -am \"conflicting change on foo\" &&\n"> <"\t\t\tgit pull &&\n"> <"\t\t\tgit push\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"Git push works after adding a file .mw">)} 
              {(SQ <"\n"> <"\t\twiki_reset &&\n"> <"\t\tgit clone mediawiki::">) 
                (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_4 &&\n"> <"\t\twiki_getallpage ref_page_4 &&\n"> <"\t\t(\n"> 
                  <"\t\t\tcd mw_dir_4 &&\n"> <"\t\t\ttest_path_is_missing Foo.mw &&\n"> <"\t\t\ttouch Foo.mw &&\n"> 
                  <"\t\t\techo \"hello world\" >>Foo.mw &&\n"> <"\t\t\tgit add Foo.mw &&\n"> <"\t\t\tgit commit -m \"Foo\" &&\n"> <"\t\t\tgit push\n"> <"\t\t) &&\n"> 
                  <"\t\twiki_getallpage ref_page_4 &&\n"> <"\t\ttest_diff_directories mw_dir_4 ref_page_4\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"Git push works after editing a file .mw">)} 
              {
                (SQ <"\n"> <"\t\twiki_reset &&\n"> 
                  <"\t\twiki_editpage \"Foo\" \"page created before the git clone\" false &&\n"> <"\t\tgit clone mediawiki::">
                ) (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_5 &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tcd mw_dir_5 &&\n"> 
                  <"\t\t\techo \"new line added in the file Foo.mw\" >>Foo.mw &&\n"> <"\t\t\tgit commit -am \"edit file Foo.mw\" &&\n"> <"\t\t\tgit push\n"> <"\t\t) &&\n"> <"\n"> 
                  <"\t\twiki_getallpage ref_page_5 &&\n"> <"\t\ttest_diff_directories mw_dir_5 ref_page_5\n"> <"\t">
                )
              }
            )
            (C {(test_expect_failure)} {(SQ <"Git push works after deleting a file">)} 
              {
                (SQ <"\n"> <"\t\twiki_reset &&\n"> 
                  <"\t\twiki_editpage Foo \"wiki page added before git clone\" false &&\n"> <"\t\tgit clone mediawiki::">
                ) (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_6 &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tcd mw_dir_6 &&\n"> 
                  <"\t\t\tgit rm Foo.mw &&\n"> <"\t\t\tgit commit -am \"page Foo.mw deleted\" &&\n"> <"\t\t\tgit push\n"> <"\t\t) &&\n"> <"\n"> 
                  <"\t\ttest_must_fail wiki_page_exist Foo\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(SQ <"Merge conflict expected and solving it">)} 
              {(SQ <"\n"> <"\t\twiki_reset &&\n"> <"\n"> <"\t\tgit clone mediawiki::">) 
                (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_7 &&\n"> <"\t\twiki_editpage Foo \"1 conflict\n"> <"3 wiki\n"> 
                  <"4\" false &&\n"> <"\n"> <"\t\t(\n"> <"\t\t\tcd mw_dir_7 &&\n"> <"\t\techo \"1 conflict\n"> <"2 git\n"> <"4\" >Foo.mw &&\n"> 
                  <"\t\t\tgit add Foo.mw &&\n"> <"\t\t\tgit commit -m \"conflict created\" &&\n"> <"\t\t\ttest_must_fail git pull &&\n"> 
                  <"\t\t\t\"$PERL_PATH\" -pi -e \"s/[<=>].*//g\" Foo.mw &&\n"> <"\t\t\tgit commit -am \"merge conflict solved\" &&\n"> <"\t\t\tgit push\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
            (C {(test_expect_failure)} {(SQ <"git pull works after deleting a wiki page">)} 
              {
                (SQ <"\n"> <"\t\twiki_reset &&\n"> 
                  <"\t\twiki_editpage Foo \"wiki page added before the git clone\" false &&\n"> <"\t\tgit clone mediawiki::">
                ) (DQ ($ VSub_Name "$WIKI_URL")) 
                (SQ <" mw_dir_8 &&\n"> <"\n"> <"\t\twiki_delete_page Foo &&\n"> <"\t\t(\n"> 
                  <"\t\t\tcd mw_dir_8 &&\n"> <"\t\t\tgit pull &&\n"> <"\t\t\ttest_path_is_missing Foo.mw\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
          ]
          spids: [5]
        )
      spids: [0 4]
    )
  ]
)