a *Na/@sddlZddlZddlZddlZddlmZddlZddlmZej dgdddZ ej dgd d d Z d d Z ddZddZddZddZdS)N)redirect_stderr)clizwhat,expected_class))classClass) test-class TestClass)ztest-longer-classZTestLongerClass)current-user-gpg-keyCurrentUserGPGKey) user-gpg-key UserGPGKey) ldap-group LDAPGroupcCs6dd}t|di}||j|<t|||ks2JdS)NcSsdSNrrrn/private/var/folders/js/6pj4vh5d4zd0k6bxv74qrbhr0000gr/T/pip-target-22xwyzbs/lib/python/tests/unit/test_cli.py _namespace*sz$test_what_to_cls.._namespacer)type__dict__rZ what_to_cls)whatZexpected_classrZ ExpectedClassrrrtest_what_to_clss   rzclass_name,expected_what))rr)rr)ZTestUPPERCASEClassztest-uppercase-class)ZUPPERCASETestClasszuppercase-test-class)r r)r r )r r cCs"t|di}t||ksJdS)Nr)rrZ cls_to_what) class_nameZ expected_whatrrrrtest_cls_to_what3s rc Cst}t|Dtt}tdWdn1s<0YWdn1sZ0Y|dkstJ|j j dksJdS)Nfoobarzfoobar ) ioStringIOrpytestraises SystemExitrZdiegetvaluevaluecode)fltestrrrtest_dieEs   Fr$c Cs*td}|dksJtd}|dus,Jtd}|dksBJtd}|dusXJt\}}t|dt|td|}|dksJt|t }t |ft t }tdWdn1s0Y|dksJ|jjdksJWdn1s0YdS) NrTrscontentz@%scontentz@/thisfileprobablydoesntexistzD[Errno 2] No such file or directory: '/thisfileprobablydoesntexist' )rZ _parse_valuetempfilemkstemposwritecloseunlinkrrrrrrrr r!)retfdZ temp_pathr"excrrrtest_parse_valueNs*               ( r/cCsDt}|gd}|js J|jdks.J|jddgks@JdS)N)z-vz-ggl_id-cfoo.cfgr1bar.cfgr0r2r3)rZ_get_base_parser parse_argsverbosegitlab config_fileparserargsrrrtest_base_parserms  r;cCs6t}|ddg}|jdks$J|jdks2JdS)Nprojectlist)r _get_parserr4rZwhactionr8rrrtest_v4_parse_argsusr?cCst}tdd|jD}|dus(Jd|jvs6Jtdd|jdjD}|dus\Jd|jvsjJd|jvsxJd|jvsJd|jvsJd |jvsJd |jvsJd |jvsJ|jd j}|d jrJtd d|jdjD}|jd j}|djsJdS)Ncss|]}t|tjr|VqdSr isinstanceargparseZ_SubParsersAction.0actionrrr ~s z!test_v4_parser..r<css|]}t|tjr|VqdSrr@rCrrrrFs r=getdeleteupdatecreatearchive unarchivez --descriptioncss|]}t|tjr|VqdSrr@rCrrrrFs groupz--name)rr>nextZ_actionschoicesZ_option_string_actionsrequired)r9Z subparsersZuser_subparsersZactionsrrrtest_v4_parser|s0      rQ)rBrr(r& contextlibrrr6rmarkZ parametrizerrr$r/r;r?rQrrrrs*