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 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_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()
def check_all_requirements(): logger = logging.getLogger("requirements") logger.info("Checking all requirements...") requirements = map(lambda requirement: requirement(), Requirement.__subclasses__()) # type: List[Requirement] if are_satisfied(requirements, logger): logger.info("All requirements satisfied. You're good to go.") else: logger.info("Unsatisfied requirements. Some MUBench tasks might work anyways, but to use the entire benchmark," " please ensure that your environment meets all requirements.")