Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/twisted/test/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyc


oUNc@sdZddlmZddlmZdejfdYZdejfdYZdejfd	YZ	d
ejfdYZ
dejfd
YZdejfdYZdejfdYZ
dejfdYZdejfdYZdejfdYZdejfdYZdejfdYZdejfdYZdejfdYZd ejfd!YZd"ejfd#YZd$S(%sK
Tests for L{twisted.python.usage}, a command line option parsing library.
i(tunittest(tusagetWellBehavedcBsqeZddddgdddgdddgd	dd
dggZdd
dgddggZdZdZRS(tlongtwtdefaultsand a docstringtanothertnsno docstringtlongonlytnoshortt	shortlesstexceptsthis one got docstringtaflagtfsO

                 flagallicious docstringness for this here

                 tflouttocCsd|jd<dS(NsPONY!tmyflag(topts(tself((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt
opt_myflagscCsd|f|jd<dS(Ns%s WITH A PONY!tmyparam(R(Rtvalue((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pytopt_myparam sN(t__name__t
__module__tNonet
optParameterstoptFlagsRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRs		tParseCorrectnessTestcBs2eZdZdZdZdZdZRS(sJ
    Test Options.parseArgs for correct values under good conditions.
    cCs2dj|_t|_|jj|jdS(sL
        Instantiate and parseOptions a well-behaved Options class.
        sA--long Alpha -n Beta --shortless Gamma -f --myflag --myparam TofuN(tsplittniceArgVRtnicetparseOptions(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pytsetUp)scCsl|j|jjdd|j|jjdd|j|jjdd|j|jjddd	S(
s?
        Checking that parameters have correct values.
        RtAlphaRtBetaRR	R
tGammaN(tassertEqualRR(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_checkParameters6scCs8|j|jjdd|j|jjdddS(s:
        Checking that flags have correct values.
        RiRiN(R%RR(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_checkFlags?scCs8|j|jjdd|j|jjdddS(sP
        Checking that custom flags and parameters have correct values.
        RsPONY!RsTofu WITH A PONY!N(R%RR(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_checkCustomsFs(RRt__doc__R!R&R'R((((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR%s
	
			tTypedOptionscBseeZddddegddddegddddegdddd	eggZd
ZeZRS(tfoointisFoo inttfoofloatgQ@s	Foo floatteggintsEgg int without defaultteggfloatsEgg float without defaultcCs
||_dS(sg
        This option has an underscore in its name to exercise the _ to -
        translation.
        N(tunderscoreValue(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pytopt_under_scoreWsN(RRRtinttfloatRR0topt_u(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR*Os	t
TypedTestCasecBsDeZdZdZdZdZdZdZdZRS(s?
    Test Options.parseArgs for options with forced types.
    cCst|_dS(N(R*R(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR!escCsg}|jj||j|jjdd|jt|jjdt|j|jjdd|jt|jjdt|j|jjdd|j|jjdddS(s1
        Test parsing of default values.
        R+iR,gQ@R-R.N(	RR R%Rtassert_t
isinstanceR1R2R(RtargV((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_defaultValueshs  cCsdj}|jj||j|jjdd|jt|jjdt|j|jjdd|jt|jjdt|j|jjdd|jt|jjdt|j|jjdd	|jt|jjdtd
S(s=
        Test basic parsing of int and float values.
        s8--fooint 912 --foofloat -823.1 --eggint 32 --eggfloat 21R+iR,g̸R-i R.g5@N(	RRR R%RR5R6R1R2(RR7((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_parsingValuesvs   cCs0|jjddg|j|jjddS(sw
        A dash in an option name is translated to an underscore before being
        dispatched to a handler.
        s
--under-scoretfooN(RR R%R/(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_underscoreOptionscCs0|jjddg|j|jjddS(sE
        An option name with a dash in it can have an alias.
        s-utbarN(RR R%R/(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_underscoreOptionAliasscCs,dj}|jtj|jj|dS(sB
        Check that passing wrong values raises an error.
        s--fooint eggN(RtassertRaisesRt
UsageErrorR (RR7((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_invalidValuess(	RRR)R!R8R9R;R=R@(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR4as						tWrongTypedOptionscBs eZdddddggZRS(tbarwrongsBar with wrong coercetheN(RRRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRAstWeirdCallableOptionscBsDeZdZdZddddegddddeggZRS(cCstddS(NtOuch(tRuntimeError(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt_barscCstddS(NtYay(t
ValueError(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt_foosRBsBar with strange callabletfoowrongsFoo with strange callableN(RRRGRJRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRDs		tWrongTypedTestCasecBs)eZdZdZdZdZRS(s:
    Test Options.parseArgs for wrong coerce options.
    cCs/t}dj}|jt|j|dS(s=
        Check that using a non callable type fails.
        s--barwrong eggN(RARR>t	TypeErrorR (RtusR7((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_nonCallables	cCs t}g}|j|dS(sb
        Test that the coerce functions are not called if no values are
        provided.
        N(RDR (RRNR7((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_notCalledInDefaults	cCsut}dj}|jtj|j|}|jt|dt}dj}|jt|j|dS(sG
        Test what happens when coerce functions raise errors.
        s--foowrong blahs&Parameter type enforcement failed: Yays--barwrong blahN(	RDRR>RR?R R%tstrRF(RRNR7te((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_weirdCallables		(RRR)RORPRS(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRLs			t
OutputTestcBseZdZRS(cCsAt}|jtj|jdg}|jt|ddS(sF
        Error output case adjustment does not mangle options
        s-Zsoption -Z not recognizedN(RR>RR?R R%RQ(RtoptRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_uppercasings	(RRRV(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRTstInquisitionOptionscBseZdgZdgZRS(texpectRRstorture-devicettscomfy-chairsset preferred torture device(RXRR(storture-deviceRYscomfy-chairsset preferred torture device(RRRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRWs	tHolyQuestOptionscBseZddgZRS(t	horsebackthsuse a horses	for-grailtg(R[R\suse a horse(s	for-grailR](RRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRZstSubCommandOptionscBs5eZd	gZddedfddedfgZRS(
seuropian-swallows$set default swallow type to EuropiantinquisitiontinquestsPerform an inquisitiont	holyquesttquestsEmbark upon a holy questN(seuropian-swallowNs$set default swallow type to Europian(RRRRRWRZtsubCommands(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR^s			tSubCommandTestcBsPeZdZdZdZdZdZdZdZdZ	RS(cCst}|jddg|j|dt|j|jd|jt|jt|j|jdt	|j|jdddS(Ns--europian-swallowR_seuropian-swallowRXstorture-devicescomfy-chair(
R^R R%tTruet
subCommandt
failUnlessR6t
subOptionsRWtFalse(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_simpleSubcommands	cCst}|jdddg|j|dt|j|jd|jt|jt|j|jdt	|j|jdddS(NR_s--expects--torture-device=featherseuropian-swallowRXstorture-devicetfeather(
R^R R%RiRfRgR6RhRWRe(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt"test_subcommandWithFlagsAndOptionss	cCst}|jdddg|j|dt|j|jd|jt|jt|j|jdt	|j|jdddS(	NR`s--expects--torture-device=featherseuropian-swallowR_RXstorture-deviceRk(
R^R R%RiRfRgR6RhRWRe(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt'test_subcommandAliasWithFlagsAndOptionss	cCst}|jddg|j|dt|j|jd|jt|jt|j|jdt|j|jdt	dS(NRas--for-grailseuropian-swallowR[s	for-grail(
R^R R%RiRfRgR6RhRZRe(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt)test_anotherSubcommandWithFlagsAndOptionss	cCsZt}|jdg|j|dt|j|jd|jt|ddS(Ns--europian-swallowseuropian-swallowRh(R^R R%ReRfRtfailIfthasattr(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_noSubcommand&s
	cCst}d|_|jdg|j|dt|j|jd|jt|jt	|j|jdt
|j|jdddS(NR`s--europian-swallowseuropian-swallowR_RXstorture-devicescomfy-chair(R^tdefaultSubCommandR R%ReRfRgR6RhRWRi(RR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_defaultSubcommand-s		csdtjfdYdtjffdY}|}|jdg|jt|jd|j|jj|dS(NtSubOptcBseZdZRS(c_s&|j|_tjj|||dS(N(tparentt	sawParentRtOptionsR (Rtatkw((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR 9s(RRR (((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRt8stOptcseZdddfgZRS(R:R
R<(RRRc((Rt(s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRz<sR:Rv(RRwR RgRpRhR%Rv(RRzR((Rts;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt$test_subCommandParseOptionsHasParent7s	csdtjfdYdtjffdY}dtjffdY}|}|jdg|}|jdg|jt|jd	|jt|jd	|j|jj||j|jj|d
S(sh
        The .parent pointer is correct even when the same Options class is
        used twice.
        RtcBseZRS((RR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRtJstOptFoocseZdddfgZRS(R:R
tquux(RRRc((Rt(s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR|LstOptBarcseZdddfgZRS(R<tbR}(RRRc((Rt(s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR~PsR:R<RuN(RRwR RgRpRhtfailUnlessIdenticalRu(RR|R~toFootoBar((Rts;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_subCommandInTwoPlacesEs		(
RRRjRlRmRnRqRsR{R(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRds										
	tHelpStringTestcBs#eZdZdZdZRS(cCsdj|_t|_dS(s;
        Instantiate a well-behaved Options class.
        sA--long Alpha -n Beta --shortless Gamma -f --myflag --myparam TofuN(RRRR(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR!_scCs8y|jjWn tk
r3}|j|nXdS(s,
        __str__ shouldn't go boom.
        N(Rt__str__t	Exceptiontfail(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt
test_noGoBoomjscCszgt|jjD]!}|jddkr|^q}|jt|dk|j|djddkdS(sK
        Extra whitespace in flag and parameters docs is stripped.
        Rit
flagalliciousN(RQRt
splitlinestfindRgtlen(Rtstlines((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt&test_whitespaceStripFlagsAndParametersss=(RRR!RR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR^s			tPortCoerceTestCasecBs eZdZdZdZRS(s3
    Test the behavior of L{usage.portCoerce}.
    cCsO|jdtjd|jdtjd|jdtjddS(s4
        Test the answers with valid input.
        it0it3210it65535N(R%Rt
portCoerce(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_validCoercescCs\|jttjd|jttjd|jttjd|jttjddS(s"
        Test error path.
        ts-21t212189R:N(R>RIRR(R((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_errorCoerces(RRR)RR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR~s	tZshCompleterTestCasecBsheZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZRS(s
    Test the behavior of the various L{twisted.usage.Completer} classes
    for producing output usable by zsh tab-completion system.
    cCsrtj}|jdtj}|j|dtjdddt}|jdtj}|j|ddS(sX
        Completer produces zsh shell-code that produces no completion matches.
        ssome-options
:some-option:tdescrssome actiontrepeats*:some action:N(Rt	Completert
_shellCodet_ZSHR%Re(Rtctgot((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_completerscCstj}|jdtj}|j|dtjd}|jdtj}|j|dtjddddt}|jdtj}|j|dd	S(
sn
        CompleteFiles produces zsh shell-code that completes file names
        according to a glob.
        ssome-options:some-option (*):_files -g "*"s*.pys$:some-option (*.py):_files -g "*.py"Rssome actionRs%*:some action (*.py):_files -g "*.py"N(Rt
CompleteFilesRRR%Re(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt
test_filesscCsrtj}|jdtj}|j|dtjdddt}|jdtj}|j|ddS(sV
        CompleteDirs produces zsh shell-code that completes directory names.
        ssome-options:some-option:_directoriesRssome actionRs*:some action:_directoriesN(RtCompleteDirsRRR%Re(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt	test_dirsscCstjd}|jdtj}|j|dtjdddg}|jdtj}|j|dtjdddgdd	d
t}|jdtj}|j|ddS(
sw
        CompleteList produces zsh shell-code that completes words from a fixed
        list of possibilities.
        tABCssome-options:some-option:(A B C)t1t2t3s:some-option:(1 2 3)Rssome actionRs*:some action:(1 2 3)N(RtCompleteListRRR%Re(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt	test_lists	cCstjd}|jdtj}|j|dtjdddg}|jdtj}|j|dtjdddgdd	d
t}|jdtj}d}|j||dS(
s
        CompleteMultiList produces zsh shell-code that completes multiple
        comma-separated words from a fixed list of possibilities.
        Rssome-options-:some-option:_values -s , 'some-option' A B CRRRs-:some-option:_values -s , 'some-option' 1 2 3Rssome actionRs.*:some action:_values -s , 'some action' 1 2 3N(RtCompleteMultiListRRR%Re(RRRtexpected((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_multiLists	cCsrtj}|jdtj}|j|dtjdddt}|jdtj}|j|ddS(sd
        CompleteUsernames produces zsh shell-code that completes system
        usernames.
        ssome-options:some-option:_usersRssome actionRs*:some action:_usersN(RtCompleteUsernamesRRR%Re(RRtout((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_usernamesscCsrtj}|jdtj}|j|dtjdddt}|jdtj}|j|ddS(sc
        CompleteGroups produces zsh shell-code that completes system group
        names.
        ssome-options:group:_groupsRssome actionRs*:some action:_groupsN(RtCompleteGroupsRRR%Re(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_groupsscCsrtj}|jdtj}|j|dtjdddt}|jdtj}|j|ddS(sU
        CompleteHostnames produces zsh shell-code that completes hostnames.
        ssome-options:some-option:_hostsRssome actionRs*:some action:_hostsN(RtCompleteHostnamesRRR%Re(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_hostnames	scCs~tj}|jdtj}|j|jdtjdddt}|jdtj}|j|jddS(s
        CompleteUserAtHost produces zsh shell-code that completes hostnames or
        a word of the form <username>@<hostname>.
        ssome-options:host | user@host:Rssome actionRs*:some action:N(RtCompleteUserAtHostRRt
assertTruet
startswithRe(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_userAtHostscCsrtj}|jdtj}|j|dtjdddt}|jdtj}|j|ddS(sv
        CompleteNetInterfaces produces zsh shell-code that completes system
        network interface names.
        ssome-options:some-option:_net_interfacesRssome actionRs*:some action:_net_interfacesN(RtCompleteNetInterfacesRRR%Re(RRR((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_netInterfaces$s(
RRR)RRRRRRRRRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRs	
		
					
	tCompleterNotImplementedTestCasecBseZdZdZRS(ss
    Using an unknown shell constant with the various Completer() classes
    should raise NotImplementedError
    c
Cstjtjtjtjtjtjtjtjtj	tj
g
}xJ|D]B}y
|}Wn|d}nX|jt
|jddqIWdS(sM
        Using an unknown shellType should raise NotImplementedError
        tbad_shell_typeN(RRRRRRRRRRRRR>tNotImplementedErrorR(Rtclassestclstaction((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyttest_unknownShell8s

(RRR)R(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR3sN(R)t
twisted.trialRttwisted.pythonRRwRtTestCaseRR*R4RARDRLRTRWRZR^RdRRRR(((s;/usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt<module>s$*@%^