Changeset ae151cf for tests/pybin/tools.py
- Timestamp:
- Oct 2, 2022, 10:00:43 PM (6 months ago)
- Branches:
- master
- Children:
- 815943f
- Parents:
- f704974 (diff), f92e7b9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/pybin/tools.py
rf704974 rae151cf 23 23 24 24 # helper functions to run terminal commands 25 def sh(*cmd, timeout = False, output_file = None, input_file = None, input_text = None, error = subprocess.STDOUT, ignore_dry_run = False, pass_fds = [] ):25 def sh(*cmd, timeout = False, output_file = None, input_file = None, input_text = None, error = subprocess.STDOUT, ignore_dry_run = False, pass_fds = [], nice = False): 26 26 try: 27 27 cmd = list(cmd) … … 58 58 error = openfd(error, 'w', onexit, False) 59 59 60 # prepare the parameters to the call 61 popen_kwargs = { 62 'stdout' : output_file, 63 'stderr' : error, 64 'pass_fds': pass_fds, 65 } 66 67 # depending on how we are passing inputs we need to set a different argument to popen 68 if input_text: 69 popen_kwargs['input'] = bytes(input_text, encoding='utf-8') 70 else: 71 popen_kwargs['stdin'] = input_file 72 73 # we might want to nice this so it's not to obnixious to users 74 if nice: 75 popen_kwargs['preexec_fn'] = lambda: os.nice(5) 76 60 77 # run the desired command 61 78 # use with statement to make sure proc is cleaned 62 79 # don't use subprocess.run because we want to send SIGABRT on exit 63 with subprocess.Popen( 64 cmd, 65 **({'input' : bytes(input_text, encoding='utf-8')} if input_text else {'stdin' : input_file}), 66 stdout = output_file, 67 stderr = error, 68 pass_fds = pass_fds 69 ) as proc: 70 80 with subprocess.Popen( cmd, **popen_kwargs ) as proc: 71 81 try: 72 82 out, errout = proc.communicate(
Note: See TracChangeset
for help on using the changeset viewer.