base_test.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import os
  2. from shlex import shlex
  3. import pytest
  4. from byrd import run_batch, load_cli, Env
  5. def test_all_conf(test_cfg, log_buff):
  6. verbose = pytest.config.getoption('verbose', 0) > 0
  7. args = []
  8. if test_cfg.cli:
  9. lexer = shlex(test_cfg.cli)
  10. lexer.wordchars += '.!=<>:{}-/'
  11. args = list(lexer)
  12. cli = load_cli(args)
  13. base_env = Env(
  14. cli.env,
  15. cli.cfg.get('env'),
  16. os.environ,
  17. )
  18. for task in cli.tasks:
  19. run_batch(task, cli.hosts, cli, base_env)
  20. actual_lines = log_buff.getvalue().splitlines()
  21. actual_lines = [l.strip() for l in filter(None, actual_lines)]
  22. expected_output = test_cfg.output or ''
  23. expected_lines = expected_output.splitlines()
  24. expected_lines = [l.strip() for l in filter(None, expected_lines)]
  25. # Join and makes path independant of OS
  26. act = '\n'.join(actual_lines).replace('\\', '/')
  27. exp = '\n'.join(expected_lines).replace('\\', '/')
  28. if verbose:
  29. print(act)
  30. assert act == exp