Skip to content

Commit b58b2a3

Browse files
authored
🍒[clang][DependencyScanning] Adding SableDir and CAS Tests for By-Name Lookups (llvm#11861)
This PR cherry-picks two tests added to upstream and next to check for stable directory and CAS setup for by-name dependency queries. * [clang][DependencyScanning] Add Test Coverage of `StabeDirs` during By-Name Lookups (llvm#168143) This PR adds some test coverage for `StableDirs` during by-name lookups. (cherry picked from commit 3f61402) * [clang][DependencyScanning] Fix `StableDir` and `DependencyActionController` Setup for By-Name Lookups (llvm#11822) llvm#164345 merge conflict resolution with `next` introduced two issues. 1. It did not correctly pick up the logic to set `StableDir` for `CompilerInstanceWithContext`. 2. It did not correctly setup the action controller for CAS. This PR fixes both issues. (cherry picked from commit 31fe4fc)
1 parent 5f3d4bf commit b58b2a3

File tree

2 files changed

+172
-0
lines changed

2 files changed

+172
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// UNSUPPORTED: system-windows
2+
// RUN: rm -rf %t
3+
// RUN: split-file %s %t
4+
5+
// Verify the stable dir path.
6+
//--- Sysroot/usr/include/SysA/module.modulemap
7+
module SysA {
8+
header "SysA.h"
9+
}
10+
11+
//--- Sysroot/usr/include/SysA/SysA.h
12+
int SysVal = 42;
13+
14+
//--- cdb.json.template
15+
[{
16+
"file": "",
17+
"directory": "DIR",
18+
"command": "clang -fmodules -fmodules-cache-path=DIR/cache -isysroot DIR/Sysroot -IDIR/Sysroot/usr/include -x c"
19+
}]
20+
21+
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
22+
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-names=SysA > %t/result.json
23+
// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s
24+
25+
// CHECK: {
26+
// CHECK-NEXT: "modules": [
27+
// CHECK-NEXT: {
28+
// CHECK-NEXT: "is-in-stable-directories": true,
29+
// CHECK-NEXT: "clang-module-deps": [],
30+
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/Sysroot/usr/include/SysA/module.modulemap",
31+
// CHECK-NEXT: "command-line": [
32+
// CHECK: ],
33+
// CHECK-NEXT: "context-hash": "{{.*}}",
34+
// CHECK-NEXT: "file-deps": [
35+
// CHECK-NEXT: "[[PREFIX]]/Sysroot/usr/include/SysA/module.modulemap",
36+
// CHECK-NEXT: "[[PREFIX]]/Sysroot/usr/include/SysA/SysA.h"
37+
// CHECK-NEXT: ],
38+
// CHECK-NEXT: "link-libraries": [],
39+
// CHECK-NEXT: "name": "SysA"
40+
// CHECK-NEXT: }
41+
// CHECK-NEXT: ],
42+
// CHECK-NEXT: "translation-units": []
43+
// CHECK-NEXT: }
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
// UNSUPPORTED: target=powerpc64-ibm-aix{{.*}}
2+
// REQUIRES: ondisk_cas
3+
4+
// RUN: rm -rf %t
5+
// RUN: split-file %s %t
6+
7+
//--- module.modulemap
8+
module root { header "root.h" }
9+
module direct { header "direct.h" }
10+
module transitive { header "transitive.h" }
11+
module root1 { header "root1.h"}
12+
//--- root.h
13+
#include "direct.h"
14+
#include "root/textual.h"
15+
16+
//--- root1.h
17+
#include "direct.h"
18+
19+
//--- direct.h
20+
#include "transitive.h"
21+
//--- transitive.h
22+
// empty
23+
24+
//--- root/textual.h
25+
// This is here to verify that the "root" directory doesn't clash with name of
26+
// the "root" module.
27+
28+
//--- cdb.json.template
29+
[{
30+
"file": "",
31+
"directory": "DIR",
32+
"command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR -x c"
33+
}]
34+
35+
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
36+
// RUN: clang-scan-deps -compilation-database %t/cdb.json \
37+
// RUN: -cas-path %t/cas -format experimental-include-tree-full -module-names=root,root1,direct > %t/result.json
38+
// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s
39+
40+
// CHECK: {
41+
// CHECK-NEXT: "modules": [
42+
// CHECK-NEXT: {
43+
// CHECK-NEXT: "cache-key": "[[DIRECT_CACHE_KEY:llvmcas://[[:xdigit:]]+]]"
44+
// CHECK-NEXT: "cas-include-tree-id": "[[LEFT_ROOT_ID:llvmcas://[[:xdigit:]]+]]"
45+
// CHECK-NEXT: "clang-module-deps": [
46+
// CHECK-NEXT: {
47+
// CHECK-NEXT: "context-hash": "{{.*}}",
48+
// CHECK-NEXT: "module-name": "transitive"
49+
// CHECK-NEXT: }
50+
// CHECK-NEXT: ],
51+
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
52+
// CHECK-NEXT: "command-line": [
53+
// CHECK: "-fmodule-file-cache-key"
54+
// CHECK-NEXT: "{{.*transitive-.*\.pcm}}"
55+
// CHECK-NEXT: "[[TRANSITIVE_CACHE_KEY:llvmcas://[[:xdigit:]]+]]"
56+
// CHECK: ],
57+
// CHECK-NEXT: "context-hash": "{{.*}}",
58+
// CHECK-NEXT: "file-deps": [
59+
// CHECK-NEXT: "[[PREFIX]]/module.modulemap"
60+
// CHECK-NEXT: "[[PREFIX]]/direct.h"
61+
// CHECK-NEXT: ],
62+
// CHECK-NEXT: "link-libraries": [],
63+
// CHECK-NEXT: "name": "direct"
64+
// CHECK-NEXT: },
65+
// CHECK-NEXT: {
66+
// CHECK-NEXT: "cache-key": "[[ROOT_CACHE_KEY:llvmcas://[[:xdigit:]]+]]"
67+
// CHECK-NEXT: "cas-include-tree-id": "[[ROOT_ROOT_ID:llvmcas://[[:xdigit:]]+]]"
68+
// CHECK-NEXT: "clang-module-deps": [
69+
// CHECK-NEXT: {
70+
// CHECK-NEXT: "context-hash": "{{.*}}",
71+
// CHECK-NEXT: "module-name": "direct"
72+
// CHECK-NEXT: }
73+
// CHECK-NEXT: ],
74+
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
75+
// CHECK-NEXT: "command-line": [
76+
// CHECK: "-fmodule-file-cache-key"
77+
// CHECK-NEXT: "{{.*direct-.*\.pcm}}"
78+
// CHECK-NEXT: "[[DIRECT_CACHE_KEY]]"
79+
// CHECK: ],
80+
// CHECK-NEXT: "context-hash": "{{.*}}",
81+
// CHECK-NEXT: "file-deps": [
82+
// CHECK-NEXT: "[[PREFIX]]/module.modulemap"
83+
// CHECK-NEXT: "[[PREFIX]]/root.h"
84+
// CHECK-NEXT: "[[PREFIX]]/root/textual.h"
85+
// CHECK-NEXT: ],
86+
// CHECK-NEXT: "link-libraries": [],
87+
// CHECK-NEXT: "name": "root"
88+
// CHECK-NEXT: },
89+
// CHECK-NEXT: {
90+
// CHECK-NEXT: "cache-key": "[[ROOT_CACHE_KEY:llvmcas://[[:xdigit:]]+]]"
91+
// CHECK-NEXT: "cas-include-tree-id": "[[ROOT_ROOT_ID:llvmcas://[[:xdigit:]]+]]"
92+
// CHECK-NEXT: "clang-module-deps": [
93+
// CHECK-NEXT: {
94+
// CHECK-NEXT: "context-hash": "{{.*}}",
95+
// CHECK-NEXT: "module-name": "direct"
96+
// CHECK-NEXT: }
97+
// CHECK-NEXT: ],
98+
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
99+
// CHECK-NEXT: "command-line": [
100+
// CHECK: "-fmodule-file-cache-key"
101+
// CHECK-NEXT: "{{.*direct-.*\.pcm}}"
102+
// CHECK-NEXT: "[[DIRECT_CACHE_KEY]]"
103+
// CHECK: ],
104+
// CHECK-NEXT: "context-hash": "{{.*}}",
105+
// CHECK-NEXT: "file-deps": [
106+
// CHECK-NEXT: "[[PREFIX]]/module.modulemap"
107+
// CHECK-NEXT: "[[PREFIX]]/root1.h"
108+
// CHECK-NEXT: ],
109+
// CHECK-NEXT: "link-libraries": [],
110+
// CHECK-NEXT: "name": "root1"
111+
// CHECK-NEXT: },
112+
// CHECK-NEXT: {
113+
// CHECK-NEXT: "cache-key": "[[TRANSITIVE_CACHE_KEY]]"
114+
// CHECK-NEXT: "cas-include-tree-id": "[[TRANSITIVE_ROOT_ID:llvmcas://[[:xdigit:]]+]]"
115+
// CHECK-NEXT: "clang-module-deps": [],
116+
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
117+
// CHECK-NEXT: "command-line": [
118+
// CHECK: ],
119+
// CHECK-NEXT: "context-hash": "{{.*}}",
120+
// CHECK-NEXT: "file-deps": [
121+
// CHECK-NEXT: "[[PREFIX]]/module.modulemap"
122+
// CHECK-NEXT: "[[PREFIX]]/transitive.h"
123+
// CHECK-NEXT: ],
124+
// CHECK-NEXT: "link-libraries": [],
125+
// CHECK-NEXT: "name": "transitive"
126+
// CHECK-NEXT: }
127+
// CHECK-NEXT: ],
128+
// CHECK-NEXT: "translation-units": []
129+
// CHECK-NEXT: }

0 commit comments

Comments
 (0)