a  zeT@sddlZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z ddlmZddlm Z Gddde je jejZd d Zed kreedS) N) run_unittest unix_shell)support)find_executable)spawn)DistutilsExecErrorc@s6eZdZeejdvdddZddZddZ d S) SpawnTestCase)ntposixzRuns only under posix or ntcCs|}tjdkr2tj|d}||dtntj|d}||dt|d| t t |gtjdkrtj|d}||dtntj|d}||dt|dt |gdS) Nwin32zfoo.shz #!%s exit 1zfoo.batzexit 1iz #!%s exit 0zexit 0) mkdtempsysplatformospathjoinZ write_filerchmod assertRaisesrr)selfZtmpdirZexerN/opt/bitninja-python-dojo/embedded/lib/python3.9/distutils/tests/test_spawn.py test_spawns      zSpawnTestCase.test_spawnc Cst}tj}|d}tj||}t|dWdn1sH0Yt|tj t ||d}| ||t j dkrt ||d}| ||t|$t |}| ||Wdn1s0Yd|}t ||d}||t}d|d<tjjd|d d tjd |bt |}||t|$t |}| ||Wdn1st0YWdn1s0YWdn1s0YWdn1s0Yt}tj|d<tjjddd d tjd dbt |}||t|$t |}| ||Wdn1s^0YWdn1s~0YWdn1s0YWdn1s0Yt }|ddtjjdtd d Ttjd |$t |}| ||Wdn1s.0YWdn1sN0Ytjjd|d d Ttjd d$t |}| ||Wdn1s0YWdn1s0YWdn1s0YWdn1s0YdS) Nz.exewb)rr Z dontexist_PATHzdistutils.spawn.os.confstrT)Z return_valuecreatezdistutils.spawn.os.defpath)Z side_effectr) test_supportZtemp_dirZTESTFNrrropenrstatS_IXUSRrZ assertEqualr rZ change_cwdZ assertIsNoneZEnvironmentVarGuardunittestZmockZpatchpathseppop ValueError)rZtmp_dirZprogram_noeextZprogramfilenamervZdont_exist_programenvrrrtest_find_executable.s~        *            L z"SpawnTestCase.test_find_executablecCsJ|t}tdgWdn1s*0Y|dt|jdS)Nzdoes-not-existzcommand 'does-not-exist' failed)rrrZassertInstr exception)rctxrrrtest_spawn_missing_exes (z$SpawnTestCase.test_spawn_missing_exeN) __name__ __module__ __qualname__r Z skipUnlessrnamerr'r+rrrrrs   QrcCs ttS)N)r Z makeSuiterrrrr test_suitesr0__main__)rrr Z unittest.mockr Z test.supportrrtestrrZdistutils.spawnrrZdistutils.errorsrZdistutils.testsZTempdirManagerZLoggingSilencerZTestCaserr0r,rrrrs      w