diff --git a/wptrunner/browsers/servo.py b/wptrunner/browsers/servo.py index cbc21e607c7895..11499b66b9f42c 100644 --- a/wptrunner/browsers/servo.py +++ b/wptrunner/browsers/servo.py @@ -26,8 +26,7 @@ def check_args(**kwargs): def browser_kwargs(**kwargs): return {"binary": kwargs["binary"], - "debug_info": kwargs["debug_info"], - "interactive": kwargs["interactive"]} + "debug_info": kwargs["debug_info"]} def executor_kwargs(test_type, server_config, cache_manager, **kwargs): @@ -44,13 +43,11 @@ def env_options(): class ServoBrowser(NullBrowser): - def __init__(self, logger, binary, debug_info=None, interactive=False): + def __init__(self, logger, binary, debug_info=None): NullBrowser.__init__(self, logger) self.binary = binary self.debug_info = debug_info - self.interactive = interactive def executor_browser(self): return ExecutorBrowser, {"binary": self.binary, - "debug_info": self.debug_info, - "interactive": self.interactive} + "debug_info": self.debug_info} diff --git a/wptrunner/executors/executorservo.py b/wptrunner/executors/executorservo.py index e7b2cd415bc505..ef2bffdb2b32a1 100644 --- a/wptrunner/executors/executorservo.py +++ b/wptrunner/executors/executorservo.py @@ -21,7 +21,7 @@ testharness_result_converter, reftest_result_converter) from .process import ProcessTestExecutor -from ..executors.base import browser_command +from ..browsers.base import browser_command hosts_text = """127.0.0.1 web-platform.test 127.0.0.1 www.web-platform.test @@ -75,29 +75,35 @@ def do_test(self, test): env = os.environ.copy() env["HOST_FILE"] = self.hosts_path - self.proc = ProcessHandler(self.command, - processOutputLine=[self.on_output], - onFinish=self.on_finish, - env=env) - try: + + if not self.interactive: + self.proc = ProcessHandler(self.command, + processOutputLine=[self.on_output], + onFinish=self.on_finish, + env=env, + storeOutput=False) self.proc.run() + else: + self.proc = subprocess.Popen(self.command, env=env) + try: timeout = test.timeout * self.timeout_multiplier # Now wait to get the output we expect, or until we reach the timeout - if self.debug_info is None and not self.pause_after_test: + if not self.interactive and not self.pause_after_test: wait_timeout = timeout + 5 + self.result_flag.wait(wait_timeout) else: wait_timeout = None - self.result_flag.wait(wait_timeout) + self.proc.wait() proc_is_running = True if self.result_flag.is_set() and self.result_data is not None: self.result_data["test"] = test.url result = self.convert_result(test, self.result_data) else: - if self.proc.proc.poll() is not None: + if self.proc.poll() is not None: result = (test.result_cls("CRASH", None), []) proc_is_running = False else: diff --git a/wptrunner/executors/process.py b/wptrunner/executors/process.py index bff8b5bfb53620..45f33ab2c75cb4 100644 --- a/wptrunner/executors/process.py +++ b/wptrunner/executors/process.py @@ -9,7 +9,8 @@ class ProcessTestExecutor(TestExecutor): def __init__(self, *args, **kwargs): TestExecutor.__init__(self, *args, **kwargs) self.binary = self.browser.binary - self.interactive = self.browser.interactive + self.interactive = (False if self.debug_info is None + else self.debug_info.interactive) def setup(self, runner): self.runner = runner diff --git a/wptrunner/wptcommandline.py b/wptrunner/wptcommandline.py index 18a5367434d6c8..bf00901ab37124 100644 --- a/wptrunner/wptcommandline.py +++ b/wptrunner/wptcommandline.py @@ -276,7 +276,8 @@ def check_args(kwargs): debug_info = mozdebug.get_debugger_info(kwargs["debugger"], kwargs["debugger_args"]) if debug_info.interactive: - require_arg(kwargs, "processes", lambda x: x == 1) + if kwargs["processes"] != 1: + kwargs["processes"] = 1 kwargs["no_capture_stdio"] = True kwargs["debug_info"] = debug_info else: