MrTrillian created this revision.
MrTrillian added reviewers: rnk, compnerd, nlopes, Jake-Egan.
Herald added a subscriber: delcypher.
Herald added a reviewer: ributzka.
Herald added a project: All.
MrTrillian requested review of this revision.
Herald added a reviewer: dang.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.
Changes lit logic to:
- Use `os.path.abspath` on Windows, where MAX_PATH is a concern that we can
work around using substitute drives, which `os.path.realpath` would resolve.
- Use `os.path.realpath` on Unix, where the current directory always has
symlinks resolved, so it is impossible to preserve symlinks in the presence of
relative paths, and so we must make sure that all code paths use real paths.
Unfortunately, clang has `ModuleMap::canonicalizeModuleMapPath` which resolves
the real path, so several tests had to be made aware that modulemap paths are
special and need resolved paths. This required adding `%>/t` to `lit` to expand
paths and normalize directory separators.
This is an updated version of https://reviews.llvm.org/D152709
How tested: built with `-DLLVM_ENABLE_PROJECTS=clang` and built `check-all` on
both Windows and Linux (WSL-Ubuntu)
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D154130
Files:
clang/test/ClangScanDeps/diagnostics.c
clang/test/ClangScanDeps/header-search-pruning-transitive.c
clang/test/ClangScanDeps/modules-context-hash.c
clang/test/ClangScanDeps/modules-dep-args.c
clang/test/ClangScanDeps/modules-excluded-header.m
clang/test/ClangScanDeps/modules-extern-submodule.c
clang/test/ClangScanDeps/modules-extern-unrelated.m
clang/test/ClangScanDeps/modules-fmodule-name-no-module-built.m
clang/test/ClangScanDeps/modules-full.cpp
clang/test/ClangScanDeps/modules-implementation-private.m
clang/test/ClangScanDeps/modules-implementation-vfs.m
clang/test/ClangScanDeps/modules-implicit-dot-private.m
clang/test/ClangScanDeps/modules-incomplete-umbrella.c
clang/test/ClangScanDeps/modules-inferred.m
clang/test/ClangScanDeps/modules-no-undeclared-includes.c
clang/test/ClangScanDeps/modules-pch-common-submodule.c
clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
clang/test/ClangScanDeps/modules-pch-imports.c
clang/test/ClangScanDeps/modules-pch.c
clang/test/ClangScanDeps/modules-redefinition.m
clang/test/ClangScanDeps/modules-symlink-dir-from-module.c
clang/test/ClangScanDeps/modules-symlink-dir.c
clang/test/ClangScanDeps/modules-transitive.c
clang/test/ClangScanDeps/multiple-commands.c
clang/test/ClangScanDeps/removed-args.c
clang/test/ExtractAPI/relative_include.m
clang/test/Lexer/case-insensitive-include-win.c
clang/test/VFS/module-header-mismatches.m
llvm/cmake/modules/AddLLVM.cmake
llvm/utils/lit/lit/LitConfig.py
llvm/utils/lit/lit/TestRunner.py
llvm/utils/lit/lit/builtin_commands/diff.py
llvm/utils/lit/lit/cl_arguments.py
llvm/utils/lit/lit/discovery.py
llvm/utils/lit/lit/util.py
llvm/utils/lit/setup.py
llvm/utils/lit/tests/Inputs/config-map-discovery/driver.py
llvm/utils/lit/tests/Inputs/config-map-discovery/lit.alt.cfg
llvm/utils/lit/tests/Inputs/use-llvm-tool-required/lit.cfg
llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
llvm/utils/lit/tests/lit.cfg
llvm/utils/llvm-lit/llvm-lit.in
Index: llvm/utils/llvm-lit/llvm-lit.in
===================================================================
--- llvm/utils/llvm-lit/llvm-lit.in
+++ llvm/utils/llvm-lit/llvm-lit.in
@@ -8,7 +8,7 @@
def map_config(source_dir, site_config):
global config_map
- source_dir = os.path.realpath(source_dir)
+ source_dir = os.path.abspath(source_dir)
source_dir = os.path.normcase(source_dir)
site_config = os.path.normpath(site_config)
config_map[source_dir] = site_config
Index: llvm/utils/lit/tests/lit.cfg
===================================================================
--- llvm/utils/lit/tests/lit.cfg
+++ llvm/utils/lit/tests/lit.cfg
@@ -6,6 +6,7 @@
import subprocess
import lit.formats
+import lit.util
from lit.llvm import llvm_config
# Configuration file for the 'lit' test runner.
@@ -35,7 +36,7 @@
lit_path = os.path.join(llvm_src_root, "utils", "lit")
else:
lit_path = os.path.join(config.test_source_root, "..")
-lit_path = os.path.abspath(lit_path)
+lit_path = lit.util.safe_abs_path(lit_path)
# Required because some tests import the lit module
if llvm_config:
Index: llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
===================================================================
--- llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
+++ llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
@@ -1,4 +1,5 @@
import lit.formats
+import lit.util
config.name = "use-llvm-tool"
config.suffixes = [".txt"]
@@ -7,7 +8,7 @@
config.test_exec_root = None
import os.path
-this_dir = os.path.realpath(os.path.dirname(__file__))
+this_dir = os.path.dirname(lit.util.safe_abs_path(__file__))
config.llvm_tools_dir = os.path.join(this_dir, "build")
import lit.llvm
Index: llvm/utils/lit/tests/Inputs/use-llvm-tool-required/lit.cfg
===================================================================
--- llvm/utils/lit/tests/Inputs/use-llvm-tool-required/lit.cfg
+++ llvm/utils/lit/tests/Inputs/use-llvm-tool-required/lit.cfg
@@ -1,4 +1,5 @@
import lit.formats
+import lit.util
config.name = "use-llvm-tool-required"
config.suffixes = [".txt"]
@@ -7,7 +8,7 @@
config.test_exec_root = None
import os.path
-config.llvm_tools_dir = os.path.realpath(os.path.dirname(__file__))
+config.llvm_tools_dir = os.path.dirname(lit.util.safe_abs_path(__file__))
import lit.llvm
lit.llvm.initialize(lit_config, config)
Index: llvm/utils/lit/tests/Inputs/config-map-discovery/lit.alt.cfg
===================================================================
--- llvm/utils/lit/tests/Inputs/config-map-discovery/lit.alt.cfg
+++ llvm/utils/lit/tests/Inputs/config-map-discovery/lit.alt.cfg
@@ -5,5 +5,5 @@
config.test_format = lit.formats.ShTest()
import os
-config.test_exec_root = os.path.realpath(os.path.dirname(__file__))
+config.test_exec_root = os.path.dirname(lit.util.safe_abs_path(__file__))
config.test_source_root = os.path.join(config.test_exec_root, "tests")
Index: llvm/utils/lit/tests/Inputs/config-map-discovery/driver.py
===================================================================
--- llvm/utils/lit/tests/Inputs/config-map-discovery/driver.py
+++ llvm/utils/lit/tests/Inputs/config-map-discovery/driver.py
@@ -2,9 +2,7 @@
import os
import sys
-main_config = sys.argv[1]
-main_config = os.path.realpath(main_config)
-main_config = os.path.normcase(main_config)
+main_config = lit.util.safe_abs_path(sys.argv[1])
config_map = {main_config: sys.argv[2]}
builtin_parameters = {"config_map": config_map}
Index: llvm/utils/lit/setup.py
===================================================================
--- llvm/utils/lit/setup.py
+++ llvm/utils/lit/setup.py
@@ -7,7 +7,7 @@
# is nice to allow:
# python path/to/setup.py install
# to work (for scripts, etc.)
-os.chdir(os.path.dirname(os.path.abspath(__file__)))
+os.chdir(os.path.dirname(lit.util.safe_abs_path(__file__)))
sys.path.insert(0, ".")
import lit
Index: llvm/utils/lit/lit/util.py
===================================================================
--- llvm/utils/lit/lit/util.py
+++ llvm/utils/lit/lit/util.py
@@ -127,6 +127,23 @@
return n
+def safe_abs_path(path):
+ """Return the absolute path without resolving drive mappings on Windows.
+
+ """
+ if platform.system() == "Windows":
+ # Windows has limitations on path length (MAX_PATH) that
+ # can be worked around using substitute drives, which map
+ # a drive letter to a longer path on another drive.
+ # Since Python 3.8, os.path.realpath resolves sustitute drives,
+ # so we should not use it. In Python 3.7, os.path.realpath
+ # was implemented as os.path.abspath.
+ return os.path.normpath(os.path.abspath(path))
+ else:
+ # On UNIX, the current directory always has symbolic links resolved,
+ # so any program accepting relative paths cannot preserve symbolic
+ # links in paths and we should always use os.path.realpath.
+ return os.path.normpath(os.path.realpath(path))
def mkdir(path):
try:
Index: llvm/utils/lit/lit/discovery.py
===================================================================
--- llvm/utils/lit/lit/discovery.py
+++ llvm/utils/lit/lit/discovery.py
@@ -7,7 +7,7 @@
import sys
from lit.TestingConfig import TestingConfig
-from lit import LitConfig, Test
+from lit import LitConfig, Test, util
def chooseConfigFileFromDir(dir, config_names):
@@ -56,8 +56,8 @@
# configuration to load instead.
config_map = litConfig.params.get("config_map")
if config_map:
- cfgpath = os.path.realpath(cfgpath)
- target = config_map.get(os.path.normcase(cfgpath))
+ cfgpath = util.safe_abs_path(cfgpath)
+ target = config_map.get(cfgpath)
if target:
cfgpath = target
@@ -67,13 +67,13 @@
cfg = TestingConfig.fromdefaults(litConfig)
cfg.load_from_path(cfgpath, litConfig)
- source_root = os.path.realpath(cfg.test_source_root or path)
- exec_root = os.path.realpath(cfg.test_exec_root or path)
+ source_root = util.safe_abs_path(cfg.test_source_root or path)
+ exec_root = util.safe_abs_path(cfg.test_exec_root or path)
return Test.TestSuite(cfg.name, source_root, exec_root, cfg), ()
def search(path):
# Check for an already instantiated test suite.
- real_path = os.path.realpath(path)
+ real_path = util.safe_abs_path(path)
res = cache.get(real_path)
if res is None:
cache[real_path] = res = search1(path)
Index: llvm/utils/lit/lit/cl_arguments.py
===================================================================
--- llvm/utils/lit/lit/cl_arguments.py
+++ llvm/utils/lit/lit/cl_arguments.py
@@ -122,7 +122,7 @@
help="Additional paths to add to testing environment",
action="append",
default=[],
- type=os.path.abspath,
+ type=lit.util.safe_abs_path,
)
execution_group.add_argument(
"--vg", dest="useValgrind", help="Run tests under valgrind", action="store_true"
Index: llvm/utils/lit/lit/builtin_commands/diff.py
===================================================================
--- llvm/utils/lit/lit/builtin_commands/diff.py
+++ llvm/utils/lit/lit/builtin_commands/diff.py
@@ -281,7 +281,7 @@
try:
for file in args:
if file != "-" and not os.path.isabs(file):
- file = os.path.realpath(os.path.join(os.getcwd(), file))
+ file = util.safe_abs_path(file)
if flags.recursive_diff:
if file == "-":
Index: llvm/utils/lit/lit/TestRunner.py
===================================================================
--- llvm/utils/lit/lit/TestRunner.py
+++ llvm/utils/lit/lit/TestRunner.py
@@ -74,7 +74,7 @@
if os.path.isabs(newdir):
self.cwd = newdir
else:
- self.cwd = os.path.realpath(os.path.join(self.cwd, newdir))
+ self.cwd = lit.util.safe_abs_path(os.path.join(self.cwd, newdir))
class TimeoutHelper(object):
@@ -427,7 +427,7 @@
dir = to_unicode(dir) if kIsWindows else to_bytes(dir)
cwd = to_unicode(cwd) if kIsWindows else to_bytes(cwd)
if not os.path.isabs(dir):
- dir = os.path.realpath(os.path.join(cwd, dir))
+ dir = lit.util.safe_abs_path(os.path.join(cwd, dir))
if parent:
lit.util.mkdir_p(dir)
else:
@@ -473,7 +473,7 @@
path = to_unicode(path) if kIsWindows else to_bytes(path)
cwd = to_unicode(cwd) if kIsWindows else to_bytes(cwd)
if not os.path.isabs(path):
- path = os.path.realpath(os.path.join(cwd, path))
+ path = lit.util.safe_abs_path(os.path.join(cwd, path))
if force and not os.path.exists(path):
continue
try:
@@ -519,7 +519,7 @@
SHFileOperationW = windll.shell32.SHFileOperationW
SHFileOperationW.argtypes = [POINTER(SHFILEOPSTRUCTW)]
- path = os.path.abspath(path)
+ path = lit.util.safe_abs_path(path)
pFrom = create_unicode_buffer(path, len(path) + 2)
pFrom[len(path)] = pFrom[len(path) + 1] = "\0"
@@ -686,7 +686,7 @@
named_temp_files = []
builtin_commands = set(["cat", "diff"])
builtin_commands_dir = os.path.join(
- os.path.dirname(os.path.abspath(__file__)), "builtin_commands"
+ os.path.dirname(lit.util.safe_abs_path(__file__)), "builtin_commands"
)
inproc_builtins = {
"cd": executeBuiltinCd,
@@ -772,7 +772,7 @@
# commands.
if args[0] in builtin_commands:
args.insert(0, sys.executable)
- cmd_shenv.env["PYTHONPATH"] = os.path.dirname(os.path.abspath(__file__))
+ cmd_shenv.env["PYTHONPATH"] = os.path.dirname(lit.util.safe_abs_path(__file__))
args[1] = os.path.join(builtin_commands_dir, args[1] + ".py")
# We had to search through the 'not' commands to find all the 'env'
@@ -1228,18 +1228,10 @@
substitutions.extend(test.config.substitutions)
tmpName = tmpBase + ".tmp"
baseName = os.path.basename(tmpBase)
- substitutions.extend(
- [
- ("%s", sourcepath),
- ("%S", sourcedir),
- ("%p", sourcedir),
- ("%{pathsep}", os.pathsep),
- ("%t", tmpName),
- ("%basename_t", baseName),
- ("%T", tmpDir),
- ]
- )
+ substitutions.append(("%{pathsep}", os.pathsep))
+ substitutions.append(("%basename_t", baseName))
+
substitutions.extend(
[
("%{fs-src-root}", pathlib.Path(sourcedir).anchor),
@@ -1248,49 +1240,46 @@
]
)
- # "%/[STpst]" should be normalized.
- substitutions.extend(
- [
- ("%/s", sourcepath.replace("\\", "/")),
- ("%/S", sourcedir.replace("\\", "/")),
- ("%/p", sourcedir.replace("\\", "/")),
- ("%/t", tmpBase.replace("\\", "/") + ".tmp"),
- ("%/T", tmpDir.replace("\\", "/")),
- ("%/et", tmpName.replace("\\", "\\\\\\\\\\\\\\\\")),
- ]
- )
+ substitutions.append(("%/et", tmpName.replace("\\", "\\\\\\\\\\\\\\\\")))
- # "%{/[STpst]:regex_replacement}" should be normalized like "%/[STpst]" but we're
- # also in a regex replacement context of a s@@@ regex.
def regex_escape(s):
s = s.replace("@", r"\@")
s = s.replace("&", r"\&")
return s
- substitutions.extend(
- [
- ("%{/s:regex_replacement}", regex_escape(sourcepath.replace("\\", "/"))),
- ("%{/S:regex_replacement}", regex_escape(sourcedir.replace("\\", "/"))),
- ("%{/p:regex_replacement}", regex_escape(sourcedir.replace("\\", "/"))),
- (
- "%{/t:regex_replacement}",
- regex_escape(tmpBase.replace("\\", "/")) + ".tmp",
- ),
- ("%{/T:regex_replacement}", regex_escape(tmpDir.replace("\\", "/"))),
- ]
- )
+ path_substitutions = [
+ ("s", sourcepath), ("S", sourcedir), ("p", sourcedir),
+ ("t", tmpName), ("T", tmpDir)
+ ]
+ for path_substitution in path_substitutions:
+ letter = path_substitution[0]
+ path = path_substitution[1]
+
+ # Original path variant
+ substitutions.append(("%" + letter, path))
+
+ # Normalized path separator variant
+ substitutions.append(("%/" + letter, path.replace("\\", "/")))
+
+ # realpath variants
+ # Windows paths with substitute drives are not expanded by default
+ # as they are used to avoid MAX_PATH issues, but sometimes we do
+ # need the fully expanded path.
+ real_path = os.path.realpath(path)
+ substitutions.append(("%>" + letter, real_path))
+ substitutions.append(("%>/" + letter, real_path.replace("\\", "/")))
+
+ # "%{/[STpst]:regex_replacement}" should be normalized like
+ # "%/[STpst]" but we're also in a regex replacement context
+ # of a s@@@ regex.
+ substitutions.append(
+ ("%{/" + letter + ":regex_replacement}",
+ regex_escape(path.replace("\\", "/"))))
+
+ # "%:[STpst]" are normalized paths without colons and without
+ # a leading slash.
+ substitutions.append(("%:" + letter, colonNormalizePath(path)))
- # "%:[STpst]" are normalized paths without colons and without a leading
- # slash.
- substitutions.extend(
- [
- ("%:s", colonNormalizePath(sourcepath)),
- ("%:S", colonNormalizePath(sourcedir)),
- ("%:p", colonNormalizePath(sourcedir)),
- ("%:t", colonNormalizePath(tmpBase + ".tmp")),
- ("%:T", colonNormalizePath(tmpDir)),
- ]
- )
return substitutions
Index: llvm/utils/lit/lit/LitConfig.py
===================================================================
--- llvm/utils/lit/lit/LitConfig.py
+++ llvm/utils/lit/lit/LitConfig.py
@@ -189,7 +189,7 @@
f = inspect.currentframe()
# Step out of _write_message, and then out of wrapper.
f = f.f_back.f_back
- file = os.path.abspath(inspect.getsourcefile(f))
+ file = lit.util.safe_abs_path(inspect.getsourcefile(f))
line = inspect.getlineno(f)
sys.stderr.write(
"%s: %s:%d: %s: %s\n" % (self.progname, file, line, kind, message)
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -1705,10 +1705,15 @@
# use it and can't be in a lit module. Use with make_paths_relative().
string(CONCAT LLVM_LIT_PATH_FUNCTION
"# Allow generated file to be relocatable.\n"
- "from pathlib import Path\n"
+ "import os\n"
+ "import platform\n"
"def path(p):\n"
" if not p: return ''\n"
- " return str((Path(__file__).parent / p).resolve())\n"
+ " # Follows lit.util.safe_abs_path, which cannot be imported here.\n"
+ " if platform.system() == 'Windows':\n"
+ " return os.path.abspath(os.path.join(os.path.dirname(__file__), p))\n"
+ " else:\n"
+ " return os.path.realpath(os.path.join(os.path.dirname(__file__), p))\n"
)
# This function provides an automatic way to 'configure'-like generate a file
Index: clang/test/VFS/module-header-mismatches.m
===================================================================
--- clang/test/VFS/module-header-mismatches.m
+++ clang/test/VFS/module-header-mismatches.m
@@ -1,6 +1,6 @@
// RUN: rm -rf %t
// RUN: split-file %s %t
-// RUN: sed -e "s;TEST_DIR;%/t;g" %t/sed-overlay.yaml > %t/overlay.yaml
+// RUN: sed -e "s;TEST_DIR;%>/t;g" %t/sed-overlay.yaml > %t/overlay.yaml
// These tests first build with an overlay such that the header is resolved
// to %t/other/Mismatch.h. They then build again with the header resolved
@@ -11,20 +11,20 @@
// since this does happen in real projects (with a different copy of the same
// file).
-// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -ivfsoverlay %t/overlay.yaml -F %t/header-frameworks -fsyntax-only -verify %t/use.m
-// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -F %t/header-frameworks -fsyntax-only -verify %t/use.m
+// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -ivfsoverlay %t/overlay.yaml -F %>t/header-frameworks -fsyntax-only -verify %t/use.m
+// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -F %>t/header-frameworks -fsyntax-only -verify %t/use.m
// RUN: find %t/hf-mcp -name "Mismatch-*.pcm" | count 1
// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/df-mcp -ivfsoverlay %t/overlay.yaml -F %t/dir-frameworks -fsyntax-only -verify %t/use.m
// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/hf-mcp -F %t/dir-frameworks -fsyntax-only -verify %t/use.m
// RUN: find %t/df-mcp -name "Mismatch-*.pcm" | count 1
-// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/nf-mcp -ivfsoverlay %t/overlay.yaml -F %t/norm-frameworks -fsyntax-only -verify %t/use.m
-// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/nf-mcp -F %t/norm-frameworks -fsyntax-only -verify %t/use.m
+// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/nf-mcp -ivfsoverlay %t/overlay.yaml -F %>t/norm-frameworks -fsyntax-only -verify %t/use.m
+// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/nf-mcp -F %>t/norm-frameworks -fsyntax-only -verify %t/use.m
// RUN: find %t/nf-mcp -name "Mismatch-*.pcm" | count 1
-// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/m-mcp -ivfsoverlay %t/overlay.yaml -I %t/mod -fsyntax-only -verify %t/use.m
-// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/m-mcp -I %t/mod -fsyntax-only -verify %t/use.m
+// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/m-mcp -ivfsoverlay %t/overlay.yaml -I %>t/mod -fsyntax-only -verify %t/use.m
+// RUN: %clang_cc1 -Werror -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/m-mcp -I %>t/mod -fsyntax-only -verify %t/use.m
// RUN: find %t/m-mcp -name "Mismatch-*.pcm" | count 1
//--- use.m
Index: clang/test/Lexer/case-insensitive-include-win.c
===================================================================
--- clang/test/Lexer/case-insensitive-include-win.c
+++ clang/test/Lexer/case-insensitive-include-win.c
@@ -5,6 +5,6 @@
// REQUIRES: system-windows
// RUN: mkdir -p %t.dir
// RUN: touch %t.dir/foo.h
-// RUN: not %clang_cl /FI\\?\%t.dir\FOO.h /WX -fsyntax-only %s 2>&1 | FileCheck %s
+// RUN: not %clang_cl /FI\\?\%>t.dir\FOO.h /WX -fsyntax-only %s 2>&1 | FileCheck %s
// CHECK: non-portable path to file '"\\?\
Index: clang/test/ExtractAPI/relative_include.m
===================================================================
--- clang/test/ExtractAPI/relative_include.m
+++ clang/test/ExtractAPI/relative_include.m
@@ -6,22 +6,22 @@
// RUN: cp %t/MyFramework.h %t/Frameworks/MyFramework.framework/Headers/
// RUN: cp %t/MyHeader.h %t/Frameworks/MyFramework.framework/Headers/
-// RUN: sed -e "s@SRCROOT@%{/t:regex_replacement}@g" \
+// RUN: sed -e "s@SRCROOT@%>/t@g" \
// RUN: %t/reference.output.json.in >> %t/reference.output.json
// Headermap maps headers to the source root SRCROOT
-// RUN: sed -e "s@SRCROOT@%{/t:regex_replacement}@g" \
+// RUN: sed -e "s@SRCROOT@%>/t@g" \
// RUN: %t/headermap.hmap.json.in >> %t/headermap.hmap.json
// RUN: %hmaptool write %t/headermap.hmap.json %t/headermap.hmap
// Input headers use paths to the framework root/DSTROOT
// RUN: %clang_cc1 -extract-api -v --product-name=MyFramework \
// RUN: -triple arm64-apple-macosx \
-// RUN: -iquote%t -I%t/headermap.hmap -F%t/Frameworks \
+// RUN: -iquote%>/t -I%t/headermap.hmap -F%>/t/Frameworks \
// RUN: -x objective-c-header \
-// RUN: %t/Frameworks/MyFramework.framework/Headers/MyFramework.h \
-// RUN: %t/Frameworks/MyFramework.framework/Headers/MyHeader.h \
-// RUN: %t/QuotedHeader.h \
+// RUN: %>/t/Frameworks/MyFramework.framework/Headers/MyFramework.h \
+// RUN: %>/t/Frameworks/MyFramework.framework/Headers/MyHeader.h \
+// RUN: %>/t/QuotedHeader.h \
// RUN: -o %t/output.json 2>&1 -verify | FileCheck -allow-empty %s
// Generator version is not consistent across test runs, normalize it.
Index: clang/test/ClangScanDeps/removed-args.c
===================================================================
--- clang/test/ClangScanDeps/removed-args.c
+++ clang/test/ClangScanDeps/removed-args.c
@@ -12,13 +12,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/removed-args/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
//
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1"
// CHECK-NOT: "-fdebug-compilation-dir="
@@ -43,7 +43,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1"
// CHECK-NOT: "-fdebug-compilation-dir=
Index: clang/test/ClangScanDeps/multiple-commands.c
===================================================================
--- clang/test/ClangScanDeps/multiple-commands.c
+++ clang/test/ClangScanDeps/multiple-commands.c
@@ -14,7 +14,7 @@
// RUN: -j 1 -format experimental-full -mode preprocess-dependency-directives \
// RUN: > %t/deps.json
-// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// Build the -save-temps + -fmodules case
// RUN: %deps-to-rsp %t/deps.json --module-name=Mod > %t/Mod.rsp
@@ -35,7 +35,7 @@
// CHECK: "modules": [
// CHECK-NEXT: {
-// CHECK: "clang-modulemap-file": "[[PREFIX]]{{.}}module.modulemap"
+// CHECK: "clang-modulemap-file": "[[PREFIX_EXPANDED]]{{.}}module.modulemap"
// CHECK: "name": "Mod"
// CHECK: }
// CHECK-NEXT: ]
Index: clang/test/ClangScanDeps/modules-transitive.c
===================================================================
--- clang/test/ClangScanDeps/modules-transitive.c
+++ clang/test/ClangScanDeps/modules-transitive.c
@@ -28,7 +28,7 @@
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
@@ -39,7 +39,7 @@
// CHECK-NEXT: "module-name": "second"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/first/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
// CHECK-NOT: "-fmodule-map-file=[[PREFIX]]/third/module.modulemap"
Index: clang/test/ClangScanDeps/modules-symlink-dir.c
===================================================================
--- clang/test/ClangScanDeps/modules-symlink-dir.c
+++ clang/test/ClangScanDeps/modules-symlink-dir.c
@@ -16,7 +16,7 @@
// RUN: -format experimental-full -mode=preprocess-dependency-directives \
// RUN: -optimize-args -module-files-dir %t/build > %t/deps.json
-// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s
+// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t %s
// Check the module commands actually build.
// RUN: %deps-to-rsp %t/deps.json --module-name=Mod > %t/Mod.rsp
@@ -27,7 +27,7 @@
// CHECK: "modules": [
// CHECK: {
// CHECK: "clang-module-deps": [],
-// CHECK: "clang-modulemap-file": "[[PREFIX]]/module/F.framework/Modules/module.modulemap"
+// CHECK: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module/F.framework/Modules/module.modulemap"
// CHECK: "command-line": [
// CHECK-NOT: symlink-to-module
// CHECK: "[[PREFIX]]/module/F.framework/Modules/module.modulemap"
@@ -37,7 +37,7 @@
// CHECK: "name": "F"
// CHECK-NEXT: }
// CHECK-NEXT: {
-// CHECK: "clang-modulemap-file": "[[PREFIX]]/module/module.modulemap"
+// CHECK: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module/module.modulemap"
// CHECK: "command-line": [
// CHECK-NOT: symlink-to-module
// CHECK: "[[PREFIX]]/module/module.modulemap"
@@ -55,7 +55,7 @@
// CHECK: }
// CHECK-NEXT: ],
// CHECK: "command-line": [
-// CHECK: "-fmodule-map-file=[[PREFIX]]/module/module.modulemap"
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/module/module.modulemap"
// CHECK: ]
// CHECK: "clang-module-deps": [
// CHECK: {
@@ -64,7 +64,7 @@
// CHECK: }
// CHECK-NEXT: ]
// CHECK: "command-line": [
-// CHECK: "-fmodule-map-file=[[PREFIX]]/module/module.modulemap"
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/module/module.modulemap"
// CHECK: ]
// CHECK: "clang-module-deps": [
// CHECK: {
@@ -73,7 +73,7 @@
// CHECK: }
// CHECK-NEXT: ]
// CHECK: "command-line": [
-// CHECK: "-fmodule-map-file=[[PREFIX]]/module/F.framework/Modules/module.modulemap"
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/module/F.framework/Modules/module.modulemap"
// CHECK: ]
// CHECK: "clang-module-deps": [
// CHECK: {
@@ -82,7 +82,7 @@
// CHECK: }
// CHECK-NEXT: ]
// CHECK: "command-line": [
-// CHECK: "-fmodule-map-file=[[PREFIX]]/module/F.framework/Modules/module.modulemap"
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/module/F.framework/Modules/module.modulemap"
// CHECK: ]
//--- cdb.json.in
Index: clang/test/ClangScanDeps/modules-symlink-dir-from-module.c
===================================================================
--- clang/test/ClangScanDeps/modules-symlink-dir-from-module.c
+++ clang/test/ClangScanDeps/modules-symlink-dir-from-module.c
@@ -14,13 +14,13 @@
// RUN: -format experimental-full -mode=preprocess-dependency-directives \
// RUN: -optimize-args -module-files-dir %t/build > %t/deps.json
-// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: "modules": [
// CHECK: {
// CHECK: "command-line": [
// CHECK-NOT: ]
-// CHECK: "-fmodule-map-file=[[PREFIX]]/include/module/module.modulemap"
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/include/module/module.modulemap"
// CHECK: ]
// CHECK: "name": "Foo"
// CHECK: }
Index: clang/test/ClangScanDeps/modules-redefinition.m
===================================================================
--- clang/test/ClangScanDeps/modules-redefinition.m
+++ clang/test/ClangScanDeps/modules-redefinition.m
@@ -30,7 +30,7 @@
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
@@ -40,7 +40,7 @@
// CHECK-NEXT: "module-name": "third"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/first/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
Index: clang/test/ClangScanDeps/modules-pch.c
===================================================================
--- clang/test/ClangScanDeps/modules-pch.c
+++ clang/test/ClangScanDeps/modules-pch.c
@@ -11,7 +11,7 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_pch.json > %t/cdb_pch.json
// RUN: clang-scan-deps -compilation-database %t/cdb_pch.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_pch.json
-// RUN: cat %t/result_pch.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-PCH
+// RUN: cat %t/result_pch.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-PCH
//
// Check we didn't build the PCH during dependency scanning.
// RUN: not cat %/t/pch.h.gch
@@ -20,7 +20,7 @@
// CHECK-PCH-NEXT: "modules": [
// CHECK-PCH-NEXT: {
// CHECK-PCH-NEXT: "clang-module-deps": [],
-// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-PCH-NEXT: "command-line": [
// CHECK-PCH: ],
// CHECK-PCH-NEXT: "context-hash": "[[HASH_MOD_COMMON_1:.*]]",
@@ -32,7 +32,7 @@
// CHECK-PCH-NEXT: },
// CHECK-PCH-NEXT: {
// CHECK-PCH-NEXT: "clang-module-deps": [],
-// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-PCH-NEXT: "command-line": [
// CHECK-PCH: ],
// CHECK-PCH-NEXT: "context-hash": "[[HASH_MOD_COMMON_2:.*]]",
@@ -49,7 +49,7 @@
// CHECK-PCH-NEXT: "module-name": "ModCommon2"
// CHECK-PCH-NEXT: }
// CHECK-PCH-NEXT: ],
-// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-PCH-NEXT: "command-line": [
// CHECK-PCH: ],
// CHECK-PCH-NEXT: "context-hash": "[[HASH_MOD_PCH:.*]]",
@@ -99,13 +99,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_tu.json > %t/cdb_tu.json
// RUN: clang-scan-deps -compilation-database %t/cdb_tu.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_tu.json
-// RUN: cat %t/result_tu.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-TU
+// RUN: cat %t/result_tu.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-TU
//
// CHECK-TU: {
// CHECK-TU-NEXT: "modules": [
// CHECK-TU-NEXT: {
// CHECK-TU-NEXT: "clang-module-deps": [],
-// CHECK-TU-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-TU-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-TU-NEXT: "command-line": [
// CHECK-TU: ],
// CHECK-TU-NEXT: "context-hash": "[[HASH_MOD_TU:.*]]",
@@ -148,13 +148,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_tu_with_common.json > %t/cdb_tu_with_common.json
// RUN: clang-scan-deps -compilation-database %t/cdb_tu_with_common.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_tu_with_common.json
-// RUN: cat %t/result_tu_with_common.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-TU-WITH-COMMON
+// RUN: cat %t/result_tu_with_common.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-TU-WITH-COMMON
//
// CHECK-TU-WITH-COMMON: {
// CHECK-TU-WITH-COMMON-NEXT: "modules": [
// CHECK-TU-WITH-COMMON-NEXT: {
// CHECK-TU-WITH-COMMON-NEXT: "clang-module-deps": [],
-// CHECK-TU-WITH-COMMON-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-TU-WITH-COMMON-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-TU-WITH-COMMON-NEXT: "command-line": [
// CHECK-TU-WITH-COMMON: ],
// CHECK-TU-WITH-COMMON-NEXT: "context-hash": "[[HASH_MOD_TU_WITH_COMMON:.*]]",
Index: clang/test/ClangScanDeps/modules-pch-imports.c
===================================================================
--- clang/test/ClangScanDeps/modules-pch-imports.c
+++ clang/test/ClangScanDeps/modules-pch-imports.c
@@ -24,7 +24,7 @@
// RUN: -format experimental-full -mode preprocess-dependency-directives \
// RUN: > %t/deps.json
-// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// Verify that the only modular import in C is E and not the unrelated modules
// A or B that come from the PCH.
@@ -37,7 +37,7 @@
// CHECK: "module-name": "E"
// CHECK: }
// CHECK-NEXT: ]
-// CHECK: "clang-modulemap-file": "[[PREFIX]]/module.modulemap"
+// CHECK: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap"
// CHECK: "command-line": [
// CHECK-NOT: "-fmodule-file=
// CHECK: "-fmodule-file={{(E=)?}}[[PREFIX]]/{{.*}}/E-{{.*}}.pcm"
Index: clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
===================================================================
--- clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
+++ clang/test/ClangScanDeps/modules-pch-common-via-submodule.c
@@ -13,13 +13,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch-common-via-submodule/cdb_pch.json > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_pch.json
-// RUN: cat %t/result_pch.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-PCH
+// RUN: cat %t/result_pch.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-PCH
//
// CHECK-PCH: {
// CHECK-PCH-NEXT: "modules": [
// CHECK-PCH-NEXT: {
// CHECK-PCH-NEXT: "clang-module-deps": [],
-// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-PCH-NEXT: "command-line": [
// CHECK-PCH: ],
// CHECK-PCH-NEXT: "context-hash": "[[HASH_MOD_COMMON:.*]]",
@@ -60,13 +60,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch-common-via-submodule/cdb_tu.json > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_tu.json
-// RUN: cat %t/result_tu.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-TU
+// RUN: cat %t/result_tu.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-TU
//
// CHECK-TU: {
// CHECK-TU-NEXT: "modules": [
// CHECK-TU-NEXT: {
// CHECK-TU-NEXT: "clang-module-deps": [],
-// CHECK-TU-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-TU-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-TU-NEXT: "command-line": [
// CHECK-TU: ],
// CHECK-TU-NEXT: "context-hash": "[[HASH_MOD_TU:.*]]",
Index: clang/test/ClangScanDeps/modules-pch-common-submodule.c
===================================================================
--- clang/test/ClangScanDeps/modules-pch-common-submodule.c
+++ clang/test/ClangScanDeps/modules-pch-common-submodule.c
@@ -16,13 +16,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch-common-submodule/cdb_pch.json > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_pch.json
-// RUN: cat %t/result_pch.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-PCH
+// RUN: cat %t/result_pch.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-PCH
//
// CHECK-PCH: {
// CHECK-PCH-NEXT: "modules": [
// CHECK-PCH-NEXT: {
// CHECK-PCH-NEXT: "clang-module-deps": [],
-// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-PCH-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-PCH-NEXT: "command-line": [
// CHECK-PCH: ],
// CHECK-PCH-NEXT: "context-hash": "[[HASH_MOD_COMMON:.*]]",
@@ -64,13 +64,13 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch-common-submodule/cdb_tu.json > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result_tu.json
-// RUN: cat %t/result_tu.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK-TU
+// RUN: cat %t/result_tu.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK-TU
//
// CHECK-TU: {
// CHECK-TU-NEXT: "modules": [
// CHECK-TU-NEXT: {
// CHECK-TU-NEXT: "clang-module-deps": [],
-// CHECK-TU-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-TU-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-TU-NEXT: "command-line": [
// CHECK-TU: ],
// CHECK-TU-NEXT: "context-hash": "[[HASH_MOD_TU:.*]]",
Index: clang/test/ClangScanDeps/modules-no-undeclared-includes.c
===================================================================
--- clang/test/ClangScanDeps/modules-no-undeclared-includes.c
+++ clang/test/ClangScanDeps/modules-no-undeclared-includes.c
@@ -31,13 +31,13 @@
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full \
// RUN: -module-files-dir %t/build > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: "-fmodule-map-file=[[PREFIX]]/undeclared/module.modulemap"
// CHECK: ],
Index: clang/test/ClangScanDeps/modules-inferred.m
===================================================================
--- clang/test/ClangScanDeps/modules-inferred.m
+++ clang/test/ClangScanDeps/modules-inferred.m
@@ -26,20 +26,20 @@
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
// CHECK-NEXT: "file-deps": [
-// CHECK-NEXT: "[[PREFIX]]/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h",
-// CHECK-NEXT: "[[PREFIX]]/frameworks/Inferred.framework/Headers/Inferred.h",
-// CHECK-NEXT: "[[PREFIX]]/frameworks/module.modulemap"
+// CHECK-NEXT: "[[PREFIX]]/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h",
+// CHECK-NEXT: "[[PREFIX]]/frameworks/Inferred.framework/Headers/Inferred.h",
+// CHECK-NEXT: "[[PREFIX]]/frameworks/module.modulemap"
// CHECK-NEXT: ],
// CHECK-NEXT: "name": "Inferred"
// CHECK-NEXT: }
Index: clang/test/ClangScanDeps/modules-incomplete-umbrella.c
===================================================================
--- clang/test/ClangScanDeps/modules-incomplete-umbrella.c
+++ clang/test/ClangScanDeps/modules-incomplete-umbrella.c
@@ -34,12 +34,12 @@
// RUN: sed -e "s|DIR|%/t|g" %t/from_tu.cdb.json.template > %t/from_tu.cdb.json
// RUN: clang-scan-deps -compilation-database %t/from_tu.cdb.json -format experimental-full > %t/from_tu_result.json
-// RUN: cat %t/from_tu_result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK_TU
+// RUN: cat %t/from_tu_result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t --check-prefixes=CHECK_TU
// CHECK_TU: {
// CHECK_TU-NEXT: "modules": [
// CHECK_TU-NEXT: {
// CHECK_TU-NEXT: "clang-module-deps": [],
-// CHECK_TU-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",
+// CHECK_TU-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.modulemap",
// CHECK_TU-NEXT: "command-line": [
// CHECK_TU: ],
// CHECK_TU-NEXT: "context-hash": "{{.*}}",
@@ -51,7 +51,7 @@
// CHECK_TU-NEXT: },
// CHECK_TU-NEXT: {
// CHECK_TU-NEXT: "clang-module-deps": [],
-// CHECK_TU-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",
+// CHECK_TU-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.private.modulemap",
// CHECK_TU-NEXT: "command-line": [
// CHECK_TU: ],
// CHECK_TU-NEXT: "context-hash": "{{.*}}",
@@ -112,12 +112,12 @@
// RUN: sed -e "s|DIR|%/t|g" %t/from_module.cdb.json.template > %t/from_module.cdb.json
// RUN: clang-scan-deps -compilation-database %t/from_module.cdb.json -format experimental-full > %t/from_module_result.json
-// RUN: cat %t/from_module_result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK_MODULE
+// RUN: cat %t/from_module_result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t --check-prefixes=CHECK_MODULE
// CHECK_MODULE: {
// CHECK_MODULE-NEXT: "modules": [
// CHECK_MODULE-NEXT: {
// CHECK_MODULE-NEXT: "clang-module-deps": [],
-// CHECK_MODULE-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",
+// CHECK_MODULE-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.modulemap",
// CHECK_MODULE-NEXT: "command-line": [
// CHECK_MODULE: ],
// CHECK_MODULE-NEXT: "context-hash": "{{.*}}",
@@ -129,7 +129,7 @@
// CHECK_MODULE-NEXT: },
// CHECK_MODULE-NEXT: {
// CHECK_MODULE-NEXT: "clang-module-deps": [],
-// CHECK_MODULE-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",
+// CHECK_MODULE-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.private.modulemap",
// CHECK_MODULE-NEXT: "command-line": [
// CHECK_MODULE: ],
// CHECK_MODULE-NEXT: "context-hash": "{{.*}}",
@@ -151,7 +151,7 @@
// CHECK_MODULE-NEXT: "module-name": "FW_Private"
// CHECK_MODULE-NEXT: }
// CHECK_MODULE-NEXT: ],
-// CHECK_MODULE-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK_MODULE-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK_MODULE-NEXT: "command-line": [
// CHECK_MODULE: "-fmodule-file={{.*}}/FW-{{.*}}.pcm"
// CHECK_MODULE: "-fmodule-file={{.*}}/FW_Private-{{.*}}.pcm"
Index: clang/test/ClangScanDeps/modules-implicit-dot-private.m
===================================================================
--- clang/test/ClangScanDeps/modules-implicit-dot-private.m
+++ clang/test/ClangScanDeps/modules-implicit-dot-private.m
@@ -22,12 +22,12 @@
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
@@ -39,7 +39,7 @@
// CHECK: },
// CHECK: {
// CHECK: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.private.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
Index: clang/test/ClangScanDeps/modules-implementation-vfs.m
===================================================================
--- clang/test/ClangScanDeps/modules-implementation-vfs.m
+++ clang/test/ClangScanDeps/modules-implementation-vfs.m
@@ -74,7 +74,7 @@
// RUN: sed -e "s|DIR|%/t|g" %t/overlay.json.template > %t/overlay.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -j 1 > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK: "modules": [
// CHECK: {
@@ -96,7 +96,7 @@
// CHECK: "-fmodule-map-file=[[PREFIX]]/frameworks/A.framework/Modules/module.modulemap",
// CHECK: "-x"
// CHECK-NEXT: "objective-c"
-// CHECK-NEXT: "[[PREFIX]]/frameworks/B.framework/Modules/module.modulemap"
+// CHECK-NEXT: "[[PREFIX_EXPANDED]]/frameworks/B.framework/Modules/module.modulemap"
// CHECK: ]
// CHECK: "name": "B"
// CHECK: }
@@ -134,7 +134,7 @@
// CHECK: ]
// CHECK: "command-line": [
// CHECK: "-fmodule-map-file=[[PREFIX]]/frameworks/A.framework/Modules/module.modulemap"
-// CHECK: "-fmodule-map-file=[[PREFIX]]/frameworks/B.framework/Modules/module.modulemap"
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/frameworks/B.framework/Modules/module.modulemap"
// CHECK: "-fmodule-name=A"
// CHECK: ],
// CHECK: "input-file": "[[PREFIX]]/tu3.m"
Index: clang/test/ClangScanDeps/modules-implementation-private.m
===================================================================
--- clang/test/ClangScanDeps/modules-implementation-private.m
+++ clang/test/ClangScanDeps/modules-implementation-private.m
@@ -26,13 +26,13 @@
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/frameworks/FW.framework/Modules/module.private.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
Index: clang/test/ClangScanDeps/modules-full.cpp
===================================================================
--- clang/test/ClangScanDeps/modules-full.cpp
+++ clang/test/ClangScanDeps/modules-full.cpp
@@ -12,11 +12,11 @@
//
// RUN: clang-scan-deps -compilation-database %t.cdb -j 4 -format experimental-full \
// RUN: -mode preprocess-dependency-directives > %t.result
-// RUN: cat %t.result | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t.dir %s
+// RUN: cat %t.result | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t.dir -DPREFIX_EXPANDED=%>/t.dir %s
//
// RUN: clang-scan-deps -compilation-database %t_clangcl.cdb -j 4 -format experimental-full \
// RUN: -mode preprocess-dependency-directives > %t_clangcl.result
-// RUN: cat %t_clangcl.result | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t.dir %s
+// RUN: cat %t_clangcl.result | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t.dir -DPREFIX_EXPANDED=%>/t.dir %s
#include "header.h"
@@ -29,7 +29,7 @@
// CHECK-NEXT: "module-name": "header2"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/Inputs/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/Inputs/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1"
// CHECK: "-emit-module"
@@ -47,7 +47,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/Inputs/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/Inputs/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
// CHECK: "-emit-module",
@@ -64,7 +64,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/Inputs/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/Inputs/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
// CHECK: "-emit-module",
Index: clang/test/ClangScanDeps/modules-fmodule-name-no-module-built.m
===================================================================
--- clang/test/ClangScanDeps/modules-fmodule-name-no-module-built.m
+++ clang/test/ClangScanDeps/modules-fmodule-name-no-module-built.m
@@ -11,7 +11,7 @@
// RUN: clang-scan-deps -compilation-database %t.cdb -j 1 -format experimental-full \
// RUN: -mode preprocess-dependency-directives > %t.result
-// RUN: cat %t.result | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t.dir --check-prefixes=CHECK %s
+// RUN: cat %t.result | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t.dir -DPREFIX_EXPANDED=%>/t.dir --check-prefixes=CHECK %s
#import "header3.h"
#import "header.h"
@@ -20,7 +20,7 @@
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": []
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/Inputs/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/Inputs/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "[[HASH_H2:[A-Z0-9]+]]",
Index: clang/test/ClangScanDeps/modules-extern-unrelated.m
===================================================================
--- clang/test/ClangScanDeps/modules-extern-unrelated.m
+++ clang/test/ClangScanDeps/modules-extern-unrelated.m
@@ -31,13 +31,13 @@
// RUN: sed -e "s|DIR|%/t|g" -e "s|INPUTS|%/S/Inputs|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/first/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
@@ -48,7 +48,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/first/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
@@ -65,7 +65,7 @@
// CHECK-NEXT: "module-name": "first_other"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/second/second.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/second/second.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
@@ -87,7 +87,7 @@
// CHECK-NEXT: "module-name": "second"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/zeroth/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/zeroth/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
Index: clang/test/ClangScanDeps/modules-extern-submodule.c
===================================================================
--- clang/test/ClangScanDeps/modules-extern-submodule.c
+++ clang/test/ClangScanDeps/modules-extern-submodule.c
@@ -28,7 +28,7 @@
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
@@ -39,7 +39,7 @@
// CHECK-NEXT: "module-name": "second"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/first/first/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/first/first/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
// CHECK: "-fmodule-map-file=[[PREFIX]]/second/second/module.modulemap"
@@ -63,7 +63,7 @@
// CHECK-NEXT: "module-name": "third"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/second/second/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/second/second/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
// CHECK: "-fmodule-map-file=[[PREFIX]]/third/module.modulemap",
@@ -80,7 +80,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/third/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/third/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
// CHECK-NOT: "-fmodule-map-file=
@@ -106,7 +106,7 @@
// CHECK-NEXT: ],
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1",
-// CHECK: "-fmodule-map-file=[[PREFIX]]/first/first/module.modulemap",
+// CHECK: "-fmodule-map-file=[[PREFIX_EXPANDED]]/first/first/module.modulemap",
// CHECK: "-fmodule-file=first=[[PREFIX]]/cache/{{.*}}/first-{{.*}}.pcm",
// CHECK: ],
// CHECK-NEXT: "executable": "clang",
Index: clang/test/ClangScanDeps/modules-excluded-header.m
===================================================================
--- clang/test/ClangScanDeps/modules-excluded-header.m
+++ clang/test/ClangScanDeps/modules-excluded-header.m
@@ -28,13 +28,13 @@
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/mod/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/mod/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: "-fmodule-map-file=[[PREFIX]]/frameworks/X.framework/Modules/module.modulemap"
// CHECK-NOT: "-fmodule-file={{.*}}"
Index: clang/test/ClangScanDeps/modules-dep-args.c
===================================================================
--- clang/test/ClangScanDeps/modules-dep-args.c
+++ clang/test/ClangScanDeps/modules-dep-args.c
@@ -24,19 +24,19 @@
// Check that the PCM path defaults to the modules cache from implicit build.
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result_cache.json
-// RUN: cat %t/result_cache.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_CACHE
+// RUN: cat %t/result_cache.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t --check-prefixes=CHECK,CHECK_CACHE
// Check that the PCM path can be customized.
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-files-dir %t/build > %t/result_build.json
-// RUN: cat %t/result_build.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_BUILD
+// RUN: cat %t/result_build.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t --check-prefixes=CHECK,CHECK_BUILD
// Check that the PCM file is loaded lazily by default.
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result_lazy.json
-// RUN: cat %t/result_lazy.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_LAZY
+// RUN: cat %t/result_lazy.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t --check-prefixes=CHECK,CHECK_LAZY
// Check that the PCM file can be loaded eagerly.
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -eager-load-pcm > %t/result_eager.json
-// RUN: cat %t/result_eager.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_EAGER
+// RUN: cat %t/result_eager.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t --check-prefixes=CHECK,CHECK_EAGER
// CHECK: {
// CHECK-NEXT: "modules": [
@@ -47,7 +47,7 @@
// CHECK-NEXT: "module-name": "Transitive"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK_CACHE: "-fmodule-file={{.*}}/cache/{{.*}}/Transitive-{{.*}}.pcm"
// CHECK_BUILD: "-fmodule-file={{.*}}/build/{{.*}}/Transitive-{{.*}}.pcm"
@@ -65,7 +65,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "{{.*}}",
@@ -88,7 +88,7 @@
// CHECK-NEXT: "command-line": [
// CHECK_CACHE: "-fmodule-file={{.*}}/cache/{{.*}}/Direct-{{.*}}.pcm"
// CHECK_BUILD: "-fmodule-file={{.*}}/build/{{.*}}/Direct-{{.*}}.pcm"
-// CHECK_LAZY: "-fmodule-map-file=[[PREFIX]]/module.modulemap"
+// CHECK_LAZY: "-fmodule-map-file=[[PREFIX_EXPANDED]]/module.modulemap"
// CHECK_LAZY: "-fmodule-file=Direct=[[PREFIX]]/{{.*}}/Direct-{{.*}}.pcm"
// CHECK_EAGER-NOT: "-fmodule-map-file={{.*}}"
// CHECK_EAGER: "-fmodule-file=[[PREFIX]]/{{.*}}/Direct-{{.*}}.pcm"
Index: clang/test/ClangScanDeps/modules-context-hash.c
===================================================================
--- clang/test/ClangScanDeps/modules-context-hash.c
+++ clang/test/ClangScanDeps/modules-context-hash.c
@@ -17,14 +17,14 @@
// RUN: clang-scan-deps -compilation-database %t/cdb_a.json -format experimental-full -j 1 > %t/result_a.json
// RUN: clang-scan-deps -compilation-database %t/cdb_b.json -format experimental-full -j 1 > %t/result_b.json
// RUN: clang-scan-deps -compilation-database %t/cdb_b2.json -format experimental-full -j 1 > %t/result_b2.json
-// RUN: cat %t/result_a.json %t/result_b.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=CHECK
+// RUN: cat %t/result_a.json %t/result_b.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t -check-prefix=CHECK
// RUN: cat %t/result_b.json %t/result_b2.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -check-prefix=FLAG_ONLY
// CHECK: {
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1"
// CHECK: "-emit-module"
@@ -61,7 +61,7 @@
// CHECK: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1"
// CHECK: "-emit-module"
Index: clang/test/ClangScanDeps/header-search-pruning-transitive.c
===================================================================
--- clang/test/ClangScanDeps/header-search-pruning-transitive.c
+++ clang/test/ClangScanDeps/header-search-pruning-transitive.c
@@ -56,7 +56,7 @@
// RUN: clang-scan-deps -compilation-database %t/cdb_with_a.json -format experimental-full -optimize-args > %t/results.json
// RUN: clang-scan-deps -compilation-database %t/cdb_without_a.json -format experimental-full -optimize-args >> %t/results.json
-// RUN: cat %t/results.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/results.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// CHECK: {
// CHECK-NEXT: "modules": [
@@ -67,7 +67,7 @@
// CHECK-NEXT: "module-name": "Y"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "[[HASH_X:.*]]",
@@ -79,7 +79,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "[[HASH_Y_WITH_A]]",
@@ -119,7 +119,7 @@
// CHECK-NEXT: "module-name": "Y"
// CHECK-NEXT: }
// CHECK-NEXT: ],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// Here is the actual check that this module X (which imports different version of Y)
@@ -133,7 +133,7 @@
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK: ],
// CHECK-NEXT: "context-hash": "[[HASH_Y_WITHOUT_A]]",
Index: clang/test/ClangScanDeps/diagnostics.c
===================================================================
--- clang/test/ClangScanDeps/diagnostics.c
+++ clang/test/ClangScanDeps/diagnostics.c
@@ -3,7 +3,7 @@
// RUN: sed "s|DIR|%/t|g" %S/Inputs/diagnostics/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full 2>&1 > %t/result.json
-// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
+// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t -DPREFIX_EXPANDED=%>/t
// Check that the '-Wno-error=invalid-ios-deployment-target' option is being
// respected and invalid arguments like '-target i386-apple-ios14.0-simulator'
@@ -14,7 +14,7 @@
// CHECK-NEXT: "modules": [
// CHECK-NEXT: {
// CHECK-NEXT: "clang-module-deps": [],
-// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
+// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX_EXPANDED]]/module.modulemap",
// CHECK-NEXT: "command-line": [
// CHECK-NEXT: "-cc1"
// CHECK: ],
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits