test_run_coverage.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import io
  2. import sys
  3. import unittest
  4. from unittest.mock import MagicMock, patch
  5. import run_coverage
  6. class RunCoverageTest(unittest.TestCase):
  7. def test_run_command_does_not_use_shell(self):
  8. completed = MagicMock(returncode=0)
  9. with patch('run_coverage.subprocess.run', return_value=completed) as run, \
  10. patch('sys.stdout', io.StringIO()):
  11. ok = run_coverage.run_command(
  12. [sys.executable, '-m', 'coverage', 'report'],
  13. 'Generating console coverage report',
  14. )
  15. self.assertTrue(ok)
  16. run.assert_called_once_with(
  17. [sys.executable, '-m', 'coverage', 'report'],
  18. shell=False,
  19. )
  20. def test_build_coverage_commands_uses_current_python(self):
  21. commands = run_coverage.build_coverage_commands()
  22. self.assertEqual(
  23. [sys.executable, '-m', 'coverage', 'run', '-m', 'unittest',
  24. 'discover', '-s', 'tests', '-p', 'test_*.py'],
  25. commands[0][0],
  26. )
  27. self.assertEqual('Running tests with coverage', commands[0][1])
  28. self.assertEqual([sys.executable, '-m', 'coverage', 'report'], commands[1][0])
  29. self.assertEqual([sys.executable, '-m', 'coverage', 'html'], commands[2][0])
  30. self.assertEqual([sys.executable, '-m', 'coverage', 'xml'], commands[3][0])
  31. self.assertEqual('Generating XML coverage report (for CI/CD)', commands[3][1])
  32. if __name__ == '__main__':
  33. unittest.main()