Files
llvm-project/clang/test/InstallAPI/extra-exclude-headers.test
Sirraide 6b128091ba [InstallAPI] [Tests] Avoid checking compiler output for 'error' (#188307)
We have two tests that use FileCheck for diagnostics and which try to
check that the output contains no compiler errors by checking for the
string 'error'. The issue with this approach is that this also causes
those tests to fail if the *path* contains the word 'error', which can
happen e.g. if the branch name contains the word 'error'.

Instead, we now check for `error:` since that string is much less likely
to appear in a path.
2026-03-24 22:23:15 +01:00

188 lines
6.1 KiB
Plaintext

; RUN: rm -rf %t
; RUN: split-file %s %t
; RUN: mkdir -p %t/System/Library/Frameworks
; RUN: cp -r %S/Inputs/Simple/Simple.framework %t/System/Library/Frameworks/
; RUN: cp -r %S/Inputs/Foundation/Foundation.framework %t/System/Library/Frameworks/
; RUN: sed -e "s|DSTROOT|%/t|g" %t/inputs.json.in > %t/inputs.json
; RUN: yaml2obj %S/Inputs/Simple/Simple.yaml -o %t/Simple
// Add exclude options.
; RUN: clang-installapi -target x86_64-apple-macosx10.12 \
; RUN: -install_name /System/Library/Frameworks/Simple.framework/Versions/A/Simple \
; RUN: -current_version 1.2.3 -compatibility_version 1 \
; RUN: -F%t/System/Library/Frameworks \
; RUN: %t/inputs.json -o %t/Simple.tbd \
; RUN: --verify-against=%t/Simple --verify-mode=ErrorsAndWarnings \
; RUN: --exclude-public-header=**/SimpleAPI.h \
; RUN: --exclude-private-header=**/SimplePrivateSPI.h 2>&1 | FileCheck -check-prefix=WARNINGS %s
; RUN: llvm-readtapi -compare %t/Simple.tbd %t/expected-excluded.tbd
// Add extra options.
; RUN: clang-installapi -target x86_64-apple-macosx10.12 \
; RUN: -install_name /System/Library/Frameworks/Simple.framework/Versions/A/Simple \
; RUN: -current_version 1.2.3 -compatibility_version 1 \
; RUN: -F%t/System/Library/Frameworks \
; RUN: %t/inputs.json -o %t/Simple.tbd \
; RUN: --verify-against=%t/Simple --verify-mode=Pedantic \
; RUN: --extra-project-header=%S/Inputs/Simple/SimpleInternalAPI2.h \
; RUN: --extra-project-header=%S/Inputs/Simple/SimpleInternalAPI.h \
; RUN: --extra-public-header=%S/Inputs/Simple/Extra \
; RUN: --extra-private-header=%S/Inputs/Simple/SimpleInternalSPI.h \
; RUN: --exclude-public-header=**/SimpleAPI.h \
; RUN: --exclude-private-header=**/SimplePrivateSPI.h 2>&1 | FileCheck -check-prefix=PEDANTIC -allow-empty %s
; RUN: llvm-readtapi -compare %t/Simple.tbd %t/expected-extra.tbd
// Check fatal missing file input.
; RUN: not clang-installapi -target x86_64-apple-macosx10.12 \
; RUN: -install_name /System/Library/Frameworks/Simple.framework/Versions/A/Simple \
; RUN: -current_version 1.2.3 -compatibility_version 1 \
; RUN: -F%t/System/Library/Frameworks \
; RUN: %t/inputs.json -o %t/Simple.tbd \
; RUN: --extra-public-header=%S/Inputs/Simple/NoSuchFile.h 2>&1 | FileCheck -allow-empty -check-prefix=NOPUBLIC %s
; WARNINGS: warning: no declaration was found for exported symbol '_extraGlobalAPI1' in dynamic library
; WARNINGS: warning: no declaration was found for exported symbol '_extraGlobalAPI2' in dynamic library
; WARNINGS: warning: no declaration was found for exported symbol '(ObjC Class) SimpleInternalSPI' in dynamic library
; WARNINGS: warning: no declaration was found for exported symbol '(ObjC Class) SimpleInternalAPI' in dynamic library
; PEDANTIC-NOT: error:
; PEDANTIC: warning: cannot find protocol definition for 'ForwardProcotol'
; NOPUBLIC: error: no such public header file:
;--- expected-excluded.tbd
{
"main_library": {
"current_versions": [
{
"version": "1.2.3"
}
],
"exported_symbols": [
{
"data": {
"global": [
"_publicGlobalVariable",
"_privateGlobalVariable"
],
"objc_class": [
"ExternalManagedObject", "Basic6",
"Basic1", "Base", "Basic3",
"FooClass", "Simple",
"Basic4_2", "Basic5",
"Basic9","Basic8",
"Basic2", "Basic4", "A", "SubClass"
],
"objc_eh_type": [
"SubClass", "Base"
],
"objc_ivar": [
"Basic4.ivar2", "Basic4_2.ivar1", "Basic6.ivar1",
"Basic4.ivar1", "Basic4_2.ivar2"
],
"weak": [
"_weakPrivateGlobalVariable", "_weakPublicGlobalVariable"
]
}
}
],
"flags": [
{
"attributes": ["not_app_extension_safe"]
}
],
"install_names": [
{
"name": "/System/Library/Frameworks/Simple.framework/Versions/A/Simple"
}
],
"target_info": [
{"min_deployment": "10.12", "target": "x86_64-macos"}
]
},
"tapi_tbd_version": 5
}
;--- expected-extra.tbd
{
"main_library": {
"current_versions": [
{ "version": "1.2.3" }
],
"exported_symbols": [
{
"data": {
"global": [
"_publicGlobalVariable", "_extraGlobalAPI2",
"_extraGlobalAPI1", "_privateGlobalVariable"
],
"objc_class": [
"SubClass", "SimpleInternalSPI",
"Basic6", "Basic1", "Base",
"Basic3", "Simple", "Basic4_2",
"Basic5", "FooClass", "Basic9",
"Basic8", "Basic2", "Basic4",
"A", "SimpleInternalAPI",
"ExternalManagedObject"
],
"objc_eh_type": [
"SubClass", "SimpleInternalAPI",
"Base", "SimpleInternalSPI"
],
"objc_ivar": [
"Basic4.ivar2", "Basic4_2.ivar1",
"Basic6.ivar1", "Basic4.ivar1",
"Basic4_2.ivar2"
],
"weak": [
"_weakPrivateGlobalVariable", "_weakPublicGlobalVariable"
]
}
}
],
"flags": [
{
"attributes": [ "not_app_extension_safe"]
}
],
"install_names": [
{ "name": "/System/Library/Frameworks/Simple.framework/Versions/A/Simple" }
],
"target_info": [
{ "min_deployment": "10.12", "target": "x86_64-macos" }
]
},
"tapi_tbd_version": 5
}
;--- inputs.json.in
{
"headers": [
{
"path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/Basic.h",
"type" : "public"
},
{
"path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/External.h",
"type" : "public"
},
{
"path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/Simple.h",
"type" : "public"
},
{
"path" : "DSTROOT/System/Library/Frameworks/Simple.framework/Headers/SimpleAPI.h",
"type" : "public"
},
{
"path" : "DSTROOT/System/Library/Frameworks/Simple.framework/PrivateHeaders/SimplePrivate.h",
"type" : "private"
},
{
"path" : "DSTROOT/System/Library/Frameworks/Simple.framework/PrivateHeaders/SimplePrivateSPI.h",
"type" : "private"
}
],
"version": "3"
}