@@ -19,24 +19,33 @@ def run(self, program, stdin=None, extra_options=None):
19
19
if extra_options is None :
20
20
extra_options = []
21
21
22
- options = extra_options + [program ]
22
+ if isinstance (program , (list , tuple )):
23
+ options = extra_options + list (program )
24
+ else :
25
+ options = extra_options + [program ]
26
+ options = list (map (str , options ))
27
+
28
+ if stdin is not None :
29
+ stdin = stdin .encode ('utf-8' )
23
30
24
- print "running:\n {}\n " .format (" " .join ([self .SUPERVISOR_BIN ] + options ))
31
+ print ( "running:\n {}\n " .format (" " .join ([self .SUPERVISOR_BIN ] + options ) ))
25
32
process = subprocess .Popen ([self .SUPERVISOR_BIN ] + options ,
26
33
stdin = subprocess .PIPE ,
27
34
stdout = subprocess .PIPE ,
28
35
stderr = subprocess .PIPE )
29
36
(stdout , stderr ) = process .communicate (stdin )
37
+ stdout = stdout .decode ('utf-8' )
38
+ stderr = stderr .decode ('utf-8' )
30
39
31
40
if process .poll () is None :
32
41
process .kill ()
33
42
process .poll ()
34
- print "result: {}\n \n stdout:\n {}\n stderr:\n {}\n " .format (process .poll (), stdout .strip (), stderr .strip ())
43
+ print ( "result: {}\n \n stdout:\n {}\n stderr:\n {}\n " .format (process .poll (), stdout .strip (), stderr .strip () ))
35
44
36
45
result = self .Result ()
37
46
self .parse_results (result , stdout , stderr )
38
- result .stdout = map (lambda s : s .strip (), stdout .split ('\n ' ))
39
- result .stderr = map (lambda s : s .strip (), stderr .split ('\n ' )[:- 3 ])
47
+ result .stdout = list ( map (lambda s : s .strip (), stdout .split ('\n ' ) ))
48
+ result .stderr = list ( map (lambda s : s .strip (), stderr .split ('\n ' )[:- 3 ]) )
40
49
result .supervisor_return_code = process .returncode
41
50
return result
42
51
0 commit comments