#!/bin/sh # # Copyright (c) 2013 Paul Walmsley - based on t9134 by Vitaly Shukela # global test_description := ''git svn property tests'' source ./lib-git-svn.sh test_expect_success 'setup test repository' ' svn_cmd co "$svnrepo" s && ( cd s && mkdir qqq www xxx && echo test_qqq > qqq/test_qqq.txt && echo test_www > www/test_www.txt && echo test_xxx > xxx/test_xxx.txt && svn_cmd add qqq && svn_cmd add www && svn_cmd add xxx && svn_cmd commit -m "create some files" && svn_cmd up && echo hi >> www/test_www.txt && svn_cmd commit -m "modify www/test_www.txt" && svn_cmd up ) ' test_expect_success 'clone an SVN repository with filter to include qqq directory' ' git svn clone --include-paths="qqq" "$svnrepo" g && echo test_qqq > expect && for i in g/*/*.txt; do cat $i >> expect2; done && test_cmp expect expect2 ' test_expect_success 'init+fetch an SVN repository with included qqq directory' ' git svn init "$svnrepo" c && ( cd c && git svn fetch --include-paths="qqq" ) && rm expect2 && echo test_qqq > expect && for i in c/*/*.txt; do cat $i >> expect2; done && test_cmp expect expect2 ' test_expect_success 'verify include-paths config saved by clone' ' ( cd g && git config --get svn-remote.svn.include-paths | fgrep "qqq" ) ' test_expect_success 'SVN-side change outside of www' ' ( cd s && echo b >> qqq/test_qqq.txt && svn_cmd commit -m "SVN-side change outside of www" && svn_cmd up && svn_cmd log -v | fgrep "SVN-side change outside of www" ) ' test_expect_success 'update git svn-cloned repo (config include)' ' ( cd g && git svn rebase && printf "test_qqq\nb\n" > expect && for i in */*.txt; do cat $i >> expect2; done && test_cmp expect2 expect && rm expect expect2 ) ' test_expect_success 'update git svn-cloned repo (option include)' ' ( cd c && git svn rebase --include-paths="qqq" && printf "test_qqq\nb\n" > expect && for i in */*.txt; do cat $i >> expect2; done && test_cmp expect2 expect && rm expect expect2 ) ' test_expect_success 'SVN-side change inside of ignored www' ' ( cd s && echo zaq >> www/test_www.txt svn_cmd commit -m "SVN-side change inside of www/test_www.txt" && svn_cmd up && svn_cmd log -v | fgrep "SVN-side change inside of www/test_www.txt" ) ' test_expect_success 'update git svn-cloned repo (config include)' ' ( cd g && git svn rebase && printf "test_qqq\nb\n" > expect && for i in */*.txt; do cat $i >> expect2; done && test_cmp expect2 expect && rm expect expect2 ) ' test_expect_success 'update git svn-cloned repo (option include)' ' ( cd c && git svn rebase --include-paths="qqq" && printf "test_qqq\nb\n" > expect && for i in */*.txt; do cat $i >> expect2; done && test_cmp expect2 expect && rm expect expect2 ) ' test_expect_success 'SVN-side change in and out of included qqq' ' ( cd s && echo cvf >> www/test_www.txt echo ygg >> qqq/test_qqq.txt svn_cmd commit -m "SVN-side change in and out of ignored www" && svn_cmd up && svn_cmd log -v | fgrep "SVN-side change in and out of ignored www" ) ' test_expect_success 'update git svn-cloned repo again (config include)' ' ( cd g && git svn rebase && printf "test_qqq\nb\nygg\n" > expect && for i in */*.txt; do cat $i >> expect2; done && test_cmp expect2 expect && rm expect expect2 ) ' test_expect_success 'update git svn-cloned repo again (option include)' ' ( cd c && git svn rebase --include-paths="qqq" && printf "test_qqq\nb\nygg\n" > expect && for i in */*.txt; do cat $i >> expect2; done && test_cmp expect2 expect && rm expect expect2 ) ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git svn property tests">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./lib-git-svn.sh)}) (C {(test_expect_success)} {(SQ <"setup test repository">)} { (SQ <"\n"> <"\tsvn_cmd co \"$svnrepo\" s &&\n"> <"\t(\n"> <"\t\tcd s &&\n"> <"\t\tmkdir qqq www xxx &&\n"> <"\t\techo test_qqq > qqq/test_qqq.txt &&\n"> <"\t\techo test_www > www/test_www.txt &&\n"> <"\t\techo test_xxx > xxx/test_xxx.txt &&\n"> <"\t\tsvn_cmd add qqq &&\n"> <"\t\tsvn_cmd add www &&\n"> <"\t\tsvn_cmd add xxx &&\n"> <"\t\tsvn_cmd commit -m \"create some files\" &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\techo hi >> www/test_www.txt &&\n"> <"\t\tsvn_cmd commit -m \"modify www/test_www.txt\" &&\n"> <"\t\tsvn_cmd up\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"clone an SVN repository with filter to include qqq directory">)} { (SQ <"\n"> <"\tgit svn clone --include-paths=\"qqq\" \"$svnrepo\" g &&\n"> <"\techo test_qqq > expect &&\n"> <"\tfor i in g/*/*.txt; do cat $i >> expect2; done &&\n"> <"\ttest_cmp expect expect2\n"> ) } ) (C {(test_expect_success)} {(SQ <"init+fetch an SVN repository with included qqq directory">)} { (SQ <"\n"> <"\tgit svn init \"$svnrepo\" c &&\n"> <"\t( cd c && git svn fetch --include-paths=\"qqq\" ) &&\n"> <"\trm expect2 &&\n"> <"\techo test_qqq > expect &&\n"> <"\tfor i in c/*/*.txt; do cat $i >> expect2; done &&\n"> <"\ttest_cmp expect expect2\n"> ) } ) (C {(test_expect_success)} {(SQ <"verify include-paths config saved by clone">)} { (SQ <"\n"> <"\t(\n"> <"\t cd g &&\n"> <"\t git config --get svn-remote.svn.include-paths | fgrep \"qqq\"\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"SVN-side change outside of www">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd s &&\n"> <"\t\techo b >> qqq/test_qqq.txt &&\n"> <"\t\tsvn_cmd commit -m \"SVN-side change outside of www\" &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\tsvn_cmd log -v | fgrep \"SVN-side change outside of www\"\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"update git svn-cloned repo (config include)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd g &&\n"> <"\t\tgit svn rebase &&\n"> <"\t\tprintf \"test_qqq\\nb\\n\" > expect &&\n"> <"\t\tfor i in */*.txt; do cat $i >> expect2; done &&\n"> <"\t\ttest_cmp expect2 expect &&\n"> <"\t\trm expect expect2\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"update git svn-cloned repo (option include)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd c &&\n"> <"\t\tgit svn rebase --include-paths=\"qqq\" &&\n"> <"\t\tprintf \"test_qqq\\nb\\n\" > expect &&\n"> <"\t\tfor i in */*.txt; do cat $i >> expect2; done &&\n"> <"\t\ttest_cmp expect2 expect &&\n"> <"\t\trm expect expect2\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"SVN-side change inside of ignored www">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd s &&\n"> <"\t\techo zaq >> www/test_www.txt\n"> <"\t\tsvn_cmd commit -m \"SVN-side change inside of www/test_www.txt\" &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\tsvn_cmd log -v | fgrep \"SVN-side change inside of www/test_www.txt\"\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"update git svn-cloned repo (config include)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd g &&\n"> <"\t\tgit svn rebase &&\n"> <"\t\tprintf \"test_qqq\\nb\\n\" > expect &&\n"> <"\t\tfor i in */*.txt; do cat $i >> expect2; done &&\n"> <"\t\ttest_cmp expect2 expect &&\n"> <"\t\trm expect expect2\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"update git svn-cloned repo (option include)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd c &&\n"> <"\t\tgit svn rebase --include-paths=\"qqq\" &&\n"> <"\t\tprintf \"test_qqq\\nb\\n\" > expect &&\n"> <"\t\tfor i in */*.txt; do cat $i >> expect2; done &&\n"> <"\t\ttest_cmp expect2 expect &&\n"> <"\t\trm expect expect2\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"SVN-side change in and out of included qqq">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd s &&\n"> <"\t\techo cvf >> www/test_www.txt\n"> <"\t\techo ygg >> qqq/test_qqq.txt\n"> <"\t\tsvn_cmd commit -m \"SVN-side change in and out of ignored www\" &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\tsvn_cmd log -v | fgrep \"SVN-side change in and out of ignored www\"\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"update git svn-cloned repo again (config include)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd g &&\n"> <"\t\tgit svn rebase &&\n"> <"\t\tprintf \"test_qqq\\nb\\nygg\\n\" > expect &&\n"> <"\t\tfor i in */*.txt; do cat $i >> expect2; done &&\n"> <"\t\ttest_cmp expect2 expect &&\n"> <"\t\trm expect expect2\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"update git svn-cloned repo again (option include)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd c &&\n"> <"\t\tgit svn rebase --include-paths=\"qqq\" &&\n"> <"\t\tprintf \"test_qqq\\nb\\nygg\\n\" > expect &&\n"> <"\t\tfor i in */*.txt; do cat $i >> expect2; done &&\n"> <"\t\ttest_cmp expect2 expect &&\n"> <"\t\trm expect expect2\n"> <"\t)\n"> ) } ) (C {(test_done)}) ] )