Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[clang][deps] NFC: Refactor inferred modules test
This patch squashes two tests with identical inputs into a single test, and adopts the `split-file` utility. This allows us to remove `sed` invocation with multiple commands, where "s|-E|-x objective-c -E|g" could've caused issues if previous replacements injected path containing "-E". Reviewed By: benlangmuir Differential Revision: https://reviews.llvm.org/D143615
- Loading branch information
1 parent
936819b
commit 29b95f0
Showing
5 changed files
with
53 additions
and
54 deletions.
There are no files selected for viewing
Empty file.
1 change: 0 additions & 1 deletion
1
clang/test/ClangScanDeps/Inputs/frameworks/Inferred.framework/Headers/Inferred.h
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
19 changes: 0 additions & 19 deletions
19
clang/test/ClangScanDeps/modules-inferred-explicit-build.m
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,73 @@ | ||
// RUN: rm -rf %t.dir | ||
// RUN: rm -rf %t.cdb | ||
// RUN: mkdir -p %t.dir | ||
// RUN: cp %s %t.dir/modules_cdb_input.cpp | ||
// RUN: sed -e "s|DIR|%/t.dir|g" -e "s|FRAMEWORKS|%/S/Inputs/frameworks|g" \ | ||
// RUN: %/S/Inputs/modules_inferred_cdb.json > %t.cdb | ||
// | ||
// 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 %s -DPREFIX=%/t.dir -DSOURCEDIR=%/S --check-prefixes=CHECK | ||
// This test checks that inferred frameworks/modules are accounted for in the | ||
// scanner and can be explicitly built by Clang. | ||
|
||
// RUN: rm -rf %t | ||
// RUN: split-file %s %t | ||
|
||
//--- frameworks/Inferred.framework/Headers/Inferred.h | ||
typedef int inferred; | ||
|
||
//--- frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h | ||
|
||
//--- frameworks/module.modulemap | ||
framework module * {} | ||
|
||
//--- tu.m | ||
#include <Inferred/Inferred.h> | ||
|
||
inferred a = 0; | ||
|
||
//--- cdb.json.template | ||
[{ | ||
"directory": "DIR", | ||
"file": "DIR/tu.m", | ||
"command": "clang -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache -F DIR/frameworks -c DIR/tu.m -o DIR/tu.o" | ||
}] | ||
|
||
// 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 | ||
|
||
// CHECK: { | ||
// CHECK-NEXT: "modules": [ | ||
// CHECK-NEXT: { | ||
// CHECK-NEXT: "clang-module-deps": [], | ||
// CHECK-NEXT: "clang-modulemap-file": "[[SOURCEDIR]]/Inputs/frameworks/module.modulemap", | ||
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/module.modulemap", | ||
// CHECK-NEXT: "command-line": [ | ||
// CHECK: ], | ||
// CHECK-NEXT: "context-hash": "[[HASH_INFERRED:[A-Z0-9]+]]", | ||
// CHECK-NEXT: "context-hash": "{{.*}}", | ||
// CHECK-NEXT: "file-deps": [ | ||
// CHECK-NEXT: "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/Frameworks/Sub.framework/Headers/Sub.h", | ||
// CHECK-NEXT: "[[SOURCEDIR]]/Inputs/frameworks/Inferred.framework/Headers/Inferred.h", | ||
// CHECK-NEXT: "[[SOURCEDIR]]/Inputs/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: } | ||
// CHECK-NEXT: ], | ||
// CHECK-NEXT: "translation-units": [ | ||
// CHECK-NEXT: { | ||
// CHECK: "clang-context-hash": "[[HASH_TU:[A-Z0-9]+]]", | ||
// CHECK-NEXT: "clang-module-deps": [ | ||
// CHECK-NEXT: "commands": [ | ||
// CHECK-NEXT: { | ||
// CHECK-NEXT: "context-hash": "[[HASH_INFERRED]]", | ||
// CHECK-NEXT: "module-name": "Inferred" | ||
// CHECK-NEXT: "clang-context-hash": "{{.*}}", | ||
// CHECK-NEXT: "clang-module-deps": [ | ||
// CHECK-NEXT: { | ||
// CHECK-NEXT: "context-hash": "{{.*}}", | ||
// CHECK-NEXT: "module-name": "Inferred" | ||
// CHECK-NEXT: } | ||
// CHECK-NEXT: ], | ||
// CHECK-NEXT: "command-line": [ | ||
// CHECK: ], | ||
// CHECK: "file-deps": [ | ||
// CHECK-NEXT: "[[PREFIX]]/tu.m" | ||
// CHECK-NEXT: ], | ||
// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.m" | ||
// CHECK-NEXT: } | ||
// CHECK-NEXT: ], | ||
// CHECK-NEXT: "command-line": [ | ||
// CHECK: ], | ||
// CHECK: "file-deps": [ | ||
// CHECK-NEXT: "[[PREFIX]]/modules_cdb_input.cpp" | ||
// CHECK-NEXT: ], | ||
// CHECK-NEXT: "input-file": "[[PREFIX]]/modules_cdb_input.cpp" | ||
// CHECK-NEXT: } | ||
// CHECK: ] | ||
// CHECK: } | ||
// CHECK: ] | ||
// CHECK: } | ||
|
||
// RUN: %deps-to-rsp %t/result.json --module-name=Inferred > %t/Inferred.cc1.rsp | ||
// RUN: %deps-to-rsp %t/result.json --tu-index=0 > %t/tu.rsp | ||
// RUN: %clang @%t/Inferred.cc1.rsp -pedantic -Werror | ||
// RUN: %clang @%t/tu.rsp -pedantic -Werror |