def is_satisfied(requirement: Requirement, logger: logging.Logger) -> bool: try: requirement.check() logger.debug("Requirement '%s' satisfied", requirement.description) return True except Exception as e: logger.error("Requirement '%s' not satisfied: %s", requirement.description, e) return False
def test_checks_requirements(self): requirement = Requirement("test requirement") requirement.check = MagicMock() self.test_task.get_requirements = MagicMock(return_value=[requirement]) self.uut.run() requirement.check.assert_called_with()
def test_stops_on_unsatisfied_requirement(self): requirement = Requirement("test requirement") requirement.check = MagicMock(side_effect=ValueError("not satisfied")) self.test_task.get_requirements = MagicMock(return_value=[requirement]) with assert_raises(SystemExit): self.uut.run() # assert that exit comes before task is started self.test_task.start.assert_not_called()