test(ci): cover assurance gate entry points
prd-number-check / require-numbered-prds (pull_request) Successful in 7s
tracker-policy-pr / check-pr (pull_request) Successful in 8s
lint / lint (push) Successful in 58s
test / unit (pull_request) Successful in 48s
test / integration-docker (pull_request) Failing after 19m28s
test / coverage (pull_request) Has been skipped
prd-number-check / require-numbered-prds (pull_request) Successful in 7s
tracker-policy-pr / check-pr (pull_request) Successful in 8s
lint / lint (push) Successful in 58s
test / unit (pull_request) Successful in 48s
test / integration-docker (pull_request) Failing after 19m28s
test / coverage (pull_request) Has been skipped
This commit is contained in:
@@ -3,8 +3,11 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from contextlib import redirect_stderr
|
||||
from io import StringIO
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from scripts.unittest_gate import assurance_errors
|
||||
from scripts.unittest_gate import assurance_errors, main
|
||||
|
||||
|
||||
class TestAssuranceErrors(unittest.TestCase):
|
||||
@@ -29,6 +32,60 @@ class TestAssuranceErrors(unittest.TestCase):
|
||||
)
|
||||
self.assertEqual(["1 test(s) skipped in a no-skip suite"], errors)
|
||||
|
||||
def test_main_accepts_successful_assured_suite(self) -> None:
|
||||
result = Mock(
|
||||
testsRun=22,
|
||||
skipped=[],
|
||||
wasSuccessful=Mock(return_value=True),
|
||||
)
|
||||
runner = Mock()
|
||||
runner.run.return_value = result
|
||||
with patch(
|
||||
"scripts.unittest_gate.unittest.defaultTestLoader.discover",
|
||||
return_value=Mock(),
|
||||
) as discover, patch(
|
||||
"scripts.unittest_gate.unittest.TextTestRunner",
|
||||
return_value=runner,
|
||||
) as runner_type:
|
||||
self.assertEqual(
|
||||
0,
|
||||
main([
|
||||
"-s", "tests/integration",
|
||||
"-t", ".",
|
||||
"-p", "test_*.py",
|
||||
"--minimum-executed", "22",
|
||||
"--fail-on-skip",
|
||||
"-v",
|
||||
]),
|
||||
)
|
||||
discover.assert_called_once_with(
|
||||
"tests/integration", pattern="test_*.py", top_level_dir="."
|
||||
)
|
||||
runner_type.assert_called_once_with(verbosity=2)
|
||||
|
||||
def test_main_rejects_unsuccessful_underfilled_suite(self) -> None:
|
||||
result = Mock(
|
||||
testsRun=1,
|
||||
skipped=[(Mock(), "not available")],
|
||||
wasSuccessful=Mock(return_value=False),
|
||||
)
|
||||
runner = Mock()
|
||||
runner.run.return_value = result
|
||||
error = StringIO()
|
||||
with patch(
|
||||
"scripts.unittest_gate.unittest.defaultTestLoader.discover",
|
||||
return_value=Mock(),
|
||||
), patch(
|
||||
"scripts.unittest_gate.unittest.TextTestRunner",
|
||||
return_value=runner,
|
||||
), redirect_stderr(error):
|
||||
self.assertEqual(
|
||||
1,
|
||||
main(["--minimum-executed", "2", "--fail-on-skip"]),
|
||||
)
|
||||
self.assertIn("below required minimum", error.getvalue())
|
||||
self.assertIn("skipped in a no-skip suite", error.getvalue())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user