53:ed7f35f52927
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.

next change 63:c43e088b6aed
previous change 51:0552f5ca41a3

tests/test_incoming.py

Permissions: -rw-r--r--

Other formats: Feeds:
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 errors == 0
assert warnings == 1
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 errors == 1
assert warnings == 0
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 errors == 0
assert warnings == 1
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')