xref: /llvm-project/clang/test/ClangScanDeps/modules-canononical-module-map-case.c (revision 68eb3b202f30a1c3f2575f44b9d16365258e66b6)
1d77588dfSJan Svoboda // This test checks that VFS-mapped module map path has the correct spelling
2d77588dfSJan Svoboda // after canonicalization, even if it was first accessed using different case.
3d77588dfSJan Svoboda 
4d77588dfSJan Svoboda // RUN: rm -rf %t
5d77588dfSJan Svoboda // RUN: split-file %s %t
6d77588dfSJan Svoboda 
7d77588dfSJan Svoboda //--- actual/One.h
8d77588dfSJan Svoboda #import <FW/Two.h>
9d77588dfSJan Svoboda //--- actual/Two.h
10d77588dfSJan Svoboda // empty
11d77588dfSJan Svoboda //--- frameworks/FW.framework/Modules/module.modulemap
12d77588dfSJan Svoboda framework module FW {
13d77588dfSJan Svoboda   header "One.h"
14d77588dfSJan Svoboda   header "Two.h"
15d77588dfSJan Svoboda }
16d77588dfSJan Svoboda //--- tu.m
17d77588dfSJan Svoboda #import <fw/One.h>
18d77588dfSJan Svoboda 
19d77588dfSJan Svoboda //--- overlay.json.in
20d77588dfSJan Svoboda {
21d77588dfSJan Svoboda   "version": 0,
22d77588dfSJan Svoboda   "case-sensitive": "false",
23d77588dfSJan Svoboda   "roots": [
24d77588dfSJan Svoboda     {
25d77588dfSJan Svoboda       "contents": [
26d77588dfSJan Svoboda         {
27d77588dfSJan Svoboda           "external-contents": "DIR/actual/One.h",
28d77588dfSJan Svoboda           "name": "One.h",
29d77588dfSJan Svoboda           "type": "file"
30d77588dfSJan Svoboda         },
31d77588dfSJan Svoboda         {
32d77588dfSJan Svoboda           "external-contents": "DIR/actual/Two.h",
33d77588dfSJan Svoboda           "name": "Two.h",
34d77588dfSJan Svoboda           "type": "file"
35d77588dfSJan Svoboda         }
36d77588dfSJan Svoboda       ],
37d77588dfSJan Svoboda       "name": "DIR/frameworks/FW.framework/Headers",
38d77588dfSJan Svoboda       "type": "directory"
39d77588dfSJan Svoboda     }
40d77588dfSJan Svoboda   ]
41d77588dfSJan Svoboda }
42d77588dfSJan Svoboda 
43d77588dfSJan Svoboda //--- cdb.json.in
44d77588dfSJan Svoboda [{
45d77588dfSJan Svoboda   "directory": "DIR",
46d77588dfSJan Svoboda   "file": "DIR/tu.m",
47d77588dfSJan Svoboda   "command": "clang -fmodules -fmodules-cache-path=DIR/cache -ivfsoverlay DIR/overlay.json -F DIR/frameworks -c DIR/tu.m -o DIR/tu.o"
48d77588dfSJan Svoboda }]
49d77588dfSJan Svoboda 
50d77588dfSJan Svoboda // RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.in > %t/cdb.json
51d77588dfSJan Svoboda // RUN: sed -e "s|DIR|%/t|g" %t/overlay.json.in > %t/overlay.json
52d77588dfSJan Svoboda // RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json
53d77588dfSJan Svoboda // RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
54d77588dfSJan Svoboda 
55d77588dfSJan Svoboda // CHECK:      {
56d77588dfSJan Svoboda // CHECK-NEXT:   "modules": [
57d77588dfSJan Svoboda // CHECK-NEXT:     {
58d77588dfSJan Svoboda // CHECK-NEXT:       "clang-module-deps": [],
59d77588dfSJan Svoboda // CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",
60d77588dfSJan Svoboda // CHECK-NEXT:       "command-line": [
61d77588dfSJan Svoboda // CHECK:              "-x"
62d77588dfSJan Svoboda // CHECK-NEXT:         "objective-c"
63d77588dfSJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap"
64d77588dfSJan Svoboda // CHECK:            ],
65d77588dfSJan Svoboda // CHECK-NEXT:       "context-hash": "{{.*}}",
66d77588dfSJan Svoboda // CHECK-NEXT:       "file-deps": [
67d77588dfSJan Svoboda // CHECK:            ],
68*68eb3b20SArtem Chikin // CHECK-NEXT:       "link-libraries": [
69*68eb3b20SArtem Chikin // CHECK-NEXT:         {
70*68eb3b20SArtem Chikin // CHECK-NEXT:           "isFramework": true,
71*68eb3b20SArtem Chikin // CHECK-NEXT:           "link-name": "FW"
72*68eb3b20SArtem Chikin // CHECK-NEXT:         }
73*68eb3b20SArtem Chikin // CHECK-NEXT:       ],
74d77588dfSJan Svoboda // CHECK-NEXT:       "name": "FW"
75d77588dfSJan Svoboda // CHECK-NEXT:     }
76d77588dfSJan Svoboda // CHECK-NEXT:   ]
77d77588dfSJan Svoboda // CHECK:      }
78