raise ValueError(f'expected "{value}" to be falsy')
+def success(value: int) -> None:
+ """Check that value represents a successful exit code."""
+ if not isinstance(value, int) or value != 0:
+ raise ValueError(f'expected "{value}" to be 0', value)
+
+
+def failure(value: int) -> None:
+ """Check that value represents an unsuccessful exit code."""
+ if not isinstance(value, int) or value == 0:
+ raise ValueError(f'expected "{value}" to NOT be 0', value)
+
+
def true(value: T.Any) -> None:
"""Check that value is truthy."""
if not value:
raise ValueError(f'expected all "{haystacks}" NOT to include "{needle}"')
+def _read_content(path: T.Union[str, os.PathLike], search: T.AnyStr) -> T.AnyStr:
+ """Read text or binary content, depending on the type of search argument."""
+ if isinstance(search, str):
+ mode, enc = "r", "utf-8"
+ else:
+ mode, enc = "rb", None
+ with open(path, mode=mode, encoding=enc) as f:
+ return f.read()
+
+
+def in_file(path: T.Union[str, os.PathLike], text: T.AnyStr) -> None:
+ """Check that file contains a string."""
+ is_in(text, _read_content(path, text))
+
+
+def not_in_file(path: T.Union[str, os.PathLike], text: T.AnyStr) -> None:
+ """Check that file does not contain a string."""
+ not_in(text, _read_content(path, text))
+
+
def nodes(node, want_nodes: int) -> None:
"""Check that node can reach exactly N nodes (including itself)."""
log.debug("want %d reachable nodes from tinc %s", want_nodes, node)
stdout, _ = node.cmd("dump", "reachable", "nodes")
- equals(want_nodes, len(stdout.splitlines()))
+ lines(stdout, want_nodes)
def files_eq(path0: str, path1: str) -> None:
def file_exists(path: T.Union[str, Path]) -> None:
- """Check that file or directory exists."""
- if not os.path.exists(path):
- raise ValueError("expected path '{path}' to exist")
+ """Check that file exists."""
+ if not os.path.isfile(path):
+ raise ValueError(f"expected file '{path}' to exist")
+
+
+def dir_exists(path: T.Union[str, Path]) -> None:
+ """Check that directory exists."""
+ if not os.path.isdir(path):
+ raise ValueError(f"expected directory '{path}' to exist")