| 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' | |
| ) |