Anton Shestakov <av6@dwimlabs.net>, Sun, 24 Jul 2016 09:24:14 +0800
checker: support running linters with custom environment
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 usual_keys = ['cls', 'filename', 'line_number', 'link_end', 'link_start'] errors, warnings, extra = mlo('hello.py:42:1: W123 clowntown ahoy') assert sorted(extra.keys()) == usual_keys assert extra['cls'] == 'warning' assert extra['filename'] == 'hello.py' assert extra['line_number'] == 42 assert extra['link_start'] == 0 assert extra['link_end'] == 11 errors, warnings, extra = mlo('file with spaces:007:001: [error] oops!') assert sorted(extra.keys()) == usual_keys assert extra['cls'] == 'error' assert extra['filename'] == 'file with spaces' assert extra['line_number'] == 7 assert extra['link_start'] == 0 assert extra['link_end'] == 20 errors, warnings, extra = mlo('requirements.txt:1:1: PIL is obsolete.') assert sorted(extra.keys()) == usual_keys assert extra['cls'] == 'warning' assert extra['filename'] == 'requirements.txt' assert extra['line_number'] == 1 assert extra['link_start'] == 0 assert extra['link_end'] == 18 errors, warnings, extra = mlo('ham.lua:414:90: (E101) foo is not good') assert sorted(extra.keys()) == usual_keys assert extra['cls'] == 'error' assert extra['filename'] == 'ham.lua' assert extra['line_number'] == 414 assert extra['link_start'] == 0 assert extra['link_end'] == 11 errors, warnings, extra = mlo('backwards.js:9091:1: not perfect (W201)') assert sorted(extra.keys()) == usual_keys assert extra['cls'] == 'warning' assert extra['filename'] == 'backwards.js' assert extra['line_number'] == 9091 assert extra['link_start'] == 0 assert extra['link_end'] == 17 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('https://example.com/bob/a/b/c/') assert result == ('example.com', 'bob', 'a/b/c') 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')