Skip to content

Commit 57a7e15

Browse files
committed
Fix duplicate code between process helpers and runner
1 parent 810bd02 commit 57a7e15

File tree

4 files changed

+35
-70
lines changed

4 files changed

+35
-70
lines changed

Sources/toolkit/bhamon_development_toolkit/processes/process_helpers.py

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,6 @@
33
import shlex
44
from typing import List, Optional, TextIO
55

6-
from bhamon_development_toolkit.processes.executable_command import ExecutableCommand
7-
from bhamon_development_toolkit.processes.process_options import ProcessOptions
8-
from bhamon_development_toolkit.processes.process_output_collector import ProcessOutputCollector
9-
from bhamon_development_toolkit.processes.process_output_handler import ProcessOutputHandler
10-
from bhamon_development_toolkit.processes.process_result import ProcessResult
11-
from bhamon_development_toolkit.processes.process_spawner import ProcessSpawner
12-
136

147
def format_executable_command(command: List[str]):
158
return " ".join(format_executable_command_element(element) for element in command)
@@ -40,57 +33,3 @@ def create_raw_logger(stream: Optional[TextIO] = None, log_file_path: Optional[s
4033
logger.addHandler(file_handler)
4134

4235
return logger
43-
44-
45-
async def run(
46-
spawner: ProcessSpawner,
47-
command: ExecutableCommand,
48-
options: ProcessOptions,
49-
output_handlers: Optional[List[ProcessOutputHandler]] = None,
50-
check_exit_code: bool = True,
51-
) -> ProcessResult:
52-
53-
watcher = await spawner.spawn_process(command = command, options = options)
54-
55-
if output_handlers is not None:
56-
for handler in output_handlers:
57-
watcher.add_output_handler(handler)
58-
59-
try:
60-
await watcher.start()
61-
await watcher.wait()
62-
await watcher.complete(check_exit_code)
63-
64-
except BaseException as exception:
65-
if watcher.get_status().is_running:
66-
await watcher.terminate(type(exception).__name__)
67-
68-
raise
69-
70-
status = watcher.get_status()
71-
if status.exit_code is None:
72-
raise ValueError("Process exit code is not set")
73-
74-
return ProcessResult(
75-
executable = status.executable,
76-
exit_code = status.exit_code,
77-
)
78-
79-
80-
async def run_with_collector(
81-
spawner: ProcessSpawner,
82-
command: ExecutableCommand,
83-
options: ProcessOptions,
84-
check_exit_code: bool = True,
85-
) -> ProcessResult:
86-
87-
output_collector = ProcessOutputCollector()
88-
89-
result = await run(spawner, command, options, output_handlers = [ output_collector ], check_exit_code = check_exit_code)
90-
91-
return ProcessResult(
92-
executable = result.executable,
93-
exit_code = result.exit_code,
94-
standard_output = output_collector.get_stdout(),
95-
error_output = output_collector.get_stderr(),
96-
)

Sources/toolkit/bhamon_development_toolkit/processes/process_runner.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
from bhamon_development_toolkit.processes.executable_command import ExecutableCommand
44
from bhamon_development_toolkit.processes.process_options import ProcessOptions
5+
from bhamon_development_toolkit.processes.process_output_collector import ProcessOutputCollector
56
from bhamon_development_toolkit.processes.process_output_handler import ProcessOutputHandler
7+
from bhamon_development_toolkit.processes.process_result import ProcessResult
68
from bhamon_development_toolkit.processes.process_spawner import ProcessSpawner
7-
from bhamon_development_toolkit.processes.process_status import ProcessStatus
89

910

1011
class ProcessRunner:
@@ -19,7 +20,7 @@ async def run(self,
1920
options: ProcessOptions,
2021
output_handlers: Optional[List[ProcessOutputHandler]] = None,
2122
check_exit_code: bool = True
22-
) -> ProcessStatus:
23+
) -> ProcessResult:
2324

2425
watcher = await self._spawner.spawn_process(command = command, options = options)
2526

@@ -38,4 +39,29 @@ async def run(self,
3839

3940
raise
4041

41-
return watcher.get_status()
42+
status = watcher.get_status()
43+
if status.exit_code is None:
44+
raise ValueError("Process exit code is not set")
45+
46+
return ProcessResult(
47+
executable = status.executable,
48+
exit_code = status.exit_code,
49+
)
50+
51+
52+
async def run_with_collector(self,
53+
command: ExecutableCommand,
54+
options: ProcessOptions,
55+
check_exit_code: bool = True,
56+
) -> ProcessResult:
57+
58+
output_collector = ProcessOutputCollector()
59+
60+
result = await self.run(command, options, output_handlers = [ output_collector ], check_exit_code = check_exit_code)
61+
62+
return ProcessResult(
63+
executable = result.executable,
64+
exit_code = result.exit_code,
65+
standard_output = output_collector.get_stdout(),
66+
error_output = output_collector.get_stderr(),
67+
)

Sources/toolkit/bhamon_development_toolkit/python/pylint_runner.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,10 @@ async def _run_with_scope(self,
7676
success = True
7777

7878
if not simulate:
79-
status = await self._process_runner.run(command, process_options, [ raw_output_logger, pylint_output_handler ], check_exit_code = False)
79+
result = await self._process_runner.run(command, process_options, [ raw_output_logger, pylint_output_handler ], check_exit_code = False)
8080

81-
self._check_exit_code(status.exit_code)
82-
success = self._get_success_from_exit_code(status.exit_code)
81+
self._check_exit_code(result.exit_code)
82+
success = self._get_success_from_exit_code(result.exit_code)
8383

8484
return success
8585

Sources/toolkit/bhamon_development_toolkit/python/pytest_runner.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ async def _run_with_scope(self,
8080
success = True
8181

8282
if not simulate:
83-
status = await self._process_runner.run(command, process_options, [ raw_output_logger, pytest_output_handler ], check_exit_code = False)
83+
result = await self._process_runner.run(command, process_options, [ raw_output_logger, pytest_output_handler ], check_exit_code = False)
8484

85-
self._check_exit_code(status.exit_code)
86-
success = self._get_success_from_exit_code(status.exit_code)
85+
self._check_exit_code(result.exit_code)
86+
success = self._get_success_from_exit_code(result.exit_code)
8787

8888
with open(json_report_file_path, mode = "r", encoding = "utf-8") as json_report_file:
8989
json_report = json.load(json_report_file)

0 commit comments

Comments
 (0)