Esempio n. 1
0
    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))
Esempio n. 2
0
    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)])
Esempio n. 3
0
    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)])