Skip to content

Commit d43eee1

Browse files
committed
Process TestJsConsole tests in new Process
1 parent ba31081 commit d43eee1

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

tests/test_examples.py

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -527,36 +527,56 @@ def test_print_dot(self):
527527
# Require that --enable-ext is provided.
528528
self.assertEquals(main(["--print-dot", get_data('tests/wf/revsort.cwl')]), 0)
529529

530+
from multiprocessing import Process, Queue
530531

531532
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+
532540
def reload_sandboxjs(self):
533541
# Reload sandboxjs to remove set globals
534542
import cwltool.sandboxjs
535543
reload(cwltool.sandboxjs)
536544

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+
537552
def test_js_console_cmd_line_tool(self):
538553
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()
542557

543-
output = pipe.getvalue()
544-
pipe.close()
558+
error_code = queue.get()
559+
output = queue.get()
545560

546561
self.assertIn("[log] Log message", output)
547562
self.assertIn("[err] Error message", output)
548563

564+
self.assertEquals(error_code, 0, output)
565+
549566
def test_no_js_console(self):
550567
for test_file in ("js_output.cwl", "js_output_workflow.cwl"):
551568
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()
554572

555-
output = pipe.getvalue()
556-
pipe.close()
573+
error_code = queue.get()
574+
output = queue.get()
557575

558576
self.assertNotIn("[log] Log message", output)
559577
self.assertNotIn("[err] Error message", output)
578+
579+
self.assertEquals(error_code, 1, output)
560580

561581
if __name__ == '__main__':
562582
unittest.main()

0 commit comments

Comments
 (0)