202 lines · plain
1// RUN: rm -rf %t2// RUN: split-file %s %t3 4// Setup framework root5// RUN: mkdir -p %t/Frameworks/MyFramework.framework/Headers6// RUN: cp %t/MyFramework.h %t/Frameworks/MyFramework.framework/Headers/7// RUN: cp %t/MyHeader.h %t/Frameworks/MyFramework.framework/Headers/8 9// RUN: sed -e "s@SRCROOT@%{/t:regex_replacement}@g" \10// RUN: %t/reference.output.json.in >> %t/reference.output.json11 12// Headermap maps headers to the source root SRCROOT13// RUN: sed -e "s@SRCROOT@%{/t:regex_replacement}@g" \14// RUN: %t/headermap.hmap.json.in >> %t/headermap.hmap.json15// RUN: %hmaptool write %t/headermap.hmap.json %t/headermap.hmap16 17// Input headers use paths to the framework root/DSTROOT18// RUN: %clang_cc1 -extract-api --pretty-sgf -v --product-name=MyFramework \19// RUN: -triple arm64-apple-macosx \20// RUN: -iquote%t -I%t/headermap.hmap -F%t/Frameworks \21// RUN: -x objective-c-header \22// RUN: %t/Frameworks/MyFramework.framework/Headers/MyFramework.h \23// RUN: %t/Frameworks/MyFramework.framework/Headers/MyHeader.h \24// RUN: %t/QuotedHeader.h \25// RUN: -o %t/output.json 2>&1 -verify | FileCheck -allow-empty %s26 27// Generator version is not consistent across test runs, normalize it.28// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \29// RUN: %t/output.json >> %t/output-normalized.json30// RUN: diff %t/reference.output.json %t/output-normalized.json31 32// CHECK: <extract-api-includes>:33// CHECK-NEXT: #import <MyFramework/MyFramework.h>34// CHECK-NEXT: #import <MyFramework/MyHeader.h>35// CHECK-NEXT: #import "QuotedHeader.h"36 37//--- headermap.hmap.json.in38{39 "mappings" :40 {41 "MyFramework/MyHeader.h" : "SRCROOT/MyHeader.h"42 }43}44 45//--- MyFramework.h46// Umbrella for MyFramework47#import <MyFramework/MyHeader.h>48// expected-no-diagnostics49 50//--- MyHeader.h51#import <OtherFramework/OtherHeader.h>52int MyInt;53// expected-no-diagnostics54 55//--- QuotedHeader.h56char MyChar;57// expected-no-diagnostics58 59//--- Frameworks/OtherFramework.framework/Headers/OtherHeader.h60int OtherInt;61// expected-no-diagnostics62 63//--- reference.output.json.in64{65 "metadata": {66 "formatVersion": {67 "major": 0,68 "minor": 5,69 "patch": 370 },71 "generator": "?"72 },73 "module": {74 "name": "MyFramework",75 "platform": {76 "architecture": "arm64",77 "operatingSystem": {78 "minimumVersion": {79 "major": 11,80 "minor": 0,81 "patch": 082 },83 "name": "macosx"84 },85 "vendor": "apple"86 }87 },88 "relationships": [],89 "symbols": [90 {91 "accessLevel": "public",92 "declarationFragments": [93 {94 "kind": "typeIdentifier",95 "preciseIdentifier": "c:I",96 "spelling": "int"97 },98 {99 "kind": "text",100 "spelling": " "101 },102 {103 "kind": "identifier",104 "spelling": "MyInt"105 },106 {107 "kind": "text",108 "spelling": ";"109 }110 ],111 "identifier": {112 "interfaceLanguage": "objective-c",113 "precise": "c:@MyInt"114 },115 "kind": {116 "displayName": "Global Variable",117 "identifier": "objective-c.var"118 },119 "location": {120 "position": {121 "character": 4,122 "line": 1123 },124 "uri": "file://SRCROOT/MyHeader.h"125 },126 "names": {127 "navigator": [128 {129 "kind": "identifier",130 "spelling": "MyInt"131 }132 ],133 "subHeading": [134 {135 "kind": "identifier",136 "spelling": "MyInt"137 }138 ],139 "title": "MyInt"140 },141 "pathComponents": [142 "MyInt"143 ]144 },145 {146 "accessLevel": "public",147 "declarationFragments": [148 {149 "kind": "typeIdentifier",150 "preciseIdentifier": "c:C",151 "spelling": "char"152 },153 {154 "kind": "text",155 "spelling": " "156 },157 {158 "kind": "identifier",159 "spelling": "MyChar"160 },161 {162 "kind": "text",163 "spelling": ";"164 }165 ],166 "identifier": {167 "interfaceLanguage": "objective-c",168 "precise": "c:@MyChar"169 },170 "kind": {171 "displayName": "Global Variable",172 "identifier": "objective-c.var"173 },174 "location": {175 "position": {176 "character": 5,177 "line": 0178 },179 "uri": "file://SRCROOT/QuotedHeader.h"180 },181 "names": {182 "navigator": [183 {184 "kind": "identifier",185 "spelling": "MyChar"186 }187 ],188 "subHeading": [189 {190 "kind": "identifier",191 "spelling": "MyChar"192 }193 ],194 "title": "MyChar"195 },196 "pathComponents": [197 "MyChar"198 ]199 }200 ]201}202