Anton Shestakov <av6@dwimlabs.net>, Thu, 23 Jun 2016 14:58:09 +0800
checker: try and catch exceptions from execute() and somewhat finish the job
Exceptions coming from execute() are programming errors in checker.py, but jobs
still need to tell that they are finished (and failed) to be processed by
incoming.py.
tests/test_incoming.py
Permissions: -rw-r--r--
from incoming import match_linter_output, parse_project_url def test_match_linter_output(): mlo = match_linter_output errors, warnings, extra = mlo('hello.py:42:1: W123 clowntown ahoy') assert sorted(extra.keys()) == ['cls', 'fileline', 'filename'] assert extra['cls'] == 'warning' assert extra['filename'] == 'hello.py' assert extra['fileline'] == 42 errors, warnings, extra = mlo('file with spaces:007:001: [error] oops!') assert sorted(extra.keys()) == ['cls', 'fileline', 'filename'] assert extra['cls'] == 'error' assert extra['filename'] == 'file with spaces' assert extra['fileline'] == 7 errors, warnings, extra = mlo('requirements.txt:1:1: PIL is obsolete.') assert sorted(extra.keys()) == ['cls', 'fileline', 'filename'] assert extra['cls'] == 'warning' assert extra['filename'] == 'requirements.txt' assert extra['fileline'] == 1 def test_parse_project_url(): result = parse_project_url('https://example.com/alice/hello-world') assert result == ('example.com', 'alice', 'hello-world') result = parse_project_url('~alice/hello-world') assert result == ('self', '~alice', 'hello-world') result = parse_project_url('https://code.example.com/hello-world') assert result == ('code.example.com', None, 'hello-world') result = parse_project_url('https://example.com/scm/projects/hello-world') assert result == ('example.com', 'scm', 'projects/hello-world') result = parse_project_url('https://example.com///hello-world//') assert result == ('example.com', None, 'hello-world')