#!/bin/sh # # Copyright (c) 2009 Vitaly Shukela # Copyright (c) 2009 Eric Wong # 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 && echo test_qqq > qqq/test_qqq.txt && echo test_www > www/test_www.txt && svn_cmd add qqq && svn_cmd add www && 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 ignored www directory' ' git svn clone --ignore-paths="^www" "$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 ignored www directory' ' git svn init "$svnrepo" c && ( cd c && git svn fetch --ignore-paths="^www" ) && rm expect2 && echo test_qqq > expect && for i in c/*/*.txt; do cat $i >> expect2; done && test_cmp expect expect2 ' test_expect_success 'verify ignore-paths config saved by clone' ' ( cd g && git config --get svn-remote.svn.ignore-paths | fgrep "www" ) ' 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 ignore)' ' ( 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 ignore)' ' ( cd c && git svn rebase --ignore-paths="^www" && 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 ignore)' ' ( 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 ignore)' ' ( cd c && git svn rebase --ignore-paths="^www" && 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 ignored www' ' ( 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 ignore)' ' ( 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 ignore)' ' ( cd c && git svn rebase --ignore-paths="^www" && 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: [16] ) ] spids: [16] ) (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 &&\n"> <"\t\techo test_qqq > qqq/test_qqq.txt &&\n"> <"\t\techo test_www > www/test_www.txt &&\n"> <"\t\tsvn_cmd add qqq &&\n"> <"\t\tsvn_cmd add www &&\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 ignored www directory">)} { (SQ <"\n"> <"\tgit svn clone --ignore-paths=\"^www\" \"$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 ignored www directory">)} { (SQ <"\n"> <"\tgit svn init \"$svnrepo\" c &&\n"> <"\t( cd c && git svn fetch --ignore-paths=\"^www\" ) &&\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 ignore-paths config saved by clone">)} { (SQ <"\n"> <"\t(\n"> <"\t cd g &&\n"> <"\t git config --get svn-remote.svn.ignore-paths | fgrep \"www\"\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 ignore)">)} { (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 ignore)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd c &&\n"> <"\t\tgit svn rebase --ignore-paths=\"^www\" &&\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 ignore)">)} { (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 ignore)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd c &&\n"> <"\t\tgit svn rebase --ignore-paths=\"^www\" &&\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 ignored www">)} { (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 ignore)">)} { (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 ignore)">)} { (SQ <"\n"> <"\t(\n"> <"\t\tcd c &&\n"> <"\t\tgit svn rebase --ignore-paths=\"^www\" &&\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)}) ] )