llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Charles Zablit (charles-zablit)
<details>
<summary>Changes</summary>
Follow-up to #<!-- -->214701, which added a required `reason` to `requireNot*`.
Same change for the positive ones, so a test can say why it is tied to a
platform:
```python
@<!-- -->requireDarwin("uses Darwin-only kernel APIs")
```
Prints with the requirement when the test is reported UNSUPPORTED:
`UNSUPPORTED: ... (requires one of darwin: uses Darwin-only kernel APIs)`
Joining moves into UnsupportedReason(message, reason=None), shared by both
families. Reason is optional on the positive decorators, still required on the
negative ones.
All are now called with parentheses. `@<!-- -->requireDarwin()` or `@<!--
-->requireDarwin("...")`. Supporting the bare form too was rejected as
confusing. Most of the diff is adding () to existing call sites.
---
Patch is 214.04 KiB, truncated to 20.00 KiB below, full version:
https://github.com/llvm/llvm-project/pull/215831.diff
279 Files Affected:
- (modified) lldb/docs/resources/test.md (+14-1)
- (modified) lldb/packages/Python/lldbsuite/test/decorators.py (+32-27)
- (modified) lldb/packages/Python/lldbsuite/test/skip_reason.py (+15-1)
- (modified) lldb/test/API/attach/TestWindowsAttachBreakpoint.py (+1-1)
- (modified) lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py (+1-1)
- (modified)
lldb/test/API/commands/command/language/TestFrameLanguageCommands.py (+1-1)
- (modified) lldb/test/API/commands/dwim-print/TestDWIMPrint.py (+1-1)
- (modified) lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py (+2-2)
- (modified)
lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py (+1-1)
- (modified)
lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/context-object/TestContextObject.py (+1-1)
- (modified)
lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py (+16-16)
- (modified)
lldb/test/API/commands/expression/expr_inside_lambda/TestExprInsideLambdas.py
(+1-1)
- (modified) lldb/test/API/commands/expression/formatters/TestFormatters.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/inline-namespace/TestInlineNamespace.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/persistent_types/TestNestedPersistentTypes.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/persistent_types/TestPersistentTypes.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/po_persistent_result/TestPoPersistentResult.py
(+3-3)
- (modified) lldb/test/API/commands/expression/pr35310/TestExprsBug35310.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/radar_9531204/TestPrintfAfterUp.py (+1-1)
- (modified)
lldb/test/API/commands/expression/radar_9673664/TestExprHelpExamples.py (+1-1)
- (modified)
lldb/test/API/commands/expression/result_numbering/TestResultNumbering.py
(+1-1)
- (modified) lldb/test/API/commands/expression/test/TestExprs.py (+1-1)
- (modified) lldb/test/API/commands/expression/timeout/TestCallWithTimeout.py
(+1-1)
- (modified)
lldb/test/API/commands/expression/unwind_expression/TestUnwindExpression.py
(+1-1)
- (modified) lldb/test/API/commands/expression/weak_symbols/TestWeakSymbols.py
(+1-1)
- (modified) lldb/test/API/commands/expression/xvalue/TestXValuePrinting.py
(+1-1)
- (modified) lldb/test/API/commands/frame/var/TestFrameVar.py (+2-2)
- (modified)
lldb/test/API/commands/frame/var/direct-ivar/objc/TestFrameVarDirectIvarObjC.py
(+2-2)
- (modified)
lldb/test/API/commands/frame/var/direct-ivar/objcpp/TestFrameVarDirectIvarObjCPlusPlus.py
(+3-3)
- (modified) lldb/test/API/commands/platform/sdk/TestPlatformSDK.py (+1-1)
- (modified)
lldb/test/API/commands/process/attach/attach_denied/TestAttachDenied.py (+2-2)
- (modified) lldb/test/API/commands/process/handle/TestProcessHandle.py (+1-1)
- (modified) lldb/test/API/commands/protocol/TestMCPUnixSocket.py (+1-1)
- (modified) lldb/test/API/commands/statistics/basic/TestStats.py (+3-3)
- (modified) lldb/test/API/commands/target/dump-pcm-info/TestDumpPCMInfo.py
(+1-1)
- (modified)
lldb/test/API/commands/target/dump-separate-debug-info/oso/TestDumpOso.py
(+5-5)
- (modified) lldb/test/API/commands/target/stop-hooks/TestStopHooks.py (+1-1)
- (modified) lldb/test/API/driver/longpath/TestLongPathDriver.py (+1-1)
- (modified) lldb/test/API/functionalities/archives/TestBSDArchives.py (+3-3)
- (modified) lldb/test/API/functionalities/asan/TestMemoryHistory.py (+2-2)
- (modified) lldb/test/API/functionalities/asan/TestReportData.py (+1-1)
- (modified)
lldb/test/API/functionalities/breakpoint/breakpoint_conditions/crashing_condition/TestCrashingCondition.py
(+1-1)
- (modified)
lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/compactvectors/TestCompactVectors.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSBundle.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSData.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSError.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSNumber.py
(+2-2)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSURL.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjNSException.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/cmtime/TestDataFormatterCMTime.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py
(+3-3)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/embedded-summary/TestEmbeddedTypeSummary.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py
(+2-2)
- (modified)
lldb/test/API/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py
(+2-2)
- (modified)
lldb/test/API/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/poarray/TestPrintObjectArray.py
(+2-2)
- (modified)
lldb/test/API/functionalities/data-formatter/setvaluefromcstring/TestSetValueFromCString.py
(+1-1)
- (modified)
lldb/test/API/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py
(+1-1)
- (modified) lldb/test/API/functionalities/exec/TestExec.py (+3-3)
- (modified) lldb/test/API/functionalities/fat_archives/TestFatArchives.py
(+1-1)
- (modified)
lldb/test/API/functionalities/fork/resumes-child/TestForkResumesChild.py (+1-1)
- (modified)
lldb/test/API/functionalities/gdb_remote_client/TestPlatformMacOSX.py (+1-1)
- (modified) lldb/test/API/functionalities/load_unload/TestLoadUnload.py (+2-2)
- (modified)
lldb/test/API/functionalities/load_using_paths/TestLoadUsingPaths.py (+1-1)
- (modified) lldb/test/API/functionalities/longpath/TestLongPath.py (+1-1)
- (modified) lldb/test/API/functionalities/memory/find/TestMemoryFind.py (+1-1)
- (modified)
lldb/test/API/functionalities/module_cache/bsd/TestModuleCacheBSD.py (+1-1)
- (modified) lldb/test/API/functionalities/mtc/simple/TestMTCSimple.py (+1-1)
- (modified)
lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py
(+1-1)
- (modified)
lldb/test/API/functionalities/process_crash_info/TestProcessCrashInfo.py (+2-2)
- (modified)
lldb/test/API/functionalities/process_group/TestChangeProcessGroup.py (+1-1)
- (modified) lldb/test/API/functionalities/ptr_refs/TestPtrRefs.py (+1-1)
- (modified) lldb/test/API/functionalities/rerun_and_expr/TestRerunAndExpr.py
(+1-1)
- (modified)
lldb/test/API/functionalities/rerun_and_expr_dylib/TestRerunAndExprDylib.py
(+1-1)
- (modified)
lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py (+1-1)
- (modified) lldb/test/API/functionalities/signal/TestSendSignal.py (+2-2)
- (modified)
lldb/test/API/functionalities/signal/handle-abrt/TestHandleAbort.py (+1-1)
- (modified) lldb/test/API/functionalities/signal/handle-segv/TestHandleSegv.py
(+1-1)
- (modified) lldb/test/API/functionalities/signal/raise/TestRaise.py (+1-1)
- (modified) lldb/test/API/functionalities/type_lookup/TestTypeLookup.py (+1-1)
- (modified) lldb/test/API/iohandler/sigint/TestIOHandlerPythonREPLSigint.py
(+2-2)
- (modified) lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py
(+1-1)
- (modified) lldb/test/API/lang/c/anonymous/TestAnonymous.py (+1-1)
- (modified) lldb/test/API/lang/c/blocks/TestBlocks.py (+3-3)
- (modified)
lldb/test/API/lang/c/calling-conventions/TestCCallingConventions.py (+1-1)
- (modified) lldb/test/API/lang/c/enum_types/TestEnumTypes.py (+1-1)
- (modified) lldb/test/API/lang/c/fpeval/TestFPEval.py (+1-1)
- (modified) lldb/test/API/lang/c/full_lto_stepping/TestFullLtoStepping.py
(+1-1)
- (modified) lldb/test/API/lang/c/function_types/TestFunctionTypes.py (+1-1)
- (modified) lldb/test/API/lang/c/libc_calls/TestLibcCalls.py (+2-2)
- (modified) lldb/test/API/lang/c/modules/TestCModules.py (+1-1)
- (modified) lldb/test/API/lang/c/sizeof/TestCSizeof.py (+1-1)
- (modified) lldb/test/API/lang/c/strings/TestCStrings.py (+1-1)
- (modified) lldb/test/API/lang/c/struct_types/TestStructTypes.py (+3-1)
- (modified) lldb/test/API/lang/cpp/abi_tag_structors/TestAbiTagStructors.py
(+3-3)
- (modified) lldb/test/API/lang/cpp/accelerator-table/TestCPPAccelerator.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/auto/TestCPPAuto.py (+1-1)
- (modified) lldb/test/API/lang/cpp/call-function/TestCallCPPFunction.py (+1-1)
- (modified) lldb/test/API/lang/cpp/chained-calls/TestCppChainedCalls.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/const_static_integral_member_int128/TestConstStaticIntegralMemberInt128.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/constructors/TestCppConstructors.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/covariant-return-types/TestCovariantReturnTypes.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/decl-from-submodule/TestDeclFromSubmodule.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/default-template-args/TestDefaultTemplateArgs.py (+1-1)
- (modified) lldb/test/API/lang/cpp/enum-limits/TestCPPEnumLimits.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/expression-context-qualifiers/const_method/TestExprInConstMethod.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/expression-context-qualifiers/const_volatile_method/TestExprInConstVolatileMethod.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/expression-context-qualifiers/cv_qualified_objects/TestExprOnCVQualifiedObjects.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/expression-context-qualifiers/non_const_method/TestExprInNonConstMethod.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/expression-context-qualifiers/template_const_method/TestExprInTemplateConstMethod.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/expression-context-qualifiers/template_non_const_method/TestExprInTemplateNonConstMethod.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/function-call-from-object-file/TestFunctionCallFromObjectFile.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/function-ref-qualifiers/TestCppFunctionRefQualifiers.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/global_operators/TestCppGlobalOperators.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/llvm-style/TestLLVMStyle.py (+3-1)
- (modified) lldb/test/API/lang/cpp/modules-import/TestCXXModulesImport.py
(+2-2)
- (modified)
lldb/test/API/lang/cpp/multiple-inheritance/TestCppMultipleInheritance.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/namespace/TestNamespace.py (+2-2)
- (modified) lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py (+3-3)
- (modified)
lldb/test/API/lang/cpp/namespace_conflicts/TestNamespaceConflicts.py (+3-1)
- (modified) lldb/test/API/lang/cpp/operators/TestCppOperators.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/overloaded-functions/TestOverloadedFunctions.py (+1-1)
- (modified) lldb/test/API/lang/cpp/printf/TestPrintf.py (+1-1)
- (modified) lldb/test/API/lang/cpp/rvalue-references/TestRvalueReferences.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/scope/TestCppScope.py (+1-1)
- (modified) lldb/test/API/lang/cpp/static_members/TestCPPStaticMembers.py
(+3-3)
- (modified) lldb/test/API/lang/cpp/static_methods/TestCPPStaticMethods.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/symbols/TestSymbols.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/template-diagnostic-hint/TestTemplateDiagnosticHint.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/template-function/TestTemplateFunctions.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/this/TestCPPThis.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/this_class_type_mixing/TestThisClassTypeMixing.py (+1-1)
- (modified) lldb/test/API/lang/cpp/typedef/TestCppTypedef.py (+1-1)
- (modified) lldb/test/API/lang/cpp/unicode-literals/TestUnicodeLiterals.py
(+1-1)
- (modified)
lldb/test/API/lang/cpp/union-static-data-members/TestCppUnionStaticMembers.py
(+1-1)
- (modified) lldb/test/API/lang/cpp/unique-types4/TestUniqueTypes4.py (+1-1)
- (modified)
lldb/test/API/lang/cpp/virtual-functions/TestCppVirtualFunctions.py (+1-1)
- (modified)
lldb/test/API/lang/objc/complete-type-check/TestObjCIsTypeComplete.py (+1-1)
- (modified)
lldb/test/API/lang/objc/conflicting-class-list-function-from-user/TestObjCClassListFunctionFromUser.py
(+1-1)
- (modified)
lldb/test/API/lang/objc/cpp_keyword_identifiers/TestCppKeywordsAsObjCIdentifiers.py
(+1-1)
- (modified)
lldb/test/API/lang/objc/languageinfo/TestObjCLanguageSpecificData.py (+1-1)
- (modified)
lldb/test/API/lang/objc/module-import-log/TestClangModuleImportLog.py (+1-1)
- (modified) lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
(+1-1)
- (modified) lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py (+1-1)
- (modified) lldb/test/API/lang/objc/orderedset/TestOrderedSet.py (+1-1)
- (modified)
lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
(+2-2)
- (modified)
lldb/test/API/lang/objc/tagged-pointer-children/TestTaggedPointerChildren.py
(+2-2)
- (modified)
lldb/test/API/lang/objc/warnings-in-expr-parser/TestObjCWarningsInExprParser.py
(+1-1)
- (modified)
lldb/test/API/lang/objcxx/cpp_keywords_enabled/TestObjCppKeywordsEnabled.py
(+1-1)
- (modified)
lldb/test/API/linux/aarch64/aarch32_compat/TestAArch64LinuxAArch32Compat.py
(+1-1)
- (modified) lldb/test/API/linux/aarch64/fpmr/TestAArch64LinuxFPMR.py (+1-1)
- (modified) lldb/test/API/linux/aarch64/gcs/TestAArch64LinuxGCS.py (+6-6)
- (modified)
lldb/test/API/linux/aarch64/mte_memory_region/TestAArch64LinuxMTEMemoryRegion.py
(+1-1)
- (modified)
lldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
(+5-5)
- (modified)
lldb/test/API/linux/aarch64/mte_tag_faults/TestAArch64LinuxMTEMemoryTagFaults.py
(+2-2)
- (modified)
lldb/test/API/linux/aarch64/non_address_bit_code_break/TestAArch64LinuxNonAddressBitCodeBreak.py
(+2-2)
- (modified)
lldb/test/API/linux/aarch64/non_address_bit_memory_access/TestAArch64LinuxNonAddressBitMemoryAccess.py
(+4-4)
- (modified)
lldb/test/API/linux/aarch64/permission_overlay/TestAArch64LinuxPOE.py (+1-1)
- (modified)
lldb/test/API/linux/aarch64/tagged_memory_access/TestAArch64LinuxTaggedMemoryAccess.py
(+2-2)
- (modified)
lldb/test/API/linux/aarch64/tagged_memory_region/TestAArch64LinuxTaggedMemoryRegion.py
(+1-1)
- (modified)
lldb/test/API/linux/aarch64/tls_registers/TestAArch64LinuxTLSRegisters.py
(+3-3)
- (modified) lldb/test/API/linux/aarch64/unwind_signal/TestUnwindSignal.py
(+1-1)
- (modified) lldb/test/API/linux/add-symbols/TestTargetSymbolsAddCommand.py
(+1-1)
- (modified) lldb/test/API/linux/arm/tls_register/TestArmLinuxTLSRegister.py
(+1-1)
- (modified) lldb/test/API/linux/linker-symbols/TestLinkerSymbols.py (+1-1)
- (modified)
lldb/test/API/linux/loongarch64/simd_registers/TestLoongArch64LinuxSIMDRegisters.py
(+2-2)
- (modified)
lldb/test/API/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py (+1-1)
- (modified)
lldb/test/API/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py (+1-1)
- (modified)
lldb/test/API/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py
(+1-1)
- (modified) lldb/test/API/macosx/add-dsym/TestAddDsymDownload.py (+1-1)
- (modified) lldb/test/API/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
(+1-1)
- (modified)
lldb/test/API/macosx/arm-pointer-metadata-cfa-dwarf-expr/TestArmPointerMetadataCFADwarfExpr.py
(+1-1)
- (modified)
lldb/test/API/macosx/bss-only-data-section-sliding/TestBSSOnlyDataSectionSliding.py
(+1-1)
- (modified)
lldb/test/API/macosx/corefile-exception-reason/TestCorefileExceptionReason.py
(+1-1)
- (modified) lldb/test/API/macosx/ctf/TestCTF.py (+2-2)
- (modified)
lldb/test/API/macosx/debugserver-exit-code/TestDebugServerExitCode.py (+1-1)
- (modified)
lldb/test/API/macosx/debugserver-multimemread/TestDebugserverMultiMemRead.py
(+1-1)
- (modified)
lldb/test/API/macosx/delay-init-dependency/TestDelayInitDependency.py (+1-1)
- (modified) lldb/test/API/macosx/deny-attach/TestDenyAttach.py (+1-1)
- (modified) lldb/test/API/macosx/dsym_codesign/TestdSYMCodesign.py (+1-1)
- (modified) lldb/test/API/macosx/dsym_modules/TestdSYMModuleInit.py (+1-1)
- (modified) lldb/test/API/macosx/dyld-trie-symbols/TestDyldTrieSymbols.py
(+1-1)
- (modified)
lldb/test/API/macosx/early-process-launch/TestEarlyProcessLaunch.py (+1-1)
- (modified)
lldb/test/API/macosx/expedited-stack-memory/TestExpeditedStackMemory.py (+4-4)
- (modified)
lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py (+1-1)
- (modified)
lldb/test/API/macosx/extended-backtrace-api/TestExtendedBacktraceAPI.py (+1-1)
- (modified) lldb/test/API/macosx/find-app-in-bundle/TestFindAppInBundle.py
(+1-1)
- (modified)
lldb/test/API/macosx/find-dsym/bundle-with-dot-in-filename/TestBundleWithDotInFilename.py
(+1-1)
- (modified) lldb/test/API/macosx/find-dsym/deep-bundle/TestDeepBundle.py
(+1-1)
- (modified) lldb/test/API/macosx/format/TestFunctionNameWithoutArgs.py (+1-1)
- (modified) lldb/test/API/macosx/function-starts/TestFunctionStarts.py (+2-2)
- (modified) lldb/test/API/macosx/ignore_exceptions/TestIgnoredExceptions.py
(+1-1)
- (modified) lldb/test/API/macosx/indirect_symbol/TestIndirectSymbols.py (+1-1)
- (modified)
lldb/test/API/macosx/lc-note/additional-registers/TestMetadataRegisters.py
(+1-1)
- (modified)
lldb/test/API/macosx/lc-note/addrable-bits/TestAddrableBitsCorefile.py (+1-1)
- (modified)
lldb/test/API/macosx/lc-note/firmware-corefile/TestFirmwareCorefiles.py (+3-3)
- (modified) lldb/test/API/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py
(+1-1)
- (modified)
lldb/test/API/macosx/lc-note/multiple-binary-corefile/TestMultipleBinaryCorefile.py
(+2-2)
- (modified) lldb/test/API/macosx/macCatalyst/TestMacCatalyst.py (+1-1)
- (modified)
lldb/test/API/macosx/macCatalystAppMacOSFramework/TestMacCatalystAppWithMacOSFramework.py
(+1-1)
- (modified) lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
(+1-1)
- (modified) lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py (+2-2)
- (modified)
lldb/test/API/macosx/objc_exception_recognizer/TestObjCRecognizer.py (+2-2)
- (modified) lldb/test/API/macosx/order/TestOrderFile.py (+1-1)
- (modified) lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py
(+2-2)
- (modified) lldb/test/API/macosx/profile_vrs_detach/TestDetachVrsProfile.py
(+1-1)
- (modified) lldb/test/API/macosx/queues/TestQueues.py (+3-3)
``````````diff
diff --git a/lldb/docs/resources/test.md b/lldb/docs/resources/test.md
index 1277a7a5abb8c..6d8c420e7fa4c 100644
--- a/lldb/docs/resources/test.md
+++ b/lldb/docs/resources/test.md
@@ -152,7 +152,7 @@ decorator you pick says which:
keeps them visible as work still to be done.
```python
-@requireDarwin # inherently Darwin-only: reported UNSUPPORTED elsewhere
+@requireDarwin() # inherently Darwin-only: reported UNSUPPORTED elsewhere
@skipIfWindows # ought to work on Windows, currently broken: reported
SKIPPED
```
@@ -162,6 +162,19 @@ The `require*` decorators mirror the `skip*` ones
one-for-one:
`requireNotWasm`, `requireDarwinHost`, and the general
`requirePlatform(oslist)` / `requireNotPlatform(oslist)`.
+All of them take a reason saying what about the test ties it to the platform,
+which is printed next to the requirement when the test is reported
+UNSUPPORTED. It is optional on the positive decorators, whose name already
+carries most of the story, and required on the negative ones, because
+"unsupported on windows" on its own says nothing about the test. Either way
+they are always called with parentheses:
+
+```python
+@requireDarwin("parses a Mach-O debug map")
+@requireNotWindows("calls fork()")
+@requireDarwin() # also fine: the requirement alone is the whole story
+```
+
Reach for `require*` when the test is tied to a platform-specific file format,
API, or OS feature. If the test is merely untested or broken somewhere, keep
`skipIf*` so nobody mistakes a bug for a design decision.
diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py
b/lldb/packages/Python/lldbsuite/test/decorators.py
index 14c6a0fe16dbe..dffd6d3ff0856 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1151,10 +1151,20 @@ def skipUnlessPlatform(oslist):
# an OS feature that simply doesn't exist elsewhere. If the test is merely
# untested or broken somewhere, keep using skipIf / skipUnless so it stays
# visible as work to be done.
+#
+# Every one of them is called with parentheses, and takes a `reason` explaining
+# what about the test ties it to the platform; it is printed alongside the
+# requirement when the test is reported UNSUPPORTED. The reason is optional on
+# the positive decorators, whose name already carries most of the story, and
+# required on the negative ones, where "unsupported on windows" on its own says
+# nothing about the test.
+#
+# @requireDarwin()
+# @requireDarwin("parses a Mach-O debug map")
##############################################################################
-def requirePlatform(oslist):
+def requirePlatform(oslist, reason: Optional[str] = None):
"""Mark the item as runnable only on the listed target platforms.
Unlike `skipUnlessPlatform`, other platforms are reported as UNSUPPORTED
@@ -1162,7 +1172,7 @@ def requirePlatform(oslist):
"""
return unittest.skipUnless(
lldbplatformutil.getPlatform() in oslist,
- UnsupportedReason("requires one of %s" % (", ".join(oslist))),
+ UnsupportedReason("requires one of %s" % (", ".join(oslist)), reason),
)
@@ -1172,23 +1182,16 @@ def requireNotPlatform(oslist: list, reason:
Optional[str] = None):
Unlike `skipIfPlatform`, the listed platforms are reported as UNSUPPORTED
rather than SKIPPED.
"""
- assert isinstance(
- reason, (str, type(None))
- ), f"expects 'str' or 'None' got {type(reason).__name__!r}"
-
- skip_reason = f"unsupported on {', '.join(oslist)}"
- if reason:
- skip_reason += f": {reason}"
-
return unittest.skipIf(
- lldbplatformutil.getPlatform() in oslist,
UnsupportedReason(skip_reason)
+ lldbplatformutil.getPlatform() in oslist,
+ UnsupportedReason(f"unsupported on {', '.join(oslist)}", reason),
)
-def requireDarwin(func):
+def requireDarwin(reason: Optional[str] = None):
"""Mark the item as inherently Darwin-only (Mach-O, debug maps, Darwin
kernel/runtime APIs, ...). Non-Darwin targets report UNSUPPORTED."""
- return
requirePlatform(lldbplatform.translate(lldbplatform.darwin_all))(func)
+ return requirePlatform(lldbplatform.translate(lldbplatform.darwin_all),
reason)
def requireNotDarwin(reason: str):
@@ -1198,10 +1201,10 @@ def requireNotDarwin(reason: str):
)
-def requireLinux(func):
+def requireLinux(reason: Optional[str] = None):
"""Mark the item as inherently Linux-only (procfs, Linux-specific syscalls,
...). Other targets report UNSUPPORTED."""
- return requirePlatform(["linux"])(func)
+ return requirePlatform(["linux"], reason)
def requireNotLinux(reason: str):
@@ -1209,10 +1212,10 @@ def requireNotLinux(reason: str):
return requireNotPlatform(["linux"], reason=reason)
-def requireWindows(func):
+def requireWindows(reason: Optional[str] = None):
"""Mark the item as inherently Windows-only (PE/COFF, Win32 APIs, ...).
Other targets report UNSUPPORTED."""
- return requirePlatform(["windows"])(func)
+ return requirePlatform(["windows"], reason)
def requireNotWindows(reason: str):
@@ -1224,24 +1227,26 @@ def requireNotWindows(reason: str):
return requireNotPlatform(["windows"], reason=reason)
-def requirePOSIX(func):
+def requirePOSIX(reason: Optional[str] = None):
"""Mark the item as requiring a POSIX target.
A shorthand for `requireNotWindows` that reads better on tests whose
dependency is POSIX semantics generally rather than anything about
Windows specifically.
"""
- return requireNotPlatform(["windows"], reason="uses the posix API.")(func)
+ return requireNotPlatform(["windows"], reason=reason or "uses the posix
API")
-def requireSignals(func):
+def requireSignals(reason: Optional[str] = None):
"""Mark the item as requiring POSIX signal support on the target."""
- return requireNotPlatform(["windows", "wasip1", "wasi"])(func)
+ return requireNotPlatform(
+ ["windows", "wasip1", "wasi"], reason=reason or "requires POSIX
signals"
+ )
-def requireExpressionEvaluation(func):
+def requireExpressionEvaluation(reason: Optional[str] = None):
"""Mark the item as requiring expression evaluation."""
- return requireNotWasm(reason="needs expression evaluation support")(func)
+ return requireNotWasm(reason=reason or "needs expression evaluation
support")
def requireNotWasm(reason: str):
@@ -1254,21 +1259,21 @@ def requireNotWasm(reason: str):
return requireNotPlatform(["wasip1", "wasi"], reason=reason)
-def requireHostPlatform(oslist):
+def requireHostPlatform(oslist, reason: Optional[str] = None):
"""Mark the item as runnable only on the listed *host* platforms."""
return unittest.skipUnless(
lldbplatformutil.getHostPlatform() in oslist,
- UnsupportedReason("requires one of %s as host" % (", ".join(oslist))),
+ UnsupportedReason("requires one of %s as host" % (", ".join(oslist)),
reason),
)
-def requireDarwinHost(func):
+def requireDarwinHost(reason: Optional[str] = None):
"""Mark the item as requiring a Darwin host, regardless of target.
Use for tests that drive host-side Darwin facilities: `xcrun`, the
simulator runtimes, dsymutil, the LLDB.framework layout, and so on.
"""
- return
requireHostPlatform(lldbplatform.translate(lldbplatform.darwin_all))(func)
+ return
requireHostPlatform(lldbplatform.translate(lldbplatform.darwin_all), reason)
def skipIfTargetDoesNotSupportThreads():
diff --git a/lldb/packages/Python/lldbsuite/test/skip_reason.py
b/lldb/packages/Python/lldbsuite/test/skip_reason.py
index b1aece572f4f3..4be3502767493 100644
--- a/lldb/packages/Python/lldbsuite/test/skip_reason.py
+++ b/lldb/packages/Python/lldbsuite/test/skip_reason.py
@@ -9,7 +9,21 @@
class UnsupportedReason(str):
"""A skip reason meaning "this test can never run here", not "this test is
- broken here". Reported as UNSUPPORTED rather than SKIPPED."""
+ broken here". Reported as UNSUPPORTED rather than SKIPPED.
+
+ *message* says what the decorator requires ("requires one of darwin").
+ *reason* is the optional test-specific explanation the decorator was handed
+ ("uses Darwin APIs"); it is appended to *message* so both end up in the
+ test report.
+ """
+
+ def __new__(cls, message, reason=None):
+ assert isinstance(
+ reason, (str, type(None))
+ ), f"expects 'str' or 'None' got {type(reason).__name__!r}"
+ if reason:
+ message = f"{message}: {reason}"
+ return super().__new__(cls, message)
def is_unsupported(reason):
diff --git a/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
b/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
index 83bc28e5f40c0..21db818fc15d3 100644
--- a/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
+++ b/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
@@ -98,7 +98,7 @@ class PROCESS_INFORMATION(ctypes.Structure):
process_information.hThread,
)
- @requireWindows
+ @requireWindows()
def test_attach_ignores_loader_breakpoint(self):
"""
lldb must not report the loader's int3 (raised in a system module while
diff --git a/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
b/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
index f9490e40298a2..715929a962e3a 100644
--- a/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
+++ b/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
@@ -9,7 +9,7 @@
from lldbsuite.test import lldbutil
-@requireDarwin
+@requireDarwin()
class AddDsymCommandCase(TestBase):
SHARED_BUILD_TESTCASE = False
diff --git
a/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
b/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
index f8e6c17ae34d7..3b12b564d979e 100644
--- a/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
+++ b/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
@@ -5,7 +5,7 @@
class TestCase(TestBase):
- @requireDarwin
+ @requireDarwin()
def test(self):
self.build()
_, _, thread, _ = lldbutil.run_to_source_breakpoint(
diff --git a/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
b/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
index d50c707f33de9..22b01394cf015 100644
--- a/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
+++ b/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
@@ -9,7 +9,7 @@
import lldbsuite.test.lldbutil as lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class TestCase(TestBase):
def _run_cmd(self, cmd: str) -> str:
"""Run the given lldb command and return its output."""
diff --git a/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
b/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
index a25a192527293..5548e0401cf91 100644
--- a/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
+++ b/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
@@ -9,7 +9,7 @@
class TestCase(TestBase):
- @requireDarwin
+ @requireDarwin()
def test(self):
self.build()
lldbutil.run_to_source_breakpoint(self, "break here",
lldb.SBFileSpec("main.m"))
@@ -18,7 +18,7 @@ def test(self):
"dwim-print parent.child", patterns=[r'_name = 0x[0-9a-f]+
@"Seven"']
)
- @requireDarwin
+ @requireDarwin()
def test_with_summary(self):
self.build()
lldbutil.run_to_source_breakpoint(self, "break here",
lldb.SBFileSpec("main.m"))
diff --git
a/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
b/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
index 76735fe62d5cd..69b99b9642823 100644
---
a/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
+++
b/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
@@ -13,7 +13,7 @@
from lldbsuite.test import lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class TestExprLookupAnonStructTypedef(TestBase):
def test(self):
"""Test typedeffed untagged struct arguments for function call
expressions"""
diff --git
a/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
b/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
index 55bccb4f84e7a..d9425e0ac9969 100644
---
a/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
+++
b/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
@@ -15,7 +15,7 @@
from lldbsuite.test import lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class TestArgumentPassingRestrictions(TestBase):
@skipIf(compiler="clang", compiler_version=["<", "7.0"])
def test_argument_passing_restrictions(self):
diff --git
a/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
b/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
index 174306ec8e66a..464a32917a4d4 100644
---
a/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
+++
b/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
@@ -8,7 +8,7 @@
from lldbsuite.test import lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class ExprCommandCallFunctionTestCase(TestBase):
@expectedFailureAll(
compiler="icc", bugnumber="llvm.org/pr14437, fails with ICC 13.1"
diff --git
a/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
b/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
index 0034c4d948799..374fb6428bb4c 100644
--- a/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
+++ b/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
@@ -8,7 +8,7 @@
from lldbsuite.test import lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class ExprCommandCallStopContinueTestCase(TestBase):
def setUp(self):
# Call super's setUp().
diff --git
a/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
b/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
index 0172c120065e9..3503ef093b015 100644
---
a/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
+++
b/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
@@ -13,7 +13,7 @@
from lldbsuite.test import lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class ExprCommandCallUserDefinedFunction(TestBase):
def test(self):
"""Test return values of user defined function calls."""
diff --git
a/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
b/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
index 0b62acc4e78c1..527899f7569fc 100644
--- a/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
+++ b/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
@@ -9,7 +9,7 @@
from lldbsuite.test import lldbutil
-@requireSignals
+@requireSignals()
class ExprCommandThatRestartsTestCase(TestBase):
NO_DEBUG_INFO_TESTCASE = True
diff --git
a/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
b/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
index 05e1744b15a49..cd3ba201e2d57 100644
---
a/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
+++
b/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
@@ -11,7 +11,7 @@
from lldbsuite.test import lldbutil
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class TestClassTemplateSpecializationParametersHandling(TestBase):
def test_class_template_specialization(self):
self.build()
diff --git
a/lldb/test/API/commands/expression/context-object/TestContextObject.py
b/lldb/test/API/commands/expression/context-object/TestContextObject.py
index ebbb42418ae19..5d03075b90d9f 100644
--- a/lldb/test/API/commands/expression/context-object/TestContextObject.py
+++ b/lldb/test/API/commands/expression/context-object/TestContextObject.py
@@ -8,7 +8,7 @@
from lldbsuite.test.lldbtest import *
-@requireExpressionEvaluation
+@requireExpressionEvaluation()
class ContextObjectTestCase(TestBase):
def test_context_object(self):
"""Tests expression evaluation in context of an object."""
diff --git
a/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
b/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
index 411132370eb45..80f357ea52366 100644
--- a/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
+++ b/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
@@ -18,7 +18,7 @@ class ExprWithForkTestCase(TestBase):
# --- Basic expression evaluation across fork/vfork ---
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_fork(self):
"""Test that expression evaluation succeeds when the expression calls
fork()."""
@@ -31,7 +31,7 @@ def test_expr_with_fork(self):
"fork_and_return(42, false)", result_type="int", result_value="42"
)
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_vfork(self):
"""Test that expression evaluation succeeds when the expression calls
vfork()."""
@@ -44,7 +44,7 @@ def test_expr_with_vfork(self):
"fork_and_return(42, true)", result_type="int", result_value="42"
)
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_fork_trap(self):
"""Test that expression evaluation handles a child process that
triggers a SIGTRAP."""
@@ -66,7 +66,7 @@ def test_expr_with_fork_trap(self):
# --- follow-fork-mode child override during expression evaluation ---
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_fork_follow_child(self):
"""Test that expression evaluation succeeds with follow-fork-mode
child."""
@@ -87,7 +87,7 @@ def test_expr_with_fork_follow_child(self):
# Verify we are still debugging the original process.
self.assertEqual(process.GetProcessID(), original_pid)
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_vfork_follow_child(self):
"""Test that expression evaluation succeeds with vfork and
follow-fork-mode child."""
@@ -107,7 +107,7 @@ def test_expr_with_vfork_follow_child(self):
# --- stop-on-fork: fork interrupts expression immediately ---
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_fork_stop_on_fork(self):
"""Test that stop-on-fork interrupts expression evaluation on fork."""
@@ -126,7 +126,7 @@ def test_expr_with_fork_stop_on_fork(self):
# The expression should be interrupted due to the fork.
self.assertTrue(value.GetError().Fail())
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_fork_stop_on_fork_process_state(self):
"""Test that process state is valid after stop-on-fork interrupts on
fork."""
@@ -150,7 +150,7 @@ def test_expr_with_fork_stop_on_fork_process_state(self):
# --- stop-on-fork with vfork: deferred to vforkdone ---
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_vfork_stop_on_fork(self):
"""Test that stop-on-fork with vfork defers to vforkdone and
interrupts."""
@@ -170,7 +170,7 @@ def test_expr_with_vfork_stop_on_fork(self):
# vfork) because stop-on-fork is set.
self.assertTrue(value.GetError().Fail())
- @requirePOSIX
+ @requirePOSIX()
@add_test_categories(["fork"])
def test_expr_with_vfork_stop_...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/215831
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits