blob: 654237dd40abae9236aa6c5a364355124c347430 [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/python.star."""
load("//scripts/shac/python.star", "_py_shebangs")
_WANT_SHEBANG = "#!/usr/bin/env fuchsia-vendored-python"
def test_py_shebangs():
res = testing.run(_py_shebangs, files = {
"foo.py": """\
#!/usr/bin/env python3
import os
""",
})
asserts.eq(res.findings, (
testing.finding(
level = "warning",
message = "Use fuchsia-vendored-python in shebangs for Python scripts.",
filepath = "foo.py",
line = 1,
replacements = [_WANT_SHEBANG + "\n"],
),
))
asserts.eq(res.files["foo.py"], _WANT_SHEBANG + """
import os
""")
def test_py_shebangs_ok():
res = testing.run(_py_shebangs, files = {
"correct.py": _WANT_SHEBANG + "\n",
"no_shebang.py": "import os\n",
"empty.py": "",
"opt_out.py": """\
#!/usr/bin/env python3
# allow-non-vendored-python
""",
"build/bazel/foo.py": "#!/usr/bin/env python3\n",
"third_party/foo.py": "#!/usr/bin/env python3\n",
"foo.sh": "#!/bin/bash\n",
})
asserts.eq(res.findings, ())