blob: 9e61335343e26aa3a43b0b04693eceee1a6b7e41 [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/confusing_characters.star."""
load("//scripts/shac/confusing_characters.star", "confusing_characters")
# Escaped so that the confusing_characters check doesn't flag this file.
_LEFT_QUOTE = "\u201c"
_RIGHT_QUOTE = "\u201d"
_EN_DASH = "\u2013"
_EM_DASH = "\u2014"
def _finding(char, line, col, replacement):
return testing.finding(
level = "warning",
message = "Avoid using confusing characters: %s" % char,
filepath = "foo.md",
line = line,
col = col,
end_col = col + len(char),
replacements = [replacement],
)
def test_confusing_characters_smart_quotes():
res = testing.run(confusing_characters, files = {
"foo.md": "ok\nsay %shi%s\n" % (_LEFT_QUOTE, _RIGHT_QUOTE),
})
asserts.eq(res.findings, (
_finding(_LEFT_QUOTE, 2, 5, "\""),
_finding(_RIGHT_QUOTE, 2, 10, "\""),
))
asserts.eq(res.files["foo.md"], "ok\nsay \"hi\"\n")
def test_confusing_characters_dashes():
res = testing.run(confusing_characters, files = {
"foo.md": "a%sb\nc%sd\n" % (_EN_DASH, _EM_DASH),
})
asserts.eq(res.findings, (
_finding(_EN_DASH, 1, 2, "-"),
_finding(_EM_DASH, 2, 2, "-"),
))
asserts.eq(res.files["foo.md"], "a-b\nc-d\n")
def test_confusing_characters_ascii():
res = testing.run(confusing_characters, files = {
"foo.md": "say \"hi\" - bye\n",
})
asserts.eq(res.findings, ())