mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Add generic isctest.run.EnvCmd helper to pytest
A generic helper that calls the environment-specified binaries in a developer-friendly manner, i.e. passing arguments as strings rather than having to split them first. The isctest.run.cmd() remains as the basis which provides a clean and robust interface, while the isctest.run.EnvCmd() can be used as a convenient wrapper for tests, or when there are some shared default parameters. The isctest.run.Dig() is superseded with the isctest.run.EnvCmd(). In the future, we might revisit adding Dig() or command-specific helpers again, but it probably only makes sense if they offer command-aware attributes / methods, rather than just being shortcuts to isctest.run.EnvCmd().
This commit is contained in:
parent
a8bf53411d
commit
ff613a72d7
2 changed files with 14 additions and 12 deletions
|
|
@ -81,6 +81,19 @@ def cmd(
|
|||
return CmdResult(exc)
|
||||
|
||||
|
||||
class EnvCmd:
|
||||
"""Helper for executing binaries from env with optional base parameters."""
|
||||
|
||||
def __init__(self, name: str, base_params: str = ""):
|
||||
self.bin_path = os.environ[name]
|
||||
self.base_params = base_params.split()
|
||||
|
||||
def __call__(self, params: str, **kwargs) -> CmdResult:
|
||||
"""Call the command. Keyword arguments from isctest.run.cmd() are supported."""
|
||||
args = self.base_params + params.split()
|
||||
return cmd([self.bin_path] + args, **kwargs)
|
||||
|
||||
|
||||
def _run_script(
|
||||
interpreter: str,
|
||||
script: str,
|
||||
|
|
@ -116,17 +129,6 @@ def _run_script(
|
|||
isctest.log.debug(" exited with %d", returncode)
|
||||
|
||||
|
||||
class Dig:
|
||||
def __init__(self, base_params: str = ""):
|
||||
self.base_params = base_params
|
||||
|
||||
def __call__(self, params: str) -> CmdResult:
|
||||
"""Run the dig command with the given parameters."""
|
||||
return cmd(
|
||||
[os.environ.get("DIG")] + f"{self.base_params} {params}".split(),
|
||||
)
|
||||
|
||||
|
||||
def shell(script: str, args: Optional[List[str]] = None) -> None:
|
||||
"""Run a given script with system's shell interpreter."""
|
||||
_run_script(os.environ["SHELL"], script, args)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ def test_dig_tcp_keepalive_handling(named_port, ns2):
|
|||
options_received = line.split()[0]
|
||||
return int(options_received)
|
||||
|
||||
dig = isctest.run.Dig(f"-p {str(named_port)}")
|
||||
dig = isctest.run.EnvCmd("DIG", f"-p {str(named_port)}")
|
||||
|
||||
isctest.log.info("check that dig handles TCP keepalive in query")
|
||||
assert "; TCP-KEEPALIVE" in dig("+qr +keepalive foo.example. @10.53.0.2").out
|
||||
|
|
|
|||
Loading…
Reference in a new issue