| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import os
- from shlex import shlex
- import pytest
- from byrd import run_batch, load_cli, Env
- def test_all_conf(test_cfg, log_buff):
- verbose = pytest.config.getoption('verbose', 0) > 0
- args = []
- if test_cfg.cli:
- lexer = shlex(test_cfg.cli)
- lexer.wordchars += '.!=<>:{}-/'
- args = list(lexer)
- cli = load_cli(args)
- base_env = Env(
- cli.env,
- cli.cfg.get('env'),
- os.environ,
- )
- for task in cli.tasks:
- run_batch(task, cli.hosts, cli, base_env)
- actual_lines = log_buff.getvalue().splitlines()
- actual_lines = [l.strip() for l in filter(None, actual_lines)]
- expected_output = test_cfg.output or ''
- expected_lines = expected_output.splitlines()
- expected_lines = [l.strip() for l in filter(None, expected_lines)]
- # Join and makes path independant of OS
- act = '\n'.join(actual_lines).replace('\\', '/')
- exp = '\n'.join(expected_lines).replace('\\', '/')
- if verbose:
- print(act)
- assert act == exp
|