73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
import sys
|
|
import unittest
|
|
|
|
sys.path.append(".")
|
|
|
|
from bazel.wrapper_hook.compiledb import (
|
|
SETUP_CLANG_TIDY_BUILD_TARGETS,
|
|
_build_final_compile_command_entry,
|
|
_resolve_extra_build_targets,
|
|
)
|
|
|
|
|
|
class CompiledbOutputFormatTest(unittest.TestCase):
|
|
def test_setup_clang_tidy_targets_are_appended_once(self):
|
|
extra_build_targets = [
|
|
"//src/mongo/base:error_codes",
|
|
SETUP_CLANG_TIDY_BUILD_TARGETS[0],
|
|
]
|
|
|
|
resolved_targets = _resolve_extra_build_targets(
|
|
extra_build_targets=extra_build_targets,
|
|
setup_clang_tidy=True,
|
|
)
|
|
|
|
assert resolved_targets == [
|
|
"//src/mongo/base:error_codes",
|
|
*SETUP_CLANG_TIDY_BUILD_TARGETS,
|
|
]
|
|
|
|
def test_setup_clang_tidy_targets_are_not_added_when_disabled(self):
|
|
extra_build_targets = ["//src/mongo/base:error_codes"]
|
|
|
|
resolved_targets = _resolve_extra_build_targets(
|
|
extra_build_targets=extra_build_targets,
|
|
setup_clang_tidy=False,
|
|
)
|
|
|
|
assert resolved_targets == extra_build_targets
|
|
|
|
def test_final_entry_omits_non_standard_target_key(self):
|
|
def rewrite_exec_path(path, out_root_str, external_root_str):
|
|
if path.startswith("bazel-out/"):
|
|
return out_root_str + "/" + path[len("bazel-out/") :]
|
|
return path
|
|
|
|
entry = {
|
|
"file": "bazel-out/k8/bin/src/mongo/base/error_codes.cpp",
|
|
"arguments": ["clang++", "-c", "src/mongo/base/error_codes.cpp"],
|
|
"output": "bazel-out/k8/bin/src/mongo/base/error_codes.cpp.o",
|
|
"target": "//src/mongo/base:error_codes",
|
|
}
|
|
|
|
formatted_entry = _build_final_compile_command_entry(
|
|
entry=entry,
|
|
arguments=entry["arguments"],
|
|
repo_root_resolved="/repo",
|
|
rewrite_exec_path=rewrite_exec_path,
|
|
out_root_str="/real/bazel-out",
|
|
external_root_str="/real/external",
|
|
)
|
|
|
|
assert formatted_entry == {
|
|
"file": "/real/bazel-out/k8/bin/src/mongo/base/error_codes.cpp",
|
|
"arguments": ["clang++", "-c", "src/mongo/base/error_codes.cpp"],
|
|
"directory": "/repo",
|
|
"output": "/real/bazel-out/k8/bin/src/mongo/base/error_codes.cpp.o",
|
|
}
|
|
assert "target" not in formatted_entry
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|