blob: 3296e7ec958b0f1af1a157dc84a15f6f8a44b73e [file]
# Copyright 2026 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests for the checks in //scripts/shac/bug_urls.star."""
load("//scripts/shac/bug_urls.star", "bug_urls")
# Split up so that the bug_urls check doesn't flag this file.
_SHORT = "fx" + "b/"
_HTTP = "http://" + "fxbug.dev/"
_CANONICAL = "https://" + "fxbug.dev/"
def _bug_url_finding(line, col, end_col, bug):
return testing.finding(
level = "warning",
message = "Bug links should use the form %s%s." % (_CANONICAL, bug),
filepath = "foo.cc",
line = line,
col = col,
end_col = end_col,
replacements = [_CANONICAL + bug],
)
def test_bug_urls_short_link():
res = testing.run(bug_urls, files = {
"foo.cc": "// TODO(%s123): fix\n" % _SHORT,
})
asserts.eq(res.findings, (_bug_url_finding(1, 9, 16, "123"),))
asserts.eq(res.files["foo.cc"], "// TODO(%s123): fix\n" % _CANONICAL)
def test_bug_urls_http():
res = testing.run(bug_urls, files = {
"foo.cc": "// %s456\n" % _HTTP,
})
asserts.eq(res.findings, (_bug_url_finding(1, 4, 4 + len(_HTTP) + 3, "456"),))
asserts.eq(res.files["foo.cc"], "// %s456\n" % _CANONICAL)
def test_bug_urls_multiple_per_line():
res = testing.run(bug_urls, files = {
"foo.cc": "%s1 %s2\n" % (_SHORT, _SHORT),
})
asserts.eq(res.findings, (
_bug_url_finding(1, 1, 6, "1"),
_bug_url_finding(1, 7, 12, "2"),
))
asserts.eq(res.files["foo.cc"], "%s1 %s2\n" % (_CANONICAL, _CANONICAL))
def test_bug_urls_canonical():
res = testing.run(bug_urls, files = {
"foo.cc": "// TODO(%s123): fix\n" % _CANONICAL,
})
asserts.eq(res.findings, ())
def test_bug_urls_markdown_link_title():
res = testing.run(bug_urls, files = {
"foo.cc": "[%s123](%s123)\n" % (_SHORT, _CANONICAL),
})
asserts.eq(res.findings, ())
def test_bug_urls_only_new_lines():
res = testing.run(bug_urls, files = {
"foo.cc": testing.file(
content = "%s1\nok\n" % _SHORT,
new_lines = {2: "ok"},
),
})
asserts.eq(res.findings, ())