2018-02-02 19:12:18 -05:00
|
|
|
"""Unit tests for the resmokelib.testing.fixtures.interface module."""
|
|
|
|
|
import logging
|
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
from buildscripts.resmokelib import errors
|
|
|
|
|
from buildscripts.resmokelib.testing.fixtures import interface
|
2021-03-26 14:12:05 -04:00
|
|
|
from buildscripts.resmokelib.testing.fixtures.fixturelib import FixtureLib
|
2018-02-02 19:12:18 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestFixture(unittest.TestCase):
|
2022-09-02 21:56:05 +00:00
|
|
|
def test_teardown_ok(self):
|
2018-02-02 19:12:18 -05:00
|
|
|
raising_fixture = UnitTestFixture(should_raise=False)
|
|
|
|
|
raising_fixture.teardown()
|
|
|
|
|
|
|
|
|
|
def test_teardown_raise(self):
|
|
|
|
|
raising_fixture = UnitTestFixture(should_raise=True)
|
|
|
|
|
with self.assertRaises(errors.ServerFailure):
|
|
|
|
|
raising_fixture.teardown()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestFixtureTeardownHandler(unittest.TestCase):
|
|
|
|
|
def test_teardown_ok(self):
|
|
|
|
|
handler = interface.FixtureTeardownHandler(logging.getLogger("handler_unittests"))
|
|
|
|
|
# Before any teardown.
|
|
|
|
|
self.assertTrue(handler.was_successful())
|
|
|
|
|
self.assertIsNone(handler.get_error_message())
|
|
|
|
|
# Successful teardown.
|
|
|
|
|
ok_fixture = UnitTestFixture(should_raise=False)
|
|
|
|
|
handler.teardown(ok_fixture, "ok")
|
|
|
|
|
# After successful teardown.
|
|
|
|
|
self.assertTrue(handler.was_successful())
|
|
|
|
|
self.assertIsNone(handler.get_error_message())
|
|
|
|
|
|
|
|
|
|
def test_teardown_error(self):
|
|
|
|
|
handler = interface.FixtureTeardownHandler(logging.getLogger("handler_unittests"))
|
|
|
|
|
# Failing teardown.
|
|
|
|
|
ko_fixture = UnitTestFixture(should_raise=True)
|
|
|
|
|
handler.teardown(ko_fixture, "ko")
|
|
|
|
|
# After failed teardown.
|
|
|
|
|
self.assertFalse(handler.was_successful())
|
|
|
|
|
expected_msg = "Error while stopping ko: " + UnitTestFixture.ERROR_MESSAGE
|
|
|
|
|
self.assertEqual(expected_msg, handler.get_error_message())
|
|
|
|
|
|
|
|
|
|
|
2018-03-27 14:30:46 -04:00
|
|
|
class UnitTestFixture(interface.Fixture): # pylint: disable=abstract-method
|
2018-02-02 19:12:18 -05:00
|
|
|
ERROR_MESSAGE = "Failed"
|
|
|
|
|
|
|
|
|
|
def __init__(self, should_raise=False):
|
|
|
|
|
logger = logging.getLogger("fixture_unittests")
|
2021-03-26 14:12:05 -04:00
|
|
|
fixturelib = FixtureLib()
|
|
|
|
|
interface.Fixture.__init__(self, logger, 99, fixturelib)
|
2018-02-02 19:12:18 -05:00
|
|
|
self._should_raise = should_raise
|
|
|
|
|
|
2020-01-09 15:40:39 +00:00
|
|
|
def _do_teardown(self, mode=None):
|
2018-02-02 19:12:18 -05:00
|
|
|
if self._should_raise:
|
|
|
|
|
raise errors.ServerFailure(self.ERROR_MESSAGE)
|