44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pre_commit_hooks.check_vcs_permalinks import main
|
|
|
|
|
|
def test_trivial(tmpdir):
|
|
f = tmpdir.join('f.txt').ensure()
|
|
assert not main((str(f),))
|
|
|
|
|
|
def test_passing(tmpdir):
|
|
f = tmpdir.join('f.txt')
|
|
f.write_binary(
|
|
# permalinks are ok
|
|
b'https://github.com/asottile/test/blob/649e6/foo%20bar#L1\n'
|
|
# tags are ok
|
|
b'https://github.com/asottile/test/blob/1.0.0/foo%20bar#L1\n'
|
|
# links to files but not line numbers are ok
|
|
b'https://github.com/asottile/test/blob/master/foo%20bar\n'
|
|
# regression test for overly-greedy regex
|
|
b'https://github.com/ yes / no ? /blob/master/foo#L1\n',
|
|
)
|
|
assert not main((str(f),))
|
|
|
|
|
|
def test_failing(tmpdir, capsys):
|
|
with tmpdir.as_cwd():
|
|
tmpdir.join('f.txt').write_binary(
|
|
b'https://github.com/asottile/test/blob/master/foo#L1\n'
|
|
b'https://example.com/asottile/test/blob/master/foo#L1\n'
|
|
b'https://example.com/asottile/test/blob/main/foo#L1\n',
|
|
)
|
|
|
|
assert main(('f.txt', '--additional-github-domain', 'example.com'))
|
|
out, _ = capsys.readouterr()
|
|
assert out == (
|
|
'f.txt:1:https://github.com/asottile/test/blob/master/foo#L1\n'
|
|
'f.txt:2:https://example.com/asottile/test/blob/master/foo#L1\n'
|
|
'f.txt:3:https://example.com/asottile/test/blob/main/foo#L1\n'
|
|
'\n'
|
|
'Non-permanent github link detected.\n'
|
|
'On any page on github press [y] to load a permalink.\n'
|
|
)
|