2022-03-22 20:04:31 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# Copyright 2022 The Chromium OS Authors. All rights reserved.
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
|
|
|
import doctest
|
|
|
|
import importlib
|
|
|
|
from pathlib import Path
|
|
|
|
import sys
|
|
|
|
from impl.common import CROSVM_ROOT, run_main, cmd, chdir, parallel, find_scripts
|
|
|
|
from impl.check_code_hygiene import has_crlf_line_endings
|
|
|
|
|
|
|
|
mypy = cmd("mypy --pretty --color-output").env("MYPY_FORCE_COLOR", "1").env("MYPYPATH", "tools")
|
|
|
|
|
|
|
|
|
|
|
|
def check_python():
|
|
|
|
print("Running python doctests")
|
|
|
|
for source in Path("tools/impl").glob("*.py"):
|
|
|
|
lib = importlib.import_module(f"impl.{source.stem}")
|
2022-04-19 20:01:03 +00:00
|
|
|
result = doctest.testmod(lib, optionflags=doctest.ELLIPSIS)
|
|
|
|
if result.failed:
|
|
|
|
sys.exit(1)
|
2022-03-22 20:04:31 +00:00
|
|
|
print("Type-checking python")
|
|
|
|
parallel(
|
|
|
|
mypy("tools/impl"),
|
|
|
|
*mypy.foreach(find_scripts(Path("tools"), "/usr/bin/env python3")),
|
|
|
|
).fg()
|
|
|
|
|
|
|
|
|
|
|
|
def check_crlf_line_endings():
|
|
|
|
crlf_endings = has_crlf_line_endings()
|
|
|
|
if crlf_endings:
|
|
|
|
print("Error: Following files have crlf(dos) line encodings")
|
|
|
|
print(*crlf_endings)
|
|
|
|
sys.exit(-1)
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
chdir(CROSVM_ROOT)
|
|
|
|
|
|
|
|
check_python()
|
|
|
|
check_crlf_line_endings()
|
|
|
|
cmd("./tools/fmt --check").fg()
|
|
|
|
cmd("./tools/clippy").fg()
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
run_main(main)
|