(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'Test the Git Mediawiki remote helper: git clone'>)} spids: [32] ) ] ) (C {<.>} {<'./test-gitmw-lib.sh'>}) (C {<.>} {($ Id.VSub_DollarName '$TEST_DIRECTORY') <'/test-lib.sh'>}) (C {<test_check_precond>}) (C {<test_expect_success>} {(SQ <'Git clone creates the expected git log with one file'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> < '\twiki_editpage foo "this is not important" false -c cat -s "this must be the same" &&\n' > <'\tgit clone mediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_1 &&\n'> <'\t(\n'> <'\t\tcd mw_dir_1 &&\n'> <'\t\tgit log --format=%s HEAD^..HEAD >log.tmp\n'> <'\t) &&\n'> <'\techo "this must be the same" >msg.tmp &&\n'> <'\tdiff -b mw_dir_1/log.tmp msg.tmp\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone creates the expected git log with multiple files'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage daddy "this is not important" false -s="this must be the same" &&\n'> <'\twiki_editpage daddy "neither is this" true -s="this must also be the same" &&\n'> <'\twiki_editpage daddy "neither is this" true -s="same same same" &&\n'> <'\twiki_editpage dj "dont care" false -s="identical" &&\n'> <'\twiki_editpage dj "dont care either" true -s="identical too" &&\n'> <'\tgit clone mediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_2 &&\n'> <'\t(\n'> <'\t\tcd mw_dir_2 &&\n'> <'\t\tgit log --format=%s Daddy.mw >logDaddy.tmp &&\n'> <'\t\tgit log --format=%s Dj.mw >logDj.tmp\n'> <'\t) &&\n'> <'\techo "same same same" >msgDaddy.tmp &&\n'> <'\techo "this must also be the same" >>msgDaddy.tmp &&\n'> <'\techo "this must be the same" >>msgDaddy.tmp &&\n'> <'\techo "identical too" >msgDj.tmp &&\n'> <'\techo "identical" >>msgDj.tmp &&\n'> <'\tdiff -b mw_dir_2/logDaddy.tmp msgDaddy.tmp &&\n'> <'\tdiff -b mw_dir_2/logDj.tmp msgDj.tmp\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone creates only Main_Page.mw with an empty wiki'>)} {(SQ <'\n'> <'\twiki_reset &&\n'> <'\tgit clone mediawiki::'>) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_3 &&\n'> <'\ttest_contains_N_files mw_dir_3 1 &&\n'> <'\ttest_path_is_file mw_dir_3/Main_Page.mw\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone does not fetch a deleted page'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "this page must be deleted before the clone" false &&\n'> <'\twiki_delete_page foo &&\n'> <'\tgit clone mediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_4 &&\n'> <'\ttest_contains_N_files mw_dir_4 1 &&\n'> <'\ttest_path_is_file mw_dir_4/Main_Page.mw &&\n'> <'\ttest_path_is_missing mw_dir_4/Foo.mw\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone works with page added'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo " I will be cloned" false &&\n'> <'\twiki_editpage bar "I will be cloned" false &&\n'> <'\tgit clone mediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_5 &&\n'> <'\twiki_getallpage ref_page_5 &&\n'> <'\ttest_diff_directories mw_dir_5 ref_page_5 &&\n'> <'\twiki_delete_page foo &&\n'> <'\twiki_delete_page bar\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone works with an edited page '>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "this page will be edited" \\\n'> <'\t\tfalse -s "first edition of page foo"&&\n'> <'\twiki_editpage foo "this page has been edited and must be on the clone " true &&\n'> <'\tgit clone mediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_6 &&\n'> <'\ttest_path_is_file mw_dir_6/Foo.mw &&\n'> <'\ttest_path_is_file mw_dir_6/Main_Page.mw &&\n'> <'\twiki_getallpage mw_dir_6/page_ref_6 &&\n'> <'\ttest_diff_directories mw_dir_6 mw_dir_6/page_ref_6 &&\n'> <'\t(\n'> <'\t\tcd mw_dir_6 &&\n'> <'\t\tgit log --format=%s HEAD^ Foo.mw > ../Foo.log\n'> <'\t) &&\n'> <'\techo "first edition of page foo" > FooExpect.log &&\n'> <'\tdiff FooExpect.log Foo.log\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone works with several pages and some deleted '>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "this page will not be deleted" false &&\n'> <'\twiki_editpage bar "I must not be erased" false &&\n'> <'\twiki_editpage namnam "I will not be there at the end" false &&\n'> <'\twiki_editpage nyancat "nyan nyan nyan delete me" false &&\n'> <'\twiki_delete_page namnam &&\n'> <'\twiki_delete_page nyancat &&\n'> <'\tgit clone mediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_7 &&\n'> <'\ttest_path_is_file mw_dir_7/Foo.mw &&\n'> <'\ttest_path_is_file mw_dir_7/Bar.mw &&\n'> <'\ttest_path_is_missing mw_dir_7/Namnam.mw &&\n'> <'\ttest_path_is_missing mw_dir_7/Nyancat.mw &&\n'> <'\twiki_getallpage mw_dir_7/page_ref_7 &&\n'> <'\ttest_diff_directories mw_dir_7 mw_dir_7/page_ref_7\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone works with one specific page cloned '>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "I will not be cloned" false &&\n'> <'\twiki_editpage bar "Do not clone me" false &&\n'> <'\twiki_editpage namnam "I will be cloned :)" false -s="this log must stay" &&\n'> <'\twiki_editpage nyancat "nyan nyan nyan you cant clone me" false &&\n'> <'\tgit clone -c remote.origin.pages=namnam \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_8 &&\n'> <'\ttest_contains_N_files mw_dir_8 1 &&\n'> <'\ttest_path_is_file mw_dir_8/Namnam.mw &&\n'> <'\ttest_path_is_missing mw_dir_8/Main_Page.mw &&\n'> <'\t(\n'> <'\t\tcd mw_dir_8 &&\n'> <'\t\techo "this log must stay" >msg.tmp &&\n'> <'\t\tgit log --format=%s >log.tmp &&\n'> <'\t\tdiff -b msg.tmp log.tmp\n'> <'\t) &&\n'> <'\twiki_check_content mw_dir_8/Namnam.mw Namnam\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone works with multiple specific page cloned '>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "I will be there" false &&\n'> <'\twiki_editpage bar "I will not disapear" false &&\n'> <'\twiki_editpage namnam "I be erased" false &&\n'> <'\twiki_editpage nyancat "nyan nyan nyan you will not erase me" false &&\n'> <'\twiki_delete_page namnam &&\n'> <'\tgit clone -c remote.origin.pages="foo bar nyancat namnam" \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_9 &&\n'> <'\ttest_contains_N_files mw_dir_9 3 &&\n'> <'\ttest_path_is_missing mw_dir_9/Namnam.mw &&\n'> <'\ttest_path_is_file mw_dir_9/Foo.mw &&\n'> <'\ttest_path_is_file mw_dir_9/Nyancat.mw &&\n'> <'\ttest_path_is_file mw_dir_9/Bar.mw &&\n'> <'\twiki_check_content mw_dir_9/Foo.mw Foo &&\n'> <'\twiki_check_content mw_dir_9/Bar.mw Bar &&\n'> <'\twiki_check_content mw_dir_9/Nyancat.mw Nyancat\n'> ) } ) (C {<test_expect_success>} {(SQ <'Mediawiki-clone of several specific pages on wiki'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "foo 1" false &&\n'> <'\twiki_editpage bar "bar 1" false &&\n'> <'\twiki_editpage dummy "dummy 1" false &&\n'> <'\twiki_editpage cloned_1 "cloned_1 1" false &&\n'> <'\twiki_editpage cloned_2 "cloned_2 2" false &&\n'> <'\twiki_editpage cloned_3 "cloned_3 3" false &&\n'> <'\tmkdir -p ref_page_10 &&\n'> <'\twiki_getpage cloned_1 ref_page_10 &&\n'> <'\twiki_getpage cloned_2 ref_page_10 &&\n'> <'\twiki_getpage cloned_3 ref_page_10 &&\n'> <'\tgit clone -c remote.origin.pages="cloned_1 cloned_2 cloned_3" \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_10 &&\n'> <'\ttest_diff_directories mw_dir_10 ref_page_10\n'>) } ) (C {<test_expect_success>} {(SQ <'Git clone works with the shallow option'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "1st revision, should be cloned" false &&\n'> <'\twiki_editpage bar "1st revision, should be cloned" false &&\n'> <'\twiki_editpage nyan "1st revision, should not be cloned" false &&\n'> <'\twiki_editpage nyan "2nd revision, should be cloned" false &&\n'> <'\tgit -c remote.origin.shallow=true clone \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_11 &&\n'> <'\ttest_contains_N_files mw_dir_11 4 &&\n'> <'\ttest_path_is_file mw_dir_11/Nyan.mw &&\n'> <'\ttest_path_is_file mw_dir_11/Foo.mw &&\n'> <'\ttest_path_is_file mw_dir_11/Bar.mw &&\n'> <'\ttest_path_is_file mw_dir_11/Main_Page.mw &&\n'> <'\t(\n'> <'\t\tcd mw_dir_11 &&\n'> <'\t\ttest $(git log --oneline Nyan.mw | wc -l) -eq 1 &&\n'> <'\t\ttest $(git log --oneline Foo.mw | wc -l) -eq 1 &&\n'> <'\t\ttest $(git log --oneline Bar.mw | wc -l) -eq 1 &&\n'> <'\t\ttest $(git log --oneline Main_Page.mw | wc -l ) -eq 1\n'> <'\t) &&\n'> <'\twiki_check_content mw_dir_11/Nyan.mw Nyan &&\n'> <'\twiki_check_content mw_dir_11/Foo.mw Foo &&\n'> <'\twiki_check_content mw_dir_11/Bar.mw Bar &&\n'> <'\twiki_check_content mw_dir_11/Main_Page.mw Main_Page\n'> ) } ) (C {<test_expect_success>} {(SQ <'Git clone works with the shallow option with a delete page'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage foo "1st revision, will be deleted" false &&\n'> <'\twiki_editpage bar "1st revision, should be cloned" false &&\n'> <'\twiki_editpage nyan "1st revision, should not be cloned" false &&\n'> <'\twiki_editpage nyan "2nd revision, should be cloned" false &&\n'> <'\twiki_delete_page foo &&\n'> <'\tgit -c remote.origin.shallow=true clone \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_12 &&\n'> <'\ttest_contains_N_files mw_dir_12 3 &&\n'> <'\ttest_path_is_file mw_dir_12/Nyan.mw &&\n'> <'\ttest_path_is_missing mw_dir_12/Foo.mw &&\n'> <'\ttest_path_is_file mw_dir_12/Bar.mw &&\n'> <'\ttest_path_is_file mw_dir_12/Main_Page.mw &&\n'> <'\t(\n'> <'\t\tcd mw_dir_12 &&\n'> <'\t\ttest $(git log --oneline Nyan.mw | wc -l) -eq 1 &&\n'> <'\t\ttest $(git log --oneline Bar.mw | wc -l) -eq 1 &&\n'> <'\t\ttest $(git log --oneline Main_Page.mw | wc -l ) -eq 1\n'> <'\t) &&\n'> <'\twiki_check_content mw_dir_12/Nyan.mw Nyan &&\n'> <'\twiki_check_content mw_dir_12/Bar.mw Bar &&\n'> <'\twiki_check_content mw_dir_12/Main_Page.mw Main_Page\n'> ) } ) (C {<test_expect_success>} {(SQ <'Test of fetching a category'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage Foo "I will be cloned" false -c=Category &&\n'> <'\twiki_editpage Bar "Meet me on the repository" false -c=Category &&\n'> <'\twiki_editpage Dummy "I will not come" false &&\n'> <'\twiki_editpage BarWrong "I will stay online only" false -c=NotCategory &&\n'> <'\tgit clone -c remote.origin.categories="Category" \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_13 &&\n'> <'\twiki_getallpage ref_page_13 Category &&\n'> <'\ttest_diff_directories mw_dir_13 ref_page_13\n'> ) } ) (C {<test_expect_success>} {(SQ <'Test of resistance to modification of category on wiki for clone'>)} { (SQ <'\n'> <'\twiki_reset &&\n'> <'\twiki_editpage Tobedeleted "this page will be deleted" false -c=Catone &&\n'> <'\twiki_editpage Tobeedited "this page will be modified" false -c=Catone &&\n'> < '\twiki_editpage Normalone "this page wont be modified and will be on git" false -c=Catone &&\n' > <'\twiki_editpage Notconsidered "this page will not appear on local" false &&\n'> < '\twiki_editpage Othercategory "this page will not appear on local" false -c=Cattwo &&\n' > <'\twiki_editpage Tobeedited "this page have been modified" true -c=Catone &&\n'> <'\twiki_delete_page Tobedeleted\n'> <'\tgit clone -c remote.origin.categories="Catone" \\\n'> <'\t\tmediawiki::'> ) (DQ ($ Id.VSub_DollarName '$WIKI_URL')) (SQ <' mw_dir_14 &&\n'> <'\twiki_getallpage ref_page_14 Catone &&\n'> <'\ttest_diff_directories mw_dir_14 ref_page_14\n'> ) } ) (C {<test_done>}) ] )