o 6a@sddlZddlZddlmZddlmZddlmZddlm Z m Z m Z ddl m Z GdddZGd d d ZGd d d Zd dZddZGdddZdS)N) TemporaryFile) exec_command) get_pythonexe)tempdirassert_ assert_warns)StringIOc@*eZdZdZd ddZddZddZdS) redirect_stdoutz9Context manager to redirect stdout for exec_command test.NcC|ptj|_dSN)sysstdout_stdout)selfrrI/usr/lib/python3/dist-packages/numpy/distutils/tests/test_exec_command.py__init__zredirect_stdout.__init__cCtj|_|jt_dSr )r r old_stdoutrrrrr __enter__ zredirect_stdout.__enter__cC |j|jt_|jdSr )rflushrr rcloserexc_type exc_value tracebackrrr__exit__ zredirect_stdout.__exit__r __name__ __module__ __qualname____doc__rrr!rrrrr   r c@r ) redirect_stderrz9Context manager to redirect stderr for exec_command test.NcCr r )r stderr_stderr)rr*rrrrrzredirect_stderr.__init__cCrr )r r* old_stderrr+rrrrr!rzredirect_stderr.__enter__cCrr )r+rr,r r*rrrrrr!%r"zredirect_stderr.__exit__r r#rrrrr)r(r)c@s*eZdZdZd ddZddZddZd S) emulate_nonposixz.Context manager to emulate os.name != 'posix' non-posixcCs ||_dSr ) _new_name)rosnamerrrr-s zemulate_nonposix.__init__cCrr )osname _old_namer/rrrrr0rzemulate_nonposix.__enter__cCs |jt_dSr )r3r1r2rrrrr!4 zemulate_nonposix.__exit__N)r.r#rrrrr-+r(r-c CsVtt6tt!tt tdWdn1s wYWdn1s/wYWdn1s>wYtjdkrt Ttt6tt!tt tdWdn1slwYWdn1s{wYWdn1swYWddSWddS1swYdSdS)Ncd '.'posix) r rr)rrDeprecationWarningrr1r2r-rrrrtest_exec_command_stdout8s0        "r8c CsZttdd6tt!tt tdWdn1s"wYWdn1s1wYWdn1s@wYtjdkrt Ttt6tt!tt tdWdn1snwYWdn1s}wYWdn1swYWddSWddS1swYdSdS)Nzw+)moder5r6) r rr)rrr7rr1r2r-rrrrtest_exec_command_stderrPs0        "r:c@s<eZdZddZddZddZddZd d Zd d Zd S)TestExecCommandcCs t|_dSr )rpyexerrrrsetupar4zTestExecCommand.setupcKsVtd\}}t|dkt|dktd|j\}}t|dkt|dkdS)Nzcmd /C echo path=%path%rz3"%s" -c "import sys;sys.stderr.write(sys.platform)"win32)rrr<rkwssorrrcheck_ntds   zTestExecCommand.check_ntcKstjdi|\}}t|dkt|dktjdi|\}}t|dkt|dktjdddi|\}}t|dkt|dktjdi|\}}t|dkt|dkd tjvrd tjd <tjdi|\}}t|dkt|d ktjdd d i|\}}t|dkt|d ktjdi|\}}t|dkt|d ktjd =tjdi|\}}t|dkt|dktjdi|\}}t|dkt|dktjdi|\}}t|dkt|dktjd|jfi|\}}t|dkt|dkdS)N echo HellorHello echo $AAAr> echo "$AAA"AAATereBBBHi echo "$BBB"Heythis_is_not_a_commandecho path=$PATHz1"%s" -c "import sys,os;sys.stderr.write(os.name)"r6)rE)rG)rH)rM)rO)rP)rrr1environr<r@rrr check_posixnsT                       zTestExecCommand.check_posixcGstjd|jfi|\}}t|dkt|dktjd|jfi|\}}t|dkt|dktjd|jfi|\}}t|dkt|dktjd|jfi|\}}t|dkt|d kdS) Nz"%s" -c "raise 'Ignore me.'"rr>zV"%s" -c "import sys;sys.stderr.write('0');sys.stderr.write('1');sys.stderr.write('2')"012z!"%s" -c "import sys;sys.exit(15)"z"%s" -c "print('Heipa'")Heipa)rr<rr@rrr check_basics<       zTestExecCommand.check_basicc Kstf}d}tj||}t|d }|dWdn1s"wYtjd|j|ffi|\}}t|dkt|dktjd|j|ffd|i|\}}t|dkt|dkWddS1slwYdS) NfilewrFz("%s" -c "f = open('%s', 'r'); f.close()"rr>z9"%s" -c "f = open('%s', 'r'); print(f.read()); f.close()" execute_in) rr1pathjoinopenwriterr<r)rrAtmpdirfntmpfilefrBrCrrrcheck_execute_ins6     "z TestExecCommand.check_execute_inc CsttittKtt7tjdkr#|jdd|jddntjdkr4|jdd|jdd|j dd|j ddWdn1sJwYWdn1sYwYWddSWddS1sqwYdS)Nr6r)use_teent) r rr)rr7r1r2rRrDrbrrrr test_basics"         "zTestExecCommand.test_basicN) r$r%r&r=rDrRrVrbrfrrrrr;`s 4 r;)r1r tempfilernumpy.distutilsrnumpy.distutils.exec_commandr numpy.testingrrriorr r)r-r8r:r;rrrrs