Skip to content

Commit

Permalink
Daemon.started() is now a context manager
Browse files Browse the repository at this point in the history
Fixes saltstack#22

Signed-off-by: Pedro Algarvio <palgarvio@vmware.com>
  • Loading branch information
s0undt3ch committed May 26, 2022
1 parent 5d56fb3 commit 534adbd
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 14 deletions.
1 change: 1 addition & 0 deletions changelog/22.improvement.rst
@@ -0,0 +1 @@
``Daemon.started()`` is now a context manager
20 changes: 12 additions & 8 deletions src/pytestshellutils/downgraded/shell.py
Expand Up @@ -968,21 +968,25 @@ def start(
start_timeout=start_timeout,
)

@contextlib.contextmanager
def started(
self,
*extra_cli_arguments: str,
max_start_attempts: Optional[int] = None,
start_timeout: Optional[Union[int, float]] = None
) -> 'Daemon':
) -> Generator['Daemon', None, None]:
"""
Start the daemon and return it's instance so it can be used as a context manager.
"""
self.start(
*extra_cli_arguments,
max_start_attempts=max_start_attempts,
start_timeout=start_timeout,
)
return self
try:
self.start(
*extra_cli_arguments,
max_start_attempts=max_start_attempts,
start_timeout=start_timeout,
)
yield self
finally:
self.terminate()

@contextlib.contextmanager
def stopped(
Expand Down Expand Up @@ -1061,7 +1065,7 @@ def stopped(
exc,
exc_info=True,
)
_started = self.started(*start_arguments.args, **start_arguments.kwargs)
_started = self.start(*start_arguments.args, **start_arguments.kwargs)
if _started:
if after_start_callback:
try:
Expand Down
18 changes: 12 additions & 6 deletions src/pytestshellutils/shell.py
Expand Up @@ -991,19 +991,25 @@ def start(
*extra_cli_arguments, max_start_attempts=max_start_attempts, start_timeout=start_timeout
)

@contextlib.contextmanager
def started(
self,
*extra_cli_arguments: str,
max_start_attempts: Optional[int] = None,
start_timeout: Optional[Union[int, float]] = None
) -> "Daemon":
) -> Generator["Daemon", None, None]:
"""
Start the daemon and return it's instance so it can be used as a context manager.
"""
self.start(
*extra_cli_arguments, max_start_attempts=max_start_attempts, start_timeout=start_timeout
)
return self
try:
self.start(
*extra_cli_arguments,
max_start_attempts=max_start_attempts,
start_timeout=start_timeout,
)
yield self
finally:
self.terminate()

@contextlib.contextmanager
def stopped(
Expand Down Expand Up @@ -1082,7 +1088,7 @@ def stopped(
exc,
exc_info=True,
)
_started = self.started(
_started = self.start(
*start_arguments.args, # pylint: disable=not-an-iterable
**start_arguments.kwargs, # pylint: disable=not-a-mapping
)
Expand Down

0 comments on commit 534adbd

Please sign in to comment.