ó Ž7ÈPc@€s…ddlmZddlZddlZedkrzejjejjejjejjeƒƒƒƒgeje_ndZ ddl Z e j dƒddl Z ddl Z ddlZddlZddlZddlmZddlmZmZmZmZmZddlZdejkZd„ZejjejjeƒƒZd e jfd „ƒYZ edkre j!ƒndS( iÿÿÿÿ(twith_statementNt__main__tBazki(tcommand(tcustomtmodelttestingtdbt conversions-vcC€sqts|jdƒntj|dtjdtjƒ}|jƒ\}}|jdkrmt|j|ƒ‚ndS(Ns-qtstdouttstderri(tverbosetappendt subprocesstPopentPIPEt communicatet returncodetEnvironmentError(tcmdtptoutterr((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pytruns !tBazsvnWithBazbasecB€sUeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d „Z"d!„Z#d"„Z$d#„Z%d$„Z&RS(%cC€s`tj|dtjdtjƒ}|jƒ\}}|j||jƒ|j||k|ƒdS(NR R (R RRRt assertEqualsRt assertTrue(tselfRtstatustmessageRRR((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pytexpectRunGetsStatus$s  c C€sqtjƒ|_tjƒtj|_tj t_t j j ƒt j ƒt j jƒt j jƒtjƒtj jƒtjddƒ|_|jtj_tjdd|jgƒtjtjjtdƒtjj|jddƒƒddd d d d tjjtd ƒd|jg}t|ƒtjddƒ|_tddd|j|jgƒtj|jƒdS(Ntsuffixs .testrepotsvnadmintcreates pre-committhookstsvntimports --usernametbazkis-msBootstrapping...Rsfile://s .testcheckouttcos file://%s( tostgetcwdtcwdRtset_up_for_testsRtversion_control_hookt old_vcs_hooktbazsvnthookRtsessiontbegintcleartcommittcloseRtinvalidate_cachetclear_checkoutsttempfiletmkdtemptrepot REPOSITORYR t check_calltsymlinktpathtjointhereRtcheckouttchdir(Rt import_cmd((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pytsetUp+s.           cC€s@tj|jƒtj|jƒtj|jƒ|jt_ dS(N( tshutiltrmtreeR?R8R'R@R)R,RR+(R((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttearDownKsc C€sÜd}t|dƒ}|jdjdƒƒWdQXtdd|gƒtdddd gƒtjƒmtjjd ƒ}|j d t |d j dƒƒ|j d t |dj dƒƒ|j d|j j ƒWdQXdS(NsObject/Test/UnitTest.yamltwu=comment: | This was created—in a unit test! name: George sutf-8R#taddtcis-ms unit testuUnitTestuGeorgeunameu#This was created—in a unit test! ucommentuTest(topentwritetencodeRRtbegin_transactionRtElementtgetRtunicodetvaluetparenttename(RR<toutfte((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_add_childQs   c C€s¼d}t|dƒ}|jdƒWdQXtddddgƒtjƒitjjdƒ}|jd t |d j d ƒƒtjjd ƒ}|jd t |d j d ƒƒWdQXdS( NsObject/Test/Test.yamltas name: Paul R#RHs-ms unit testuTestuPaulunamesutf-8uSandbox( RIRJRRRLRRMRNRRORP(RR<RSRTte2((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_add_propvalas    c C€s¶d}t|dƒ}|jdƒWdQXtddddgƒtjƒctjjdƒ}|jd t |d j d ƒƒtjjd ƒ}|jd |d j ƒƒWdQXdS( NsObject/Test/Test.yamlRVsproduct: Paul R#RHs-ms unit testuTestuPauluproductsutf-8uSandbox( RIRJRRRLRRMRNRRORPtrender(RR<RSRTRW((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt(test_add_propval_default_parent_dot_thisos   c C€s°d}t|dƒ}|jdƒWdQXtddddgƒtjƒ]tjjdƒ}|jd |kƒ|j d t |d j d ƒƒ|j d |kƒWdQXdS( NsObject/Test/MergeTest.yamlRFsHcomment: This test edits the comment and removes the 'test' prop value. R#RHs-ms unit testu MergeTestucommentu>This test edits the comment and removes the 'test' prop value.sutf-8utest( RIRJRRRLRRMRNRRRORPt assertFalse(RR<RSRT((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_remove_propval|s   c C€s§d}tj|ƒ|d}t|dƒ}|jdƒWdQXtdd|gƒ|jdddd gd d ƒtjƒ!|jt j t j j d ƒWdQXdS( NsObject/Test/UnitTests/UnitTest.yamlRFs;comment: | This was created in a unit test. name: George R#RGRHs-ms unit testis^If UnitTest has no kids, it needs to be in the form UnitTest.yaml, not UnitTest/UnitTest.yaml!uUnitTest( R'tmkdirRIRJRRRRLt assertRaisesRt NoResultFoundRMRN(RtdirpathR<RS((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt(test_add_child_with_leaf_directory_failsˆs    c C€sšd}|d}t|dƒ}|jdƒWdQXtdd|gƒ|jdddd gd d ƒtjƒ!|jtjtj j d ƒWdQXdS( Ns Object/Tests/UnitTest.yamlRFsHparent: Test comment: | This was created in a unit test. name: George R#RGRHs-ms unit testis6'parent' specified in non-toplevel element 'UnitTest'!uUnitTest( RIRJRRRRLR^RR_RMRN(RR`R<RS((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt-test_add_non_toplevel_child_with_parent_fails˜s   cC€sbd}tdd|gƒtddddgƒtjƒ!|jtjtjjdƒWdQXdS(NsObject/Test/MergeTest.yamlR#trmRHs-ms unit testu MergeTest(RRRLR^RR_RMRN(RR<((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_remove_child¨s  cC€s¿d}d}d}d}tdd|gƒtdd||gƒtdd|gƒtddd d gƒtjƒC|jd tjjd ƒjjƒ|j tj tjjd ƒWdQXdS(NsObject/User/Admin/Daemon.yamlsObject/User/Admin/Admin.yamlsObject/User/Admin.yamlsObject/User/Admin/R#RctmvRHs-ms unit testtUseruAdminuDaemon( RRRLRRRMRNRQRRR^R_(RR<t parent_fromt parent_tot parent_dir((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_remove_last_child°s "cC€sqd}tdd|gƒ|jddddgddƒtjƒ'|jd tjjd ƒjj ƒWdQXdS( NsObject/User/Admin/Daemon.yamlR#RcRHs-ms unit testisRIf Admin has no kids, it needs to be in the form Admin.yaml, not Admin/Admin.yaml!uAdminuDaemon( RRRRLRRRMRNRQRR(RR<((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt<test_remove_last_child_without_removing_leaf_directory_fails¾s  cC€sÎd}d}d}d}d}tdd||gƒtdd||gƒtdd|gƒtdd d d gƒtjƒI|jd tjjd ƒjjƒ|jdtjjdƒjjƒWdQXdS(NsObject/User/AdminsObject/Test/Admins Object/UsersObject/User/User.yamlsObject/User.yamlR#ReRcRHs-ms unit testtTestuAdmintAdminuDaemon( RRRLRRRMRNRQRR(Rt path_fromtpath_toRiRgRh((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_move_subtreeÈs " c C€sÄd}d}d}d}tdd||gƒt|dƒ}|jdƒWdQXtdd d d gƒtjƒI|jd tjjd ƒj j ƒ|jdtjjdƒj j ƒWdQXdS(NsObject/User/AdminRmsAdmin/Admin.yamls Object/UserR#ReRFsparent: User comment: whateverRHs-ms unit testRfuAdminuDaemon( RRIRJRRLRRRMRNRQRR(RRnRot path_to_yamlRiRS((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_move_to_toplevel×s " cC€s~d}tdd|gƒtddddgƒtjƒ=|jtjtjjdƒ|jtjtjjdƒWdQXdS( Ns Object/TestR#RcRHs-ms unit testuTestuSandbox(RRRLR^RR_RMRN(RR<((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_remove_subtreeås cC€s¿d}d}d}d}tdd|gƒtdd||gƒtdd|gƒtddd d gƒtjƒC|jtjtjjd ƒ|jd tjjd ƒj ƒƒWdQXdS(NsObject/User/Admins Object/UsersObject/User/User.yamlsObject/User.yamlR#RcReRHs-ms unit testuAdminiuUser( RRRLR^RR_RMRNRtcountDescendants(RR<RiRgRh((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_remove_last_subtreeîs cC€s“d}tdd|gƒ|jddddgddƒtjƒI|jd tjjd ƒjj ƒ|jd tjjd ƒjj ƒWdQXdS( NsObject/User/AdminR#RcRHs-ms unit testisNIf User has no kids, it needs to be in the form User.yaml, not User/User.yaml!uUseruAdminuDaemon( RRRRLRRRMRNRQRR(RR<((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt>test_remove_last_subtree_without_removing_leaf_directory_failsûs   c C€sVd}tj|ƒd}t|dƒ}|jdƒWdQXd}t|dƒ}|jdƒWdQXtdd|gƒtdd d d gƒtjƒ²tjj d ƒ}|j d t |dj dƒƒtjj dƒ}|j dt |dj dƒƒ|j dt |dj dƒƒ|j d|j jƒ|j ||j ƒWdQXdS(NsObject/Test/UnitTest/s"Object/Test/UnitTest/UnitTest.yamlRFs;comment: | This was created in a unit test. name: George s!Object/Test/UnitTest/TestTwo.yamls6comment: | Also created in a unit test. name: Ringo R#RGRHs-ms unit testuUnitTestuGeorgeunamesutf-8uTestTwouRingou!This was created in a unit test. ucommentuTest(R'R]RIRJRRRLRRMRNRRORPRQRR(RtdirR<RStpath2RTRW((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_add_subtrees*       c C€sÈd}d}t|dƒ}|jdƒWdQXt|dƒ}|jdƒWdQXtdd|gƒtdd d d gƒtjƒ7tjjd ƒ}|jd t |dj dƒƒWdQXdS(NsObject/Test/Test.yamlsObject/Test/existent.txtRVsname: !include existent.txt RFtPaulR#RGRHs-ms unit testuTestuPaulunamesutf-8( RIRJRRRLRRMRNRRORP(RR<tincludeRStincfRT((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_add_include"s  cC€sNd}t|dƒ}|jdƒWdQX|jddddgdd ƒdS( NsObject/Test/Test.yamlRVsname: !include nonexistent.txt R#RHs-ms unit testis'Couldn't read include 'nonexistent.txt'(RIRJR(RR<RS((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_add_broken_include_fails0s  c C€s¯d}d}t|dƒ}|jdƒWdQXtdd|gƒtdddd gƒtjƒC|jd tjjd ƒkƒ|j d tjjd ƒkƒWdQXdS( NsObject/Test/IncludeTest.yamlsObject/Test/product.txtRFscomment: No include.R#RcRHs-ms unit testucommentu IncludeTestuproduct( RIRJRRRLRRRMRNR[(RR<R{RS((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_remove_include8s c C€sœd}d}t|dƒ}|jdƒWdQXtddddgƒtjƒC|jd tjjd ƒkƒ|j d tjjd ƒkƒWdQXdS( NsObject/Test/IncludeTest.yamlsObject/Test/product.txtRFscomment: No include.R#RHs-ms unit testucommentu IncludeTestuproduct( RIRJRRRLRRRMRNR[(RR<R{RS((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt)test_remove_include_without_removing_fileCs cC€sBd}d}tdd|gƒ|jddddgdd ƒdS( NsObject/Test/IncludeTest.yamlsObject/Test/product.txtR#RcRHs-ms unit testis<Couldn't read include 'product.txt' for IncludeTest.product!(RR(RR<R{((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyt/test_remove_file_without_removing_include_failsMs c C€sd}d}t|dƒ}|jdƒWdQXtddddgƒtjƒ7tjjd ƒ}|jdt |d j d ƒƒWdQXdS( NsObject/Test/IncludeTest.yamlsObject/Test/product.txtRFt42R#RHs-ms unit testu IncludeTestuproductsutf-8( RIRJRRRLRRMRNRRORP(RR<R{R|RT((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_change_includeUs c C€sd}d}t|dƒ}|jdƒWdQXtddddgƒtjƒ7tjjd ƒ}|jd t |d j d ƒƒWdQXdS( NsObject/Test/IncludeTest.yamlsObject/Test/product.txtRFs!comment: Now inline. product: 17 R#RHs-ms unit testu IncludeTestt17uproductsutf-8( RIRJRRRLRRMRNRRORP(RR<R{RSRT((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_include_to_inline_s  c C€sÈd}d}t|dƒ}|jdƒWdQXt|dƒ}|jdƒWdQXtdd|gƒtddd d gƒtjƒ7tjjd ƒ}|jd t |d j dƒƒWdQXdS(NsObject/Test/MergeTest.yamlsObject/Test/existent.txtRFs:comment: Now with an include! test: !include existent.txt sThe banner should be Blue!R#RGRHs-ms unit testu MergeTestuThe banner should be Blue!utestsutf-8( RIRJRRRLRRMRNRRORP(RR<R{RSR|RT((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyttest_inline_to_includeks   c C€sVd}tj|ƒd}t|dƒ}|jdƒWdQXtdd|gƒtdddd gƒtjƒWtjj d ƒ}|j d t |d j d ƒƒ|j d|j jƒd|d tTestCaseRtmain(((sO/afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazsvn/test/with_bazbase.pyts( +   (  ÿÔ