def test_check_log_for_errors(self): fd, logfile = tempfile.mkstemp(suffix='.log', prefix='eb-test-') os.close(fd) self.assertErrorRegex(EasyBuildError, "Invalid input:", check_log_for_errors, "", [42]) self.assertErrorRegex(EasyBuildError, "Invalid input:", check_log_for_errors, "", [(42, IGNORE)]) self.assertErrorRegex(EasyBuildError, "Invalid input:", check_log_for_errors, "", [("42", "invalid-mode")]) self.assertErrorRegex(EasyBuildError, "Invalid input:", check_log_for_errors, "", [("42", IGNORE, "")]) input_text = "\n".join([ "OK", "error found", "test failed", "msg: allowed-test failed", "enabling -Werror", "the process crashed with 0" ]) expected_msg = r"Found 2 error\(s\) in command output "\ r"\(output: error found\n\tthe process crashed with 0\)" # String promoted to list self.assertErrorRegex(EasyBuildError, expected_msg, check_log_for_errors, input_text, r"\b(error|crashed)\b") # List of string(s) self.assertErrorRegex(EasyBuildError, expected_msg, check_log_for_errors, input_text, [r"\b(error|crashed)\b"]) # List of tuple(s) self.assertErrorRegex(EasyBuildError, expected_msg, check_log_for_errors, input_text, [(r"\b(error|crashed)\b", ERROR)]) expected_msg = "Found 2 potential error(s) in command output " \ "(output: error found\n\tthe process crashed with 0)" init_logging(logfile, silent=True) check_log_for_errors(input_text, [(r"\b(error|crashed)\b", WARN)]) stop_logging(logfile) self.assertTrue(expected_msg in read_file(logfile)) expected_msg = r"Found 2 error\(s\) in command output \(output: error found\n\ttest failed\)" write_file(logfile, '') init_logging(logfile, silent=True) self.assertErrorRegex(EasyBuildError, expected_msg, check_log_for_errors, input_text, [ r"\berror\b", (r"\ballowed-test failed\b", IGNORE), (r"(?i)\bCRASHED\b", WARN), "fail" ]) stop_logging(logfile) expected_msg = "Found 1 potential error(s) in command output (output: the process crashed with 0)" self.assertTrue(expected_msg in read_file(logfile))
def test_step(self): """Run tests.""" # run tests unless they're disabled explicitly if self.cfg['runtest'] is None or self.cfg['runtest']: # avoid oversubscribing, by using both OpenMP threads and having OpenBLAS use threads as well env.setvar('OMP_NUM_THREADS', '1') (out, _) = run_cmd("make check", log_all=True, simple=False, regexp=False) # Raise an error if any test failed check_log_for_errors(out, [('# (ERROR|FAIL): +[1-9]', ERROR)])
def test_step(self): """ Mandatory test step plus optional runtest""" run_tests = ['tests'] if self.cfg['runtest']: run_tests += [self.cfg['runtest']] for runtest in run_tests: cmd = "%s make %s %s" % (self.cfg['pretestopts'], runtest, self.cfg['testopts']) (out, _) = run_cmd(cmd, log_all=True, simple=False, regexp=False) # Raise an error if any test failed check_log_for_errors(out, [('FATAL ERROR', ERROR)])