diff --git a/fstat/parser.py b/fstat/parser.py index 8447565..2560c3e 100644 --- a/fstat/parser.py +++ b/fstat/parser.py @@ -10,6 +10,7 @@ 'NONE': 0, 'FAILURE': 1, 'TIMEOUT': 2, + 'COREDUMP': 3 } @@ -19,6 +20,7 @@ def __init__(self, build_info, job_name): self.url = ''.join([build_info['url'], 'consoleText']) self.job_name = job_name self.build_info = build_info + self.re = re.compile(r'\./tests/.*\.t') def is_parsed(self): if FailureInstance.query.filter_by(url=self.url).first(): @@ -43,7 +45,7 @@ def process_failure(self): # If we find a line with failure, that means the test in the line we # wrote to test_line failed. if line.find("Result: FAIL") != -1: - test_case = re.search(r'\./tests/.*\.t', test_line) + test_case = self.re.search(test_line) if test_case: self.save_failure(test_case.group(), type='FAILURE') # If the test timed out the output looks like this: @@ -54,10 +56,15 @@ def process_failure(self): # something.t: bad status 124 if line.find("timed out after") != -1: - test_case = re.search(r'\./tests/.*\.t', line) + test_case = self.re.search(line) if test_case: self.save_failure(test_case.group(), type='TIMEOUT') + if line.find("new core files") != -1: + test_case = self.re.search(line) + if test_case: + self.save_failure(test_case.group(), type='COREDUMP') + def save_failure(self, signature, type=None): failure = Failure.query.filter_by(signature=signature).first() # If it doesn't exist, create a job first diff --git a/fstat/static/css/styles.css b/fstat/static/css/styles.css index 1c45c53..1fcbdfa 100644 --- a/fstat/static/css/styles.css +++ b/fstat/static/css/styles.css @@ -16,6 +16,10 @@ div.tag-warning { background: #ec971f } +div.tag-core { + background: #994dbf +} + @media only screen { .failure-signature-main { font-size: 0.7em; diff --git a/fstat/templates/index.html b/fstat/templates/index.html index bb7428e..492f285 100644 --- a/fstat/templates/index.html +++ b/fstat/templates/index.html @@ -60,6 +60,10 @@
{{ failure["signature"] }}