@@ -527,36 +527,56 @@ def test_print_dot(self):
527
527
# Require that --enable-ext is provided.
528
528
self .assertEquals (main (["--print-dot" , get_data ('tests/wf/revsort.cwl' )]), 0 )
529
529
530
+ from multiprocessing import Process , Queue
530
531
531
532
class TestJsConsole (unittest .TestCase ):
533
+ def get_main_stderr (self , queue , args ):
534
+ pipe = StringIO ()
535
+ queue .put (main (args , stderr = pipe ))
536
+
537
+ queue .put (pipe .getvalue ())
538
+ pipe .close ()
539
+
532
540
def reload_sandboxjs (self ):
533
541
# Reload sandboxjs to remove set globals
534
542
import cwltool .sandboxjs
535
543
reload (cwltool .sandboxjs )
536
544
545
+ def run_command (command ):
546
+ process = subprocess .Popen (command , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE )
547
+ stdout , stderr = process .communicate ()
548
+ exitcode = process .returncode
549
+
550
+ return exitcode , stdout , stderr
551
+
537
552
def test_js_console_cmd_line_tool (self ):
538
553
for test_file in ("js_output.cwl" , "js_output_workflow.cwl" ):
539
- self . reload_sandboxjs ()
540
- pipe = StringIO ( )
541
- self . assertEquals ( main ([ "--js-console" , get_data ( "tests/wf/" + test_file )], stderr = pipe ), 0 )
554
+ queue = Queue ()
555
+ process = Process ( target = self . get_main_stderr , args = ( queue , [ "--js-console" , get_data ( "tests/wf/" + test_file )]) )
556
+ process . start ( )
542
557
543
- output = pipe . getvalue ()
544
- pipe . close ()
558
+ error_code = queue . get ()
559
+ output = queue . get ()
545
560
546
561
self .assertIn ("[log] Log message" , output )
547
562
self .assertIn ("[err] Error message" , output )
548
563
564
+ self .assertEquals (error_code , 0 , output )
565
+
549
566
def test_no_js_console (self ):
550
567
for test_file in ("js_output.cwl" , "js_output_workflow.cwl" ):
551
568
self .reload_sandboxjs ()
552
- pipe = StringIO ()
553
- self .assertEquals (main ([get_data ("tests/wf/" + test_file )], stderr = pipe ), 1 )
569
+ queue = Queue ()
570
+ process = Process (target = self .get_main_stderr , args = (queue , ["--debug" , get_data ("tests/wf/" + test_file )]))
571
+ process .start ()
554
572
555
- output = pipe . getvalue ()
556
- pipe . close ()
573
+ error_code = queue . get ()
574
+ output = queue . get ()
557
575
558
576
self .assertNotIn ("[log] Log message" , output )
559
577
self .assertNotIn ("[err] Error message" , output )
578
+
579
+ self .assertEquals (error_code , 1 , output )
560
580
561
581
if __name__ == '__main__' :
562
582
unittest .main ()
0 commit comments