base_test.py 1.0 KB

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