| # pylint: disable=missing-docstring |
| |
| import sys, re, traceback |
| |
| # these statuses are ordered such that a status earlier in the list will |
| # override a status later in a list (e.g. ERROR during a test will override |
| # prior GOOD results, but WARN will not override a FAIL) |
| job_statuses = ["TEST_NA", "ABORT", "ERROR", "FAIL", "WARN", "GOOD", "ALERT", |
| "RUNNING", "NOSTATUS"] |
| |
| def is_valid_status(status): |
| if not re.match(r'(START|INFO|(END )?(' + '|'.join(job_statuses) + '))$', |
| status): |
| return False |
| else: |
| return True |
| |
| |
| def log_and_ignore_errors(msg): |
| """ A decorator for wrapping functions in a 'log exception and ignore' |
| try-except block. """ |
| def decorator(fn): |
| def decorated_func(*args, **dargs): |
| try: |
| fn(*args, **dargs) |
| except Exception: |
| print >> sys.stderr, msg |
| traceback.print_exc(file=sys.stderr) |
| return decorated_func |
| return decorator |