diff --git a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py index d225258c5d75d..d80a28044ea0a 100755 --- a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py +++ b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py @@ -45,6 +45,7 @@ import argparse import os import pathlib +import platform import re import subprocess import sys @@ -145,7 +146,12 @@ def __init__(self, args: argparse.Namespace, extra_args: List[str]) -> None: self.clang_extra_args.append("-resource-dir=%s" % self.resource_dir) def read_input(self) -> None: - with open(self.input_file_name, "r", encoding="utf-8") as input_file: + # Use a "\\?\" prefix on Windows to handle long file paths transparently: + # https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation + file_name = self.input_file_name + if platform.system() == "Windows": + file_name = "\\\\?\\" + os.path.abspath(file_name) + with open(file_name, "r", encoding="utf-8") as input_file: self.input_text = input_file.read() def get_prefixes(self) -> None: