From 7e84231b50d58a34cf3e1bd69be2766b2b8a23d5 Mon Sep 17 00:00:00 2001 From: Christian Kuhn <lolli@schwarzbu.ch> Date: Fri, 23 Feb 2024 15:18:23 +0100 Subject: [PATCH] [TASK] Use phpunit attributes over annotations phpunit 11 deprecates annotations like `@test` and `@dataProvider` in favor of their attribute counterparts. We'll adapt core main & v12 to keep v12 backports simple. The patch takes care of Tests/Unit and Tests/UnitDeprecated, functional test need some additional quirk for the test splitter to continue to work. > composer req --dev rector/rector > wget https://forge.typo3.org/attachments/download/38273/rector.php > find typo3/ -name \*Test.php | grep Tests/Unit | xargs bin/rector process > rm rector.php > composer rem --dev rector/rector Minor manual adaption in ErrorHandlerTest.php and GeneralUtilityTest.php, and `runTests.sh -s cglGit`. Number of executed unit tests and unitDeprecated tests should stay the same. Change-Id: I63d2be40b8aa022f0918edd8dc1c360017316c46 Resolves: #103180 Releases: main, 12.4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83091 Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: core-ci <typo3@b13.com> --- Build/phpstan/phpstan-baseline.neon | 2 +- .../Middleware/AdminPanelInitiatorTest.php | 13 +- .../Tests/Unit/Modules/PreviewModuleTest.php | 12 +- .../Unit/Service/ConfigurationServiceTest.php | 36 +- .../Tests/Unit/Service/ModuleLoaderTest.php | 26 +- .../Tests/Unit/Utility/StateUtilityTest.php | 48 +- .../BackendUserConfigurationTest.php | 29 +- .../TranslationConfigurationProviderTest.php | 13 +- .../Controller/EditDocumentControllerTest.php | 20 +- .../AfterPageTreeItemsPreparedEventTest.php | 5 +- ...yNewContentElementWizardItemsEventTest.php | 12 +- .../Controller/File/FileControllerTest.php | 25 +- .../File/ThumbnailControllerTest.php | 12 +- .../FormInlineAjaxControllerTest.php | 43 +- .../FormSelectTreeAjaxControllerTest.php | 9 +- .../Unit/Controller/LoginControllerTest.php | 9 +- .../SiteConfigurationControllerTest.php | 9 +- .../Controller/SwitchUserControllerTest.php | 9 +- .../Wizard/SuggestWizardControllerTest.php | 22 +- .../ElementBrowserRegistryTest.php | 17 +- .../Event/IsFileSelectableEventTest.php | 5 +- .../Container/ListOfFieldsContainerTest.php | 17 +- .../PaletteAndSingleContainerTest.php | 13 +- .../Form/Element/AbstractFormElementTest.php | 8 +- .../Unit/Form/Element/DatetimeElementTest.php | 8 +- .../Form/Element/InputHiddenElementTest.php | 5 +- .../Unit/Form/Element/JsonElementTest.php | 9 +- .../Unit/Form/Element/UuidElementTest.php | 17 +- .../Form/FieldControl/ElementBrowserTest.php | 24 +- .../Unit/Form/FieldWizard/TableListTest.php | 8 +- .../Tests/Unit/Form/FormDataCompilerTest.php | 45 +- .../FormDataGroup/FlexFormSegmentTest.php | 13 +- .../Unit/Form/FormDataGroup/OnTheFlyTest.php | 17 +- .../FormDataGroup/OrderedProviderListTest.php | 21 +- .../SiteConfigurationDataGroupTest.php | 13 +- .../FormDataGroup/TcaDatabaseRecordTest.php | 13 +- .../TcaInputPlaceholderRecordTest.php | 13 +- .../TcaSelectTreeAjaxFieldDataTest.php | 13 +- .../DatabaseDefaultLanguagePageRowTest.php | 13 +- .../FormDataProvider/DatabaseEditRowTest.php | 29 +- .../DatabaseEffectivePidTest.php | 17 +- .../DatabaseLanguageRowsTest.php | 29 +- .../DatabasePageLanguageOverlayRowsTest.php | 5 +- .../DatabaseParentPageRowTest.php | 29 +- .../DatabaseRecordOverrideValuesTest.php | 9 +- .../DatabaseRecordTypeValueTest.php | 57 +- .../DatabaseRowDateTimeFieldsTest.php | 49 +- .../DatabaseRowDefaultAsReadonlyTest.php | 12 +- .../DatabaseRowDefaultValuesTest.php | 21 +- .../DatabaseRowInitializeNewTest.php | 97 +-- .../DatabaseSystemLanguageRowsTest.php | 9 +- .../DatabaseUniqueUidNewRowTest.php | 17 +- .../DatabaseUserPermissionCheckTest.php | 73 +- .../EvaluateDisplayConditionsTest.php | 148 +--- .../InitializeProcessedTcaTest.php | 17 +- .../InlineOverrideChildTcaTest.php | 21 +- .../PageTsConfigMergedTest.php | 17 +- .../SiteDatabaseEditRowTest.php | 29 +- .../FormDataProvider/SiteResolvingTest.php | 9 +- .../FormDataProvider/TcaCheckboxItemsTest.php | 36 +- .../TcaColumnsOverridesTest.php | 20 +- .../TcaColumnsProcessCommonTest.php | 33 +- ...TcaColumnsProcessFieldDescriptionsTest.php | 17 +- .../TcaColumnsProcessFieldLabelsTest.php | 21 +- .../TcaColumnsProcessPlaceholdersTest.php | 13 +- .../TcaColumnsProcessRecordTitleTest.php | 17 +- .../TcaColumnsProcessShowitemTest.php | 29 +- .../TcaColumnsRemoveUnusedTest.php | 5 +- .../FormDataProvider/TcaFlexPrepareTest.php | 24 +- .../FormDataProvider/TcaFlexProcessTest.php | 85 +- .../Form/FormDataProvider/TcaFolderTest.php | 9 +- .../Form/FormDataProvider/TcaGroupTest.php | 9 +- .../TcaInlineConfigurationTest.php | 77 +- .../TcaInlineExpandCollapseStateTest.php | 16 +- .../TcaInlineIsOnSymmetricSideTest.php | 9 +- .../Form/FormDataProvider/TcaInlineTest.php | 13 +- .../TcaInputPlaceholdersTest.php | 37 +- .../Form/FormDataProvider/TcaJsonTest.php | 8 +- .../Form/FormDataProvider/TcaLanguageTest.php | 76 +- .../FormDataProvider/TcaRadioItemsTest.php | 41 +- .../FormDataProvider/TcaRecordTitleTest.php | 94 +-- .../Form/FormDataProvider/TcaSlugTest.php | 8 +- .../Form/FormDataProvider/TcaTextTest.php | 13 +- .../FormDataProvider/TcaTypesShowitemTest.php | 29 +- .../Form/FormDataProvider/TcaUuidTest.php | 21 +- .../FormDataProvider/UserTsConfigTest.php | 5 +- .../Unit/Form/InlineStackProcessorTest.php | 20 +- .../Form/NodeExpansion/FieldControlTest.php | 5 +- .../Tests/Unit/Form/NodeFactoryTest.php | 93 +-- .../Tests/Unit/Http/RouteDispatcherTest.php | 33 +- .../LoginProviderResolverTest.php | 57 +- .../Tests/Unit/Module/ModuleFactoryTest.php | 5 +- .../Tests/Unit/Module/ModuleRegistryTest.php | 37 +- .../StandardPreviewRendererResolverTest.php | 21 +- .../Unit/Routing/PreviewUriBuilderTest.php | 5 +- .../Tests/Unit/Routing/UriBuilderTest.php | 12 +- .../SearchDemand/MutableSearchDemandTest.php | 17 +- .../SearchDemand/SearchDemandTest.php | 9 +- .../Security/EmailLoginNotificationTest.php | 29 +- .../Button/FullyRenderedButtonTest.php | 7 +- .../Components/Button/InputButtonTest.php | 19 +- .../Components/Button/LinkButtonTest.php | 16 +- .../Components/Button/SplitButtonTest.php | 16 +- .../Template/Components/Menu/MenuItemTest.php | 13 +- .../Unit/Template/Components/MenuTest.php | 13 +- .../Tree/SortedTreeNodeCollectionTest.php | 13 +- .../Unit/Tree/TreeNodeCollectionTest.php | 5 +- .../backend/Tests/Unit/Tree/TreeNodeTest.php | 13 +- .../Tests/Unit/Utility/BackendUtilityTest.php | 147 +--- .../BackendLayoutCollectionTest.php | 21 +- .../View/BackendLayout/BackendLayoutTest.php | 9 +- .../DataProviderCollectionTest.php | 17 +- .../Tests/Unit/View/BackendLayoutViewTest.php | 6 +- .../FormDataProvider/TcaFlexPrepareTest.php | 9 +- .../Unit/Domain/Model/ConstraintTest.php | 17 +- .../Tests/Unit/Domain/Model/LogEntryTest.php | 28 +- .../Repository/LogEntryRepositoryTest.php | 5 +- .../Unit/Domain/Model/BackendUserTest.php | 33 +- .../Tests/Unit/Domain/Model/DemandTest.php | 45 +- .../Repository/BackendUserRepositoryTest.php | 5 +- .../Repository/FileMountRepositoryTest.php | 5 +- .../AuthenticationServiceTest.php | 32 +- .../BackendUserAuthenticationTest.php | 68 +- .../Unit/Authentication/IpLockerTest.php | 8 +- .../Mfa/Provider/RecoveryCodesTest.php | 28 +- .../Authentication/Mfa/Provider/TotpTest.php | 36 +- .../Cache/Backend/AbstractBackendTest.php | 5 +- .../Backend/TransientMemoryBackendTest.php | 45 +- .../Backend/Typo3DatabaseBackendTest.php | 53 +- .../Tests/Unit/Cache/CacheManagerTest.php | 89 +- .../Cache/Frontend/AbstractFrontendTest.php | 45 +- .../Unit/Cache/Frontend/PhpFrontendTest.php | 21 +- .../Cache/Frontend/VariableFrontendTest.php | 37 +- .../Collection/CategoryCollectionTest.php | 5 +- .../Unit/Charset/CharsetConverterTest.php | 56 +- .../Command/Descriptor/TextDescriptorTest.php | 5 +- .../Unit/Command/SendEmailCommandTest.php | 5 +- .../Configuration/CKEditor5MigratorTest.php | 8 +- .../ConfigurationManagerTest.php | 77 +- .../ExtensionConfigurationTest.php | 25 +- .../Tests/Unit/Configuration/FeaturesTest.php | 17 +- .../FlexForm/FlexFormToolsTest.php | 9 +- .../Loader/YamlFileLoaderTest.php | 16 +- .../Tests/Unit/Configuration/RichtextTest.php | 36 +- .../Configuration/SiteConfigurationTest.php | 24 +- .../Unit/Console/CommandRegistryTest.php | 9 +- .../core/Tests/Unit/Context/ContextTest.php | 46 +- .../Tests/Unit/Context/DateTimeAspectTest.php | 18 +- .../Tests/Unit/Context/SecurityAspectTest.php | 13 +- .../Tests/Unit/Context/UserAspectTest.php | 48 +- .../Unit/Context/VisibilityAspectTest.php | 17 +- .../Unit/Context/WorkspaceAspectTest.php | 13 +- .../Unit/Core/ApplicationContextTest.php | 24 +- .../ClassLoadingInformationGeneratorTest.php | 30 +- .../Core/SystemEnvironmentBuilderTest.php | 34 +- .../Unit/Country/CountryProviderTest.php | 20 +- .../Argon2iPasswordHashTest.php | 48 +- .../Argon2idPasswordHashTest.php | 48 +- .../BcryptPasswordHashTest.php | 54 +- .../BlowfishPasswordHashTest.php | 54 +- .../PasswordHashing/Md5PasswordHashTest.php | 42 +- .../PasswordHashFactoryTest.php | 81 +- .../Pbkdf2PasswordHashTest.php | 58 +- .../PhpassPasswordHashTest.php | 54 +- .../core/Tests/Unit/Crypto/RandomTest.php | 34 +- .../Unit/DataHandling/DataHandlerTest.php | 218 ++--- .../DataHandling/Localization/StateTest.php | 14 +- .../DataHandling/Model/CorrelationIdTest.php | 20 +- .../Unit/DataHandling/SlugHelperTest.php | 54 +- .../EmailSoftReferenceParserTest.php | 13 +- .../ExtensionPathSoftReferenceParserTest.php | 9 +- .../NotifySoftReferenceParserTest.php | 6 +- .../SubstituteSoftReferenceParserTest.php | 6 +- .../TypoLinkSoftReferenceParserTest.php | 26 +- .../TypoLinkTagSoftReferenceParserTest.php | 20 +- .../UrlSoftReferenceParserTest.php | 13 +- .../Unit/Database/ConnectionPoolTest.php | 5 +- .../Tests/Unit/Database/ConnectionTest.php | 58 +- .../Platform/PlatformInformationTest.php | 18 +- .../Unit/Database/Query/BulkInsertTest.php | 45 +- .../Expression/ExpressionBuilderTest.php | 184 ++--- .../Unit/Database/Query/QueryBuilderTest.php | 294 ++----- .../Unit/Database/Query/QueryHelperTest.php | 38 +- .../AbstractRestrictionContainerTest.php | 21 +- .../DefaultRestrictionContainerTest.php | 5 +- .../Restriction/DeletedRestrictionTest.php | 5 +- .../DocumentTypeExclusionRestrictionTest.php | 9 +- .../Restriction/EndTimeRestrictionTest.php | 9 +- .../FrontendGroupRestrictionTest.php | 9 +- .../FrontendRestrictionContainerTest.php | 8 +- .../Restriction/HiddenRestrictionTest.php | 5 +- .../LimitToTablesRestrictionContainerTest.php | 17 +- .../Restriction/PageIdListRestrictionTest.php | 25 +- .../PagePermissionRestrictionTest.php | 21 +- .../Restriction/RootLevelRestrictionTest.php | 21 +- .../Restriction/StartTimeRestrictionTest.php | 9 +- .../Restriction/WorkspaceRestrictionTest.php | 25 +- .../Unit/Database/RelationHandlerTest.php | 9 +- .../Schema/ConnectionMigratorTest.php | 9 +- .../Database/Schema/DefaultTcaSchemaTest.php | 157 +--- .../SchemaColumnDefinitionListenerTest.php | 13 +- .../Parser/ColumnDefinitionAttributesTest.php | 6 +- .../Parser/ColumnDefinitionItemTest.php | 8 +- .../Schema/Parser/CreateTableFragmentTest.php | 8 +- .../CharacterTypeAttributesTest.php | 8 +- .../EnumerationTypeAttributesTest.php | 8 +- .../NumericTypeAttributesTest.php | 8 +- .../Parser/DataTypes/BinaryDataTypeTest.php | 12 +- .../Parser/DataTypes/BitDataTypeTest.php | 8 +- .../Schema/Parser/DataTypes/BlobTypesTest.php | 8 +- .../Parser/DataTypes/CharDataTypeTest.php | 12 +- .../Parser/DataTypes/DateTimeTypesTest.php | 16 +- .../Parser/DataTypes/EnumDataTypeTest.php | 8 +- .../Parser/DataTypes/FixedPointTypesTest.php | 8 +- .../DataTypes/FloatingPointTypesTest.php | 8 +- .../Parser/DataTypes/IntegerTypesTest.php | 8 +- .../Parser/DataTypes/JsonDataTypeTest.php | 5 +- .../Parser/DataTypes/SetDataTypeTest.php | 8 +- .../Schema/Parser/DataTypes/TextTypesTest.php | 8 +- .../Parser/ForeignKeyDefinitionTest.php | 8 +- .../Schema/Parser/IndexDefinitionTest.php | 8 +- .../Schema/Parser/ReferenceDefinitionTest.php | 8 +- .../Schema/Parser/TableBuilderTest.php | 73 +- .../Schema/Parser/TableOptionsTest.php | 8 +- .../Unit/Database/Schema/SqlReaderTest.php | 28 +- .../Database/Schema/Types/EnumTypeTest.php | 9 +- .../Database/Schema/Types/SetTypeTest.php | 9 +- .../ConsoleCommandPassTest.php | 9 +- .../FailsafeContainerTest.php | 96 +-- .../ListenerProviderPassTest.php | 13 +- .../ServiceProviderCompilationPassTest.php | 25 +- .../ServiceProviderRegistryTest.php | 37 +- .../Unit/Error/DebugExceptionHandlerTest.php | 12 +- .../Tests/Unit/Error/ErrorHandlerTest.php | 4 - .../Error/ProductionExceptionHandlerTest.php | 16 +- .../EventDispatcher/EventDispatcherTest.php | 34 +- .../EventDispatcher/ListenerProviderTest.php | 40 +- .../NoopEventDispatcherTest.php | 9 +- .../Unit/ExpressionLanguage/ResolverTest.php | 24 +- .../AbstractFormProtectionTest.php | 89 +- .../BackendFormProtectionTest.php | 21 +- .../FormProtectionFactoryTest.php | 29 +- .../InstallToolFormProtectionTest.php | 9 +- .../Hooks/TcaItemsProcessorFunctionsTest.php | 48 +- .../core/Tests/Unit/Html/HtmlCropperTest.php | 12 +- .../core/Tests/Unit/Html/HtmlParserTest.php | 74 +- .../Tests/Unit/Html/Parser/ParserTest.php | 9 +- .../Tests/Unit/Html/RteHtmlParserTest.php | 62 +- .../Tests/Unit/Http/ApplicationTypeTest.php | 29 +- .../core/Tests/Unit/Http/ClientTest.php | 29 +- .../core/Tests/Unit/Http/MessageTest.php | 92 +-- .../Unit/Http/MiddlewareDispatcherTest.php | 29 +- .../Unit/Http/MiddlewareStackResolverTest.php | 17 +- .../Tests/Unit/Http/NormalizedParamsTest.php | 126 +-- .../Tests/Unit/Http/RedirectResponseTest.php | 21 +- .../Tests/Unit/Http/RequestFactoryTest.php | 17 +- .../core/Tests/Unit/Http/RequestTest.php | 136 +--- .../Tests/Unit/Http/ResponseFactoryTest.php | 21 +- .../core/Tests/Unit/Http/ResponseTest.php | 58 +- .../Http/Security/ReferrerEnforcerTest.php | 19 +- .../Unit/Http/ServerRequestFactoryTest.php | 33 +- .../Tests/Unit/Http/ServerRequestTest.php | 49 +- .../Tests/Unit/Http/StreamFactoryTest.php | 49 +- .../core/Tests/Unit/Http/StreamTest.php | 156 +--- .../Unit/Http/UploadedFileFactoryTest.php | 21 +- .../core/Tests/Unit/Http/UploadedFileTest.php | 44 +- .../core/Tests/Unit/Http/UriFactoryTest.php | 9 +- typo3/sysext/core/Tests/Unit/Http/UriTest.php | 184 ++--- .../core/Tests/Unit/Imaging/DimensionTest.php | 9 +- .../Unit/Imaging/GraphicalFunctionsTest.php | 16 +- .../IconProvider/BitmapIconProviderTest.php | 13 +- .../IconProvider/SvgIconProviderTest.php | 17 +- .../SvgSpriteIconProviderTest.php | 17 +- .../Tests/Unit/Imaging/IconRegistryTest.php | 69 +- .../core/Tests/Unit/Imaging/IconTest.php | 28 +- .../Tests/Unit/Imaging/ImageDimensionTest.php | 8 +- .../Imaging/ImageManipulation/AreaTest.php | 16 +- .../CropVariantCollectionTest.php | 17 +- .../ImageManipulation/CropVariantTest.php | 13 +- .../LinkHandling/EmailLinkHandlerTest.php | 14 +- .../Unit/LinkHandling/FileLinkHandlerTest.php | 16 +- .../LinkHandling/FolderLinkHandlerTest.php | 12 +- .../LegacyLinkNotationConverterTest.php | 41 +- .../Unit/LinkHandling/LinkServiceTest.php | 14 +- .../Unit/LinkHandling/PageLinkHandlerTest.php | 14 +- .../LinkHandling/RecordLinkHandlerTest.php | 18 +- .../LinkHandling/TelephoneLinkHandlerTest.php | 14 +- .../LinkHandling/TypoLinkCodecServiceTest.php | 14 +- .../Unit/LinkHandling/UrlLinkHandlerTest.php | 28 +- .../Unit/Localization/DateFormatterTest.php | 8 +- .../Tests/Unit/Localization/LocaleTest.php | 21 +- .../Tests/Unit/Localization/LocalesTest.php | 24 +- .../Localization/LocalizationFactoryTest.php | 9 +- .../Localization/Parser/XliffParserTest.php | 8 +- .../Unit/Locking/FileLockStrategyTest.php | 17 +- .../Tests/Unit/Locking/LockFactoryTest.php | 25 +- .../Locking/SemaphoreLockStrategyTest.php | 13 +- .../Unit/Locking/SimpleLockStrategyTest.php | 32 +- .../core/Tests/Unit/Log/LogLevelTest.php | 26 +- .../core/Tests/Unit/Log/LogManagerTest.php | 25 +- .../core/Tests/Unit/Log/LogRecordTest.php | 53 +- .../sysext/core/Tests/Unit/Log/LoggerTest.php | 40 +- .../Processor/AbstractMemoryProcessorTest.php | 9 +- .../Log/Processor/AbstractProcessorTest.php | 9 +- .../Processor/IntrospectionProcessorTest.php | 24 +- .../MemoryPeakUsageProcessorTest.php | 5 +- .../Processor/MemoryUsageProcessorTest.php | 5 +- .../Unit/Log/Processor/WebProcessorTest.php | 5 +- .../Unit/Log/Writer/AbstractWriterTest.php | 5 +- .../Unit/Log/Writer/DatabaseWriterTest.php | 5 +- .../Tests/Unit/Log/Writer/FileWriterTest.php | 42 +- .../Event/AfterMailerSentMessageEventTest.php | 5 +- .../BeforeMailerSentMessageEventTest.php | 9 +- .../core/Tests/Unit/Mail/FileSpoolTest.php | 8 +- .../core/Tests/Unit/Mail/MailMessageTest.php | 94 +-- .../core/Tests/Unit/Mail/MailerTest.php | 38 +- .../Tests/Unit/Mail/TransportFactoryTest.php | 45 +- .../FlashMessageRendererResolverTest.php | 5 +- .../Messaging/FlashMessageServiceTest.php | 5 +- .../Tests/Unit/Messaging/FlashMessageTest.php | 5 +- .../Renderer/BootstrapRendererTest.php | 9 +- .../Messaging/Renderer/ListRendererTest.php | 9 +- .../Renderer/PlaintextRendererTest.php | 9 +- .../MetaTag/GenericMetaTagManagerTest.php | 25 +- .../MetaTag/MetaTagManagerRegistryTest.php | 16 +- .../Unit/Middleware/VerifyHostHeaderTest.php | 38 +- .../Unit/Migrations/TcaMigrationTest.php | 166 ++-- .../Package/AbstractServiceProviderTest.php | 25 +- .../core/Tests/Unit/Package/MetaDataTest.php | 8 +- .../Tests/Unit/Package/PackageManagerTest.php | 58 +- .../core/Tests/Unit/Package/PackageTest.php | 22 +- .../Tests/Unit/Page/AssetCollectorTest.php | 32 +- .../Tests/Unit/Page/AssetRendererTest.php | 32 +- .../core/Tests/Unit/Page/ImportMapTest.php | 41 +- .../Page/JavaScriptModuleInstructionTest.php | 8 +- .../core/Tests/Unit/Page/PageRendererTest.php | 52 +- .../Unit/Pagination/ArrayPaginatorTest.php | 32 +- .../Unit/Pagination/SimplePaginationTest.php | 21 +- .../SlidingWindowPaginationTest.php | 21 +- .../Validator/CorePasswordValidatorTest.php | 8 +- .../Validator/Dto/ContextDataTest.php | 17 +- .../Unit/Preparations/TcaPreparationTest.php | 26 +- typo3/sysext/core/Tests/Unit/RegistryTest.php | 25 +- .../Tests/Unit/Resource/AbstractFileTest.php | 8 +- .../Collection/FileCollectionRegistryTest.php | 45 +- .../Resource/Driver/AbstractDriverTest.php | 5 +- ...stractHierarchicalFilesystemDriverTest.php | 14 +- .../Resource/Driver/DriverRegistryTest.php | 33 +- .../Tests/Unit/Resource/FileReferenceTest.php | 50 +- .../core/Tests/Unit/Resource/FileTest.php | 69 +- .../Resource/Filter/FileNameFilterTest.php | 10 +- .../core/Tests/Unit/Resource/FolderTest.php | 33 +- .../Resource/Index/ExtractorRegistryTest.php | 29 +- .../Tests/Unit/Resource/Index/IndexerTest.php | 5 +- .../Unit/Resource/MetaDataAspectTest.php | 32 +- .../AfterVideoPreviewFetchedEventTest.php | 5 +- .../OnlineMedia/Helpers/VimeoHelperTest.php | 8 +- .../Tests/Unit/Resource/ProcessedFileTest.php | 13 +- .../Processing/LocalPreviewHelperTest.php | 13 +- .../Processing/ProcessorRegistryTest.php | 13 +- .../Resource/RelativeCssPathFixerTest.php | 8 +- .../Rendering/AudioTagRendererTest.php | 20 +- .../Rendering/RendererRegistryTest.php | 29 +- .../Rendering/VideoTagRendererTest.php | 20 +- .../Resource/Rendering/VimeoRendererTest.php | 73 +- .../Rendering/YouTubeRendererTest.php | 72 +- .../Repository/AbstractRepositoryTest.php | 5 +- .../Unit/Resource/ResourceCompressorTest.php | 56 +- .../Unit/Resource/ResourceFactoryTest.php | 30 +- .../Security/FileNameValidatorTest.php | 41 +- .../Service/ConfigurationServiceTest.php | 5 +- .../Resource/Service/ExtractorServiceTest.php | 24 +- .../Unit/Resource/StorageRepositoryTest.php | 12 +- .../TextExtraction/PlainTextExtractorTest.php | 9 +- .../TextExtractorRegistryTest.php | 13 +- .../Utility/FileExtensionFilterTest.php | 12 +- .../Unit/Routing/Aspect/AspectFactoryTest.php | 15 +- .../Enhancer/VariableProcessorTest.php | 32 +- .../Tests/Unit/Routing/PageRouterTest.php | 11 +- .../Tests/Unit/Routing/RouteSorterTest.php | 7 +- .../Tests/Unit/Routing/SiteMatcherTest.php | 14 +- .../Unit/Schema/Struct/SelectItemTest.php | 58 +- .../ConsumableNonceTest.php | 12 +- .../Reporting/ReportTest.php | 13 +- .../ContentSecurityPolicy/ScopeTest.php | 28 +- .../SourceCollectionTest.php | 9 +- .../ContentSecurityPolicy/UriValueTest.php | 20 +- .../Tests/Unit/Security/NoncePoolTest.php | 20 +- .../core/Tests/Unit/Security/NonceTest.php | 20 +- .../Tests/Unit/Security/RequestTokenTest.php | 30 +- .../Unit/Serializer/Typo3XmlParserTest.php | 70 +- .../Serializer/Typo3XmlSerializerTest.php | 84 +- .../Service/DependencyOrderingServiceTest.php | 34 +- .../Unit/Service/FlexFormServiceTest.php | 5 +- .../MarkerBasedTemplateServiceTest.php | 36 +- .../Backend/DatabaseSessionBackendTest.php | 5 +- .../Backend/RedisSessionBackendTest.php | 9 +- .../Tests/Unit/Session/SessionManagerTest.php | 17 +- .../Unit/Session/UserSessionManagerTest.php | 24 +- .../Tests/Unit/Session/UserSessionTest.php | 9 +- .../Unit/Site/Entity/SiteLanguageTest.php | 16 +- .../core/Tests/Unit/Site/Entity/SiteTest.php | 33 +- .../core/Tests/Unit/Text/TextCropperTest.php | 12 +- .../Unit/TimeTracker/TimeTrackerTest.php | 5 +- .../DatabaseTreeDataProviderTest.php | 9 +- .../TreeDataProviderFactoryTest.php | 16 +- .../core/Tests/Unit/Type/BitSetTest.php | 45 +- .../core/Tests/Unit/Type/EnumerationTest.php | 108 +-- .../Tests/Unit/Type/File/ImageInfoTest.php | 22 +- typo3/sysext/core/Tests/Unit/Type/MapTest.php | 17 +- .../AST/AstBuilderInterfaceTest.php | 163 ++-- .../CurrentObjectPathTest.php | 41 +- .../TypoScript/AST/Node/ChildNodeTest.php | 13 +- .../AST/Node/ReferenceChildNodeTest.php | 13 +- .../Unit/TypoScript/AST/Node/RootNodeTest.php | 13 +- .../AST/Traverser/AstTraverserTest.php | 5 +- .../IncludeNode/ConditionElseIncludeTest.php | 9 +- .../IncludeNode/ConditionIncludeTest.php | 9 +- .../ConditionIncludeTyposcriptIncludeTest.php | 9 +- .../IncludeTree/IncludeNode/RootNodeTest.php | 13 +- ...onVerdictAwareIncludeTreeTraverserTest.php | 5 +- .../Traverser/IncludeTreeTraverserTest.php | 5 +- .../Tokenizer/Line/ConditionLineTest.php | 5 +- .../Line/IdentifierAssignmentLineTest.php | 9 +- .../Line/IdentifierBlockOpenLineTest.php | 5 +- .../Tokenizer/Line/IdentifierCopyLineTest.php | 9 +- .../Line/IdentifierFunctionLineTest.php | 13 +- .../Line/IdentifierReferenceLineTest.php | 9 +- .../Line/IdentifierUnsetLineTest.php | 5 +- .../Tokenizer/Line/ImportLineTest.php | 5 +- .../Tokenizer/Line/ImportOldLineTest.php | 5 +- .../Token/IdentifierTokenStreamTest.php | 17 +- .../Tokenizer/Token/TokenStreamTest.php | 17 +- .../TypoScript/Tokenizer/Token/TokenTest.php | 21 +- .../Tokenizer/TokenizerInterfaceTest.php | 20 +- .../Unit/TypoScript/TypoScriptServiceTest.php | 14 +- .../Tests/Unit/Utility/ArrayUtilityTest.php | 340 +++----- .../Unit/Utility/ClassNamingUtilityTest.php | 21 +- .../Tests/Unit/Utility/CommandUtilityTest.php | 14 +- .../Tests/Unit/Utility/CsvUtilityTest.php | 14 +- .../Tests/Unit/Utility/DebugUtilityTest.php | 14 +- .../ExtensionManagementUtilityTest.php | 256 ++---- .../Tests/Unit/Utility/GeneralUtilityTest.php | 761 +++++------------- .../Tests/Unit/Utility/HttpUtilityTest.php | 34 +- .../Utility/IpAnonymizationUtilityTest.php | 10 +- .../Tests/Unit/Utility/MailUtilityTest.php | 34 +- .../Tests/Unit/Utility/MathUtilityTest.php | 78 +- .../Utility/PathUtilityPublicPathsTest.php | 14 +- .../Tests/Unit/Utility/PathUtilityTest.php | 56 +- .../Unit/Utility/PermutationUtilityTest.php | 12 +- .../Unit/Utility/RootlineUtilityTest.php | 77 +- .../String/StringFragmentCollectionTest.php | 16 +- .../String/StringFragmentSplitterTest.php | 7 +- .../Tests/Unit/Utility/StringUtilityTest.php | 111 +-- .../Unit/Utility/VersionNumberUtilityTest.php | 13 +- .../PublicMethodDeprecationTraitTest.php | 25 +- .../PublicPropertyDeprecationTraitTest.php | 20 +- .../FlexForm/FlexFormToolsTest.php | 8 +- .../Loader/PageTsConfigLoaderTest.php | 17 +- .../Parser/PageTsConfigParserTest.php | 17 +- .../AbstractConditionMatcherTest.php | 40 +- .../BackendWorkspaceRestrictionTest.php | 17 +- .../FrontendWorkspaceRestrictionTest.php | 13 +- .../Domain/Repository/PageRepositoryTest.php | 21 +- .../FormProtectionFactoryTest.php | 29 +- .../Utility/FileExtensionFilterTest.php | 6 +- .../Parser/TypoScriptParserTest.php | 76 +- .../TypoScript/TemplateServiceTest.php | 9 +- .../Utility/GeneralUtilityTest.php | 26 +- .../Utility/PathUtilityPublicPathsTest.php | 6 +- .../Utility/ResourceUtilityTest.php | 8 +- .../Unit/DashboardPresetRegistryTest.php | 13 +- .../DashboardWidgetPassTest.php | 25 +- .../Tests/Unit/WidgetGroupRegistryTest.php | 17 +- .../FrontendConfigurationManagerTest.php | 125 +-- .../Tests/Unit/Domain/Model/CategoryTest.php | 25 +- .../Unit/DomainObject/AbstractEntityTest.php | 17 +- .../extbase/Tests/Unit/Error/ErrorTest.php | 9 +- .../extbase/Tests/Unit/Error/MessageTest.php | 29 +- .../extbase/Tests/Unit/Error/ResultTest.php | 70 +- ...FlexFormConfigurationOverrideEventTest.php | 9 +- .../Unit/Mvc/Controller/ArgumentTest.php | 50 +- .../Unit/Mvc/Controller/ArgumentsTest.php | 65 +- ...ropertyMappingConfigurationServiceTest.php | 58 +- .../extbase/Tests/Unit/Mvc/RequestTest.php | 56 +- .../Tests/Unit/Mvc/View/JsonViewTest.php | 76 +- .../Web/RequestBuilderDefaultValuesTest.php | 57 +- .../Unit/Mvc/Web/Routing/UriBuilderTest.php | 184 ++--- .../ClassesConfigurationFactoryTest.php | 5 +- .../Persistence/ClassesConfigurationTest.php | 24 +- .../Unit/Persistence/Generic/BackendTest.php | 17 +- .../Generic/Mapper/DataMapFactoryTest.php | 12 +- .../Generic/Mapper/DataMapperTest.php | 33 +- .../Generic/PersistenceManagerTest.php | 52 +- .../Persistence/Generic/QueryFactoryTest.php | 7 +- .../Persistence/Generic/QueryResultTest.php | 53 +- .../Unit/Persistence/Generic/QueryTest.php | 46 +- .../Unit/Persistence/Generic/SessionTest.php | 41 +- .../Generic/Typo3QuerySettingsTest.php | 66 +- .../Unit/Persistence/ObjectStorageTest.php | 156 +--- .../Tests/Unit/Persistence/RepositoryTest.php | 65 +- ...ropertyMappingConfigurationBuilderTest.php | 5 +- .../PropertyMappingConfigurationTest.php | 88 +- .../TypeConverter/ArrayConverterTest.php | 24 +- .../TypeConverter/BooleanConverterTest.php | 13 +- .../TypeConverter/DateTimeConverterTest.php | 88 +- .../TypeConverter/FloatConverterTest.php | 25 +- .../TypeConverter/IntegerConverterTest.php | 21 +- .../TypeConverter/StringConverterTest.php | 9 +- .../Property/TypeConverterRegistryTest.php | 48 +- .../ClassSchema/MethodParameterTest.php | 33 +- .../Reflection/ClassSchema/MethodTest.php | 13 +- .../PropertyWithTypeDeclarationsTest.php | 72 +- .../PropertyWithoutTypeDeclarationsTest.php | 76 +- .../Reflection/ClassSchema/PropertyTest.php | 77 +- .../Tests/Unit/Reflection/ClassSchemaTest.php | 89 +- .../Unit/Reflection/ObjectAccessTest.php | 151 +--- .../Unit/Reflection/ReflectionServiceTest.php | 17 +- .../Routing/Aspect/StaticRangeMapperTest.php | 8 +- .../Security/Cryptography/HashServiceTest.php | 41 +- .../Tests/Unit/Service/CacheServiceTest.php | 25 +- .../Unit/Service/ExtensionServiceTest.php | 70 +- .../Unit/Service/ImageScriptServiceTest.php | 18 +- .../Unit/Utility/DebuggerUtilityTest.php | 65 +- .../Unit/Utility/ExtensionUtilityTest.php | 61 +- .../AbstractCompositeValidatorTest.php | 17 +- .../Validator/AbstractValidatorTest.php | 17 +- .../Validator/DisjunctionValidatorTest.php | 9 +- .../Validator/GenericObjectValidatorTest.php | 31 +- .../ValidatorClassNameResolverTest.php | 44 +- .../Mvc/Web/Routing/UriBuilderTest.php | 17 +- .../Persistence/RepositoryTest.php | 21 +- .../Reflection/ReflectionServiceTest.php | 8 +- .../Unit/Controller/ActionControllerTest.php | 4 +- .../Controller/DownloadControllerTest.php | 5 +- .../UploadExtensionFileControllerTest.php | 8 +- .../Unit/Domain/Model/DependencyTest.php | 9 +- .../Unit/Domain/Model/DownloadQueueTest.php | 25 +- .../Tests/Unit/Domain/Model/ExtensionTest.php | 32 +- .../Repository/ExtensionRepositoryTest.php | 13 +- .../Unit/Parser/ExtensionXmlParserTest.php | 8 +- .../Tests/Unit/Report/ExtensionStatusTest.php | 53 +- .../ExtensionManagementServiceTest.php | 29 +- .../Unit/Utility/DependencyUtilityTest.php | 73 +- .../Tests/Unit/Utility/EmConfUtilityTest.php | 13 +- .../Unit/Utility/FileHandlingUtilityTest.php | 53 +- .../Tests/Unit/Utility/InstallUtilityTest.php | 28 +- .../Tests/Unit/Utility/ListUtilityTest.php | 14 +- .../RecoveryConfigurationTest.php | 45 +- .../Unit/Redirect/RedirectHandlerTest.php | 44 +- .../Unit/Service/RecoveryServiceTest.php | 8 +- .../Service/ValidatorResolverServiceTest.php | 12 +- .../Validation/RedirectUrlValidatorTest.php | 40 +- .../Event/ModifyEditFileFormDataEventTest.php | 5 +- .../filelist/Tests/Unit/FileListTest.php | 9 +- .../ResourceFileExtensionMatcherTest.php | 9 +- .../Core/Cache/FluidTemplateCacheTest.php | 17 +- .../Core/Rendering/RenderingContextTest.php | 14 +- .../ViewHelper/ViewHelperResolverTest.php | 6 +- .../Unit/View/AbstractTemplateViewTest.php | 5 +- .../Tests/Unit/View/TemplatePathsTest.php | 22 +- .../Link/TypolinkViewHelperTest.php | 8 +- .../Uri/TypolinkViewHelperTest.php | 14 +- .../Controller/FormEditorControllerTest.php | 37 +- .../Controller/FormFrontendControllerTest.php | 13 +- .../Controller/FormManagerControllerTest.php | 49 +- .../ConfigurationServiceTest.php | 128 +-- ...ableFormElementPropertiesValidatorTest.php | 22 +- ...llectionElementPropertiesValidatorTest.php | 22 +- .../FormDefinitionConversionServiceTest.php | 9 +- .../FormDefinitionValidationServiceTest.php | 38 +- .../Domain/Factory/ArrayFormFactoryTest.php | 9 +- .../Domain/Finishers/AbstractFinisherTest.php | 77 +- .../Domain/Finishers/ClosureFinisherTest.php | 5 +- .../Domain/Finishers/RedirectFinisherTest.php | 6 +- .../Finishers/SaveToDatabaseFinisherTest.php | 30 +- .../FormElements/AbstractFormElementTest.php | 57 +- .../FormElements/AbstractSectionTest.php | 29 +- .../Unit/Domain/FormElements/SectionTest.php | 48 +- .../Renderable/AbstractRenderableTest.php | 21 +- .../Renderable/RenderableVariantTest.php | 9 +- .../DataStructureIdentifierListenerTest.php | 28 +- .../ConfigurationManagerTest.php | 5 +- .../InheritancesResolverServiceTest.php | 42 +- .../Configuration/TypoScriptServiceTest.php | 5 +- .../Unit/Mvc/Configuration/YamlSourceTest.php | 21 +- .../FormPersistenceManagerTest.php | 138 +--- .../Tests/Unit/Mvc/ProcessingRuleTest.php | 21 +- .../PropertyMappingConfigurationTest.php | 27 +- .../FormDefinitionArrayConverterTest.php | 21 +- .../Form/DatePickerViewHelperTest.php | 8 +- .../FrontendUserAuthenticationTest.php | 7 +- .../ContentObject/CaseContentObjectTest.php | 9 +- .../ContentDataProcessorTest.php | 21 +- .../ContentObjectRendererTest.php | 618 ++++++-------- .../ProductionExceptionHandlerTest.php | 21 +- .../ContentObject/ImageContentObjectTest.php | 37 +- .../Menu/AbstractMenuContentObjectTest.php | 42 +- .../Menu/MenuContentObjectFactoryTest.php | 21 +- .../Unit/Controller/ErrorControllerTest.php | 53 +- .../TypoScriptFrontendControllerTest.php | 8 +- .../DataProcessing/FlexFormProcessorTest.php | 25 +- .../SiteLanguageProcessorTest.php | 9 +- .../Unit/DataProcessing/SiteProcessorTest.php | 9 +- .../Tests/Unit/Http/RequestHandlerTest.php | 33 +- .../Tests/Unit/Imaging/GifBuilderTest.php | 31 +- .../Middleware/PageArgumentValidatorTest.php | 21 +- .../SiteBaseRedirectResolverTest.php | 28 +- .../Unit/Middleware/SiteResolverTest.php | 18 +- .../Middleware/StaticRouteResolverTest.php | 5 +- .../Unit/Page/CacheHashCalculatorTest.php | 41 +- .../Unit/Page/CacheHashConfigurationTest.php | 44 +- .../Page/PageAccessFailureReasonsTest.php | 9 +- .../Unit/Page/PageLayoutResolverTest.php | 25 +- .../Unit/Processor/GalleryProcessorTest.php | 32 +- .../Unit/Resource/FilePathSanitizerTest.php | 30 +- .../Typolink/AbstractTypolinkBuilderTest.php | 17 +- .../DatabaseRecordLinkBuilderTest.php | 7 +- .../Unit/Typolink/LinkVarsCalculatorTest.php | 14 +- .../Unit/Typolink/PageLinkBuilderTest.php | 8 +- .../Resource/FilePathSanitizerTest.php | 5 +- typo3/sysext/impexp/Tests/Unit/ExportTest.php | 45 +- .../indexed_search/Tests/Unit/IndexerTest.php | 31 +- .../Unit/Controller/UpgradeControllerTest.php | 8 +- .../Php/CodeStatisticsTest.php | 5 +- .../Php/GeneratorClassesResolverTest.php | 9 +- .../Php/Matcher/AbstractCoreMatcherTest.php | 21 +- .../Php/Matcher/ArrayDimensionMatcherTest.php | 12 +- .../Php/Matcher/ArrayGlobalMatcherTest.php | 12 +- .../Php/Matcher/ClassConstantMatcherTest.php | 12 +- .../Php/Matcher/ClassNameMatcherTest.php | 5 +- .../Php/Matcher/ConstantMatcherTest.php | 12 +- .../ConstructorArgumentMatcherTest.php | 8 +- .../Php/Matcher/FunctionCallMatcherTest.php | 9 +- .../InterfaceMethodChangedMatcherTest.php | 5 +- .../Matcher/MethodAnnotationMatcherTest.php | 5 +- .../MethodArgumentDroppedMatcherTest.php | 12 +- ...MethodArgumentDroppedStaticMatcherTest.php | 12 +- .../MethodArgumentRequiredMatcherTest.php | 12 +- ...ethodArgumentRequiredStaticMatcherTest.php | 12 +- .../MethodArgumentUnusedMatcherTest.php | 12 +- .../Php/Matcher/MethodCallMatcherTest.php | 16 +- .../Matcher/MethodCallStaticMatcherTest.php | 12 +- .../Matcher/PropertyAnnotationMatcherTest.php | 5 +- .../PropertyExistsStaticMatcherTest.php | 5 +- .../Matcher/PropertyProtectedMatcherTest.php | 12 +- .../Php/Matcher/PropertyPublicMatcherTest.php | 12 +- .../Php/MatcherFactoryTest.php | 29 +- .../Unit/FolderStructure/AbstractNodeTest.php | 81 +- .../FolderStructure/DefaultFactoryTest.php | 5 +- .../FolderStructure/DirectoryNodeTest.php | 121 +-- .../Unit/FolderStructure/FileNodeTest.php | 157 +--- .../Unit/FolderStructure/LinkNodeTest.php | 85 +- .../Unit/FolderStructure/RootNodeTest.php | 45 +- .../FolderStructure/StructureFacadeTest.php | 9 +- .../Unit/Service/ClearTableServiceTest.php | 5 +- .../Unit/Service/CoreUpdateServiceTest.php | 17 +- .../Unit/Service/CoreVersionServiceTest.php | 72 +- .../Unit/Service/Typo3tempFileServiceTest.php | 9 +- .../DatabaseCheck/Platform/MySqlTest.php | 8 +- .../ContentSecurityPolicyHeaderTest.php | 8 +- .../L18nDiffsourceToJsonMigrationTest.php | 19 +- .../Unit/Linktype/ExternalLinktypeTest.php | 42 +- .../Unit/Linktype/LinktypeRegistryTest.php | 13 +- .../Unit/Repository/PagesRepositoryTest.php | 5 +- .../DatabaseIntegrityControllerTest.php | 8 +- ...fyBlindedConfigurationOptionsEventTest.php | 5 +- .../Unit/Service/OpenDocumentServiceTest.php | 21 +- .../Tests/Unit/Evaluation/SourceHostTest.php | 8 +- ...reateRedirectHasBeenPersistedEventTest.php | 5 +- .../BeforeRedirectMatchDomainEventTest.php | 9 +- ...edirectRecordBeforePersistingEventTest.php | 5 +- ...tManagementControllerViewDataEventTest.php | 5 +- ...SlugRedirectChangeItemCreatedEventTest.php | 9 +- .../ValuePickerItemDataProviderTest.php | 13 +- .../RedirectSourceCollectionTest.php | 17 +- .../SlugRedirectChangeItemTest.php | 9 +- .../Tests/Unit/Repository/DemandTest.php | 8 +- .../Unit/Service/RedirectServiceTest.php | 88 +- .../TargetPageIdViewHelperTest.php | 9 +- .../Tests/Unit/Report/Status/StatusTest.php | 9 +- .../Unit/Report/Status/Typo3StatusTest.php | 9 +- .../Unit/CronCommand/CronCommandTest.php | 54 +- .../Unit/CronCommand/NormalizeCommandTest.php | 94 +-- .../CachingFrameworkGarbageCollectionTest.php | 9 +- ...ableCommandAdditionalFieldProviderTest.php | 5 +- .../Tests/Unit/Task/TaskSerializerTest.php | 26 +- .../Validator/TaskValidatorTest.php | 13 +- .../ModifyUrlForCanonicalTagEventTest.php | 5 +- .../Unit/HrefLang/HrefLangGeneratorTest.php | 14 +- .../MetaTag/OpenGraphMetaTagManagerTest.php | 25 +- .../MetaTag/TwitterCardMetaTagManagerTest.php | 25 +- .../PagesXmlSitemapDataProviderTest.php | 16 +- .../Tests/Unit/Registry/AddonRegistryTest.php | 9 +- .../Tests/Unit/Registry/ModeRegistryTest.php | 13 +- .../Factory/WebhookInstructionFactoryTest.php | 13 +- .../Controller/Remote/RemoteServerTest.php | 6 +- .../Unit/Domain/Model/WorkspaceRecordTest.php | 21 +- .../Event/AfterRecordPublishedEventTest.php | 5 +- 699 files changed, 6647 insertions(+), 14578 deletions(-) diff --git a/Build/phpstan/phpstan-baseline.neon b/Build/phpstan/phpstan-baseline.neon index 83dc831b781a..b332e03d2b5d 100644 --- a/Build/phpstan/phpstan-baseline.neon +++ b/Build/phpstan/phpstan-baseline.neon @@ -1681,7 +1681,7 @@ parameters: path: ../../typo3/sysext/extbase/Tests/Unit/Mvc/Controller/MvcPropertyMappingConfigurationServiceTest.php - - message: "#^Property class@anonymous/extbase/Tests/Unit/Mvc/View/JsonViewTest\\.php\\:106\\:\\:\\$prohibited is unused\\.$#" + message: "#^Property class@anonymous/extbase/Tests/Unit/Mvc/View/JsonViewTest\\.php\\:108\\:\\:\\$prohibited is unused\\.$#" count: 1 path: ../../typo3/sysext/extbase/Tests/Unit/Mvc/View/JsonViewTest.php diff --git a/typo3/sysext/adminpanel/Tests/Unit/Middleware/AdminPanelInitiatorTest.php b/typo3/sysext/adminpanel/Tests/Unit/Middleware/AdminPanelInitiatorTest.php index ef62c9041f9d..094a314443e0 100644 --- a/typo3/sysext/adminpanel/Tests/Unit/Middleware/AdminPanelInitiatorTest.php +++ b/typo3/sysext/adminpanel/Tests/Unit/Middleware/AdminPanelInitiatorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Adminpanel\Tests\Unit\Middleware; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AdminPanelInitiatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function processCallsInitialize(): void { $tsConfig = [ @@ -62,9 +61,7 @@ final class AdminPanelInitiatorTest extends UnitTestCase $adminPanelInitiator->process($request, $handler); } - /** - * @test - */ + #[Test] public function processDoesNotCallInitializeIfAdminPanelIsNotEnabledInUC(): void { $tsConfig = [ @@ -82,9 +79,7 @@ final class AdminPanelInitiatorTest extends UnitTestCase $this->checkAdminPanelDoesNotCallInitialize($tsConfig, $uc); } - /** - * @test - */ + #[Test] public function processDoesNotCallInitializeIfNoAdminPanelModuleIsEnabled(): void { $tsConfig = [ diff --git a/typo3/sysext/adminpanel/Tests/Unit/Modules/PreviewModuleTest.php b/typo3/sysext/adminpanel/Tests/Unit/Modules/PreviewModuleTest.php index 1b6e361eab4a..8eb5c0082597 100644 --- a/typo3/sysext/adminpanel/Tests/Unit/Modules/PreviewModuleTest.php +++ b/typo3/sysext/adminpanel/Tests/Unit/Modules/PreviewModuleTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Adminpanel\Tests\Unit\Modules; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Adminpanel\Modules\PreviewModule; use TYPO3\CMS\Adminpanel\Service\ConfigurationService; use TYPO3\CMS\Core\Context\Context; @@ -45,10 +47,8 @@ final class PreviewModuleTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider simulateDateDataProvider - */ + #[DataProvider('simulateDateDataProvider')] + #[Test] public function initializeFrontendPreviewSetsDateForSimulation(string $dateToSimulate, int $expectedExecTime, int $expectedAccessTime): void { $configurationService = $this->getMockBuilder(ConfigurationService::class)->disableOriginalConstructor()->getMock(); @@ -71,9 +71,7 @@ final class PreviewModuleTest extends UnitTestCase self::assertSame($GLOBALS['SIM_ACCESS_TIME'], $expectedAccessTime, 'ACCESS_TIME'); } - /** - * @test - */ + #[Test] public function initializeFrontendPreviewSetsUserGroupForSimulation(): void { $request = (new ServerRequest())->withAttribute('frontend.user', $this->getMockBuilder(FrontendUserAuthentication::class)->getMock()); diff --git a/typo3/sysext/adminpanel/Tests/Unit/Service/ConfigurationServiceTest.php b/typo3/sysext/adminpanel/Tests/Unit/Service/ConfigurationServiceTest.php index 93c29777959c..1b07e45b6a86 100644 --- a/typo3/sysext/adminpanel/Tests/Unit/Service/ConfigurationServiceTest.php +++ b/typo3/sysext/adminpanel/Tests/Unit/Service/ConfigurationServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Adminpanel\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Adminpanel\Service\ConfigurationService; @@ -36,9 +38,7 @@ final class ConfigurationServiceTest extends UnitTestCase $GLOBALS['BE_USER'] = $this->beUser; } - /** - * @test - */ + #[Test] public function getMainConfigurationReturnsTsConfigFromUser(): void { $userTsAdmPanelConfig = [ @@ -54,9 +54,7 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertSame($userTsAdmPanelConfig, $result); } - /** - * @test - */ + #[Test] public function getConfigurationOptionReturnsEmptyStringIfNoConfigurationFound(): void { $configurationService = new ConfigurationService(); @@ -64,9 +62,7 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertSame('', $result); } - /** - * @test - */ + #[Test] public function getConfigurationOptionReturnsOverrideOptionIfSet(): void { $this->setUpUserTsConfigForAdmPanel( @@ -85,9 +81,7 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertSame('1', $result); } - /** - * @test - */ + #[Test] public function getConfigurationOptionCastsResultToString(): void { $this->setUpUserTsConfigForAdmPanel( @@ -124,10 +118,8 @@ final class ConfigurationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getConfigurationOptionEmptyArgumentDataProvider - */ + #[DataProvider('getConfigurationOptionEmptyArgumentDataProvider')] + #[Test] public function getConfigurationOptionThrowsExceptionOnEmptyArgument(string $identifier, string $option): void { $this->expectException(\InvalidArgumentException::class); @@ -137,9 +129,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->getConfigurationOption($identifier, $option); } - /** - * @test - */ + #[Test] public function getConfigurationOptionReturnsSettingFromUcIfNoOverrideGiven(): void { $this->setUpUserTsConfigForAdmPanel([]); @@ -155,9 +145,7 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertSame('1', $result); } - /** - * @test - */ + #[Test] public function saveConfigurationTriggersOnSubmitOnEnabledModules(): void { $requestMock = $this->getMockBuilder(ServerRequestInterface::class)->getMock(); @@ -178,9 +166,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->saveConfiguration($modules, $requestMock); } - /** - * @test - */ + #[Test] public function saveConfigurationSavesMergedExistingAndNewConfiguration(): void { // existing configuration from UC diff --git a/typo3/sysext/adminpanel/Tests/Unit/Service/ModuleLoaderTest.php b/typo3/sysext/adminpanel/Tests/Unit/Service/ModuleLoaderTest.php index 4ba686f5e844..006e6706e038 100644 --- a/typo3/sysext/adminpanel/Tests/Unit/Service/ModuleLoaderTest.php +++ b/typo3/sysext/adminpanel/Tests/Unit/Service/ModuleLoaderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Adminpanel\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Adminpanel\Service\ModuleLoader; use TYPO3\CMS\Adminpanel\Tests\Unit\Fixtures\DisabledMainModuleFixture; use TYPO3\CMS\Adminpanel\Tests\Unit\Fixtures\MainModuleFixture; @@ -26,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ModuleLoaderTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validateSortAndInitializeModulesReturnsEmptyArrayIfNoModulesAreConfigured(): void { $moduleLoader = new ModuleLoader(); @@ -45,10 +45,8 @@ final class ModuleLoaderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider missingConfigurationDataProvider - */ + #[DataProvider('missingConfigurationDataProvider')] + #[Test] public function validateSortAndInitializeModulesThrowsExceptionIfModuleHasMissingConfiguration(array $configuration): void { $this->expectException(\RuntimeException::class); @@ -84,10 +82,8 @@ final class ModuleLoaderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidConfigurationDataProvider - */ + #[DataProvider('invalidConfigurationDataProvider')] + #[Test] public function validateSortAndInitializeModulesThrowsExceptionIfModuleHasInvalidConfiguration(array $configuration): void { $this->expectException(\RuntimeException::class); @@ -97,9 +93,7 @@ final class ModuleLoaderTest extends UnitTestCase $moduleLoader->validateSortAndInitializeModules($configuration); } - /** - * @test - */ + #[Test] public function validateSortAndInitializeModulesOrdersModulesWithDependencyOrderingService(): void { $config = [ @@ -117,9 +111,7 @@ final class ModuleLoaderTest extends UnitTestCase $moduleLoader->validateSortAndInitializeModules($config); } - /** - * @test - */ + #[Test] public function validateSortAndInitializeModulesInstantiatesMainModulesOnlyIfEnabled(): void { $config = [ diff --git a/typo3/sysext/adminpanel/Tests/Unit/Utility/StateUtilityTest.php b/typo3/sysext/adminpanel/Tests/Unit/Utility/StateUtilityTest.php index 13551dec7a81..36ce074b0811 100644 --- a/typo3/sysext/adminpanel/Tests/Unit/Utility/StateUtilityTest.php +++ b/typo3/sysext/adminpanel/Tests/Unit/Utility/StateUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Adminpanel\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Adminpanel\Utility\StateUtility; use TYPO3\CMS\Backend\FrontendBackendUserAuthentication; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -24,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class StateUtilityTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isEnabledReturnsFalseIfNoBackendUserExists(): void { $GLOBALS['BE_USER'] = false; @@ -34,9 +34,7 @@ final class StateUtilityTest extends UnitTestCase self::assertFalse($isEnabled); } - /** - * @test - */ + #[Test] public function isEnabledReturnsFalseIfNoBackendUserInFrontendContextIsLoggedIn(): void { $GLOBALS['BE_USER'] = $this->getMockBuilder(BackendUserAuthentication::class)->disableOriginalConstructor()->getMock(); @@ -68,10 +66,8 @@ final class StateUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider tsConfigEnabledDataProvider - */ + #[DataProvider('tsConfigEnabledDataProvider')] + #[Test] public function isEnabledReturnsTrueIfAtLeastOneModuleIsEnabled(array $tsConfig): void { $beUserMock = $this->getMockBuilder(FrontendBackendUserAuthentication::class)->disableOriginalConstructor()->getMock(); @@ -104,10 +100,8 @@ final class StateUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider tsConfigDisabledDataProvider - */ + #[DataProvider('tsConfigDisabledDataProvider')] + #[Test] public function isEnabledReturnsFalseIfNoModulesEnabled(array $tsConfig): void { $beUserMock = $this->getMockBuilder(FrontendBackendUserAuthentication::class)->disableOriginalConstructor()->getMock(); @@ -143,10 +137,8 @@ final class StateUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider tsConfigHideDataProvider - */ + #[DataProvider('tsConfigHideDataProvider')] + #[Test] public function isHiddenForUserReturnsCorrectValue(array $tsConfig, bool $expected): void { $beUserMock = $this->getMockBuilder(FrontendBackendUserAuthentication::class)->disableOriginalConstructor()->getMock(); @@ -156,9 +148,7 @@ final class StateUtilityTest extends UnitTestCase self::assertSame($expected, $isEnabled); } - /** - * @test - */ + #[Test] public function isHiddenForUserReturnsFalseIfUserIsNotAvailable(): void { $GLOBALS['BE_USER'] = null; @@ -192,10 +182,8 @@ final class StateUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider ucDisplayOpenDataProvider - */ + #[DataProvider('ucDisplayOpenDataProvider')] + #[Test] public function isOpenForUserReturnsCorrectValue(array $uc, bool $expected): void { $beUser = new FrontendBackendUserAuthentication(); @@ -205,9 +193,7 @@ final class StateUtilityTest extends UnitTestCase self::assertSame($expected, $isOpen); } - /** - * @test - */ + #[Test] public function isOpenForUserReturnsFalseIfUserIsNotAvailable(): void { $GLOBALS['BE_USER'] = null; @@ -241,10 +227,8 @@ final class StateUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider typoScriptDataProvider - */ + #[DataProvider('typoScriptDataProvider')] + #[Test] public function isActivatedInTypoScriptReturnsCorrectValue(array $typoScript, bool $expected): void { $tsfe = new \stdClass(); diff --git a/typo3/sysext/backend/Tests/Unit/Configuration/BackendUserConfigurationTest.php b/typo3/sysext/backend/Tests/Unit/Configuration/BackendUserConfigurationTest.php index 66b486e001ea..3581a27519ac 100644 --- a/typo3/sysext/backend/Tests/Unit/Configuration/BackendUserConfigurationTest.php +++ b/typo3/sysext/backend/Tests/Unit/Configuration/BackendUserConfigurationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Configuration\BackendUserConfiguration; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -34,9 +35,7 @@ final class BackendUserConfigurationTest extends UnitTestCase $this->backendUserConfiguration = new BackendUserConfiguration($this->backendUserMock); } - /** - * @test - */ + #[Test] public function getsConfiguration(): void { $this->backendUserMock->uc = [ @@ -50,9 +49,7 @@ final class BackendUserConfigurationTest extends UnitTestCase self::assertEquals('B', $this->backendUserConfiguration->get('nested.key')); } - /** - * @test - */ + #[Test] public function getsAllConfiguration(): void { $configuration = [ @@ -64,9 +61,7 @@ final class BackendUserConfigurationTest extends UnitTestCase self::assertEquals($configuration, $this->backendUserConfiguration->getAll()); } - /** - * @test - */ + #[Test] public function setsConfiguration(): void { $this->backendUserMock->uc = [ @@ -89,9 +84,7 @@ final class BackendUserConfigurationTest extends UnitTestCase self::assertEquals($expected, $this->backendUserMock->uc); } - /** - * @test - */ + #[Test] public function addsToListConfigurationOption(): void { $this->backendUserMock->uc = [ @@ -116,9 +109,7 @@ final class BackendUserConfigurationTest extends UnitTestCase self::assertEquals($expected, $this->backendUserMock->uc); } - /** - * @test - */ + #[Test] public function removesFromListConfigurationOption(): void { $this->backendUserMock->uc = [ @@ -142,18 +133,14 @@ final class BackendUserConfigurationTest extends UnitTestCase self::assertEquals($expected, $this->backendUserMock->uc); } - /** - * @test - */ + #[Test] public function clearsConfiguration(): void { $this->backendUserMock->expects(self::atLeastOnce())->method('resetUC'); $this->backendUserConfiguration->clear(); } - /** - * @test - */ + #[Test] public function unsetsConfigurationOption(): void { $this->backendUserMock->uc = [ diff --git a/typo3/sysext/backend/Tests/Unit/Configuration/TranslationConfigurationProviderTest.php b/typo3/sysext/backend/Tests/Unit/Configuration/TranslationConfigurationProviderTest.php index b1172f0e9adc..3ed66a7adb62 100644 --- a/typo3/sysext/backend/Tests/Unit/Configuration/TranslationConfigurationProviderTest.php +++ b/typo3/sysext/backend/Tests/Unit/Configuration/TranslationConfigurationProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Configuration\TranslationConfigurationProvider; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Localization\LanguageService; @@ -40,9 +41,7 @@ final class TranslationConfigurationProviderTest extends UnitTestCase $GLOBALS['LANG'] = $this->createMock(LanguageService::class); } - /** - * @test - */ + #[Test] public function defaultLanguageIsAlwaysReturned(): void { $languageService = $this->createMock(LanguageService::class); @@ -58,9 +57,7 @@ final class TranslationConfigurationProviderTest extends UnitTestCase self::assertArrayHasKey(0, $languages); } - /** - * @test - */ + #[Test] public function getSystemLanguagesAggregatesLanguagesOfAllSitesForRootLevel(): void { $siteFinderMock = $this->createMock(SiteFinder::class); @@ -70,9 +67,7 @@ final class TranslationConfigurationProviderTest extends UnitTestCase self::assertCount(3, $languages); } - /** - * @test - */ + #[Test] public function getSystemLanguagesConcatenatesTitlesOfLanguagesForRootLevel(): void { $siteFinderMock = $this->createMock(SiteFinder::class); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/EditDocumentControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/EditDocumentControllerTest.php index 7ba17662d072..ac2ff665ceaa 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/EditDocumentControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/EditDocumentControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\EditDocumentController; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -24,10 +26,8 @@ final class EditDocumentControllerTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - * @dataProvider slugDependentFieldsAreAddedToColumnsOnlyDataProvider - */ + #[DataProvider('slugDependentFieldsAreAddedToColumnsOnlyDataProvider')] + #[Test] public function slugDependentFieldsAreAddedToColumnsOnly(string $result, string $selectedFields, string $tableName, array $configuration): void { $GLOBALS['TCA'][$tableName]['columns'] = $configuration; @@ -115,10 +115,8 @@ final class EditDocumentControllerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resolvePreviewRecordIdDataProvider - */ + #[DataProvider('resolvePreviewRecordIdDataProvider')] + #[Test] public function resolvePreviewRecordIdReturnsExpectedUid(int $expected, array $previewConfiguration): void { $recordArray = ['uid' => 2, 'l10n_parent' => 1]; @@ -148,10 +146,8 @@ final class EditDocumentControllerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resolvePreviewRecordIdForNonTranslatableTableDataProvider - */ + #[DataProvider('resolvePreviewRecordIdForNonTranslatableTableDataProvider')] + #[Test] public function resolvePreviewRecordIdReturnsExpectedUidForNonTranslatableTable(int $expected, array $previewConfiguration): void { $recordArray = ['uid' => 2]; diff --git a/typo3/sysext/backend/Tests/Unit/Controller/Event/AfterPageTreeItemsPreparedEventTest.php b/typo3/sysext/backend/Tests/Unit/Controller/Event/AfterPageTreeItemsPreparedEventTest.php index 1676c8770ef8..9d914546265a 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/Event/AfterPageTreeItemsPreparedEventTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/Event/AfterPageTreeItemsPreparedEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\Event\AfterPageTreeItemsPreparedEvent; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Http\Uri; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AfterPageTreeItemsPreparedEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $request = new ServerRequest(new Uri('https://example.com')); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/Event/ModifyNewContentElementWizardItemsEventTest.php b/typo3/sysext/backend/Tests/Unit/Controller/Event/ModifyNewContentElementWizardItemsEventTest.php index d2a7633e7d2c..7631ad8198b9 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/Event/ModifyNewContentElementWizardItemsEventTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/Event/ModifyNewContentElementWizardItemsEventTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller\Event; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\Event\ModifyNewContentElementWizardItemsEvent; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -45,9 +47,7 @@ final class ModifyNewContentElementWizardItemsEventTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function wizardItemsModifyTest(): void { self::assertCount(3, $this->subject->getWizardItems()); @@ -214,10 +214,8 @@ final class ModifyNewContentElementWizardItemsEventTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addWizardItemTestDataProvider - */ + #[DataProvider('addWizardItemTestDataProvider')] + #[Test] public function addWizardItemTest(string $identifier, array $configuration, array $position, array $expected): void { $this->subject->setWizardItem($identifier, $configuration, $position); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/File/FileControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/File/FileControllerTest.php index 24e2954ef5f7..bf7a21c40a27 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/File/FileControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/File/FileControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller\File; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Controller\File\FileController; use TYPO3\CMS\Backend\Routing\UriBuilder; @@ -48,9 +49,7 @@ final class FileControllerTest extends UnitTestCase $this->fileResourceMock->method('getParentFolder')->willReturn(null); } - /** - * @test - */ + #[Test] public function flattenResultDataValueReturnsAnythingElseAsIs(): void { $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false); @@ -58,9 +57,7 @@ final class FileControllerTest extends UnitTestCase self::assertSame([], $subject->_call('flattenResultDataValue', [])); } - /** - * @test - */ + #[Test] public function flattenResultDataValueFlattensFile(): void { $iconFactoryMock = $this->createMock(IconFactory::class); @@ -92,9 +89,7 @@ final class FileControllerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function processAjaxRequestDeleteProcessActuallyDoesNotChangeFileData(): void { $subject = $this->getAccessibleMock( @@ -114,9 +109,7 @@ final class FileControllerTest extends UnitTestCase $subject->processAjaxRequest(new ServerRequest()); } - /** - * @test - */ + #[Test] public function processAjaxRequestEditFileProcessActuallyDoesNotChangeFileData(): void { $subject = $this->getAccessibleMock( @@ -136,9 +129,7 @@ final class FileControllerTest extends UnitTestCase $subject->processAjaxRequest(new ServerRequest()); } - /** - * @test - */ + #[Test] public function processAjaxRequestReturnsStatus200IfNoErrorOccurs(): void { $subject = $this->getAccessibleMock( @@ -158,9 +149,7 @@ final class FileControllerTest extends UnitTestCase self::assertEquals(200, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function processAjaxRequestReturnsStatus500IfErrorOccurs(): void { $flashMessageService = new FlashMessageService(); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/File/ThumbnailControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/File/ThumbnailControllerTest.php index 87e093292e38..0fc5790bdd2c 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/File/ThumbnailControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/File/ThumbnailControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller\File; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Controller\File\ThumbnailController; use TYPO3\CMS\Core\Http\Response; @@ -52,10 +54,9 @@ final class ThumbnailControllerTest extends UnitTestCase /** * @param string|null $hmac - * - * @test - * @dataProvider exceptionIsThrownOnInvalidHMACDataProvider */ + #[DataProvider('exceptionIsThrownOnInvalidHMACDataProvider')] + #[Test] public function exceptionIsThrownOnInvalidHMAC(string $hmac = null): void { $this->expectException(\InvalidArgumentException::class); @@ -82,10 +83,9 @@ final class ThumbnailControllerTest extends UnitTestCase /** * @param array|null $parameters - * - * @test - * @dataProvider generateThumbnailIsInvokedDataProvider */ + #[DataProvider('generateThumbnailIsInvokedDataProvider')] + #[Test] public function generateThumbnailIsInvoked(array $parameters = null): void { $this->subject->expects(self::once()) diff --git a/typo3/sysext/backend/Tests/Unit/Controller/FormInlineAjaxControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/FormInlineAjaxControllerTest.php index 1a8433685e67..db7bde71f908 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/FormInlineAjaxControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/FormInlineAjaxControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\FormInlineAjaxController; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Http\ServerRequest; @@ -30,9 +31,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; } - /** - * @test - */ + #[Test] public function createActionThrowsExceptionIfContextIsEmpty(): void { $request = (new ServerRequest())->withQueryParams( @@ -47,9 +46,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->createAction($request); } - /** - * @test - */ + #[Test] public function createActionThrowsExceptionIfContextConfigSectionIsEmpty(): void { $request = (new ServerRequest())->withQueryParams( @@ -64,9 +61,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->createAction($request); } - /** - * @test - */ + #[Test] public function createActionThrowsExceptionIfContextConfigSectionDoesNotValidate(): void { $request = (new ServerRequest())->withQueryParams( @@ -88,9 +83,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->createAction($request); } - /** - * @test - */ + #[Test] public function detailsActionThrowsExceptionIfContextIsEmpty(): void { $request = (new ServerRequest())->withQueryParams( @@ -105,9 +98,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->detailsAction($request); } - /** - * @test - */ + #[Test] public function detailsActionThrowsExceptionIfContextConfigSectionIsEmpty(): void { $request = (new ServerRequest())->withQueryParams( @@ -122,9 +113,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->detailsAction($request); } - /** - * @test - */ + #[Test] public function detailsActionThrowsExceptionIfContextConfigSectionDoesNotValidate(): void { $request = (new ServerRequest())->withQueryParams( @@ -146,9 +135,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->detailsAction($request); } - /** - * @test - */ + #[Test] public function synchronizeLocalizeActionThrowsExceptionIfContextIsEmpty(): void { $request = (new ServerRequest())->withQueryParams( @@ -163,9 +150,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->synchronizeLocalizeAction($request); } - /** - * @test - */ + #[Test] public function synchronizeLocalizeActionThrowsExceptionIfContextConfigSectionIsEmpty(): void { $request = (new ServerRequest())->withQueryParams( @@ -180,9 +165,7 @@ final class FormInlineAjaxControllerTest extends UnitTestCase (new FormInlineAjaxController())->synchronizeLocalizeAction($request); } - /** - * @test - */ + #[Test] public function synchronizeLocalizeActionThrowsExceptionIfContextConfigSectionDoesNotValidate(): void { $request = (new ServerRequest())->withQueryParams( @@ -207,9 +190,8 @@ final class FormInlineAjaxControllerTest extends UnitTestCase /** * Fallback for IRRE items without inline view attribute * @see https://forge.typo3.org/issues/76561 - * - * @test */ + #[Test] public function getInlineExpandCollapseStateArraySwitchesToFallbackIfTheBackendUserDoesNotHaveAnUCInlineViewProperty(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); @@ -230,9 +212,8 @@ final class FormInlineAjaxControllerTest extends UnitTestCase /** * Unserialize uc inline view string for IRRE item * @see https://forge.typo3.org/issues/76561 - * - * @test */ + #[Test] public function getInlineExpandCollapseStateArrayWillUnserializeUCInlineViewPropertyAsAnArrayWithData(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/FormSelectTreeAjaxControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/FormSelectTreeAjaxControllerTest.php index 047b3624faff..93c71e5fd470 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/FormSelectTreeAjaxControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/FormSelectTreeAjaxControllerTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\FormSelectTreeAjaxController; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FormSelectTreeAjaxControllerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function fetchDataActionThrowsExceptionIfTcaOfTableDoesNotExist(): void { $this->expectException(\RuntimeException::class); @@ -33,9 +32,7 @@ final class FormSelectTreeAjaxControllerTest extends UnitTestCase (new FormSelectTreeAjaxController())->fetchDataAction(new ServerRequest()); } - /** - * @test - */ + #[Test] public function fetchDataActionThrowsExceptionIfTcaOfTableFieldDoesNotExist(): void { $serverRequest = (new ServerRequest())->withQueryParams([ diff --git a/typo3/sysext/backend/Tests/Unit/Controller/LoginControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/LoginControllerTest.php index 50eb00cd730d..571645e4e5ba 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/LoginControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/LoginControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\LoginController; use TYPO3\CMS\Backend\LoginProvider\LoginProviderResolver; use TYPO3\CMS\Backend\Routing\UriBuilder; @@ -37,9 +38,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LoginControllerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function checkRedirectRedirectsIfLoginIsInProgressAndUserWasFound(): void { $GLOBALS['LANG'] = $this->createMock(LanguageService::class); @@ -77,9 +76,7 @@ final class LoginControllerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function checkRedirectDoesNotRedirectIfNoUserIsFound(): void { $GLOBALS['BE_USER'] = $this->createMock(BackendUserAuthentication::class); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/SiteConfigurationControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/SiteConfigurationControllerTest.php index 32bf25874abf..c3d25f4c9b56 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/SiteConfigurationControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/SiteConfigurationControllerTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\SiteConfigurationController; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SiteConfigurationControllerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function duplicateEntryPointsAreRecognized(): void { $mockedSiteConfigurationController = $this->getAccessibleMock(SiteConfigurationController::class, null, [], '', false); @@ -127,9 +126,7 @@ final class SiteConfigurationControllerTest extends UnitTestCase self::assertEquals($expected, $mockedSiteConfigurationController->_call('getDuplicatedEntryPoints', $sites, $rootPages)); } - /** - * @test - */ + #[Test] public function languageBaseVariantsAreKept(): void { $mockedSiteConfigurationController = $this->getAccessibleMock(SiteConfigurationController::class, null, [], '', false); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/SwitchUserControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/SwitchUserControllerTest.php index fac0db2ad128..3608b7e61c6b 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/SwitchUserControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/SwitchUserControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Controller\SwitchUserController; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -42,9 +43,7 @@ final class SwitchUserControllerTest extends UnitTestCase $this->subject = $this->getAccessibleMock(SwitchUserController::class, null, [], '', false); } - /** - * @test - */ + #[Test] public function generateListOfLatestSwitchedUsersReturnsCorrectAmountAndOrder(): void { $items = range(1, self::RECENT_USERS_LIMIT + 5); @@ -57,9 +56,7 @@ final class SwitchUserControllerTest extends UnitTestCase self::assertSame($expected, $GLOBALS['BE_USER']->uc['recentSwitchedToUsers']); } - /** - * @test - */ + #[Test] public function listOfLatestSwitchedUsersDoesNotContainTheSameUserTwice(): void { $GLOBALS['BE_USER']->uc['recentSwitchedToUsers'] = $this->subject->_call('generateListOfMostRecentSwitchedUsers', 100); diff --git a/typo3/sysext/backend/Tests/Unit/Controller/Wizard/SuggestWizardControllerTest.php b/typo3/sysext/backend/Tests/Unit/Controller/Wizard/SuggestWizardControllerTest.php index 171e8b494db9..9d58fd7f7f9e 100644 --- a/typo3/sysext/backend/Tests/Unit/Controller/Wizard/SuggestWizardControllerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Controller/Wizard/SuggestWizardControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Controller\Wizard; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Controller\Wizard\SuggestWizardController; use TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools; use TYPO3\CMS\Core\Http\ServerRequest; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SuggestWizardControllerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getFlexFieldConfigurationThrowsExceptionIfSimpleFlexFieldIsNotFound(): void { $dataStructureIdentifier = '{"type":"tca","tableName":"tt_content","fieldName":"pi_flexform","dataStructureKey":"blog_example,list"}'; @@ -68,9 +68,7 @@ final class SuggestWizardControllerTest extends UnitTestCase (new SuggestWizardController())->searchAction($request); } - /** - * @test - */ + #[Test] public function getFlexFieldConfigurationThrowsExceptionIfSectionContainerFlexFieldIsNotFound(): void { $dataStructureIdentifier = '{"type":"tca","tableName":"tt_content","fieldName":"pi_flexform","dataStructureKey":"blog_example,list"}'; @@ -111,10 +109,8 @@ final class SuggestWizardControllerTest extends UnitTestCase (new SuggestWizardController())->searchAction($request); } - /** - * @test - * @dataProvider isTableHiddenIsProperlyRetrievedDataProvider - */ + #[DataProvider('isTableHiddenIsProperlyRetrievedDataProvider')] + #[Test] public function isTableHiddenIsProperlyRetrieved(bool $expected, array $array): void { $subject = $this->getAccessibleMock(SuggestWizardController::class, null, [], '', false); @@ -132,10 +128,8 @@ final class SuggestWizardControllerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider whereClauseIsProperlyRetrievedDataProvider - */ + #[DataProvider('whereClauseIsProperlyRetrievedDataProvider')] + #[Test] public function whereClauseIsProperlyRetrieved(string $expected, array $array): void { $subject = $this->getAccessibleMock(SuggestWizardController::class, null, [], '', false); diff --git a/typo3/sysext/backend/Tests/Unit/ElementBrowser/ElementBrowserRegistryTest.php b/typo3/sysext/backend/Tests/Unit/ElementBrowser/ElementBrowserRegistryTest.php index 21c3bda2c80f..4d51b3525115 100644 --- a/typo3/sysext/backend/Tests/Unit/ElementBrowser/ElementBrowserRegistryTest.php +++ b/typo3/sysext/backend/Tests/Unit/ElementBrowser/ElementBrowserRegistryTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\ElementBrowser; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\ElementBrowser\ElementBrowserInterface; use TYPO3\CMS\Backend\ElementBrowser\ElementBrowserRegistry; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ElementBrowserRegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function registrationRequiresInterface(): void { $elementBrowser = [ @@ -40,9 +39,7 @@ final class ElementBrowserRegistryTest extends UnitTestCase self::assertTrue($elementBrowserRegistry->hasElementBrowser('valid-identifier')); } - /** - * @test - */ + #[Test] public function registrationThrowsExceptionOnEmptyIdentifier(): void { $elementBrowser = [ @@ -55,9 +52,7 @@ final class ElementBrowserRegistryTest extends UnitTestCase new ElementBrowserRegistry($elementBrowser); } - /** - * @test - */ + #[Test] public function registrationThrowsExceptionOnDuplicateIdentifier(): void { $elementBrowser = [ @@ -71,9 +66,7 @@ final class ElementBrowserRegistryTest extends UnitTestCase new ElementBrowserRegistry($elementBrowser); } - /** - * @test - */ + #[Test] public function registrationThrowsExceptionOnRequestingInvalidIdentifier(): void { $this->expectException(\UnexpectedValueException::class); diff --git a/typo3/sysext/backend/Tests/Unit/ElementBrowser/Event/IsFileSelectableEventTest.php b/typo3/sysext/backend/Tests/Unit/ElementBrowser/Event/IsFileSelectableEventTest.php index a5c31470baf8..3a07cc8be3e2 100644 --- a/typo3/sysext/backend/Tests/Unit/ElementBrowser/Event/IsFileSelectableEventTest.php +++ b/typo3/sysext/backend/Tests/Unit/ElementBrowser/Event/IsFileSelectableEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\ElementBrowser\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\ElementBrowser\Event\IsFileSelectableEvent; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\ResourceStorage; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IsFileSelectableEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function eventMethodsReturnExpected(): void { $mockResourceStorage = $this->getMockBuilder(ResourceStorage::class)->disableOriginalConstructor()->getMock(); diff --git a/typo3/sysext/backend/Tests/Unit/Form/Container/ListOfFieldsContainerTest.php b/typo3/sysext/backend/Tests/Unit/Form/Container/ListOfFieldsContainerTest.php index 51ac5867a0bb..fcdc08a6f5cf 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Container/ListOfFieldsContainerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Container/ListOfFieldsContainerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Container; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Container\ListOfFieldsContainer; use TYPO3\CMS\Backend\Form\Container\PaletteAndSingleContainer; use TYPO3\CMS\Backend\Form\NodeFactory; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ListOfFieldsContainerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderDelegatesShowitemField(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); @@ -58,9 +57,7 @@ final class ListOfFieldsContainerTest extends UnitTestCase (new ListOfFieldsContainer($nodeFactoryMock, $input))->render(); } - /** - * @test - */ + #[Test] public function renderDelegatesShowitemFieldAndRemovesDuplicates(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); @@ -92,9 +89,7 @@ final class ListOfFieldsContainerTest extends UnitTestCase (new ListOfFieldsContainer($nodeFactoryMock, $input))->render(); } - /** - * @test - */ + #[Test] public function renderDelegatesPaletteFields(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); @@ -134,9 +129,7 @@ final class ListOfFieldsContainerTest extends UnitTestCase (new ListOfFieldsContainer($nodeFactoryMock, $input))->render(); } - /** - * @test - */ + #[Test] public function renderRemovesNotExistingTypesField(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/Container/PaletteAndSingleContainerTest.php b/typo3/sysext/backend/Tests/Unit/Form/Container/PaletteAndSingleContainerTest.php index 5fd21703e55a..af3b39e7ec1a 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Container/PaletteAndSingleContainerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Container/PaletteAndSingleContainerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Container; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Container\PaletteAndSingleContainer; use TYPO3\CMS\Backend\Form\Container\SingleFieldContainer; use TYPO3\CMS\Backend\Form\NodeFactory; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PaletteAndSingleContainerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderUsesPaletteLabelFromFieldArray(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); @@ -89,9 +88,7 @@ final class PaletteAndSingleContainerTest extends UnitTestCase self::assertStringContainsString($labelReference, $containerResult['html']); } - /** - * @test - */ + #[Test] public function renderUsesPaletteValuesFromPaletteArray(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); @@ -156,9 +153,7 @@ final class PaletteAndSingleContainerTest extends UnitTestCase self::assertStringContainsString($descriptionReference, $containerResult['html']); } - /** - * @test - */ + #[Test] public function renderPrefersFieldArrayPaletteValuesOverPaletteValues(): void { $nodeFactoryMock = $this->createMock(NodeFactory::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/Element/AbstractFormElementTest.php b/typo3/sysext/backend/Tests/Unit/Form/Element/AbstractFormElementTest.php index d4aec7d6e0ae..f4100ac81e75 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Element/AbstractFormElementTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Element/AbstractFormElementTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Element; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Element\AbstractFormElement; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -265,10 +267,8 @@ final class AbstractFormElementTest extends UnitTestCase ]; } - /** - * @dataProvider formatValueDataProvider - * @test - */ + #[DataProvider('formatValueDataProvider')] + #[Test] public function formatValueWithGivenConfiguration(array $config, ?string $itemValue, string $expectedResult): void { $GLOBALS['BE_USER'] = new BackendUserAuthentication(); diff --git a/typo3/sysext/backend/Tests/Unit/Form/Element/DatetimeElementTest.php b/typo3/sysext/backend/Tests/Unit/Form/Element/DatetimeElementTest.php index e8c6da7d7356..bf351cd1bddc 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Element/DatetimeElementTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Element/DatetimeElementTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Element; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Element\DatetimeElement; use TYPO3\CMS\Backend\Form\NodeExpansion\FieldInformation; use TYPO3\CMS\Backend\Form\NodeFactory; @@ -75,10 +77,8 @@ final class DatetimeElementTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider renderAppliesCorrectTimestampConversionDataProvider - */ + #[DataProvider('renderAppliesCorrectTimestampConversionDataProvider')] + #[Test] public function renderAppliesCorrectTimestampConversion(int $input, string $serverTimezone, string $expectedOutput): void { date_default_timezone_set($serverTimezone); diff --git a/typo3/sysext/backend/Tests/Unit/Form/Element/InputHiddenElementTest.php b/typo3/sysext/backend/Tests/Unit/Form/Element/InputHiddenElementTest.php index ce22d19e0484..ab7e7c1b45f7 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Element/InputHiddenElementTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Element/InputHiddenElementTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Element; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Element\InputHiddenElement; use TYPO3\CMS\Backend\Form\NodeFactory; use TYPO3\CMS\Core\Imaging\IconFactory; @@ -28,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class InputHiddenElementTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderReturnsElementsAsAdditionalHiddenFields(): void { $data = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/Element/JsonElementTest.php b/typo3/sysext/backend/Tests/Unit/Form/Element/JsonElementTest.php index 944edbd2a8be..ea3ff12d76f6 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Element/JsonElementTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Element/JsonElementTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Element; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Element\JsonElement; use TYPO3\CMS\Backend\Form\NodeExpansion\FieldInformation; use TYPO3\CMS\Backend\Form\NodeFactory; @@ -34,9 +35,7 @@ final class JsonElementTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function renderReturnsJsonInStandardTextarea(): void { $data = [ @@ -70,9 +69,7 @@ final class JsonElementTest extends UnitTestCase self::assertStringContainsString('"foo": "bar"', $result['html']); } - /** - * @test - */ + #[Test] public function renderReturnsJsonInCodeEditor(): void { $data = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/Element/UuidElementTest.php b/typo3/sysext/backend/Tests/Unit/Form/Element/UuidElementTest.php index 23b8e99fec0d..37ce89ed2a0f 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/Element/UuidElementTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/Element/UuidElementTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\Element; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Element\UuidElement; use TYPO3\CMS\Backend\Form\NodeExpansion\FieldInformation; use TYPO3\CMS\Backend\Form\NodeFactory; @@ -35,9 +36,7 @@ final class UuidElementTest extends UnitTestCase $GLOBALS['LANG'] = $this->createMock(LanguageService::class); } - /** - * @test - */ + #[Test] public function renderThrowsExceptionOnEmptyElementValue(): void { $data = [ @@ -64,9 +63,7 @@ final class UuidElementTest extends UnitTestCase (new UuidElement($this->createMock(NodeFactory::class), $data))->render(); } - /** - * @test - */ + #[Test] public function renderThrowsExceptionOnInvalidUuid(): void { $data = [ @@ -93,9 +90,7 @@ final class UuidElementTest extends UnitTestCase (new UuidElement($this->createMock(NodeFactory::class), $data))->render(); } - /** - * @test - */ + #[Test] public function renderReturnsInputElementWithUuidAndCopyToClipboardButton(): void { $uuid = 'b3190536-1431-453e-afbb-25b8c5022513'; @@ -129,9 +124,7 @@ final class UuidElementTest extends UnitTestCase self::assertMatchesRegularExpression('/<input.*value="' . $uuid . '".*id="formengine-uuid-/s', $result['html']); } - /** - * @test - */ + #[Test] public function renderReturnsInputElementWithUuidAndWithoutCopyToClipboardButton(): void { $uuid = 'b3190536-1431-453e-afbb-25b8c5022513'; diff --git a/typo3/sysext/backend/Tests/Unit/Form/FieldControl/ElementBrowserTest.php b/typo3/sysext/backend/Tests/Unit/Form/FieldControl/ElementBrowserTest.php index 38fa68dc41a4..94021f678c3e 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FieldControl/ElementBrowserTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FieldControl/ElementBrowserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FieldControl; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FieldControl\ElementBrowser; use TYPO3\CMS\Backend\Form\NodeFactory; use TYPO3\CMS\Core\Site\Entity\Site; @@ -24,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ElementBrowserTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderTrimsAllowedValuesFromConfigSection(): void { $nodeFactory = $this->createMock(NodeFactory::class); @@ -53,9 +53,7 @@ final class ElementBrowserTest extends UnitTestCase self::assertSame($result['linkAttributes']['data-params'], '|||be_users,be_groups|'); } - /** - * @test - */ + #[Test] public function renderTrimsAllowedValues(): void { $nodeFactory = $this->createMock(NodeFactory::class); @@ -81,10 +79,8 @@ final class ElementBrowserTest extends UnitTestCase self::assertSame($result['linkAttributes']['data-params'], '|||jpg,png|'); } - /** - * @test - * @dataProvider renderResolvesEntryPointDataProvider - */ + #[DataProvider('renderResolvesEntryPointDataProvider')] + #[Test] public function renderResolvesEntryPoint(array $config, string $expected): void { $nodeFactory = $this->createMock(NodeFactory::class); @@ -234,9 +230,7 @@ final class ElementBrowserTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function renderUsesCustomTitle(): void { $title = 'Custom title'; @@ -265,9 +259,7 @@ final class ElementBrowserTest extends UnitTestCase self::assertSame($title, $result['title']); } - /** - * @test - */ + #[Test] public function renderUsesFallbackTitle(): void { $nodeFactory = $this->createMock(NodeFactory::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FieldWizard/TableListTest.php b/typo3/sysext/backend/Tests/Unit/Form/FieldWizard/TableListTest.php index 4b55fa36fcf1..db723b6c3f27 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FieldWizard/TableListTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FieldWizard/TableListTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FieldWizard; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FieldWizard\TableList; use TYPO3\CMS\Backend\Form\NodeFactory; use TYPO3\CMS\Core\Imaging\Icon; @@ -28,10 +30,8 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TableListTest extends UnitTestCase { - /** - * @test - * @dataProvider renderResolvesEntryPointDataProvider - */ + #[DataProvider('renderResolvesEntryPointDataProvider')] + #[Test] public function renderResolvesEntryPoint(array $config, array $expected): void { $GLOBALS['TCA'] = []; diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataCompilerTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataCompilerTest.php index 318c89f0d37e..47e3f6ad9ba7 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataCompilerTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataCompilerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataCompiler; use TYPO3\CMS\Backend\Form\FormDataGroupInterface; @@ -35,9 +36,7 @@ final class FormDataCompilerTest extends UnitTestCase $this->subject = new FormDataCompiler(); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfInputContainsKeysNotValidInResult(): void { $input = [ @@ -48,9 +47,7 @@ final class FormDataCompilerTest extends UnitTestCase $this->subject->compile($input, $this->formDataGroupMock); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionAtUnknownCommand(): void { $input = [ @@ -61,9 +58,7 @@ final class FormDataCompilerTest extends UnitTestCase $this->subject->compile($input, $this->formDataGroupMock); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfNoTableNameGiven(): void { $input = [ @@ -74,9 +69,7 @@ final class FormDataCompilerTest extends UnitTestCase $this->subject->compile($input, $this->formDataGroupMock); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfUidIsNotAnInteger(): void { $input = [ @@ -87,9 +80,7 @@ final class FormDataCompilerTest extends UnitTestCase $this->subject->compile($input, $this->formDataGroupMock); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfCommandIsEditAndUidIsNegative(): void { $input = [ @@ -101,9 +92,7 @@ final class FormDataCompilerTest extends UnitTestCase $this->subject->compile($input, $this->formDataGroupMock); } - /** - * @test - */ + #[Test] public function compileReturnsResultArrayWithInputDataSet(): void { $input = [ @@ -119,9 +108,7 @@ final class FormDataCompilerTest extends UnitTestCase self::assertEquals('edit', $result['command']); } - /** - * @test - */ + #[Test] public function compileReturnsResultArrayWithAdditionalDataFormFormDataGroup(): void { $this->formDataGroupMock->method('compile')->with(self::anything())->willReturnCallback(static function (array $arguments): array { @@ -138,9 +125,7 @@ final class FormDataCompilerTest extends UnitTestCase self::assertEquals('newData', $result['databaseRow']); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfFormDataGroupDoesNotReturnArray(): void { $this->formDataGroupMock->method('compile')->with(self::anything())->willReturn(null); @@ -154,9 +139,7 @@ final class FormDataCompilerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfRenderDataIsNotEmpty(): void { $this->formDataGroupMock->method('compile')->with(self::anything())->willReturn([ @@ -172,9 +155,7 @@ final class FormDataCompilerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfFormDataGroupRemovedKeysFromResultArray(): void { $this->formDataGroupMock->method('compile')->with(self::anything())->willReturnCallback(static function (array $arguments): array { @@ -192,9 +173,7 @@ final class FormDataCompilerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfFormDataGroupAddedKeysToResultArray(): void { $this->formDataGroupMock->method('compile')->with(self::anything())->willReturnCallback(static function (array $arguments): array { diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/FlexFormSegmentTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/FlexFormSegmentTest.php index 7593640cb9cf..70f0acd002b1 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/FlexFormSegmentTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/FlexFormSegmentTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\FlexFormSegment; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -33,9 +34,7 @@ final class FlexFormSegmentTest extends UnitTestCase $this->subject = new FlexFormSegment(); } - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -49,9 +48,7 @@ final class FlexFormSegmentTest extends UnitTestCase self::assertEquals($input, $this->subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -74,9 +71,7 @@ final class FlexFormSegmentTest extends UnitTestCase self::assertEquals(['foo'], $this->subject->compile([])); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OnTheFlyTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OnTheFlyTest.php index 27a6d04b8e4d..97bc28cb5527 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OnTheFlyTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OnTheFlyTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\OnTheFly; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -32,9 +33,7 @@ final class OnTheFlyTest extends UnitTestCase $this->subject = new OnTheFly(); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionWithEmptyOnTheFlyList(): void { $this->expectException(\UnexpectedValueException::class); @@ -42,9 +41,7 @@ final class OnTheFlyTest extends UnitTestCase $this->subject->compile([]); } - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $formDataProviderMock = $this->createMock(FormDataProviderInterface::class); @@ -62,9 +59,7 @@ final class OnTheFlyTest extends UnitTestCase self::assertEquals($input, $this->subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $formDataProviderMock = $this->createMock(FormDataProviderInterface::class); @@ -81,9 +76,7 @@ final class OnTheFlyTest extends UnitTestCase self::assertEquals($providerResult, $this->subject->compile([])); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $providerList = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OrderedProviderListTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OrderedProviderListTest.php index b17db627a68d..8fc6614e8c40 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OrderedProviderListTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/OrderedProviderListTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\OrderedProviderList; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class OrderedProviderListTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -41,9 +40,7 @@ final class OrderedProviderListTest extends UnitTestCase self::assertEquals($input, $subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -66,9 +63,7 @@ final class OrderedProviderListTest extends UnitTestCase self::assertEquals(['foo'], $subject->compile([])); } - /** - * @test - */ + #[Test] public function compileDoesNotCallDisabledDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -85,9 +80,7 @@ final class OrderedProviderListTest extends UnitTestCase self::assertEquals($input, $subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfImplementationClassDoesNotExist(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -104,9 +97,7 @@ final class OrderedProviderListTest extends UnitTestCase $subject->compile([]); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/SiteConfigurationDataGroupTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/SiteConfigurationDataGroupTest.php index 5e86a791696a..bc6f5daba3fd 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/SiteConfigurationDataGroupTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/SiteConfigurationDataGroupTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\SiteConfigurationDataGroup; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -33,9 +34,7 @@ final class SiteConfigurationDataGroupTest extends UnitTestCase $this->subject = new SiteConfigurationDataGroup(); } - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -49,9 +48,7 @@ final class SiteConfigurationDataGroupTest extends UnitTestCase self::assertEquals($input, $this->subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -74,9 +71,7 @@ final class SiteConfigurationDataGroupTest extends UnitTestCase self::assertEquals(['foo'], $this->subject->compile([])); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaDatabaseRecordTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaDatabaseRecordTest.php index 5fa252d0299a..27afc60e687f 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaDatabaseRecordTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaDatabaseRecordTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\TcaDatabaseRecord; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -33,9 +34,7 @@ final class TcaDatabaseRecordTest extends UnitTestCase $this->subject = new TcaDatabaseRecord(); } - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -49,9 +48,7 @@ final class TcaDatabaseRecordTest extends UnitTestCase self::assertEquals($input, $this->subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -74,9 +71,7 @@ final class TcaDatabaseRecordTest extends UnitTestCase self::assertEquals(['foo'], $this->subject->compile([])); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaInputPlaceholderRecordTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaInputPlaceholderRecordTest.php index c407d482208a..edb573999754 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaInputPlaceholderRecordTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaInputPlaceholderRecordTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\TcaInputPlaceholderRecord; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -33,9 +34,7 @@ final class TcaInputPlaceholderRecordTest extends UnitTestCase $this->subject = new TcaInputPlaceholderRecord(); } - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -49,9 +48,7 @@ final class TcaInputPlaceholderRecordTest extends UnitTestCase self::assertEquals($input, $this->subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -74,9 +71,7 @@ final class TcaInputPlaceholderRecordTest extends UnitTestCase self::assertEquals(['foo'], $this->subject->compile([])); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaSelectTreeAjaxFieldDataTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaSelectTreeAjaxFieldDataTest.php index 939985d74bab..2f8174f3a4af 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaSelectTreeAjaxFieldDataTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataGroup/TcaSelectTreeAjaxFieldDataTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataGroup; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataGroup\TcaSelectTreeAjaxFieldData; use TYPO3\CMS\Backend\Form\FormDataProviderInterface; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -33,9 +34,7 @@ final class TcaSelectTreeAjaxFieldDataTest extends UnitTestCase $this->subject = new TcaSelectTreeAjaxFieldData(); } - /** - * @test - */ + #[Test] public function compileReturnsIncomingData(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -49,9 +48,7 @@ final class TcaSelectTreeAjaxFieldDataTest extends UnitTestCase self::assertEquals($input, $this->subject->compile($input)); } - /** - * @test - */ + #[Test] public function compileReturnsResultChangedByDataProvider(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); @@ -74,9 +71,7 @@ final class TcaSelectTreeAjaxFieldDataTest extends UnitTestCase self::assertEquals(['foo'], $this->subject->compile([])); } - /** - * @test - */ + #[Test] public function compileThrowsExceptionIfDataProviderDoesNotImplementInterface(): void { $orderingServiceMock = $this->createMock(DependencyOrderingService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseDefaultLanguagePageRowTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseDefaultLanguagePageRowTest.php index aac23d7ed8a2..428506dca00e 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseDefaultLanguagePageRowTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseDefaultLanguagePageRowTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseDefaultLanguagePageRow; use TYPO3\CMS\Core\Database\Connection; @@ -38,9 +39,7 @@ final class DatabaseDefaultLanguagePageRowTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function addDataDoesNotApplyToAnyNonPagesTable(): void { $input = [ @@ -56,9 +55,7 @@ final class DatabaseDefaultLanguagePageRowTest extends UnitTestCase self::assertArrayNotHasKey('defaultLanguagePageRow', $result); } - /** - * @test - */ + #[Test] public function addDataDoesApplyToAPagesTableButNoChangeForDefaultLanguage(): void { $input = [ @@ -73,9 +70,7 @@ final class DatabaseDefaultLanguagePageRowTest extends UnitTestCase self::assertSame($input, $result); } - /** - * @test - */ + #[Test] public function addDataDoesApplyToATranslatedPagesTable(): void { $connectionMock = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEditRowTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEditRowTest.php index d1a8ec91efd2..d2005304cf62 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEditRowTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEditRowTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\Exception\DatabaseRecordException; use TYPO3\CMS\Backend\Form\Exception\DatabaseRecordWorkspaceDeletePlaceholderException; @@ -39,9 +40,7 @@ final class DatabaseEditRowTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function addDataRetrievesRecordInformationFromDatabase(): void { $input = [ @@ -60,9 +59,7 @@ final class DatabaseEditRowTest extends UnitTestCase self::assertSame($resultRow, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRetrievedRowHasNoPid(): void { $input = [ @@ -81,9 +78,7 @@ final class DatabaseEditRowTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfGivenUidIsNotPositive(): void { $input = [ @@ -98,9 +93,7 @@ final class DatabaseEditRowTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfDatabaseFetchingReturnsNoRow(): void { $input = [ @@ -116,9 +109,7 @@ final class DatabaseEditRowTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionDatabaseRecordExceptionWithAdditionalInformationSet(): void { $input = [ @@ -136,9 +127,7 @@ final class DatabaseEditRowTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function addDataThrowsWorkspaceDeletePlaceholderExceptionWithDeletePlaceholderRecord(): void { $connectionMock = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); @@ -165,9 +154,7 @@ final class DatabaseEditRowTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataSkipsDatabaseLookupIfDatabaseRowIsPopulated(): void { $virtualRow = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEffectivePidTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEffectivePidTest.php index cbb57c013be8..3257e47fdee1 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEffectivePidTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseEffectivePidTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseEffectivePid; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class DatabaseEffectivePidTest extends UnitTestCase $this->subject = new DatabaseEffectivePid(); } - /** - * @test - */ + #[Test] public function addDataSetsUidOfRecordIsPageIsEdited(): void { $input = [ @@ -47,9 +46,7 @@ final class DatabaseEffectivePidTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsPidOfRecordIfNoPageIsEdited(): void { $input = [ @@ -64,9 +61,7 @@ final class DatabaseEffectivePidTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsUidOfParentPageRowIfParentPageRowExistsAndCommandIsNew(): void { $input = [ @@ -81,9 +76,7 @@ final class DatabaseEffectivePidTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsZeroWithMissingParentPageRowAndCommandIsNew(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseLanguageRowsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseLanguageRowsTest.php index 6c48a09e4077..50273c9b8d73 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseLanguageRowsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseLanguageRowsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Configuration\TranslationConfigurationProvider; use TYPO3\CMS\Backend\Form\Exception\DatabaseDefaultLanguageException; @@ -39,9 +40,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function addDataReturnsUnchangedResultIfTableProvidesNoTranslations(): void { $input = [ @@ -58,9 +57,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase self::assertEquals($input, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfDefaultOfLocalizedRecordIsNotFound(): void { $input = [ @@ -87,9 +84,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultLanguageRow(): void { $input = [ @@ -123,9 +118,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDiffSourceFieldIfGiven(): void { $diffSource = [ @@ -168,9 +161,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsAdditionalLanguageRowsIfRequestedInUserTypoScript(): void { $input = [ @@ -263,9 +254,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDoesNotAddHandledRowAsAdditionalLanguageRows(): void { $input = [ @@ -362,9 +351,7 @@ final class DatabaseLanguageRowsTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsSourceLanguageRow(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabasePageLanguageOverlayRowsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabasePageLanguageOverlayRowsTest.php index 7e3cf8db5998..94d74b0ac635 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabasePageLanguageOverlayRowsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabasePageLanguageOverlayRowsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabasePageLanguageOverlayRows; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,9 +34,7 @@ final class DatabasePageLanguageOverlayRowsTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function addDataSetsPageLanguageOverlayRows(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseParentPageRowTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseParentPageRowTest.php index 9ce3abc8a185..ac90b45a0994 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseParentPageRowTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseParentPageRowTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseParentPageRow; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,9 +34,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function addDataFetchesParentPageRowOfRecordIfNeighbourGiven(): void { $input = [ @@ -64,9 +63,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase self::assertSame($parentPageRow, $result['parentPageRow']); } - /** - * @test - */ + #[Test] public function addDataSetsNeighborRowIfNegativeUidGiven(): void { $input = [ @@ -99,9 +96,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase self::assertSame($neighborRow, $result['neighborRow']); } - /** - * @test - */ + #[Test] public function addDataSetsParentPageRowToNullIfParentIsRoot(): void { $input = [ @@ -120,9 +115,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase self::assertNull($result['parentPageRow']); } - /** - * @test - */ + #[Test] public function addDataSetsParentPageToGivenPageIdIfCommandIsNew(): void { $input = [ @@ -145,9 +138,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase self::assertSame($parentPageRow, $result['parentPageRow']); } - /** - * @test - */ + #[Test] public function addDataSetsParentPageRowOnParentIfCommandIsEdit(): void { $input = [ @@ -173,9 +164,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase self::assertSame($parentPageRow, $result['parentPageRow']); } - /** - * @test - */ + #[Test] public function addDataSetsParentPageRowOnNullWithNew(): void { $input = [ @@ -192,9 +181,7 @@ final class DatabaseParentPageRowTest extends UnitTestCase self::assertNull($result['parentPageRow']); } - /** - * @test - */ + #[Test] public function addDataSetsParentPageRowOnNullWithZero(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordOverrideValuesTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordOverrideValuesTest.php index 1bcadc573b3c..5593953355ec 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordOverrideValuesTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordOverrideValuesTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRecordOverrideValues; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class DatabaseRecordOverrideValuesTest extends UnitTestCase $this->subject = new DatabaseRecordOverrideValues(); } - /** - * @test - */ + #[Test] public function addDataReturnSameDataIfNoOverrideValuesSet(): void { $input = [ @@ -57,9 +56,7 @@ final class DatabaseRecordOverrideValuesTest extends UnitTestCase self::assertSame($input, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDatabaseRowAndTcaType(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordTypeValueTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordTypeValueTest.php index 52512f5420e2..9ac8a7c1883e 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordTypeValueTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRecordTypeValueTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRecordTypeValue; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,9 +34,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfTcaTypesAreEmpty(): void { $input = [ @@ -51,9 +50,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataKeepsExistingTcaRecordTypeValue(): void { $input = [ @@ -68,9 +65,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsExistingTcaRecordTypeValueWithValueZero(): void { $input = [ @@ -85,9 +80,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsRecordTypeValueToHistoricalOneIfTypeZeroIsNotDefined(): void { $input = [ @@ -103,9 +96,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsRecordTypeValueToZero(): void { $input = [ @@ -123,9 +114,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfTypePointsToANotExistingField(): void { $input = [ @@ -150,9 +139,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsRecordTypeValueToValueOfDatabaseField(): void { $input = [ @@ -176,9 +163,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsRecordTypeValueToZeroIfValueOfDatabaseFieldIsNotDefinedInTca(): void { $input = [ @@ -202,9 +187,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsRecordTypeValueToZeroIfValueOfDatabaseFieldIsEmptyString(): void { $input = [ @@ -228,9 +211,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfValueTypesNotExistsAndNoFallbackExists(): void { $input = [ @@ -255,9 +236,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForForeignTypeConfigurationNotAsSelectOrGroup(): void { $input = [ @@ -285,9 +264,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForForeignTypeIfPointerConfigurationHasNoTable(): void { $input = [ @@ -319,9 +296,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsTypeValueFromForeignTableRecord(): void { $input = [ @@ -363,9 +338,7 @@ final class DatabaseRecordTypeValueTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsTypeValueFromNestedTcaGroupField(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDateTimeFieldsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDateTimeFieldsTest.php index 2d82edf16853..5d236652838c 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDateTimeFieldsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDateTimeFieldsTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDateTimeFields; use TYPO3\CMS\Core\Database\Query\QueryHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseRowDateTimeFieldsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataSetsTimestampZeroForDefaultDateField(): void { $input = [ @@ -46,9 +45,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase self::assertEquals($expected, (new DatabaseRowDateTimeFields())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsTimestampNullForDefaultDateField(): void { $input = [ @@ -78,9 +75,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase self::assertSame($expected, $actual['databaseRow']['aField']); } - /** - * @test - */ + #[Test] public function addDataSetsTimestampZeroForDefaultDateTimeField(): void { $input = [ @@ -101,9 +96,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase self::assertEquals($expected, (new DatabaseRowDateTimeFields())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsTimestampNullForDefaultDateTimeField(): void { $input = [ @@ -135,9 +128,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase self::assertSame($expected, $actual['databaseRow']['aField']); } - /** - * @test - */ + #[Test] public function addDataSetsTimestampZeroForDefaultTimeField(): void { $input = [ @@ -158,9 +149,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase self::assertEquals($expected, (new DatabaseRowDateTimeFields())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsTimestampNullForDefaultTimeField(): void { $input = [ @@ -189,9 +178,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase self::assertSame($expected, $actual['databaseRow']['aField']); } - /** - * @test - */ + #[Test] public function addDataConvertsDateStringToTimestamp(): void { $oldTimezone = date_default_timezone_get(); @@ -218,9 +205,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase date_default_timezone_set($oldTimezone); } - /** - * @test - */ + #[Test] public function addDataConvertsDateTimeStringToTimestamp(): void { $oldTimezone = date_default_timezone_get(); @@ -247,9 +232,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase date_default_timezone_set($oldTimezone); } - /** - * @test - */ + #[Test] public function addDataConvertsTimeStringToTimestamp(): void { $oldTimezone = date_default_timezone_get(); @@ -276,9 +259,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase date_default_timezone_set($oldTimezone); } - /** - * @test - */ + #[Test] public function addDataConvertsMidnightTimeStringOfNullableFieldToDefaultValue(): void { $oldTimezone = date_default_timezone_get(); @@ -307,9 +288,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase date_default_timezone_set($oldTimezone); } - /** - * @test - */ + #[Test] public function addDataConvertsMidnightTimeStringOfNullableFieldToNull(): void { $oldTimezone = date_default_timezone_get(); @@ -338,9 +317,7 @@ final class DatabaseRowDateTimeFieldsTest extends UnitTestCase date_default_timezone_set($oldTimezone); } - /** - * @test - */ + #[Test] public function addDataAppliesResetValueForEmptyValue(): void { foreach (QueryHelper::getDateTimeTypes() as $dbType) { diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultAsReadonlyTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultAsReadonlyTest.php index 3c42fd54939f..ef834ce214df 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultAsReadonlyTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultAsReadonlyTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultAsReadonly; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseRowDefaultAsReadonlyTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataReplacesCurrentDatabaseValue(): void { $input = [ @@ -60,10 +60,8 @@ final class DatabaseRowDefaultAsReadonlyTest extends UnitTestCase self::assertEquals($expected, (new DatabaseRowDefaultAsReadonly())->addData($input)); } - /** - * @test - * @dataProvider addDataDoesNotReplaceCurrentDatabaseValueDataProvider - */ + #[DataProvider('addDataDoesNotReplaceCurrentDatabaseValueDataProvider')] + #[Test] public function addDataDoesNotReplaceCurrentDatabaseValue(array $input): void { self::assertEquals( diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultValuesTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultValuesTest.php index 88d8a9c2b4df..38c960717897 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultValuesTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowDefaultValuesTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class DatabaseRowDefaultValuesTest extends UnitTestCase $this->subject = new DatabaseRowDefaultValues(); } - /** - * @test - */ + #[Test] public function addDataKeepsExistingValue(): void { $input = [ @@ -49,9 +48,7 @@ final class DatabaseRowDefaultValuesTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsExistingNullValueWithEvalNull(): void { $input = [ @@ -72,9 +69,7 @@ final class DatabaseRowDefaultValuesTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsNullValueWithDefaultNullForNewRecord(): void { $input = [ @@ -95,9 +90,7 @@ final class DatabaseRowDefaultValuesTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultValueIfEvalNullIsSet(): void { $input = [ @@ -118,9 +111,7 @@ final class DatabaseRowDefaultValuesTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultValueIsSet(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowInitializeNewTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowInitializeNewTest.php index 5fc3c396f095..df675a6533ed 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowInitializeNewTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseRowInitializeNewTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowInitializeNew; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseRowInitializeNewTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataReturnSameDataIfCommandIsEdit(): void { $input = [ @@ -45,9 +44,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($input, (new DatabaseRowInitializeNew())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfDatabaseRowIsNotArray(): void { $input = [ @@ -60,9 +57,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase (new DatabaseRowInitializeNew())->addData($input); } - /** - * @test - */ + #[Test] public function addDataKeepsGivenDefaultsIfCommandIsNew(): void { $input = [ @@ -81,9 +76,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, (new DatabaseRowInitializeNew())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultDataFromUserTsIfColumnIsDefinedInTca(): void { $input = [ @@ -115,9 +108,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataDoesNotSetDefaultDataFromUserTsIfColumnIsMissingInTca(): void { $input = [ @@ -146,9 +137,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultDataFromPageTsIfColumnIsDefinedInTca(): void { $input = [ @@ -180,9 +169,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataDoesNotSetDefaultDataFromPageTsIfColumnIsMissingInTca(): void { $input = [ @@ -211,9 +198,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultDataOverrulingFromPageTs(): void { $input = [ @@ -252,9 +237,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultFromNeighborRow(): void { $input = [ @@ -284,9 +267,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultDataOverrulingFromNeighborRow(): void { $input = [ @@ -330,9 +311,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultDataFromDefaultValuesIfColumnIsDefinedInTca(): void { $input = [ @@ -362,9 +341,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataDoesNotSetDefaultDataFromDefaultValuesIfColumnIsMissingInTca(): void { $input = [ @@ -398,9 +375,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultDataOverrulesOtherDefaults(): void { $input = [ @@ -449,9 +424,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionWithGivenChildChildUidButMissingInlineConfig(): void { $input = [ @@ -467,9 +440,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase (new DatabaseRowInitializeNew())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionWithGivenChildChildUidButIsNotInteger(): void { $input = [ @@ -485,9 +456,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase (new DatabaseRowInitializeNew())->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsForeignSelectorFieldToValueOfChildChildUid(): void { $input = [ @@ -517,9 +486,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, (new DatabaseRowInitializeNew())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignSelectorDoesNotPointToGroupOrSelectField(): void { $input = [ @@ -547,9 +514,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase (new DatabaseRowInitializeNew())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfInlineParentLanguageIsNoInteger(): void { $input = [ @@ -577,9 +542,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase (new DatabaseRowInitializeNew())->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsSysLanguageUidFromParent(): void { $input = [ @@ -612,9 +575,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result); } - /** - * @test - */ + #[Test] public function addDataSetsPidToVanillaUid(): void { $input = [ @@ -632,9 +593,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, $result['databaseRow']); } - /** - * @test - */ + #[Test] public function addDataDoesNotUsePageTsValueForPidIfRecordIsNotInlineChild(): void { $input = [ @@ -658,9 +617,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, (new DatabaseRowInitializeNew())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfPageTsConfigPidValueCanNotBeInterpretedAsInteger(): void { $input = [ @@ -684,9 +641,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase (new DatabaseRowInitializeNew())->addData($input); } - /** - * @test - */ + #[Test] public function addDataDoesUsePageTsValueForPidIfRecordIsInlineChild(): void { $input = [ @@ -710,9 +665,7 @@ final class DatabaseRowInitializeNewTest extends UnitTestCase self::assertSame($expected, (new DatabaseRowInitializeNew())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsUidOfParentFieldIfRecordIsInlineChild(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseSystemLanguageRowsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseSystemLanguageRowsTest.php index 05217628bb2c..efc63a99c700 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseSystemLanguageRowsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseSystemLanguageRowsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseSystemLanguageRows; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Http\Uri; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseSystemLanguageRowsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfSiteObjectIsNotSet(): void { $this->expectException(\LogicException::class); @@ -37,9 +36,7 @@ final class DatabaseSystemLanguageRowsTest extends UnitTestCase (new DatabaseSystemLanguageRows())->addData([]); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultLanguageAndAllEntries(): void { $languageService = $this->createMock(LanguageService::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUniqueUidNewRowTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUniqueUidNewRowTest.php index 905197c15bb5..3b957386d154 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUniqueUidNewRowTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUniqueUidNewRowTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseUniqueUidNewRow; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class DatabaseUniqueUidNewRowTest extends UnitTestCase $this->subject = new DatabaseUniqueUidNewRow(); } - /** - * @test - */ + #[Test] public function addDataReturnSameDataIfCommandIsEdit(): void { $input = [ @@ -44,9 +43,7 @@ final class DatabaseUniqueUidNewRowTest extends UnitTestCase self::assertSame($input, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsGivenUidIfAlreadySet(): void { $input = [ @@ -59,9 +56,7 @@ final class DatabaseUniqueUidNewRowTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfUidIsAlreadySetButDoesNotStartWithNewKeyword(): void { $input = [ @@ -75,9 +70,7 @@ final class DatabaseUniqueUidNewRowTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsUniqueId(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUserPermissionCheckTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUserPermissionCheckTest.php index b6f4ab457422..06e8dc35a9a2 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUserPermissionCheckTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/DatabaseUserPermissionCheckTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Backend\Form\Event\ModifyEditFormUserAccessEvent; @@ -47,9 +48,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase $GLOBALS['BE_USER']->user['uid'] = 42; } - /** - * @test - */ + #[Test] public function addDataSetsUserPermissionsOnPageForAdminUser(): void { $this->beUserMock->method('isAdmin')->willReturn(true); @@ -59,9 +58,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::ALL, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfUserHasNoTablesModifyPermissionForGivenTable(): void { $input = [ @@ -76,9 +73,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfUserHasNoContentEditPermissionsOnPage(): void { $input = [ @@ -104,9 +99,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataAddsUserPermissionsOnPageForContentIfUserHasCorrespondingPermissions(): void { $input = [ @@ -131,9 +124,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::CONTENT_EDIT, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoPagePermissions(): void { $input = [ @@ -158,9 +149,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoDoktypePermissions(): void { $input = [ @@ -201,9 +190,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataAddsUserPermissionsOnPageIfTableIsPagesAndUserHasPagePermissions(): void { $input = [ @@ -243,9 +230,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::PAGE_EDIT, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForContentEditRecord(): void { $input = [ @@ -270,9 +255,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::ALL, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRootNodeShouldBeEditedWithoutPermissions(): void { $input = [ @@ -297,9 +280,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRecordEditAccessInternalsReturnsFalse(): void { $input = [ @@ -326,9 +307,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForNewContentRecordWithoutPermissions(): void { $input = [ @@ -354,9 +333,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForNewPageWithoutPermissions(): void { $input = [ @@ -384,9 +361,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfHookDeniesAccess(): void { $input = [ @@ -418,9 +393,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase (new DatabaseUserPermissionCheck())->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsUserPermissionsOnPageForNewPageIfPageNewIsDeniedAndHookAllowsAccess(): void { $input = [ @@ -451,9 +424,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::CONTENT_EDIT, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataSetsUserPermissionsOnPageForNewPage(): void { $input = [ @@ -478,9 +449,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::PAGE_NEW, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataSetsUserPermissionsOnPageForNewContentRecord(): void { $input = [ @@ -505,9 +474,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::CONTENT_EDIT, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForNewContentRecord(): void { $input = [ @@ -529,9 +496,7 @@ final class DatabaseUserPermissionCheckTest extends UnitTestCase self::assertSame(Permission::ALL, $result['userPermissionOnPage']); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForNewRecordsOnRootLevelWithoutPermissions(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php index c8d39a891fa5..23eef29d5b91 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions; use TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\Fixtures\EvaluateDisplayConditionsTestClass; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class EvaluateDisplayConditionsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfMultipleConditionsAreNotCombinedWithAndOrOr(): void { $input = [ @@ -50,9 +50,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIAConditionHasNoStringAsKey(): void { $input = [ @@ -72,9 +70,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfConditionIsNotStringOrArray(): void { $input = [ @@ -92,9 +88,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfConditionTypeIsUnknown(): void { $input = [ @@ -112,9 +106,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionHasNoFieldName(): void { $input = [ @@ -132,9 +124,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionHasNoOperator(): void { $input = [ @@ -152,9 +142,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionHasInvalidOperator(): void { $input = [ @@ -172,9 +160,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionHasNoOperand(): void { $input = [ @@ -192,9 +178,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionReqHasInvalidOperand(): void { $input = [ @@ -212,9 +196,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionNumberComparisonHasInvalidOperand(): void { $input = [ @@ -232,9 +214,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionRangeComparisonHasInvalidOperand(): void { $input = [ @@ -252,9 +232,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFieldConditionRangeComparisonHasInvalidMaxOperand(): void { $input = [ @@ -272,9 +250,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRecordConditionHasNoNewKeyword(): void { $input = [ @@ -292,9 +268,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRecordConditionHasInvalidNewKeyword(): void { $input = [ @@ -312,9 +286,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRecordConditionHasNoOperand(): void { $input = [ @@ -332,9 +304,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRecordConditionHasInvalidOperand(): void { $input = [ @@ -352,9 +322,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRecordConditionHasNoUidInDatabaseRow(): void { $input = [ @@ -372,9 +340,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfVersionConditionHasNoIsKeyword(): void { $input = [ @@ -392,9 +358,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfVersionConditionHasInvalidIsKeyword(): void { $input = [ @@ -412,9 +376,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfVersionConditionHasNoOperand(): void { $input = [ @@ -432,9 +394,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfVersionConditionHasInvalidOperand(): void { $input = [ @@ -452,9 +412,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfVersionConditionHasNoUidInDatabaseRow(): void { $input = [ @@ -472,9 +430,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfUserConditionHasNoUserfuncSpecified(): void { $input = [ @@ -492,9 +448,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataEvaluatesUserCondition(): void { $this->expectException(\RuntimeException::class); @@ -512,9 +466,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataPassesFlexContextToUserCondition(): void { $input = [ @@ -548,9 +500,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase self::assertSame($expected, (new EvaluateDisplayConditions())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFlexSheetNameAndFieldNameCombinationsOverlap(): void { $input = [ @@ -588,9 +538,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFlexSheetConditionReferencesFieldFromSameSheet(): void { $input = [ @@ -622,9 +570,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataTrowsExceptionIfFlexFieldSheetConditionReferencesNotExistingFieldValue(): void { $input = [ @@ -654,9 +600,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFlexFieldFieldConditionReferencesNotExistingFieldValue(): void { $input = [ @@ -690,9 +634,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFlexFieldReferencingFlexFieldIsNotFoundInFieldValue(): void { $input = [ @@ -725,9 +667,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase (new EvaluateDisplayConditions())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfFlexSectionContainerFoundNoReferencedFieldValue(): void { $input = [ @@ -3500,10 +3440,8 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addDataRemovesTcaReferencingOtherFieldsInDisplayConditionDataProvider - */ + #[DataProvider('addDataRemovesTcaReferencingOtherFieldsInDisplayConditionDataProvider')] + #[Test] public function addDataRemovesTcaReferencingOtherFieldsInDisplayCondition(string $processedTcaFieldToBeRemovedPath, array $databaseRow, array $processedTca): void { $input = [ @@ -3764,9 +3702,9 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase /** * @param string $condition * @param string $expectedResult - * @dataProvider conditionStringDataProvider - * @test */ + #[DataProvider('conditionStringDataProvider')] + #[Test] public function matchConditionStrings($condition, array $record, $expectedResult): void { $input = [ @@ -3798,9 +3736,9 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase /** * @param string $condition * @param string $expectedResult - * @dataProvider conditionStringDataProvider - * @test */ + #[DataProvider('conditionStringDataProvider')] + #[Test] public function matchConditionStringsWithRecordTestFieldBeingArray($condition, array $record, $expectedResult): void { $input = [ @@ -3837,9 +3775,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase self::assertSame($expected, (new EvaluateDisplayConditions())->addData($input)); } - /** - * @test - */ + #[Test] public function matchHideForNonAdminsReturnsTrueIfBackendUserIsAdmin(): void { $input = [ @@ -3866,9 +3802,7 @@ final class EvaluateDisplayConditionsTest extends UnitTestCase self::assertSame($expected, (new EvaluateDisplayConditions())->addData($input)); } - /** - * @test - */ + #[Test] public function matchHideForNonAdminsReturnsFalseIfBackendUserIsNotAdmin(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InitializeProcessedTcaTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InitializeProcessedTcaTest.php index c5b2ab98fa0d..f0cb2a364c40 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InitializeProcessedTcaTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InitializeProcessedTcaTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class InitializeProcessedTcaTest extends UnitTestCase $this->subject = new InitializeProcessedTca(); } - /** - * @test - */ + #[Test] public function addDataSetsTableTcaFromGlobalsInResult(): void { $input = [ @@ -46,9 +45,7 @@ final class InitializeProcessedTcaTest extends UnitTestCase self::assertEquals($expected, $result['processedTca']); } - /** - * @test - */ + #[Test] public function addDataKeepsGivenProcessedTca(): void { $input = [ @@ -63,9 +60,7 @@ final class InitializeProcessedTcaTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfGlobalTableTcaIsNotSet(): void { $input = [ @@ -78,9 +73,7 @@ final class InitializeProcessedTcaTest extends UnitTestCase $this->subject->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfGlobalTableTcaIsNotAnArray(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InlineOverrideChildTcaTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InlineOverrideChildTcaTest.php index 7f00b8c75fe1..a7b0c1ec1cff 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InlineOverrideChildTcaTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/InlineOverrideChildTcaTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\InlineOverrideChildTca; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class InlineOverrideChildTcaTest extends UnitTestCase $this->subject = new InlineOverrideChildTca(); } - /** - * @test - */ + #[Test] public function addDataOverrulesShowitemByGivenOverrideChildTca(): void { $input = [ @@ -63,9 +62,7 @@ final class InlineOverrideChildTcaTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataAddsTypeShowitemByGivenOverrideChildTca(): void { $input = [ @@ -100,9 +97,7 @@ final class InlineOverrideChildTcaTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMergesForeignSelectorFieldTcaOverride(): void { $input = [ @@ -157,9 +152,7 @@ final class InlineOverrideChildTcaTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultValueForChildRecordColumn(): void { $input = [ @@ -189,9 +182,7 @@ final class InlineOverrideChildTcaTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForRestrictedField(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/PageTsConfigMergedTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/PageTsConfigMergedTest.php index 8456244ab9c9..0c648c911f35 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/PageTsConfigMergedTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/PageTsConfigMergedTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\PageTsConfigMerged; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class PageTsConfigMergedTest extends UnitTestCase $this->subject = new PageTsConfigMerged(); } - /** - * @test - */ + #[Test] public function addDataSetsMergedTsConfigToTsConfig(): void { $input = [ @@ -47,9 +46,7 @@ final class PageTsConfigMergedTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsTableSpecificConfigurationWithoutType(): void { $input = [ @@ -70,9 +67,7 @@ final class PageTsConfigMergedTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMergesTypeSpecificConfiguration(): void { $input = [ @@ -105,9 +100,7 @@ final class PageTsConfigMergedTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataTypeSpecificConfigurationOverwritesMainConfiguration(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteDatabaseEditRowTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteDatabaseEditRowTest.php index e3f3448b5942..6eb6ea55d9fb 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteDatabaseEditRowTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteDatabaseEditRowTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\SiteDatabaseEditRow; use TYPO3\CMS\Core\Configuration\SiteConfiguration; use TYPO3\CMS\Core\Core\ApplicationContext; @@ -45,9 +46,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataDoesNotChangeResultIfCommandIsNotEdit(): void { $input = [ @@ -58,9 +57,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase self::assertSame($input, (new SiteDatabaseEditRow($siteConfigurationMock))->addData($input)); } - /** - * @test - */ + #[Test] public function addDataDoesNotChangeResultIfDatabaseRowIsNotEmpty(): void { $input = [ @@ -73,9 +70,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase self::assertSame($input, (new SiteDatabaseEditRow($siteConfigurationMock))->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfTableNameIsNotExpected(): void { $input = [ @@ -90,9 +85,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase (new SiteDatabaseEditRow($siteConfigurationMock))->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsDataForSysSite(): void { $input = [ @@ -130,9 +123,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase self::assertEquals($expected, (new SiteDatabaseEditRow($siteConfiguration))->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionWithInvalidErrorHandling(): void { $input = [ @@ -158,9 +149,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase (new SiteDatabaseEditRow($siteConfiguration))->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionWithInvalidLanguage(): void { $input = [ @@ -186,9 +175,7 @@ final class SiteDatabaseEditRowTest extends UnitTestCase (new SiteDatabaseEditRow($siteConfiguration))->addData($input); } - /** - * @test - */ + #[Test] public function addDataAddLanguageRow(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteResolvingTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteResolvingTest.php index 6655c5dcd26a..81636726d55c 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteResolvingTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/SiteResolvingTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\SiteResolving; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\SiteFinder; @@ -26,9 +27,7 @@ final class SiteResolvingTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function addDataAddsSiteObjectOfDefaultLanguageRow(): void { $siteFinderMock = $this->createMock(SiteFinder::class); @@ -47,9 +46,7 @@ final class SiteResolvingTest extends UnitTestCase self::assertSame($expected, (new SiteResolving($siteFinderMock))->addData($input)); } - /** - * @test - */ + #[Test] public function addDataAddsSiteObjectOfEffectivePid(): void { $siteFinderMock = $this->createMock(SiteFinder::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaCheckboxItemsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaCheckboxItemsTest.php index d705dee1c7bb..77b7ae54cf99 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaCheckboxItemsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaCheckboxItemsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Messaging\FlashMessage; @@ -377,10 +379,8 @@ final class TcaCheckboxItemsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkboxConfigurationDataProvider - */ + #[DataProvider('checkboxConfigurationDataProvider')] + #[Test] public function addDataKeepExistingItems(array $input, array $expectedResult): void { $languageService = $this->createMock(LanguageService::class); @@ -390,9 +390,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase self::assertSame($expectedResult, (new TcaCheckboxItems())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfItemsAreNoArray(): void { $input = [ @@ -420,9 +418,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase (new TcaCheckboxItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfItemLabelIsNotSet(): void { $input = [ @@ -452,9 +448,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase (new TcaCheckboxItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataTranslatesItemLabels(): void { $input = [ @@ -487,9 +481,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase self::assertSame($expected, (new TcaCheckboxItems())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataCallsItemsProcFunc(): void { $input = [ @@ -531,9 +523,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase self::assertSame('foo', $items[0]['label']); } - /** - * @test - */ + #[Test] public function addDataItemsProcFuncReceivesParameters(): void { $input = [ @@ -619,9 +609,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase (new TcaCheckboxItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataItemsProcFuncEnqueuesFlashMessageOnException(): void { $input = [ @@ -685,9 +673,7 @@ final class TcaCheckboxItemsTest extends UnitTestCase (new TcaCheckboxItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataTranslatesItemLabelsFromPageTsConfig(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsOverridesTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsOverridesTest.php index 61ac2d5133bd..bc553a99c22a 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsOverridesTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsOverridesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsOverrides; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +32,7 @@ final class TcaColumnsOverridesTest extends UnitTestCase $this->subject = new TcaColumnsOverrides(); } - /** - * @test - */ + #[Test] public function addDataRemovesGivenColumnsOverrides(): void { $input = [ @@ -56,9 +56,7 @@ final class TcaColumnsOverridesTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMergesColumnsOverridesIntoColumns(): void { $input = [ @@ -92,9 +90,7 @@ final class TcaColumnsOverridesTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMergesColumnsOverridesDefaultValueIntoDatabaseRow(): void { $input = [ @@ -172,10 +168,8 @@ final class TcaColumnsOverridesTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addDataRespectsTSconfigDefaultValuesForNewRecordsDataProvider - */ + #[DataProvider('addDataRespectsTSconfigDefaultValuesForNewRecordsDataProvider')] + #[Test] public function addDataRespectsTSconfigDefaultValuesForNewRecords(array $result): void { $input = array_replace_recursive([ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessCommonTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessCommonTest.php index 033fa6eb0493..62e16bb44920 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessCommonTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessCommonTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessCommon; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaColumnsProcessCommonTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataRegistersOrigUidColumn(): void { $input = [ @@ -42,9 +41,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersRecordTypeColumn(): void { $input = [ @@ -62,9 +59,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersRecordTypeRelationColumn(): void { $input = [ @@ -82,9 +77,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersLanguageFieldColumn(): void { $input = [ @@ -102,9 +95,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersTransOrigPointerColumn(): void { $input = [ @@ -122,9 +113,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersTransOrigDiffSourceColumn(): void { $input = [ @@ -142,9 +131,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersSingleSubtypesAddlistFields(): void { $input = [ @@ -171,9 +158,7 @@ final class TcaColumnsProcessCommonTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessCommon())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersMultipleSubtypesAddlistFields(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldDescriptionsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldDescriptionsTest.php index 43b2461b7877..8e0bd97b7aab 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldDescriptionsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldDescriptionsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessFieldDescriptions; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Localization\LanguageService; @@ -34,9 +35,7 @@ final class TcaColumnsProcessFieldDescriptionsTest extends UnitTestCase $this->subject = new TcaColumnsProcessFieldDescriptions(); } - /** - * @test - */ + #[Test] public function addDataKeepsDescriptionAsIsIfNoOverrideIsGiven(): void { $input = [ @@ -60,9 +59,7 @@ final class TcaColumnsProcessFieldDescriptionsTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataAddsDescriptionToExistingField(): void { $input = [ @@ -93,9 +90,7 @@ final class TcaColumnsProcessFieldDescriptionsTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDescriptionFromPageTsConfig(): void { $input = [ @@ -128,9 +123,7 @@ final class TcaColumnsProcessFieldDescriptionsTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDescriptionFromPageTsConfigForSpecificLanguage(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldLabelsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldLabelsTest.php index 4660411e7a44..32ba99f683d0 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldLabelsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessFieldLabelsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessFieldLabels; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Localization\LanguageService; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaColumnsProcessFieldLabelsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataKeepsLabelAsIsIfNoOverrideIsGiven(): void { $input = [ @@ -53,9 +52,7 @@ final class TcaColumnsProcessFieldLabelsTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessFieldLabels())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsLabelFromShowitem(): void { $input = [ @@ -85,9 +82,7 @@ final class TcaColumnsProcessFieldLabelsTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessFieldLabels())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsLabelFromPalettesShowitem(): void { $input = [ @@ -123,9 +118,7 @@ final class TcaColumnsProcessFieldLabelsTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessFieldLabels())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsLabelFromPageTsConfig(): void { $input = [ @@ -159,9 +152,7 @@ final class TcaColumnsProcessFieldLabelsTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessFieldLabels())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsLabelFromPageTsConfigForSpecificLanguage(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessPlaceholdersTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessPlaceholdersTest.php index 2e4f4204fe27..f1813131b48e 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessPlaceholdersTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessPlaceholdersTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessPlaceholders; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class TcaColumnsProcessPlaceholdersTest extends UnitTestCase $this->subject = new TcaColumnsProcessPlaceholders(); } - /** - * @test - */ + #[Test] public function addDataRegistersPlaceholderColumns(): void { $input = [ @@ -54,9 +53,7 @@ final class TcaColumnsProcessPlaceholdersTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersFirstPlaceholderColumn(): void { $input = [ @@ -78,9 +75,7 @@ final class TcaColumnsProcessPlaceholdersTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersAlternativeLabelColumn(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessRecordTitleTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessRecordTitleTest.php index 40eb5a0525f9..c571b51438d2 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessRecordTitleTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessRecordTitleTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessRecordTitle; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaColumnsProcessRecordTitleTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataRegistersLabelColumn(): void { $input = [ @@ -43,9 +42,7 @@ final class TcaColumnsProcessRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersAlternativeLabelColumn(): void { $input = [ @@ -65,9 +62,7 @@ final class TcaColumnsProcessRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersForeignLabelInInlineContext(): void { $input = [ @@ -83,9 +78,7 @@ final class TcaColumnsProcessRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRegistersSymmetricLabelInInlineContext(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessShowitemTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessShowitemTest.php index bd3143659667..84d075d2de40 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessShowitemTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsProcessShowitemTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessShowitem; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaColumnsProcessShowitemTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfTypesHasNoShowitem(): void { $input = [ @@ -46,9 +45,7 @@ final class TcaColumnsProcessShowitemTest extends UnitTestCase (new TcaColumnsProcessShowitem())->addData($input); } - /** - * @test - */ + #[Test] public function addDataRegistersColumnsFieldReferencedInShowitems(): void { $input = [ @@ -83,9 +80,7 @@ final class TcaColumnsProcessShowitemTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessShowitem())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsColumnsFieldReferencedInPalette(): void { $input = [ @@ -125,9 +120,7 @@ final class TcaColumnsProcessShowitemTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessShowitem())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSkipsColumnsNotReferencedInShowitemOrPalette(): void { $input = [ @@ -171,9 +164,7 @@ final class TcaColumnsProcessShowitemTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessShowitem())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSkipsColumnsForCollapsedInlineChild(): void { $input = [ @@ -208,9 +199,7 @@ final class TcaColumnsProcessShowitemTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessShowitem())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSkipsColumnsForCollapsedAllInlineChild(): void { $input = [ @@ -252,9 +241,7 @@ final class TcaColumnsProcessShowitemTest extends UnitTestCase self::assertSame($expected, (new TcaColumnsProcessShowitem())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataAddsColumnsForExpandedInlineChild(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsRemoveUnusedTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsRemoveUnusedTest.php index f710a89de00f..319aa2efa337 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsRemoveUnusedTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaColumnsRemoveUnusedTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsRemoveUnused; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class TcaColumnsRemoveUnusedTest extends UnitTestCase $this->subject = new TcaColumnsRemoveUnused(); } - /** - * @test - */ + #[Test] public function addDataKeepsColumnsToProcess(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexPrepareTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexPrepareTest.php index ae473dab3623..179de1a6dbe4 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexPrepareTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexPrepareTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexPrepare; use TYPO3\CMS\Core\Cache\CacheManager; @@ -48,9 +49,7 @@ final class TcaFlexPrepareTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function addDataKeepsExistingDataStructure(): void { $input = [ @@ -95,9 +94,7 @@ final class TcaFlexPrepareTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexPrepare())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsParsedDataStructureArray(): void { $input = [ @@ -164,9 +161,7 @@ final class TcaFlexPrepareTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexPrepare())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsParsedDataStructureArrayWithSheets(): void { $input = [ @@ -239,9 +234,7 @@ final class TcaFlexPrepareTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexPrepare())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataInitializesDatabaseRowValueIfNoDataStringIsGiven(): void { $input = [ @@ -283,9 +276,7 @@ final class TcaFlexPrepareTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexPrepare())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsParsedDataStructureArrayRecursive(): void { $input = [ @@ -425,9 +416,8 @@ final class TcaFlexPrepareTest extends UnitTestCase * Test of the data provider when called for a section with already * resolved flex form, e.g. in an ajax request (tcaSelectTreeAjaxFieldData), * which got "reduced to the relevant element only". - * - * @test */ + #[Test] public function addDataMigratesResolvedFlexformTca(): void { $columnConfig = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexProcessTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexProcessTest.php index 29da367cd447..3deb7121dfad 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexProcessTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFlexProcessTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataGroup\FlexFormSegment; use TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues; @@ -45,9 +46,7 @@ final class TcaFlexProcessTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['flexFormSegment'] = []; } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionWithMissingDataStructureIdentifier(): void { $input = [ @@ -71,9 +70,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataRemovesSheetIfDisabledByPageTsConfig(): void { $input = [ @@ -136,9 +133,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsSheetTitleFromPageTsConfig(): void { $input = [ @@ -219,9 +214,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsSheetDescriptionFromPageTsConfig(): void { $input = [ @@ -302,9 +295,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsSheetShortDescriptionFromPageTsConfig(): void { $input = [ @@ -385,9 +376,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsSheetShortDescriptionForSingleSheetFromPageTsConfig(): void { $input = [ @@ -468,9 +457,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRemovesExcludeFieldFromDataStructure(): void { $input = [ @@ -535,9 +522,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsExcludeFieldInDataStructureWithUserAccess(): void { $input = [ @@ -610,9 +595,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsExcludeFieldInDataStructureForAdminUser(): void { $input = [ @@ -685,9 +668,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRemovesPageTsDisabledFieldFromDataStructure(): void { $input = [ @@ -762,9 +743,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataHandlesPageTsConfigSettingsOfSingleFlexField(): void { $input = [ @@ -871,9 +850,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDefaultValueFromFlexTcaForField(): void { $input = [ @@ -937,9 +914,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForDataStructureTypeArrayWithoutSection(): void { $input = [ @@ -987,9 +962,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForDataStructureSectionWithoutTypeArray(): void { $input = [ @@ -1037,9 +1010,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsValuesAndStructureForSectionContainerElements(): void { $input = [ @@ -1147,9 +1118,7 @@ final class TcaFlexProcessTest extends UnitTestCase self::assertEquals($expected, (new TcaFlexProcess())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForInlineElementsNestedInSectionContainers(): void { $input = [ @@ -1208,9 +1177,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForNestedSectionContainers(): void { $input = [ @@ -1269,9 +1236,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForSelectElementsInSectionContainers(): void { $input = [ @@ -1330,9 +1295,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForGroupElementsInSectionContainers(): void { $input = [ @@ -1391,9 +1354,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataCallsFlexFormSegmentGroupForFieldAndAddsFlexParentDatabaseRow(): void { $input = [ @@ -1450,9 +1411,7 @@ final class TcaFlexProcessTest extends UnitTestCase (new TcaFlexProcess())->addData($input); } - /** - * @test - */ + #[Test] public function addDataCallsFlexFormSegmentGroupForDummyContainerAndAddsFlexParentDatabaseRow(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFolderTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFolderTest.php index 7355602997cf..75a66b781d94 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFolderTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaFolderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaFolder; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -27,9 +28,7 @@ final class TcaFolderTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function addDataReturnsFieldUnchangedIfFieldIsNotTypeFolder(): void { $input = [ @@ -50,9 +49,7 @@ final class TcaFolderTest extends UnitTestCase self::assertSame($expected, (new TcaFolder())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsFolderData(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaGroupTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaGroupTest.php index ace9e3d0ae61..c35324e159f2 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaGroupTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaGroupTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Clipboard\Clipboard; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaGroup; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -28,9 +29,7 @@ final class TcaGroupTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function addDataReturnsFieldUnchangedIfFieldIsNotTypeGroup(): void { $input = [ @@ -51,9 +50,7 @@ final class TcaGroupTest extends UnitTestCase self::assertSame($expected, (new TcaGroup())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsDatabaseData(): void { $aFieldConfig = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineConfigurationTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineConfigurationTest.php index f8dfcfdc4f0e..1f06151a6323 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineConfigurationTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineConfigurationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaInlineConfiguration; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -45,9 +46,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase ], ]; - /** - * @test - */ + #[Test] public function addDataThrowsExceptionForInlineFieldWithoutForeignTableConfig(): void { $input = [ @@ -68,9 +67,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataSetsDefaults(): void { $input = [ @@ -90,9 +87,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsGivenMinitems(): void { $input = [ @@ -114,9 +109,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataForcesMinitemsPositive(): void { $input = [ @@ -138,9 +131,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsGivenMaxitems(): void { $input = [ @@ -162,9 +153,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataForcesMaxitemsPositive(): void { $input = [ @@ -186,9 +175,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMergesWithGivenAppearanceSettings(): void { $input = [ @@ -216,9 +203,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataForcesLevelLinksWithForeignSelector(): void { $input = [ @@ -261,9 +246,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsLevelLinksPositionWithForeignSelectorAndUseCombination(): void { $input = [ @@ -305,9 +288,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsShowPossibleLocalizationRecordsButForcesBooleanTrue(): void { $input = [ @@ -331,9 +312,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataKeepsShowPossibleLocalizationRecordsButForcesBooleanFalse(): void { $input = [ @@ -357,9 +336,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignSelectorAndForeignUniquePointToDifferentFields(): void { $input = [ @@ -382,9 +359,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignSelectorPointsToANotExistingField(): void { $input = [ @@ -406,9 +381,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignUniquePointsToANotExistingField(): void { $input = [ @@ -430,9 +403,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignUniqueTargetIsNotTypeSelectOrGroup(): void { $input = [ @@ -457,9 +428,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignUniqueSelectDoesNotDefineForeignTable(): void { $input = [ @@ -484,9 +453,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfForeignUniqueGroupDoesNotDefineForeignTable(): void { $input = [ @@ -511,9 +478,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase (new TcaInlineConfiguration())->addData($input); } - /** - * @test - */ + #[Test] public function addDataAddsSelectorOrUniqueConfigurationForForeignUnique(): void { $input = [ @@ -549,9 +514,7 @@ final class TcaInlineConfigurationTest extends UnitTestCase self::assertEquals($expected, (new TcaInlineConfiguration())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMergesForeignSelectorFieldTcaOverride(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineExpandCollapseStateTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineExpandCollapseStateTest.php index 54d1ca9c3c16..ddea16c47930 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineExpandCollapseStateTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineExpandCollapseStateTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaInlineExpandCollapseState; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaInlineExpandCollapseStateTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataAddsInlineStatusForTableUid(): void { $input = [ @@ -60,9 +60,7 @@ final class TcaInlineExpandCollapseStateTest extends UnitTestCase self::assertSame($expected, (new TcaInlineExpandCollapseState())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataAddsInlineStatusForSecondLevelChild(): void { $input = [ @@ -317,10 +315,8 @@ final class TcaInlineExpandCollapseStateTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addDataAddsCorrectIsInlineChildExpandedDataProvider - */ + #[DataProvider('addDataAddsCorrectIsInlineChildExpandedDataProvider')] + #[Test] public function addDataAddsCorrectIsInlineChildExpanded(array $input, bool $expectedIsInlineChildExpanded): void { $GLOBALS['BE_USER'] = $this->createMock(BackendUserAuthentication::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineIsOnSymmetricSideTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineIsOnSymmetricSideTest.php index a3ea9144d895..909321b40a50 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineIsOnSymmetricSideTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineIsOnSymmetricSideTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaInlineIsOnSymmetricSide; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,9 +34,7 @@ final class TcaInlineIsOnSymmetricSideTest extends UnitTestCase $this->subject = new TcaInlineIsOnSymmetricSide(); } - /** - * @test - */ + #[Test] public function addDataSetsIsOnSymmetricSideToTrue(): void { $input = [ @@ -56,9 +55,7 @@ final class TcaInlineIsOnSymmetricSideTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataSetsIsOnSymmetricSideToTrueWhenSymmetricFieldArrayIsDetailed() { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineTest.php index 5ae46ce5bf25..38feca91cbe1 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInlineTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaInline; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -33,9 +34,7 @@ final class TcaInlineTest extends UnitTestCase $GLOBALS['BE_USER'] = $this->beUserMock; } - /** - * @test - */ + #[Test] public function addDataWithoutModifyRightsButWithInlineTypeWillNotParseChildren(): void { $input = [ @@ -66,9 +65,7 @@ final class TcaInlineTest extends UnitTestCase self::assertEquals($expected, (new TcaInline())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataWithUserRightsButWithoutInlineTypeWillNotParseChildren(): void { $input = [ @@ -98,9 +95,7 @@ final class TcaInlineTest extends UnitTestCase self::assertEquals($expected, (new TcaInline())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataWithInlineTypeAndModifyRightsWillAddChildren(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInputPlaceholdersTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInputPlaceholdersTest.php index d692b70baf56..e349cf459301 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInputPlaceholdersTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaInputPlaceholdersTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataCompiler; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaInputPlaceholders; use TYPO3\CMS\Core\Http\ServerRequest; @@ -34,9 +35,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase $GLOBALS['LANG'] = $languageService; } - /** - * @test - */ + #[Test] public function addDataRemovesEmptyPlaceholderOption(): void { $input = [ @@ -60,9 +59,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsUnmodifiedSimpleStringPlaceholder(): void { $input = [ @@ -85,9 +82,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsValueFromDatabaseRowAsPlaceholder(): void { $input = [ @@ -113,9 +108,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsValueFromSelectTypeRelation(): void { $request = new ServerRequest(); @@ -179,9 +172,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsNoPlaceholderForNewSelectTypeRelation(): void { $input = [ @@ -214,9 +205,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsValueFromGroupTypeRelation(): void { $request = new ServerRequest(); @@ -289,9 +278,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsValueFromInlineTypeRelation(): void { $request = new ServerRequest(); @@ -357,9 +344,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsValueFromRelationsRecursively(): void { $request = new ServerRequest(); @@ -464,9 +449,7 @@ final class TcaInputPlaceholdersTest extends UnitTestCase self::assertSame($expected, (new TcaInputPlaceholders())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataCallsLanguageServiceForLocalizedPlaceholders(): void { $labelString = 'LLL:EXT:some_ext/Resources/Private/Language/locallang.xlf:my_placeholder'; diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaJsonTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaJsonTest.php index 936c46285cab..4f632553bcfa 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaJsonTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaJsonTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaJson; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -230,10 +232,8 @@ final class TcaJsonTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resultArrayDataProvider - */ + #[DataProvider('resultArrayDataProvider')] + #[Test] public function addDataDoesHandleJsonRecords(array $input, array $expected): void { self::assertSame($expected, (new TcaJson())->addData($input)); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaLanguageTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaLanguageTest.php index 8c45ef8bbccd..34c9d1682d45 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaLanguageTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaLanguageTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaLanguage; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Site\Entity\NullSite; @@ -42,18 +44,14 @@ final class TcaLanguageTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function addDataIgnoresEmptyOrWrongTcaType(): void { $input = $this->getDefaultResultArray(['config' => ['type' => 'none']]); self::assertEquals($input, (new TcaLanguage())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRespectsCustomRenderType(): void { $input = $this->getDefaultResultArray(['config' => ['renderType' => 'customRenderType']]); @@ -64,9 +62,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfAnItemIsNotAnArray(): void { $input = $this->getDefaultResultArray(['config' => ['items' => ['foo']]]); @@ -77,9 +73,7 @@ final class TcaLanguageTest extends UnitTestCase (new TcaLanguage())->addData($input); } - /** - * @test - */ + #[Test] public function addDataAddsAllSiteLanguages(): void { $input = $this->getDefaultResultArray([], $this->getDefaultSystemLanguages()); @@ -99,9 +93,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataOmitsLanguageAllForPages(): void { $input = $this->getDefaultResultArray([], $this->getDefaultSystemLanguages(), [], ['tableName' => 'pages']); @@ -119,9 +111,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataOmitsLanguageAllIfNotAllowed(): void { $systemLanguages = $this->getDefaultSystemLanguages(); @@ -143,9 +133,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataAddsUserDefinedItems(): void { $input = $this->getDefaultResultArray( @@ -178,9 +166,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataAddsUserDefinedItemsOnEmptySystemLanguages(): void { $input = $this->getDefaultResultArray( @@ -207,9 +193,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataRemovesAllItemsByEmptyKeepItems(): void { $input = $this->getDefaultResultArray( @@ -232,9 +216,7 @@ final class TcaLanguageTest extends UnitTestCase self::assertEmpty((new TcaLanguage())->addData($input)['processedTca']['columns']['aField']['config']['items']); } - /** - * @test - */ + #[Test] public function addDataRespectsKeepItems(): void { $input = $this->getDefaultResultArray( @@ -265,9 +247,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataRespectsAddItems(): void { $input = $this->getDefaultResultArray( @@ -303,9 +283,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataRespectsRemoveItems(): void { $input = $this->getDefaultResultArray( @@ -336,9 +314,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataAddsInvalidDatabaseValue(): void { $input = $this->getDefaultResultArray([], $this->getDefaultSystemLanguages(), ['aField' => 5], ['tableName' => 'pages']); @@ -356,9 +332,7 @@ final class TcaLanguageTest extends UnitTestCase (new TcaLanguage())->addData($input)['processedTca']['columns']['aField']['config']['items'] ); } - /** - * @test - */ + #[Test] public function addDataRepsetcsConfigurationOnAddingInvalidDatabaseValue(): void { $input = $this->getDefaultResultArray( @@ -424,9 +398,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataRespectsAltLabels(): void { $input = $this->getDefaultResultArray( @@ -464,9 +436,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataRespectsAltIcons(): void { $input = $this->getDefaultResultArray( @@ -504,9 +474,7 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addDataRemovesLastItemIfDivider(): void { $input = $this->getDefaultResultArray( @@ -539,10 +507,8 @@ final class TcaLanguageTest extends UnitTestCase ); } - /** - * @test - * @dataProvider addDataAddsAllSiteLanguagesDataProvider - */ + #[DataProvider('addDataAddsAllSiteLanguagesDataProvider')] + #[Test] public function addDataAddsAllSiteLanguagesFromAllSites(array $config): void { $siteFinder = $this->createMock(SiteFinder::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRadioItemsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRadioItemsTest.php index 1106e44327bf..11010347b64d 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRadioItemsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRadioItemsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Messaging\FlashMessage; @@ -37,9 +38,7 @@ final class TcaRadioItemsTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfRadioItemsNotDefined(): void { $input = [ @@ -64,9 +63,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataKeepExistingItems(): void { $input = [ @@ -95,9 +92,7 @@ final class TcaRadioItemsTest extends UnitTestCase self::assertSame($expected, (new TcaRadioItems())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfItemsAreNoArray(): void { $input = [ @@ -125,9 +120,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfItemLabelIsNotSet(): void { $input = [ @@ -157,9 +150,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionIfItemValueIsNotSet(): void { $input = [ @@ -189,9 +180,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataTranslatesItemLabels(): void { $input = [ @@ -225,9 +214,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataCallsItemsProcFunc(): void { $input = [ @@ -270,9 +257,7 @@ final class TcaRadioItemsTest extends UnitTestCase self::assertSame('bar', $items[0]['value']); } - /** - * @test - */ + #[Test] public function addDataItemsProcFuncReceivesParameters(): void { $input = [ @@ -353,9 +338,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataItemsProcFuncEnqueuesFlashMessageOnException(): void { $input = [ @@ -419,9 +402,7 @@ final class TcaRadioItemsTest extends UnitTestCase (new TcaRadioItems())->addData($input); } - /** - * @test - */ + #[Test] public function addDataTranslatesItemLabelsFromPageTsConfig(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRecordTitleTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRecordTitleTest.php index fef5e97decdf..f2ceb48aeb8d 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRecordTitleTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaRecordTitleTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaRecordTitle; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -38,9 +40,7 @@ final class TcaRecordTitleTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function addDataThrowsExceptionWithMissingLabel(): void { $input = [ @@ -55,9 +55,7 @@ final class TcaRecordTitleTest extends UnitTestCase (new TcaRecordTitle())->addData($input); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForLabelUserFunction(): void { $input = [ @@ -81,9 +79,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForFormattedLabelUserFunction(): void { $input = [ @@ -113,9 +109,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForInlineChildWithForeignLabel(): void { $input = [ @@ -149,9 +143,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataOverridesRecordTitleWithFormattedLabelUserFuncForInlineChildWithForeignLabel(): void { $input = [ @@ -186,9 +178,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForInlineChildWithSymmetricLabel(): void { $input = [ @@ -219,9 +209,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForUid(): void { $input = [ @@ -350,10 +338,8 @@ final class TcaRecordTitleTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addDataReturnsRecordTitleForDatetimeTypeDataProvider - */ + #[DataProvider('addDataReturnsRecordTitleForDatetimeTypeDataProvider')] + #[Test] public function addDataReturnsRecordTitleForDatetimeType(array $fieldConfig, string $fieldValue, string $expectedTitle): void { $input = [ @@ -386,9 +372,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleWithAlternativeLabel(): void { $input = [ @@ -424,9 +408,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleWithMultipleAlternativeLabels(): void { $input = [ @@ -468,9 +450,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleWithForcedAlternativeLabel(): void { $input = [ @@ -507,9 +487,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleWithMultipleForcedAlternativeLabels(): void { $input = [ @@ -552,9 +530,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleIgnoresEmptyAlternativeLabels(): void { $input = [ @@ -597,9 +573,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForRadioType(): void { $input = [ @@ -633,9 +607,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForInlineType(): void { $input = [ @@ -744,10 +716,8 @@ final class TcaRecordTitleTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addDataReturnsRecordTitleForGroupTypeDataProvider - */ + #[DataProvider('addDataReturnsRecordTitleForGroupTypeDataProvider')] + #[Test] public function addDataReturnsRecordTitleForGroupType(array $fieldConfig, array $fieldValue, string $expectedTitle): void { $input = [ @@ -783,9 +753,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForGroupTypeDb(): void { $input = [ @@ -826,9 +794,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForSingleCheckboxType(): void { $input = [ @@ -860,9 +826,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForArrayCheckboxType(): void { $input = [ @@ -899,9 +863,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsEmptyRecordTitleForFlexType(): void { $input = [ @@ -957,9 +919,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsRecordTitleForSelectType(): void { $input = [ @@ -995,9 +955,7 @@ final class TcaRecordTitleTest extends UnitTestCase self::assertSame($expected, (new TcaRecordTitle())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataReturnsStrippedAndTrimmedValueForTextType(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSlugTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSlugTest.php index b17b691d1b49..71fde9e60fd4 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSlugTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSlugTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaSlug; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -349,10 +351,8 @@ final class TcaSlugTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resultArrayDataProvider - */ + #[DataProvider('resultArrayDataProvider')] + #[Test] public function getSlugPrefixForDefinedLanguagesAndUserFunc(array $input, array $expected): void { self::assertEquals($expected, $this->subject->addData($input)); diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTextTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTextTest.php index 9846565ee145..f261dabb51ab 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTextTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTextTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaText; use TYPO3\CMS\Core\Configuration\Richtext; use TYPO3\CMS\Core\Html\RteHtmlParser; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaTextTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addDataSetsRichtextConfigurationAndTransformsContent(): void { $input = [ @@ -100,9 +99,7 @@ final class TcaTextTest extends UnitTestCase self::assertSame($expected, (new TcaText())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataDoesNotTransformsContentWhenRichtextIsNotSet(): void { $input = [ @@ -128,9 +125,7 @@ final class TcaTextTest extends UnitTestCase self::assertSame($expected, (new TcaText())->addData($input)); } - /** - * @test - */ + #[Test] public function addDataDoesNotTransformsContentWhenRichtextIsDisabledInConfiguration(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTypesShowitemTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTypesShowitemTest.php index 49246cf19368..778520051870 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTypesShowitemTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaTypesShowitemTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaTypesShowitem; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class TcaTypesShowitemTest extends UnitTestCase $this->subject = new TcaTypesShowitem(); } - /** - * @test - */ + #[Test] public function addDataRemovesTypeRelatedFields(): void { $input = [ @@ -58,9 +57,7 @@ final class TcaTypesShowitemTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataInsertsMatchingSubtypeAddListAfterSubtypeValueField(): void { $input = [ @@ -96,9 +93,7 @@ final class TcaTypesShowitemTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataInsertsMatchingSubtypeAddListAfterPaletteWithSubtypeValueField(): void { $input = [ @@ -144,9 +139,7 @@ final class TcaTypesShowitemTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRemovesMatchingSubtypeExcludeListItems(): void { $input = [ @@ -182,9 +175,7 @@ final class TcaTypesShowitemTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRemovesMatchingSubtypeExcludeListItemsFromPalettes(): void { $input = [ @@ -230,9 +221,7 @@ final class TcaTypesShowitemTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRemovesMatchingBitmaskExcludeListItems(): void { $input = [ @@ -269,9 +258,7 @@ final class TcaTypesShowitemTest extends UnitTestCase self::assertSame($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataRemovesMatchingBitmaskExcludeListItemsFromPalettes(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaUuidTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaUuidTest.php index ba29b921b709..9339bfdf959e 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaUuidTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaUuidTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Uid\Uuid; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaUuid; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -84,9 +85,7 @@ final class TcaUuidTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function addDataDoesOnlyHandleTypeUuid(): void { $input = [ @@ -109,9 +108,7 @@ final class TcaUuidTest extends UnitTestCase self::assertSame('', (new TcaUuid())->addData($input)['databaseRow']['aField']); } - /** - * @test - */ + #[Test] public function addDataDoesNotHandleFieldsWithValidUuidValue(): void { $input = [ @@ -134,9 +131,7 @@ final class TcaUuidTest extends UnitTestCase self::assertSame('b3190536-1431-453e-afbb-25b8c5022513', (new TcaUuid())->addData($input)['databaseRow']['aField']); } - /** - * @test - */ + #[Test] public function addDataCreatesValidUuidValueForInvalidUuid(): void { $input = [ @@ -160,9 +155,7 @@ final class TcaUuidTest extends UnitTestCase self::assertTrue(Uuid::isValid((new TcaUuid())->addData($input)['databaseRow']['aField'])); } - /** - * @test - */ + #[Test] public function addDataCreatesValidUuidValueForEmptyField(): void { $input = [ @@ -186,9 +179,7 @@ final class TcaUuidTest extends UnitTestCase self::assertTrue(Uuid::isValid((new TcaUuid())->addData($input)['databaseRow']['aField'])); } - /** - * @test - */ + #[Test] public function addDataCreatesValidUuidValueWithDefinedVersion(): void { $input = [ diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/UserTsConfigTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/UserTsConfigTest.php index 13ce205ed0c5..d613ed2b050a 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/UserTsConfigTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/UserTsConfigTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\FormDataProvider\UserTsConfig; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -31,9 +32,7 @@ final class UserTsConfigTest extends UnitTestCase $this->subject = new UserTsConfig(); } - /** - * @test - */ + #[Test] public function addDataSetsUserTypoScriptInResult(): void { $expected = ['foo']; diff --git a/typo3/sysext/backend/Tests/Unit/Form/InlineStackProcessorTest.php b/typo3/sysext/backend/Tests/Unit/Form/InlineStackProcessorTest.php index 1cde3476a094..611f3745d7dd 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/InlineStackProcessorTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/InlineStackProcessorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\InlineStackProcessor; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; @@ -257,10 +259,8 @@ final class InlineStackProcessorTest extends UnitTestCase ]; } - /** - * @dataProvider structureStringIsParsedDataProvider - * @test - */ + #[DataProvider('structureStringIsParsedDataProvider')] + #[Test] public function initializeByParsingDomObjectIdStringParsesStructureString(string $string, array $expectedInlineStructure, array $_): void { $subject = $this->getAccessibleMock(InlineStackProcessor::class, null); @@ -269,10 +269,8 @@ final class InlineStackProcessorTest extends UnitTestCase self::assertEquals($expectedInlineStructure, $structure); } - /** - * @dataProvider structureStringIsParsedDataProvider - * @test - */ + #[DataProvider('structureStringIsParsedDataProvider')] + #[Test] public function getCurrentStructureFormPrefixReturnsExpectedStringAfterInitializationByStructureString(string $string, array $_, array $expectedFormName): void { $subject = new InlineStackProcessor(); @@ -280,10 +278,8 @@ final class InlineStackProcessorTest extends UnitTestCase self::assertEquals($expectedFormName['form'], $subject->getCurrentStructureFormPrefix()); } - /** - * @dataProvider structureStringIsParsedDataProvider - * @test - */ + #[DataProvider('structureStringIsParsedDataProvider')] + #[Test] public function getCurrentStructureDomObjectIdPrefixReturnsExpectedStringAfterInitializationByStructureString(string $string, array $_, array $expectedFormName): void { $subject = new InlineStackProcessor(); diff --git a/typo3/sysext/backend/Tests/Unit/Form/NodeExpansion/FieldControlTest.php b/typo3/sysext/backend/Tests/Unit/Form/NodeExpansion/FieldControlTest.php index 55eb6ab1f95b..29d3030339ad 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/NodeExpansion/FieldControlTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/NodeExpansion/FieldControlTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form\NodeExpansion; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\AbstractNode; use TYPO3\CMS\Backend\Form\NodeExpansion\FieldControl; use TYPO3\CMS\Backend\Form\NodeFactory; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FieldControlTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderMergesResultOfSingleControls(): void { $iconFactoryMock = $this->createMock(IconFactory::class); diff --git a/typo3/sysext/backend/Tests/Unit/Form/NodeFactoryTest.php b/typo3/sysext/backend/Tests/Unit/Form/NodeFactoryTest.php index eb1089eddf30..6f045182904a 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/NodeFactoryTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/NodeFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Form; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Form\Element\SelectSingleElement; use TYPO3\CMS\Backend\Form\Element\SelectTreeElement; use TYPO3\CMS\Backend\Form\Element\UnknownElement; @@ -31,9 +32,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class NodeFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfOverrideMissesNodeNameKey(): void { $this->expectException(Exception::class); @@ -47,9 +46,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfOverrideMissesPriorityKey(): void { $this->expectException(Exception::class); @@ -63,9 +60,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfOverrideMissesClassKey(): void { $this->expectException(Exception::class); @@ -79,9 +74,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfOverridePriorityIsLowerThanZero(): void { $this->expectException(Exception::class); @@ -95,9 +88,7 @@ final class NodeFactoryTest extends UnitTestCase ]; new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfOverridePriorityIsHigherThanHundred(): void { $this->expectException(Exception::class); @@ -112,9 +103,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfOverrideTwoNodesWithSamePriorityAndSameNodeNameAreRegistered(): void { $this->expectException(Exception::class); @@ -134,9 +123,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfResolverMissesNodeNameKey(): void { $this->expectException(Exception::class); @@ -150,9 +137,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfResolverMissesPriorityKey(): void { $this->expectException(Exception::class); @@ -166,9 +151,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfResolverMissesClassKey(): void { $this->expectException(Exception::class); @@ -182,9 +165,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfResolverPriorityIsLowerThanZero(): void { $this->expectException(Exception::class); @@ -198,9 +179,7 @@ final class NodeFactoryTest extends UnitTestCase ]; new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionIfResolverPriorityIsHigherThanHundred(): void { $this->expectException(Exception::class); @@ -215,9 +194,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfResolverTwoNodesWithSamePriorityAndSameNodeNameAreRegistered(): void { $this->expectException(Exception::class); @@ -237,9 +214,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function constructorThrowsNoExceptionIfResolverWithSamePriorityButDifferentNodeNameAreRegistered(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['nodeResolver'] = [ @@ -257,9 +232,7 @@ final class NodeFactoryTest extends UnitTestCase new NodeFactory(); } - /** - * @test - */ + #[Test] public function createThrowsExceptionIfRenderTypeIsNotGiven(): void { $this->expectException(Exception::class); @@ -268,9 +241,7 @@ final class NodeFactoryTest extends UnitTestCase $subject->create([]); } - /** - * @test - */ + #[Test] public function createReturnsInstanceOfUnknownElementIfTypeIsNotRegistered(): void { $unknownElementMock = $this->createMock(UnknownElement::class); @@ -279,9 +250,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertSame($unknownElementMock, $subject->create(['renderType' => 'foo'])); } - /** - * @test - */ + #[Test] public function createReturnsInstanceOfSelectTreeElementIfNeeded(): void { $data = [ @@ -294,9 +263,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertSame($selectTreeElementMock, $subject->create($data)); } - /** - * @test - */ + #[Test] public function createReturnsInstanceOfSelectSingleElementIfNeeded(): void { $data = [ @@ -314,9 +281,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertSame($selectSingleElementMock, $subject->create($data)); } - /** - * @test - */ + #[Test] public function createInstantiatesNewRegisteredElement(): void { $data = ['renderType' => 'foo']; @@ -332,9 +297,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertInstanceOf(FooElement::class, ($subject->create($data))); } - /** - * @test - */ + #[Test] public function createInstantiatesElementRegisteredWithHigherPriorityWithOneGivenOrder(): void { $data = ['renderType' => 'foo']; @@ -354,9 +317,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertInstanceOf(BarElement::class, ($subject->create($data))); } - /** - * @test - */ + #[Test] public function createInstantiatesElementRegisteredWithHigherPriorityWithOtherGivenOrder(): void { $data = ['renderType' => 'foo']; @@ -376,9 +337,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertInstanceOf(FooElement::class, ($subject->create($data))); } - /** - * @test - */ + #[Test] public function createInstantiatesResolverWithHighestPriorityFirstWithOneGivenOrder(): void { $data = ['renderType' => 'foo']; @@ -406,9 +365,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertInstanceOf(BarElement::class, ($subject->create($data))); } - /** - * @test - */ + #[Test] public function createInstantiatesResolverWithHighestPriorityFirstWithOtherGivenOrder(): void { $data = ['renderType' => 'foo']; @@ -436,9 +393,7 @@ final class NodeFactoryTest extends UnitTestCase self::assertInstanceOf(BarElement::class, ($subject->create($data))); } - /** - * @test - */ + #[Test] public function createInstantiatesNodeClassReturnedByResolver(): void { $data = ['renderType' => 'foo']; diff --git a/typo3/sysext/backend/Tests/Unit/Http/RouteDispatcherTest.php b/typo3/sysext/backend/Tests/Unit/Http/RouteDispatcherTest.php index 46e085ba73da..460169442aec 100644 --- a/typo3/sysext/backend/Tests/Unit/Http/RouteDispatcherTest.php +++ b/typo3/sysext/backend/Tests/Unit/Http/RouteDispatcherTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Backend\Http\RouteDispatcher; @@ -41,9 +42,7 @@ final class RouteDispatcherTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function dispatchThrowsExceptionIfTargetIsNotCallable(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -66,9 +65,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchCallsTargetIfTargetIsArray(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -95,9 +92,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchCallsTargetIfTargetIsClosure(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -123,9 +118,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchCallsTargetIfTargetIsClassImplementingInvoke(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -149,9 +142,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchCallsTargetIfTargetIsInContainer(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -176,9 +167,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchThrowsExceptionIfTargetWithClassNameOnlyDoesNotImplementInvoke(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -202,9 +191,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchCallsClassMethodCombinationGivenAsString(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); @@ -228,9 +215,7 @@ final class RouteDispatcherTest extends UnitTestCase $subject->dispatch($request); } - /** - * @test - */ + #[Test] public function dispatchCallsStaticClassMethodCombinationGivenAsString(): void { $formProtectionMock = $this->createMock(AbstractFormProtection::class); diff --git a/typo3/sysext/backend/Tests/Unit/LoginProvider/LoginProviderResolverTest.php b/typo3/sysext/backend/Tests/Unit/LoginProvider/LoginProviderResolverTest.php index a19f4d941de9..4c4bb646f557 100644 --- a/typo3/sysext/backend/Tests/Unit/LoginProvider/LoginProviderResolverTest.php +++ b/typo3/sysext/backend/Tests/Unit/LoginProvider/LoginProviderResolverTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\LoginProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\LoginProvider\LoginProviderResolver; use TYPO3\CMS\Backend\LoginProvider\UsernamePasswordLoginProvider; use TYPO3\CMS\Core\Http\ServerRequest; @@ -31,9 +32,7 @@ final class LoginProviderResolverTest extends UnitTestCase unset($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['loginProviders']); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsMissingProviderConfiguration(): void { $this->expectException(\RuntimeException::class); @@ -41,9 +40,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsNonArrayProviderConfiguration(): void { $this->expectException(\RuntimeException::class); @@ -52,9 +49,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsIfNoProviderIsRegistered(): void { $this->expectException(\RuntimeException::class); @@ -63,9 +58,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsMissingConfigurationForProvider(): void { $this->expectException(\RuntimeException::class); @@ -76,9 +69,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsWrongProvider(): void { $this->expectException(\RuntimeException::class); @@ -91,9 +82,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsMissingLabel(): void { $this->expectException(\RuntimeException::class); @@ -108,9 +97,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsMissingIconClass(): void { $this->expectException(\RuntimeException::class); @@ -125,9 +112,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function validateAndSortLoginProvidersDetectsMissingSorting(): void { $this->expectException(\RuntimeException::class); @@ -142,9 +127,7 @@ final class LoginProviderResolverTest extends UnitTestCase new LoginProviderResolver(); } - /** - * @test - */ + #[Test] public function loginProviderResolverRespectsConstructorArgument(): void { $loginProviders = [ @@ -165,9 +148,7 @@ final class LoginProviderResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function hasLoginProviderTest(): void { $subject = (new LoginProviderResolver($this->getDefaultLoginProviders())); @@ -177,9 +158,7 @@ final class LoginProviderResolverTest extends UnitTestCase self::assertTrue($subject->hasLoginProvider('987654321')); } - /** - * @test - */ + #[Test] public function getLoginProviderConfigurationByIdentifierTest(): void { $subject = (new LoginProviderResolver($this->getDefaultLoginProviders())); @@ -191,9 +170,7 @@ final class LoginProviderResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getLoginProvidersTest(): void { $resolvedLoginProviders = (new LoginProviderResolver($this->getDefaultLoginProviders()))->getLoginProviders(); @@ -203,18 +180,14 @@ final class LoginProviderResolverTest extends UnitTestCase self::assertEquals('bar', array_shift($resolvedLoginProviders)['label']); } - /** - * @test - */ + #[Test] public function getPrimaryLoginProviderIdentifierTest(): void { $subject = (new LoginProviderResolver($this->getDefaultLoginProviders())); self::assertEquals('987654321', $subject->getPrimaryLoginProviderIdentifier()); } - /** - * @test - */ + #[Test] public function resolveLoginProviderIdentifierFromRequestTest(): void { $subject = (new LoginProviderResolver($this->getDefaultLoginProviders())); diff --git a/typo3/sysext/backend/Tests/Unit/Module/ModuleFactoryTest.php b/typo3/sysext/backend/Tests/Unit/Module/ModuleFactoryTest.php index c0e78f874163..c2913f7f2811 100644 --- a/typo3/sysext/backend/Tests/Unit/Module/ModuleFactoryTest.php +++ b/typo3/sysext/backend/Tests/Unit/Module/ModuleFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Module; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Module\ModuleFactory; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\Imaging\IconRegistry; @@ -35,9 +36,7 @@ final class ModuleFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function adaptAliasMappingFromModuleConfigurationMapsAliasesProperly(): void { $moduleConfiguration = [ diff --git a/typo3/sysext/backend/Tests/Unit/Module/ModuleRegistryTest.php b/typo3/sysext/backend/Tests/Unit/Module/ModuleRegistryTest.php index 41cefd4ef77f..f258834a56ff 100644 --- a/typo3/sysext/backend/Tests/Unit/Module/ModuleRegistryTest.php +++ b/typo3/sysext/backend/Tests/Unit/Module/ModuleRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Module; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Module\ModuleFactory; use TYPO3\CMS\Backend\Module\ModuleInterface; use TYPO3\CMS\Backend\Module\ModuleRegistry; @@ -38,9 +39,7 @@ final class ModuleRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function throwsExceptionOnDuplicateModuleIdentifier(): void { $this->expectException(\LogicException::class); @@ -52,9 +51,7 @@ final class ModuleRegistryTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function throwsExceptionOnNonExistingModuleIdentifier(): void { $this->expectException(\InvalidArgumentException::class); @@ -63,9 +60,7 @@ final class ModuleRegistryTest extends UnitTestCase (new ModuleRegistry([]))->getModule('a_module'); } - /** - * @test - */ + #[Test] public function accessRegisteredModulesWork(): void { $aModule = $this->createModule('a_module', ['aliases' => ['a_old_module']]); @@ -82,9 +77,7 @@ final class ModuleRegistryTest extends UnitTestCase self::assertEquals(['a_old_module' => 'a_module'], $registry->getModuleAliases()); } - /** - * @test - */ + #[Test] public function moduleAliasOverwriteStrategy(): void { $aModule = $this->createModule('a_module', ['aliases' => ['duplicate_alias']]); @@ -96,9 +89,7 @@ final class ModuleRegistryTest extends UnitTestCase self::assertEquals(['duplicate_alias' => 'b_module'], $registry->getModuleAliases()); } - /** - * @test - */ + #[Test] public function addModuleAppliesSortingAndHierarchy(): void { $modules = $random = [ @@ -183,9 +174,7 @@ final class ModuleRegistryTest extends UnitTestCase self::assertEquals('b', $registry->getModule('b_a_d_c')->getParentModule()->getParentModule()->getParentIdentifier()); } - /** - * @test - */ + #[Test] public function keepsInputOrderWithoutPositionDefinition(): void { self::assertEquals( @@ -200,9 +189,7 @@ final class ModuleRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function firstModuleDeclaringTopWillBeOnTop(): void { self::assertEquals( @@ -218,9 +205,7 @@ final class ModuleRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function subModulesAndDependencyChainOverruleFirstLevelDependencies(): void { self::assertEquals( @@ -238,9 +223,7 @@ final class ModuleRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function dependencyChainsAreRespected(): void { self::assertEquals( diff --git a/typo3/sysext/backend/Tests/Unit/Preview/StandardPreviewRendererResolverTest.php b/typo3/sysext/backend/Tests/Unit/Preview/StandardPreviewRendererResolverTest.php index 94772a4c392a..287708448a94 100644 --- a/typo3/sysext/backend/Tests/Unit/Preview/StandardPreviewRendererResolverTest.php +++ b/typo3/sysext/backend/Tests/Unit/Preview/StandardPreviewRendererResolverTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Preview; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Preview\PreviewRendererInterface; use TYPO3\CMS\Backend\Preview\StandardContentPreviewRenderer; use TYPO3\CMS\Backend\Preview\StandardPreviewRendererResolver; @@ -52,9 +53,7 @@ final class StandardPreviewRendererResolverTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function resolveStandardContentPreviewRenderer(): void { $table = 'tt_content'; @@ -68,9 +67,7 @@ final class StandardPreviewRendererResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveCustomContentPreviewRenderer(): void { $customPreviewRenderer = $this->getMockBuilder(PreviewRendererInterface::class)->getMock(); @@ -88,9 +85,7 @@ final class StandardPreviewRendererResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveStandardContentPreviewRendererWithCustomPreviewRendererDefined(): void { $customPreviewRenderer = $this->getMockBuilder(PreviewRendererInterface::class)->getMock(); @@ -108,9 +103,7 @@ final class StandardPreviewRendererResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveStandardContentPreviewRendererWithGeneralPreviewRendererDefinedForAllSubTypes(): void { $customPreviewRenderer = $this->getMockBuilder(PreviewRendererInterface::class)->getMock(); @@ -128,9 +121,7 @@ final class StandardPreviewRendererResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getExceptionWithNoPreviewRendererDefined(): void { $GLOBALS['TCA']['pages']['ctrl'] = []; diff --git a/typo3/sysext/backend/Tests/Unit/Routing/PreviewUriBuilderTest.php b/typo3/sysext/backend/Tests/Unit/Routing/PreviewUriBuilderTest.php index 37c003bffc51..5340e641d8d3 100644 --- a/typo3/sysext/backend/Tests/Unit/Routing/PreviewUriBuilderTest.php +++ b/typo3/sysext/backend/Tests/Unit/Routing/PreviewUriBuilderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Routing; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Backend\Routing\Event\BeforePagePreviewUriGeneratedEvent; use TYPO3\CMS\Backend\Routing\PreviewUriBuilder; @@ -28,9 +29,7 @@ final class PreviewUriBuilderTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function attributesContainAlternativeUri(): void { $eventDispatcher = new class () implements EventDispatcherInterface { diff --git a/typo3/sysext/backend/Tests/Unit/Routing/UriBuilderTest.php b/typo3/sysext/backend/Tests/Unit/Routing/UriBuilderTest.php index b459f926a618..172793addffd 100644 --- a/typo3/sysext/backend/Tests/Unit/Routing/UriBuilderTest.php +++ b/typo3/sysext/backend/Tests/Unit/Routing/UriBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Routing; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Routing\Exception\RouteNotFoundException; use TYPO3\CMS\Backend\Routing\Route; use TYPO3\CMS\Backend\Routing\Router; @@ -72,10 +74,8 @@ final class UriBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validRoutesAreBuiltDataProvider - */ + #[DataProvider('validRoutesAreBuiltDataProvider')] + #[Test] public function validRoutesAreBuilt( array $routes, string $routeName, @@ -98,9 +98,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectation, $uri->__toString()); } - /** - * @test - */ + #[Test] public function nonExistingRouteThrowsException(): void { $formProtectionFactory = $this->createMock(FormProtectionFactory::class); diff --git a/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/MutableSearchDemandTest.php b/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/MutableSearchDemandTest.php index ed4a9dab1e3e..6e2b87f47ac0 100644 --- a/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/MutableSearchDemandTest.php +++ b/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/MutableSearchDemandTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Search\LiveSearch\SearchDemand; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Backend\Search\LiveSearch\DatabaseRecordProvider; use TYPO3\CMS\Backend\Search\LiveSearch\SearchDemand\DemandProperty; @@ -26,9 +27,7 @@ use TYPO3\CMS\Core\Http\ServerRequest; final class MutableSearchDemandTest extends TestCase { - /** - * @test - */ + #[Test] public function setPropertyWorksAsExpected(): void { $query = 'foo'; @@ -39,9 +38,7 @@ final class MutableSearchDemandTest extends TestCase self::assertSame($query, $mutableSearchDemand->getProperty(DemandPropertyName::query)->getValue()); } - /** - * @test - */ + #[Test] public function consecutiveSetPropertyCallWithSameNameWorksAsExpected(): void { $limit = 42; @@ -54,9 +51,7 @@ final class MutableSearchDemandTest extends TestCase self::assertSame($limit, $mutableSearchDemand->getProperty(DemandPropertyName::limit)->getValue()); } - /** - * @test - */ + #[Test] public function freezeSetsSameDemandProperties(): void { $mutableSearchDemand = new MutableSearchDemand([ @@ -67,9 +62,7 @@ final class MutableSearchDemandTest extends TestCase self::assertSame($mutableSearchDemand->getProperties(), $searchDemand->getProperties()); } - /** - * @test - */ + #[Test] public function fromRequestCreatesExpectedDemand(): void { $query = 'Karl Ranseier'; diff --git a/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/SearchDemandTest.php b/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/SearchDemandTest.php index 61efa1b2b535..98818622f3ac 100644 --- a/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/SearchDemandTest.php +++ b/typo3/sysext/backend/Tests/Unit/Search/LiveSearch/SearchDemand/SearchDemandTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Search\LiveSearch\SearchDemand; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Backend\Search\LiveSearch\DatabaseRecordProvider; use TYPO3\CMS\Backend\Search\LiveSearch\SearchDemand\DemandProperty; @@ -26,9 +27,7 @@ use TYPO3\CMS\Core\Http\ServerRequest; final class SearchDemandTest extends TestCase { - /** - * @test - */ + #[Test] public function getPropertyReturnsValueAsExpected(): void { $query = 'foo'; @@ -43,9 +42,7 @@ final class SearchDemandTest extends TestCase self::assertSame($limit, $searchDemand->getProperty(DemandPropertyName::limit)->getValue()); } - /** - * @test - */ + #[Test] public function fromRequestCreatesExpectedDemand(): void { $query = 'Karl Ranseier'; diff --git a/typo3/sysext/backend/Tests/Unit/Security/EmailLoginNotificationTest.php b/typo3/sysext/backend/Tests/Unit/Security/EmailLoginNotificationTest.php index 7054358e5d69..0814523b5f8d 100644 --- a/typo3/sysext/backend/Tests/Unit/Security/EmailLoginNotificationTest.php +++ b/typo3/sysext/backend/Tests/Unit/Security/EmailLoginNotificationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Security; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Security\EmailLoginNotification; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -28,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class EmailLoginNotificationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function emailAtLoginSendsAnEmailIfUserHasValidEmailAndOptin(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -52,9 +51,7 @@ final class EmailLoginNotificationTest extends UnitTestCase $subject->emailAtLogin(new AfterUserLoggedInEvent($backendUser)); } - /** - * @test - */ + #[Test] public function emailAtLoginDoesNotSendAnEmailIfUserHasNoOptin(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -76,9 +73,7 @@ final class EmailLoginNotificationTest extends UnitTestCase // no additional assertion here, as the test would fail due to missing mail mocking if it actually tried to send an email } - /** - * @test - */ + #[Test] public function emailAtLoginDoesNotSendAnEmailIfUserHasInvalidEmail(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -100,9 +95,7 @@ final class EmailLoginNotificationTest extends UnitTestCase // no additional assertion here, as the test would fail due to missing mail mocking if it actually tried to send an email } - /** - * @test - */ + #[Test] public function emailAtLoginSendsEmailToCustomEmailIfAdminWarningIsEnabled(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -126,9 +119,7 @@ final class EmailLoginNotificationTest extends UnitTestCase $subject->emailAtLogin(new AfterUserLoggedInEvent($backendUser)); } - /** - * @test - */ + #[Test] public function emailAtLoginSendsEmailToCustomEmailIfRegularWarningIsEnabled(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -152,9 +143,7 @@ final class EmailLoginNotificationTest extends UnitTestCase $subject->emailAtLogin(new AfterUserLoggedInEvent($backendUser)); } - /** - * @test - */ + #[Test] public function emailAtLoginSendsEmailToCustomEmailIfRegularWarningIsEnabledAndNoAdminIsLoggingIn(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -178,9 +167,7 @@ final class EmailLoginNotificationTest extends UnitTestCase $subject->emailAtLogin(new AfterUserLoggedInEvent($backendUser)); } - /** - * @test - */ + #[Test] public function emailAtLoginSendsNoEmailIfAdminWarningIsEnabledAndNoAdminIsLoggingIn(): void { $_SERVER['HTTP_HOST'] = 'localhost'; diff --git a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/FullyRenderedButtonTest.php b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/FullyRenderedButtonTest.php index 083425cd33e7..54d416c4cff9 100644 --- a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/FullyRenderedButtonTest.php +++ b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/FullyRenderedButtonTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Template\Components\Button; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Template\Components\Buttons\FullyRenderedButton; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -24,9 +25,8 @@ final class FullyRenderedButtonTest extends UnitTestCase { /** * Try to validate an empty button - * - * @test */ + #[Test] public function isButtonValidBlankCallExpectFalse(): void { $button = new FullyRenderedButton(); @@ -36,9 +36,8 @@ final class FullyRenderedButtonTest extends UnitTestCase /** * Tests a valid HTML Button - * - * @test */ + #[Test] public function isButtonValidHtmlSourceGivenExpectTrue(): void { $button = new FullyRenderedButton(); diff --git a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/InputButtonTest.php b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/InputButtonTest.php index 668e9e61b91e..273975482401 100644 --- a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/InputButtonTest.php +++ b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/InputButtonTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Template\Components\Button; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Template\Components\Buttons\InputButton; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +26,8 @@ final class InputButtonTest extends UnitTestCase { /** * Try to validate an empty button - * - * @test */ + #[Test] public function isButtonValidBlankCallExpectFalse(): void { $button = new InputButton(); @@ -37,9 +37,8 @@ final class InputButtonTest extends UnitTestCase /** * Omit the Icon - * - * @test */ + #[Test] public function isButtonValidOmittedIconExpectFalse(): void { $button = new InputButton(); @@ -50,9 +49,8 @@ final class InputButtonTest extends UnitTestCase /** * Omit the title - * - * @test */ + #[Test] public function isButtonValidOmittedTitleExpectFalse(): void { $button = new InputButton(); @@ -64,9 +62,8 @@ final class InputButtonTest extends UnitTestCase /** * Omit the name - * - * @test */ + #[Test] public function isButtonValidOmittedNameExpectFalse(): void { $button = new InputButton(); @@ -78,9 +75,8 @@ final class InputButtonTest extends UnitTestCase /** * Omit the Value - * - * @test */ + #[Test] public function isButtonValidOmittedValueExpectFalse(): void { $button = new InputButton(); @@ -92,9 +88,8 @@ final class InputButtonTest extends UnitTestCase /** * Set a 100% valid button - * - * @test */ + #[Test] public function isButtonValidAllValuesSetExpectTrue(): void { $button = new InputButton(); diff --git a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/LinkButtonTest.php b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/LinkButtonTest.php index d7acf18d2dc3..9c47b821419c 100644 --- a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/LinkButtonTest.php +++ b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/LinkButtonTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Template\Components\Button; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Template\Components\Buttons\LinkButton; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +26,8 @@ final class LinkButtonTest extends UnitTestCase { /** * Try validating an empty button - * - * @test */ + #[Test] public function isButtonValidBlankCallExpectFalse(): void { $button = new LinkButton(); @@ -37,9 +37,8 @@ final class LinkButtonTest extends UnitTestCase /** * Omit the Icon - * - * @test */ + #[Test] public function isButtonValidOmittedIconExpectFalse(): void { $button = new LinkButton(); @@ -50,9 +49,8 @@ final class LinkButtonTest extends UnitTestCase /** * Omit the title - * - * @test */ + #[Test] public function isButtonValidOmittedTitleExpectFalse(): void { $button = new LinkButton(); @@ -64,9 +62,8 @@ final class LinkButtonTest extends UnitTestCase /** * Omit Href - * - * @test */ + #[Test] public function isButtonValidOmittedHrefExpectFalse(): void { $button = new LinkButton(); @@ -78,9 +75,8 @@ final class LinkButtonTest extends UnitTestCase /** * Send a valid button - * - * @test */ + #[Test] public function isButtonValidAllValuesSetExpectTrue(): void { $button = new LinkButton(); diff --git a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/SplitButtonTest.php b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/SplitButtonTest.php index 673abbc364e2..838f35e0c3dd 100644 --- a/typo3/sysext/backend/Tests/Unit/Template/Components/Button/SplitButtonTest.php +++ b/typo3/sysext/backend/Tests/Unit/Template/Components/Button/SplitButtonTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Template\Components\Button; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Template\Components\Buttons\LinkButton; use TYPO3\CMS\Backend\Template\Components\Buttons\SplitButton; use TYPO3\CMS\Core\Imaging\Icon; @@ -29,9 +30,8 @@ final class SplitButtonTest extends UnitTestCase { /** * Try to validate an empty button - * - * @test */ + #[Test] public function isButtonValidBlankCallExpectFalse(): void { $button = new SplitButton(); @@ -41,9 +41,8 @@ final class SplitButtonTest extends UnitTestCase /** * Try adding an invalid button to a splitButton - * - * @test */ + #[Test] public function isButtonValidInvalidButtonGivenExpectFalse(): void { $this->expectException(\InvalidArgumentException::class); @@ -59,9 +58,8 @@ final class SplitButtonTest extends UnitTestCase /** * Try to add multiple primary actions - * - * @test */ + #[Test] public function isButtonValidBrokenSetupMultiplePrimaryActionsGivenExpectFalse(): void { $this->expectException(\InvalidArgumentException::class); @@ -83,9 +81,8 @@ final class SplitButtonTest extends UnitTestCase /** * Try to add an invalid button as second parameter - * - * @test */ + #[Test] public function isButtonValidBrokenSetupInvalidButtonAsSecondParametersGivenExpectFalse(): void { $this->expectException(\InvalidArgumentException::class); @@ -107,9 +104,8 @@ final class SplitButtonTest extends UnitTestCase /** * Send in a valid button - * - * @test */ + #[Test] public function isButtonValidValidSetupExpectTrue(): void { $button = new SplitButton(); diff --git a/typo3/sysext/backend/Tests/Unit/Template/Components/Menu/MenuItemTest.php b/typo3/sysext/backend/Tests/Unit/Template/Components/Menu/MenuItemTest.php index 0d62314f5e98..f14aec2804e9 100644 --- a/typo3/sysext/backend/Tests/Unit/Template/Components/Menu/MenuItemTest.php +++ b/typo3/sysext/backend/Tests/Unit/Template/Components/Menu/MenuItemTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Template\Components\Menu; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Template\Components\Menu\MenuItem; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -24,9 +25,8 @@ final class MenuItemTest extends UnitTestCase { /** * Try a blank menu Item - * - * @test */ + #[Test] public function isMenuItemValidBlankCallExpectFalse(): void { $menuItem = new MenuItem(); @@ -36,9 +36,8 @@ final class MenuItemTest extends UnitTestCase /** * Try omitting the title and a Href - * - * @test */ + #[Test] public function isMenuItemValidOmittedHrefAndRouteExpectFalse(): void { $menuItem = new MenuItem(); @@ -49,9 +48,8 @@ final class MenuItemTest extends UnitTestCase /** * Try omitting the title - * - * @test */ + #[Test] public function isMenuItemValidOmittedTitleExpectFalse(): void { $menuItem = new MenuItem(); @@ -62,9 +60,8 @@ final class MenuItemTest extends UnitTestCase /** * Set a valid title and href - * - * @test */ + #[Test] public function isMenuItemValidSetValidHrefAndTitleExpectTrue(): void { $menuItem = new MenuItem(); diff --git a/typo3/sysext/backend/Tests/Unit/Template/Components/MenuTest.php b/typo3/sysext/backend/Tests/Unit/Template/Components/MenuTest.php index f4a9c715181b..cf3ecae643c7 100644 --- a/typo3/sysext/backend/Tests/Unit/Template/Components/MenuTest.php +++ b/typo3/sysext/backend/Tests/Unit/Template/Components/MenuTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Template\Components; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Template\Components\Menu\Menu; use TYPO3\CMS\Backend\Template\Components\MenuRegistry; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +26,8 @@ final class MenuTest extends UnitTestCase { /** * Try setting an empty menu - * - * @test */ + #[Test] public function isMenuValidBlankCallExpectFalse(): void { $menu = new Menu(); @@ -37,9 +37,8 @@ final class MenuTest extends UnitTestCase /** * Set a valid menu - * - * @test */ + #[Test] public function isMenuValidValidMenuWithDefaultsExpectTrue(): void { $menu = new Menu(); @@ -50,9 +49,8 @@ final class MenuTest extends UnitTestCase /** * Set a valid menu - * - * @test */ + #[Test] public function makeMenuAllGoodExpectTrue(): void { $menuRegistry = new MenuRegistry(); @@ -65,9 +63,8 @@ final class MenuTest extends UnitTestCase /** * Tests if empty menus get removed from the stack - * - * @test */ + #[Test] public function getMenusRemovedEmptyMenusExpectsEquals(): void { $menuRegistry = new MenuRegistry(); diff --git a/typo3/sysext/backend/Tests/Unit/Tree/SortedTreeNodeCollectionTest.php b/typo3/sysext/backend/Tests/Unit/Tree/SortedTreeNodeCollectionTest.php index 657fa840c50d..0ff147237e7b 100644 --- a/typo3/sysext/backend/Tests/Unit/Tree/SortedTreeNodeCollectionTest.php +++ b/typo3/sysext/backend/Tests/Unit/Tree/SortedTreeNodeCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Tree; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Tree\SortedTreeNodeCollection; use TYPO3\CMS\Backend\Tree\TreeNode; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -48,9 +49,7 @@ final class SortedTreeNodeCollectionTest extends UnitTestCase return $nodeCollection; } - /** - * @test - */ + #[Test] public function appendsSorted(): void { $nodeCollection = $this->createTestCollection(); @@ -62,9 +61,7 @@ final class SortedTreeNodeCollectionTest extends UnitTestCase self::assertSame($expected, $ids); } - /** - * @test - */ + #[Test] public function collectionContainsNode(): void { $nodeCollection = $this->createTestCollection(); @@ -72,9 +69,7 @@ final class SortedTreeNodeCollectionTest extends UnitTestCase self::assertTrue($nodeCollection->contains($node)); } - /** - * @test - */ + #[Test] public function searchDataWithBinarySearch(): void { $nodeCollection = $this->createTestCollection(); diff --git a/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeCollectionTest.php b/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeCollectionTest.php index a288e95a7697..16373372d5de 100644 --- a/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeCollectionTest.php +++ b/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Tree; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Tree\TreeNode; use TYPO3\CMS\Backend\Tree\TreeNodeCollection; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class TreeNodeCollectionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function sortNodes(): void { $nodeCollection = new TreeNodeCollection([ diff --git a/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeTest.php b/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeTest.php index 2fe971f0bfec..fff181e29c54 100644 --- a/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeTest.php +++ b/typo3/sysext/backend/Tests/Unit/Tree/TreeNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Tree; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Tree\TreeNode; use TYPO3\CMS\Backend\Tree\TreeNodeCollection; use TYPO3\CMS\Backend\Tree\TreeRepresentationNode; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TreeNodeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function serializeFixture(): void { $expected = trim(file_get_contents(__DIR__ . '/Fixtures/serialized.txt')); @@ -57,9 +56,7 @@ final class TreeNodeTest extends UnitTestCase self::assertSame($expected, $serializedString); } - /** - * @test - */ + #[Test] public function deserializeFixture(): void { $source = trim(file_get_contents(__DIR__ . '/Fixtures/serialized.txt')); @@ -68,9 +65,7 @@ final class TreeNodeTest extends UnitTestCase self::assertSame($source, $serializedString); } - /** - * @test - */ + #[Test] public function compareNodes(): void { $node = new TreeNode(['id' => '15']); diff --git a/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php b/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php index 7f95a6b86d1a..8f3a8376d325 100644 --- a/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php +++ b/typo3/sysext/backend/Tests/Unit/Utility/BackendUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Tests\Unit\Utility\Fixtures\LabelFromItemListMergedReturnsCorrectFieldsFixture; use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; @@ -115,10 +117,8 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calcAgeDataProvider - */ + #[DataProvider('calcAgeDataProvider')] + #[Test] public function calcAgeReturnsExpectedValues(int $seconds, string $expectedLabel): void { self::assertSame($expectedLabel, BackendUtility::calcAge($seconds)); @@ -128,9 +128,9 @@ final class BackendUtilityTest extends UnitTestCase // Tests concerning getProcessedValue /////////////////////////////////////// /** - * @test * @see https://forge.typo3.org/issues/20994 */ + #[Test] public function getProcessedValueForZeroStringIsZero(): void { $GLOBALS['TCA'] = [ @@ -150,9 +150,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertEquals('0', BackendUtility::getProcessedValue('tt_content', 'header', '0')); } - /** - * @test - */ + #[Test] public function getProcessedValueForGroup(): void { $GLOBALS['TCA'] = [ @@ -172,9 +170,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('testLabel', BackendUtility::getProcessedValue('tt_content', 'multimedia', '1,2')); } - /** - * @test - */ + #[Test] public function getProcessedValueForFlexNull(): void { $GLOBALS['TCA'] = [ @@ -194,9 +190,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('', BackendUtility::getProcessedValue('tt_content', 'pi_flexform', null)); } - /** - * @test - */ + #[Test] public function getProcessedValueForDatetimeDbTypeDateNull(): void { $GLOBALS['TCA'] = [ @@ -218,9 +212,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('', BackendUtility::getProcessedValue('tt_content', 'header', null)); } - /** - * @test - */ + #[Test] public function getProcessedValueForDatetimeDbTypeDatetime(): void { $GLOBALS['TCA'] = [ @@ -243,9 +235,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame($expected, BackendUtility::getProcessedValue('tt_content', 'header', $value)); } - /** - * @test - */ + #[Test] public function getProcessedValueForDatetimeDbTypeDatetimeNull(): void { $GLOBALS['TCA'] = [ @@ -266,9 +256,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('', BackendUtility::getProcessedValue('tt_content', 'header', null)); } - /** - * @test - */ + #[Test] public function getProcessedValueForDatetimeDbTypeDate(): void { $GLOBALS['TCA'] = [ @@ -293,9 +281,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame($expected, BackendUtility::getProcessedValue('tt_content', 'header', $value)); } - /** - * @test - */ + #[Test] public function getProcessedValueForFlex(): void { $GLOBALS['TCA'] = [ @@ -338,9 +324,7 @@ final class BackendUtilityTest extends UnitTestCase </T3FlexForms>')); } - /** - * @test - */ + #[Test] public function getProcessedValueForGroupWithOneAllowedTable(): void { $GLOBALS['TCA'] = [ @@ -402,9 +386,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('Page 1, Page 2', BackendUtility::getProcessedValue('tt_content', 'pages', '1,2')); } - /** - * @test - */ + #[Test] public function getProcessedValueForGroupWithMultipleAllowedTables(): void { $GLOBALS['TCA'] = [ @@ -472,9 +454,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('Page 1, Configuration 2', BackendUtility::getProcessedValue('index_config', 'indexcfgs', 'pages_1,index_config_2')); } - /** - * @test - */ + #[Test] public function getProcessedValueForSelectWithMMRelation(): void { $relationHandlerMock = $this->getMockBuilder(RelationHandler::class)->getMock(); @@ -561,9 +541,7 @@ final class BackendUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getProcessedValueDisplaysAgeForDateInputFieldsIfSettingAbsent(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -610,11 +588,10 @@ final class BackendUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider inputTypeDateDisplayOptions - * * @param bool|int $input */ + #[DataProvider('inputTypeDateDisplayOptions')] + #[Test] public function getProcessedValueHandlesAgeDisplayCorrectly($input, string $expected): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -640,9 +617,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame($expected, BackendUtility::getProcessedValue('tt_content', 'date', mktime(0, 0, 0, 8, 28, 2015))); } - /** - * @test - */ + #[Test] public function getProcessedValueForCheckWithSingleItem(): void { $GLOBALS['TCA'] = [ @@ -672,9 +647,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('Yes', BackendUtility::getProcessedValue('tt_content', 'hide', 1)); } - /** - * @test - */ + #[Test] public function getProcessedValueForCheckWithSingleItemInvertStateDisplay(): void { $GLOBALS['TCA'] = [ @@ -800,10 +773,8 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getCommonSelectFieldsReturnsCorrectFieldsDataProvider - */ + #[DataProvider('getCommonSelectFieldsReturnsCorrectFieldsDataProvider')] + #[Test] public function getCommonSelectFieldsReturnsCorrectFields( string $table, string $prefix, @@ -903,10 +874,8 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getLabelFromItemlistReturnsCorrectFieldsDataProvider - */ + #[DataProvider('getLabelFromItemlistReturnsCorrectFieldsDataProvider')] + #[Test] public function getLabelFromItemlistReturnsCorrectFields( string $table, string $col, @@ -978,10 +947,8 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getLabelFromItemListMergedReturnsCorrectFieldsDataProvider - */ + #[DataProvider('getLabelFromItemListMergedReturnsCorrectFieldsDataProvider')] + #[Test] public function getLabelFromItemListMergedReturnsCorrectFields( int $pageId, string $table, @@ -1064,10 +1031,8 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getLabelsFromItemsListDataProvider - */ + #[DataProvider('getLabelsFromItemsListDataProvider')] + #[Test] public function getLabelsFromItemsListReturnsCorrectValue( string $table, string $col, @@ -1097,9 +1062,7 @@ final class BackendUtilityTest extends UnitTestCase GeneralUtility::purgeInstances(); } - /** - * @test - */ + #[Test] public function getProcessedValueReturnsLabelsForExistingValuesSolely(): void { $table = 'foobar'; @@ -1126,9 +1089,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertEquals('aFooLabel, aBarLabel', $label); } - /** - * @test - */ + #[Test] public function getProcessedValueReturnsPlainValueIfItemIsNotFound(): void { $table = 'foobar'; @@ -1154,9 +1115,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertEquals('invalidKey', $label); } - /** - * @test - */ + #[Test] public function dateTimeAgeReturnsCorrectValues(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -1168,9 +1127,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame('24-03-16 (-1 day)', BackendUtility::dateTimeAge($GLOBALS['EXEC_TIME'] + 86400, 1, 'date')); } - /** - * @test - */ + #[Test] public function purgeComputedPropertyNamesRemovesPropertiesStartingWithUnderscore(): void { $propertyNames = [ @@ -1182,9 +1139,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame(['uid', 'pid'], $computedPropertyNames); } - /** - * @test - */ + #[Test] public function purgeComputedPropertiesFromRecordRemovesPropertiesStartingWithUnderscore(): void { $record = [ @@ -1222,19 +1177,15 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider splitTableUidDataProvider - */ + #[DataProvider('splitTableUidDataProvider')] + #[Test] public function splitTableUid($input, $expected): void { $result = BackendUtility::splitTable_Uid($input); self::assertSame($expected, $result); } - /** - * @test - */ + #[Test] public function returnNullForMissingTcaConfigInResolveFileReferences(): void { $tableName = 'table_a'; @@ -1243,10 +1194,8 @@ final class BackendUtilityTest extends UnitTestCase self::assertNull(BackendUtility::resolveFileReferences($tableName, $fieldName, [])); } - /** - * @test - * @dataProvider unfitResolveFileReferencesTableConfig - */ + #[DataProvider('unfitResolveFileReferencesTableConfig')] + #[Test] public function returnNullForUnfitTableConfigInResolveFileReferences(array $config): void { $tableName = 'table_a'; @@ -1291,9 +1240,7 @@ final class BackendUtilityTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function workspaceOLDoesNotChangeValuesForNoBeUserAvailable(): void { $GLOBALS['BE_USER'] = null; @@ -1307,9 +1254,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame($reference, $row); } - /** - * @test - */ + #[Test] public function resolveFileReferencesReturnsEmptyResultForNoReferencesAvailable(): void { $tableName = 'table_a'; @@ -1338,9 +1283,7 @@ final class BackendUtilityTest extends UnitTestCase self::assertEmpty(BackendUtility::resolveFileReferences($tableName, $fieldName, $elementData)); } - /** - * @test - */ + #[Test] public function wsMapIdReturnsLiveIdIfNoBeUserIsAvailable(): void { $GLOBALS['BE_USER'] = null; @@ -1349,18 +1292,14 @@ final class BackendUtilityTest extends UnitTestCase self::assertSame(42, BackendUtility::wsMapId($tableName, $uid)); } - /** - * @test - */ + #[Test] public function getAllowedFieldsForTableReturnsEmptyArrayOnBrokenTca(): void { $GLOBALS['BE_USER'] = new BackendUserAuthentication(); self::assertEmpty(BackendUtility::getAllowedFieldsForTable('myTable', false)); } - /** - * @test - */ + #[Test] public function getAllowedFieldsForTableReturnsUniqueList(): void { $GLOBALS['BE_USER'] = new BackendUserAuthentication(); diff --git a/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutCollectionTest.php b/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutCollectionTest.php index 87df4f2c0931..b4c0b6b76bde 100644 --- a/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutCollectionTest.php +++ b/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\View\BackendLayout; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\View\BackendLayout\BackendLayout; use TYPO3\CMS\Backend\View\BackendLayout\BackendLayoutCollection; use TYPO3\CMS\Core\Utility\StringUtility; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class BackendLayoutCollectionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function invalidIdentifierIsRecognizedOnCreation(): void { $this->expectException(\UnexpectedValueException::class); @@ -38,9 +37,7 @@ final class BackendLayoutCollectionTest extends UnitTestCase new BackendLayoutCollection($identifier); } - /** - * @test - */ + #[Test] public function objectIsCreated(): void { $identifier = StringUtility::getUniqueId('identifier'); @@ -49,9 +46,7 @@ final class BackendLayoutCollectionTest extends UnitTestCase self::assertEquals($identifier, $backendLayoutCollection->getIdentifier()); } - /** - * @test - */ + #[Test] public function invalidBackendLayoutIsRecognizedOnAdding(): void { $this->expectException(\UnexpectedValueException::class); @@ -68,9 +63,7 @@ final class BackendLayoutCollectionTest extends UnitTestCase $backendLayoutCollection->add($backendLayoutMock); } - /** - * @test - */ + #[Test] public function duplicateBackendLayoutIsRecognizedOnAdding(): void { $this->expectException(\LogicException::class); @@ -93,9 +86,7 @@ final class BackendLayoutCollectionTest extends UnitTestCase $backendLayoutCollection->add($secondBackendLayoutMock); } - /** - * @test - */ + #[Test] public function backendLayoutCanBeFetched(): void { $identifier = StringUtility::getUniqueId('identifier'); diff --git a/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutTest.php b/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutTest.php index 2ba7ae58f931..49dcc2fef925 100644 --- a/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutTest.php +++ b/typo3/sysext/backend/Tests/Unit/View/BackendLayout/BackendLayoutTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\View\BackendLayout; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\View\BackendLayout\BackendLayout; use TYPO3\CMS\Backend\View\BackendLayoutView; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -30,9 +31,7 @@ final class BackendLayoutTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function invalidIdentifierIsRecognizedOnCreation(): void { $this->expectException(\UnexpectedValueException::class); @@ -43,9 +42,7 @@ final class BackendLayoutTest extends UnitTestCase new BackendLayout($identifier, $title, $configuration); } - /** - * @test - */ + #[Test] public function objectIsCreated(): void { $backendLayoutView = $this->createMock(BackendLayoutView::class); diff --git a/typo3/sysext/backend/Tests/Unit/View/BackendLayout/DataProviderCollectionTest.php b/typo3/sysext/backend/Tests/Unit/View/BackendLayout/DataProviderCollectionTest.php index d8b067fa2bed..c743c026b55c 100644 --- a/typo3/sysext/backend/Tests/Unit/View/BackendLayout/DataProviderCollectionTest.php +++ b/typo3/sysext/backend/Tests/Unit/View/BackendLayout/DataProviderCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\View\BackendLayout; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\View\BackendLayout\BackendLayout; use TYPO3\CMS\Backend\View\BackendLayout\DataProviderCollection; use TYPO3\CMS\Backend\View\BackendLayout\DefaultDataProvider; @@ -39,9 +40,7 @@ final class DataProviderCollectionTest extends UnitTestCase $this->dataProviderCollection = new DataProviderCollection(); } - /** - * @test - */ + #[Test] public function invalidIdentifierIsRecognizedOnAdding(): void { $this->expectException(\UnexpectedValueException::class); @@ -52,9 +51,7 @@ final class DataProviderCollectionTest extends UnitTestCase $this->dataProviderCollection->add($identifier, get_class($dataProviderMock)); } - /** - * @test - */ + #[Test] public function invalidInterfaceIsRecognizedOnAdding(): void { $this->expectException(\LogicException::class); @@ -65,9 +62,7 @@ final class DataProviderCollectionTest extends UnitTestCase $this->dataProviderCollection->add($identifier, get_class($dataProviderMock)); } - /** - * @test - */ + #[Test] public function defaultBackendLayoutIsFound(): void { $backendLayoutIdentifier = StringUtility::getUniqueId('identifier'); @@ -90,9 +85,7 @@ final class DataProviderCollectionTest extends UnitTestCase self::assertEquals($backendLayoutIdentifier, $providedBackendLayout->getIdentifier()); } - /** - * @test - */ + #[Test] public function providedBackendLayoutIsFound(): void { $dataProviderIdentifier = StringUtility::getUniqueId('custom'); diff --git a/typo3/sysext/backend/Tests/Unit/View/BackendLayoutViewTest.php b/typo3/sysext/backend/Tests/Unit/View/BackendLayoutViewTest.php index ab89e11408f1..5e56d0c919c1 100644 --- a/typo3/sysext/backend/Tests/Unit/View/BackendLayoutViewTest.php +++ b/typo3/sysext/backend/Tests/Unit/View/BackendLayoutViewTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\Unit\View; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\View\BackendLayoutView; use TYPO3\TestingFramework\Core\AccessibleObjectInterface; @@ -43,9 +45,9 @@ final class BackendLayoutViewTest extends UnitTestCase /** * @param bool|string $expected - * @test - * @dataProvider selectedCombinedIdentifierIsDeterminedDataProvider */ + #[DataProvider('selectedCombinedIdentifierIsDeterminedDataProvider')] + #[Test] public function selectedCombinedIdentifierIsDetermined($expected, array $page, array $rootLine): void { $pageId = $page['uid']; diff --git a/typo3/sysext/backend/Tests/UnitDeprecated/Form/FormDataProvider/TcaFlexPrepareTest.php b/typo3/sysext/backend/Tests/UnitDeprecated/Form/FormDataProvider/TcaFlexPrepareTest.php index b33bcfc493ac..76f9f6ab71c3 100644 --- a/typo3/sysext/backend/Tests/UnitDeprecated/Form/FormDataProvider/TcaFlexPrepareTest.php +++ b/typo3/sysext/backend/Tests/UnitDeprecated/Form/FormDataProvider/TcaFlexPrepareTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Backend\Tests\UnitDeprecated\Form\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexPrepare; use TYPO3\CMS\Core\Cache\CacheManager; @@ -51,9 +52,7 @@ final class TcaFlexPrepareTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function addDataMigratesFlexformTca(): void { $input = [ @@ -125,9 +124,7 @@ final class TcaFlexPrepareTest extends UnitTestCase self::assertEquals($expected, $this->subject->addData($input)); } - /** - * @test - */ + #[Test] public function addDataMigratesFlexformTcaInContainer(): void { $input = [ diff --git a/typo3/sysext/belog/Tests/Unit/Domain/Model/ConstraintTest.php b/typo3/sysext/belog/Tests/Unit/Domain/Model/ConstraintTest.php index 9e991b15d5fd..d23f205e4689 100644 --- a/typo3/sysext/belog/Tests/Unit/Domain/Model/ConstraintTest.php +++ b/typo3/sysext/belog/Tests/Unit/Domain/Model/ConstraintTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Belog\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Belog\Domain\Model\Constraint; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class ConstraintTest extends UnitTestCase $this->subject = new Constraint(); } - /** - * @test - */ + #[Test] public function setManualDateStartForDateTimeSetsManualDateStart(): void { $date = new \DateTime(); @@ -40,18 +39,14 @@ final class ConstraintTest extends UnitTestCase self::assertEquals($date, $this->subject->getManualDateStart()); } - /** - * @test - */ + #[Test] public function setManualDateStartForNoArgumentSetsManualDateStart(): void { $this->subject->setManualDateStart(); self::assertNull($this->subject->getManualDateStart()); } - /** - * @test - */ + #[Test] public function setManualDateStopForDateTimeSetsManualDateStop(): void { $date = new \DateTime(); @@ -59,9 +54,7 @@ final class ConstraintTest extends UnitTestCase self::assertEquals($date, $this->subject->getManualDateStop()); } - /** - * @test - */ + #[Test] public function setManualDateStopForNoArgumentSetsManualDateStop(): void { $this->subject->setManualDateStop(); diff --git a/typo3/sysext/belog/Tests/Unit/Domain/Model/LogEntryTest.php b/typo3/sysext/belog/Tests/Unit/Domain/Model/LogEntryTest.php index e167a32c796c..0a5ba4c5c7f7 100644 --- a/typo3/sysext/belog/Tests/Unit/Domain/Model/LogEntryTest.php +++ b/typo3/sysext/belog/Tests/Unit/Domain/Model/LogEntryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Belog\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Belog\Domain\Model\LogEntry; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,35 +32,27 @@ final class LogEntryTest extends UnitTestCase $this->subject = new LogEntry(); } - /** - * @test - */ + #[Test] public function getLogDataInitiallyReturnsEmptyArray(): void { self::assertSame([], $this->subject->getLogData()); } - /** - * @test - */ + #[Test] public function getLogDataForEmptyStringLogDataReturnsEmptyArray(): void { $this->subject->setLogData(''); self::assertSame([], $this->subject->getLogData()); } - /** - * @test - */ + #[Test] public function getLogDataForGarbageStringLogDataReturnsEmptyArray(): void { $this->subject->setLogData('foo bar'); self::assertSame([], $this->subject->getLogData()); } - /** - * @test - */ + #[Test] public function getLogDataForSerializedArrayReturnsThatArray(): void { $logData = ['foo', 'bar']; @@ -66,9 +60,7 @@ final class LogEntryTest extends UnitTestCase self::assertSame($logData, $this->subject->getLogData()); } - /** - * @test - */ + #[Test] public function getLogDataForSerializedObjectReturnsEmptyArray(): void { $this->subject->setLogData(serialize(new \stdClass())); @@ -97,10 +89,8 @@ final class LogEntryTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getErrorIconReturnsCorrespondingClassDataProvider - */ + #[DataProvider('getErrorIconReturnsCorrespondingClassDataProvider')] + #[Test] public function getErrorIconReturnsCorrespondingClass(int $error, string $expectedClass): void { $this->subject->setError($error); diff --git a/typo3/sysext/belog/Tests/Unit/Domain/Repository/LogEntryRepositoryTest.php b/typo3/sysext/belog/Tests/Unit/Domain/Repository/LogEntryRepositoryTest.php index 13b1a7ddce46..93af3669838b 100644 --- a/typo3/sysext/belog/Tests/Unit/Domain/Repository/LogEntryRepositoryTest.php +++ b/typo3/sysext/belog/Tests/Unit/Domain/Repository/LogEntryRepositoryTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Belog\Tests\Unit\Domain\Repository; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Belog\Domain\Repository\LogEntryRepository; use TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LogEntryRepositoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function initializeObjectSetsRespectStoragePidToFalse(): void { $querySettings = $this->getMockBuilder(QuerySettingsInterface::class)->getMock(); diff --git a/typo3/sysext/beuser/Tests/Unit/Domain/Model/BackendUserTest.php b/typo3/sysext/beuser/Tests/Unit/Domain/Model/BackendUserTest.php index 7ae486856c37..4e221f7741a1 100644 --- a/typo3/sysext/beuser/Tests/Unit/Domain/Model/BackendUserTest.php +++ b/typo3/sysext/beuser/Tests/Unit/Domain/Model/BackendUserTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Beuser\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Beuser\Domain\Model\BackendUser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,25 +31,19 @@ final class BackendUserTest extends UnitTestCase $this->subject = new BackendUser(); } - /** - * @test - */ + #[Test] public function getUidReturnsInitialValueForInt(): void { self::assertNull($this->subject->getUid(), 'Not uid set after initialization.'); } - /** - * @test - */ + #[Test] public function getUserNameReturnsInitialValueForString(): void { self::assertSame($this->subject->getUserName(), '', 'Username not empty'); } - /** - * @test - */ + #[Test] public function setUserNameForStringSetsUserName(): void { $newUserName = 'DonJuan'; @@ -56,17 +51,13 @@ final class BackendUserTest extends UnitTestCase self::assertSame($this->subject->getUserName(), $newUserName); } - /** - * @test - */ + #[Test] public function getRealNameReturnInitialValueForString(): void { self::assertSame($this->subject->getRealName(), '', 'Real name not empty'); } - /** - * @test - */ + #[Test] public function setRealNameForStringSetsName(): void { $realName = 'Conceived at T3CON2018'; @@ -74,26 +65,20 @@ final class BackendUserTest extends UnitTestCase self::assertSame($this->subject->getRealName(), $realName); } - /** - * @test - */ + #[Test] public function getAdminReturnInitialValueForBoolean(): void { self::assertFalse($this->subject->getIsAdministrator(), 'Admin status is correct.'); } - /** - * @test - */ + #[Test] public function setAdminToTrueSetsAdmin(): void { $this->subject->setIsAdministrator(true); self::assertTrue($this->subject->getIsAdministrator(), 'Admin status is not true, after setting to true.'); } - /** - * @test - */ + #[Test] public function setAdminToFalseSetsAdmin(): void { $this->subject->setIsAdministrator(false); diff --git a/typo3/sysext/beuser/Tests/Unit/Domain/Model/DemandTest.php b/typo3/sysext/beuser/Tests/Unit/Domain/Model/DemandTest.php index 9688673a4124..cf8d31fe2a09 100644 --- a/typo3/sysext/beuser/Tests/Unit/Domain/Model/DemandTest.php +++ b/typo3/sysext/beuser/Tests/Unit/Domain/Model/DemandTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Beuser\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Beuser\Domain\Model\Demand; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class DemandTest extends UnitTestCase $this->subject = new Demand(); } - /** - * @test - */ + #[Test] public function setUserTypeAllExpectedValueForInt(): void { $userType = Demand::ALL; @@ -40,9 +39,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getUserType(), $userType); } - /** - * @test - */ + #[Test] public function setUserTypeAdminOnlyExpectedValueForInt(): void { $userType = Demand::USERTYPE_ADMINONLY; @@ -50,9 +47,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getUserType(), $userType); } - /** - * @test - */ + #[Test] public function setUserTypeUserOnlyExpectedValueForInt(): void { $userType = Demand::USERTYPE_USERONLY; @@ -60,9 +55,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getUserType(), $userType); } - /** - * @test - */ + #[Test] public function setStatusAllExpectedValueForInt(): void { $status = Demand::ALL; @@ -70,9 +63,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getStatus(), $status); } - /** - * @test - */ + #[Test] public function setStatusActiveExpectedValueForInt(): void { $status = Demand::STATUS_ACTIVE; @@ -80,9 +71,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getStatus(), $status); } - /** - * @test - */ + #[Test] public function setStatusInactiveExpectedValueForInt(): void { $status = Demand::STATUS_INACTIVE; @@ -90,9 +79,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getStatus(), $status); } - /** - * @test - */ + #[Test] public function setLoginAllExpectedValueForInt(): void { $login = Demand::ALL; @@ -100,9 +87,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getLogins(), $login); } - /** - * @test - */ + #[Test] public function setLoginNoneExpectedValueForInt(): void { $login = Demand::LOGIN_NONE; @@ -110,9 +95,7 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getLogins(), $login); } - /** - * @test - */ + #[Test] public function setLoginSameExpectedValueForInt(): void { $login = Demand::LOGIN_SOME; @@ -120,17 +103,13 @@ final class DemandTest extends UnitTestCase self::assertSame($this->subject->getLogins(), $login); } - /** - * @test - */ + #[Test] public function getUserNameInitialValueForString(): void { self::assertSame($this->subject->getUserName(), '', 'UserName must be empty string.'); } - /** - * @test - */ + #[Test] public function setUserNameReturnExpectedValueForString(): void { $newUserName = 'User#ää*%^name'; diff --git a/typo3/sysext/beuser/Tests/Unit/Domain/Repository/BackendUserRepositoryTest.php b/typo3/sysext/beuser/Tests/Unit/Domain/Repository/BackendUserRepositoryTest.php index 3b7c537dbec9..978ff9c4234a 100644 --- a/typo3/sysext/beuser/Tests/Unit/Domain/Repository/BackendUserRepositoryTest.php +++ b/typo3/sysext/beuser/Tests/Unit/Domain/Repository/BackendUserRepositoryTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Beuser\Tests\Unit\Domain\Repository; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Beuser\Domain\Repository\BackendUserRepository; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class BackendUserRepositoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classCanBeInstantiated(): void { new BackendUserRepository(); diff --git a/typo3/sysext/beuser/Tests/Unit/Domain/Repository/FileMountRepositoryTest.php b/typo3/sysext/beuser/Tests/Unit/Domain/Repository/FileMountRepositoryTest.php index ba0a104be1da..f502d3f6ba79 100644 --- a/typo3/sysext/beuser/Tests/Unit/Domain/Repository/FileMountRepositoryTest.php +++ b/typo3/sysext/beuser/Tests/Unit/Domain/Repository/FileMountRepositoryTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Beuser\Tests\Unit\Domain\Repository; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Beuser\Domain\Repository\FileMountRepository; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FileMountRepositoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classCanBeInstantiated(): void { new FileMountRepository(); diff --git a/typo3/sysext/core/Tests/Unit/Authentication/AuthenticationServiceTest.php b/typo3/sysext/core/Tests/Unit/Authentication/AuthenticationServiceTest.php index 8708baf4dc0f..9ae2bd19595d 100644 --- a/typo3/sysext/core/Tests/Unit/Authentication/AuthenticationServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Authentication/AuthenticationServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Authentication; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Authentication\AuthenticationService; use TYPO3\CMS\Core\Session\UserSession; @@ -81,10 +83,8 @@ final class AuthenticationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider processLoginDataProvider - */ + #[DataProvider('processLoginDataProvider')] + #[Test] public function processLoginReturnsCorrectData(string $passwordSubmissionStrategy, array $loginData, array $expectedProcessedData): void { $subject = new AuthenticationService(); @@ -93,9 +93,7 @@ final class AuthenticationServiceTest extends UnitTestCase self::assertEquals($expectedProcessedData, $loginData); } - /** - * @test - */ + #[Test] public function authUserReturns100IfSubmittedPasswordIsEmpty(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; @@ -108,9 +106,7 @@ final class AuthenticationServiceTest extends UnitTestCase self::assertSame(100, $subject->authUser([])); } - /** - * @test - */ + #[Test] public function authUserReturns100IfUserSubmittedUsernameIsEmpty(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; @@ -123,9 +119,7 @@ final class AuthenticationServiceTest extends UnitTestCase self::assertSame(100, $subject->authUser([])); } - /** - * @test - */ + #[Test] public function authUserThrowsExceptionIfUserTableIsNotSet(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; @@ -140,9 +134,7 @@ final class AuthenticationServiceTest extends UnitTestCase $subject->authUser([]); } - /** - * @test - */ + #[Test] public function authUserThrowsExceptionIfPasswordInDbDoesNotResolveToAValidHash(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; @@ -170,9 +162,7 @@ final class AuthenticationServiceTest extends UnitTestCase self::assertEquals(100, $subject->authUser($dbUser)); } - /** - * @test - */ + #[Test] public function authUserReturns0IfPasswordDoesNotMatch(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; @@ -201,9 +191,7 @@ final class AuthenticationServiceTest extends UnitTestCase self::assertSame(0, $subject->authUser($dbUser)); } - /** - * @test - */ + #[Test] public function authUserReturns200IfPasswordMatch(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; diff --git a/typo3/sysext/core/Tests/Unit/Authentication/BackendUserAuthenticationTest.php b/typo3/sysext/core/Tests/Unit/Authentication/BackendUserAuthenticationTest.php index 6ab33611fd50..8c26c185968d 100644 --- a/typo3/sysext/core/Tests/Unit/Authentication/BackendUserAuthenticationTest.php +++ b/typo3/sysext/core/Tests/Unit/Authentication/BackendUserAuthenticationTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Authentication; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use Psr\EventDispatcher\ListenerProviderInterface; use Psr\Log\NullLogger; @@ -47,9 +49,7 @@ final class BackendUserAuthenticationTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function logoffCleansFormProtectionIfBackendUserIsLoggedIn(): void { $GLOBALS['LANG'] = $this->createMock(LanguageService::class); @@ -150,10 +150,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getFilePermissionsTakesUserDefaultAndStoragePermissionsIntoAccountIfUserIsNotAdminDataProvider - */ + #[DataProvider('getFilePermissionsTakesUserDefaultAndStoragePermissionsIntoAccountIfUserIsNotAdminDataProvider')] + #[Test] public function getFilePermissionsTakesUserDefaultPermissionsFromTsConfigIntoAccountIfUserIsNotAdmin(array $userTsConfiguration): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -300,10 +298,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getFilePermissionsFromStorageDataProvider - */ + #[DataProvider('getFilePermissionsFromStorageDataProvider')] + #[Test] public function getFilePermissionsFromStorageOverwritesDefaultPermissions(array $defaultPermissions, int $storageUid, array $storagePermissions, array $expectedPermissions): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -335,10 +331,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertEquals($expectedPermissions, $subject->getFilePermissionsForStorage($storageMock)); } - /** - * @test - * @dataProvider getFilePermissionsFromStorageDataProvider - */ + #[DataProvider('getFilePermissionsFromStorageDataProvider')] + #[Test] public function getFilePermissionsFromStorageAlwaysReturnsDefaultPermissionsForAdmins(array $defaultPermissions, int $storageUid, array $storagePermissions): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -476,10 +470,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getFilePermissionsTakesUserDefaultPermissionsFromRecordIntoAccountIfUserIsNotAdminDataProvider - */ + #[DataProvider('getFilePermissionsTakesUserDefaultPermissionsFromRecordIntoAccountIfUserIsNotAdminDataProvider')] + #[Test] public function getFilePermissionsTakesUserDefaultPermissionsFromRecordIntoAccountIfUserIsNotAdmin(string $permissionValue, array $expectedPermissions): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -497,9 +489,7 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertEquals($expectedPermissions, $subject->getFilePermissions()); } - /** - * @test - */ + #[Test] public function getFilePermissionsGrantsAllPermissionsToAdminUsers(): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -531,9 +521,7 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertEquals($expectedPermissions, $subject->getFilePermissions()); } - /** - * @test - */ + #[Test] public function jsConfirmationReturnsTrueIfPassedValueEqualsConfiguration(): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -548,9 +536,7 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertFalse($subject->jsConfirmation(JsConfirmation::COPY_MOVE_PASTE)); } - /** - * @test - */ + #[Test] public function jsConfirmationAllowsSettingMultipleBitsInValue(): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -565,10 +551,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertTrue($subject->jsConfirmation(JsConfirmation::COPY_MOVE_PASTE)); } - /** - * @test - * @dataProvider jsConfirmationsWithUnsetBits - */ + #[DataProvider('jsConfirmationsWithUnsetBits')] + #[Test] public function jsConfirmationAllowsUnsettingBitsInValue(int $jsConfirmation, bool $typeChangeAllowed, bool $copyMovePasteAllowed, bool $deleteAllowed, bool $feEditAllowed, bool $otherAllowed): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -608,9 +592,7 @@ final class BackendUserAuthenticationTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function jsConfirmationAlwaysReturnsFalseIfNoConfirmationIsSet(): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -625,9 +607,7 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertFalse($subject->jsConfirmation(JsConfirmation::COPY_MOVE_PASTE)); } - /** - * @test - */ + #[Test] public function jsConfirmationReturnsTrueIfConfigurationIsMissing(): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) @@ -678,10 +658,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getPagePermissionsClauseWithValidUserDataProvider - */ + #[DataProvider('getPagePermissionsClauseWithValidUserDataProvider')] + #[Test] public function getPagePermissionsClauseWithValidUser(int $perms, bool $admin, array $groups, string $expected): void { // We only need to setup the mocking for the non-admin cases @@ -720,10 +698,8 @@ final class BackendUserAuthenticationTest extends UnitTestCase self::assertEquals($expected, $subject->getPagePermsClause($perms)); } - /** - * @test - * @dataProvider checkAuthModeReturnsExpectedValueDataProvider - */ + #[DataProvider('checkAuthModeReturnsExpectedValueDataProvider')] + #[Test] public function checkAuthModeReturnsExpectedValue(string $theValue, bool $expectedResult): void { $subject = $this->getMockBuilder(BackendUserAuthentication::class) diff --git a/typo3/sysext/core/Tests/Unit/Authentication/IpLockerTest.php b/typo3/sysext/core/Tests/Unit/Authentication/IpLockerTest.php index 8e2fa8d03e0b..e872fca33174 100644 --- a/typo3/sysext/core/Tests/Unit/Authentication/IpLockerTest.php +++ b/typo3/sysext/core/Tests/Unit/Authentication/IpLockerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Authentication; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Authentication\IpLocker; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -134,10 +136,8 @@ final class IpLockerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getSessionIpLockDataProvider - */ + #[DataProvider('getSessionIpLockDataProvider')] + #[Test] public function getSessionIpLock(string $ipAddress, int $lockIPv4PartCount, int $lockIPv6PartCount, string $expectedLock): void { $ipLocker = GeneralUtility::makeInstance(IpLocker::class, $lockIPv4PartCount, $lockIPv6PartCount); diff --git a/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/RecoveryCodesTest.php b/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/RecoveryCodesTest.php index 08f274f0aee9..195a9c7cb972 100644 --- a/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/RecoveryCodesTest.php +++ b/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/RecoveryCodesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Authentication\Mfa\Provider; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Authentication\Mfa\Provider\RecoveryCodes; use TYPO3\CMS\Core\Crypto\PasswordHashing\BcryptPasswordHash; use TYPO3\CMS\Core\Tests\Unit\Authentication\Mfa\Provider\Fixtures\Crypto\PasswordHashing\NoopPasswordHash; @@ -42,9 +44,7 @@ final class RecoveryCodesTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function generateRecoveryCodesTest(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['passwordHashing'] = [ @@ -66,9 +66,7 @@ final class RecoveryCodesTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function generatePlainRecoveryCodesThrowsExceptionOnInvalidLengthTest(): void { $this->expectException(\InvalidArgumentException::class); @@ -76,10 +74,8 @@ final class RecoveryCodesTest extends UnitTestCase $this->subject->generatePlainRecoveryCodes(6); } - /** - * @test - * @dataProvider generatePlainRecoveryCodesTestDataProvider - */ + #[DataProvider('generatePlainRecoveryCodesTestDataProvider')] + #[Test] public function generatePlainRecoveryCodesTest(int $length, int $quantity): void { $recoveryCodes = $this->subject->generatePlainRecoveryCodes($length, $quantity); @@ -99,9 +95,7 @@ final class RecoveryCodesTest extends UnitTestCase yield '10 codes with 10 chars' => [10, 10]; } - /** - * @test - */ + #[Test] public function generatedHashedRecoveryCodesAreHashedWithDefaultHashInstanceTest(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['passwordHashing'] = [ @@ -118,9 +112,7 @@ final class RecoveryCodesTest extends UnitTestCase self::assertCount(2, $codes); } - /** - * @test - */ + #[Test] public function verifyRecoveryCodeTest(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['passwordHashing'] = [ @@ -146,9 +138,7 @@ final class RecoveryCodesTest extends UnitTestCase self::assertFalse($this->subject->verifyRecoveryCode($recoveryCode, $codes)); } - /** - * @test - */ + #[Test] public function verifyRecoveryCodeUsesTheCorrectHashInstanceTest(): void { $code = '18742989'; diff --git a/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/TotpTest.php b/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/TotpTest.php index 2ba45b6c2624..97c0598485c1 100644 --- a/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/TotpTest.php +++ b/typo3/sysext/core/Tests/Unit/Authentication/Mfa/Provider/TotpTest.php @@ -18,6 +18,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Authentication\Mfa\Provider; use Base32\Base32; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Authentication\Mfa\Provider\Totp; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\DateTimeAspect; @@ -37,9 +39,7 @@ final class TotpTest extends UnitTestCase $this->secret = Base32::encode('TYPO3IsAwesome!'); // KRMVATZTJFZUC53FONXW2ZJB } - /** - * @test - */ + #[Test] public function throwsExceptionOnDisallowedAlogTest(): void { $this->expectException(\InvalidArgumentException::class); @@ -47,9 +47,7 @@ final class TotpTest extends UnitTestCase GeneralUtility::makeInstance(Totp::class, 'some-secret', 'md5'); } - /** - * @test - */ + #[Test] public function throwsExceptionOnInvalidTotpLengthTest(): void { $this->expectException(\InvalidArgumentException::class); @@ -57,10 +55,8 @@ final class TotpTest extends UnitTestCase GeneralUtility::makeInstance(Totp::class, 'some-secret', 'sha1', 4); } - /** - * @test - * @dataProvider totpDataProvider - */ + #[DataProvider('totpDataProvider')] + #[Test] public function generateTotpTest(string $expectedTotp, array $arguments): void { $counter = (int)floor(($this->timestamp - 0) / 30); // see Totp::getTimeCounter() @@ -71,10 +67,8 @@ final class TotpTest extends UnitTestCase ); } - /** - * @test - * @dataProvider totpDataProvider - */ + #[DataProvider('totpDataProvider')] + #[Test] public function verifyTotpTest(string $totp, array $arguments): void { GeneralUtility::makeInstance(Context::class) @@ -94,9 +88,7 @@ final class TotpTest extends UnitTestCase yield '8 digit code' => ['48337475', ['sha1', 8]]; } - /** - * @test - */ + #[Test] public function verifyTotpWithGracePeriodTest(): void { GeneralUtility::makeInstance(Context::class) @@ -123,10 +115,8 @@ final class TotpTest extends UnitTestCase self::assertFalse($totpInstance->verifyTotp($totpPast, 3)); } - /** - * @test - * @dataProvider getTotpAuthUrlTestDataProvider - */ + #[DataProvider('getTotpAuthUrlTestDataProvider')] + #[Test] public function getTotpAuthUrlTest(array $constructorArguments, array $methodArguments, string $expected): void { $totp = GeneralUtility::makeInstance(Totp::class, ...$constructorArguments); @@ -168,9 +158,7 @@ final class TotpTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function generateEncodedSecretTest(): void { // Check 100 times WITHOUT additional auth factors diff --git a/typo3/sysext/core/Tests/Unit/Cache/Backend/AbstractBackendTest.php b/typo3/sysext/core/Tests/Unit/Cache/Backend/AbstractBackendTest.php index 784d6010b280..8db959b9964e 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/Backend/AbstractBackendTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/Backend/AbstractBackendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache\Backend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Cache\Backend\Fixtures\ConcreteBackendFixture; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -24,9 +25,7 @@ final class AbstractBackendTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function theConstructorCallsSetterMethodsForAllSpecifiedOptions(): void { // The fixture class implements methods setSomeOption() and getSomeOption() diff --git a/typo3/sysext/core/Tests/Unit/Cache/Backend/TransientMemoryBackendTest.php b/typo3/sysext/core/Tests/Unit/Cache/Backend/TransientMemoryBackendTest.php index cf598d914a51..81d02162c97e 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/Backend/TransientMemoryBackendTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/Backend/TransientMemoryBackendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache\Backend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\TransientMemoryBackend; use TYPO3\CMS\Core\Cache\Exception; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; @@ -29,9 +30,7 @@ final class TransientMemoryBackendTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function setThrowsExceptionIfNoFrontEndHasBeenSet(): void { $this->expectException(Exception::class); @@ -43,9 +42,7 @@ final class TransientMemoryBackendTest extends UnitTestCase $backend->set($identifier, $data); } - /** - * @test - */ + #[Test] public function itIsPossibleToSetAndCheckExistenceInCache(): void { $cache = $this->createMock(FrontendInterface::class); @@ -58,9 +55,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertTrue($inCache); } - /** - * @test - */ + #[Test] public function itIsPossibleToSetAndGetEntry(): void { $cache = $this->createMock(FrontendInterface::class); @@ -73,9 +68,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertEquals($data, $fetchedData); } - /** - * @test - */ + #[Test] public function itIsPossibleToRemoveEntryFromCache(): void { $cache = $this->createMock(FrontendInterface::class); @@ -89,9 +82,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertFalse($inCache); } - /** - * @test - */ + #[Test] public function itIsPossibleToOverwriteAnEntryInTheCache(): void { $cache = $this->createMock(FrontendInterface::class); @@ -106,9 +97,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertEquals($otherData, $fetchedData); } - /** - * @test - */ + #[Test] public function findIdentifiersByTagFindsCacheEntriesWithSpecifiedTag(): void { $cache = $this->createMock(FrontendInterface::class); @@ -123,9 +112,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertEquals($entryIdentifier, $retrieved[0]); } - /** - * @test - */ + #[Test] public function hasReturnsFalseIfTheEntryDoesntExist(): void { $cache = $this->createMock(FrontendInterface::class); @@ -136,9 +123,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertFalse($inCache); } - /** - * @test - */ + #[Test] public function removeReturnsFalseIfTheEntryDoesntExist(): void { $cache = $this->createMock(FrontendInterface::class); @@ -149,9 +134,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertFalse($inCache); } - /** - * @test - */ + #[Test] public function flushByTagRemovesCacheEntriesWithSpecifiedTag(): void { $cache = $this->createMock(FrontendInterface::class); @@ -167,9 +150,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertTrue($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3'); } - /** - * @test - */ + #[Test] public function flushByTagsRemovesCacheEntriesWithSpecifiedTags(): void { $cache = $this->createMock(FrontendInterface::class); @@ -185,9 +166,7 @@ final class TransientMemoryBackendTest extends UnitTestCase self::assertTrue($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3'); } - /** - * @test - */ + #[Test] public function flushRemovesAllCacheEntries(): void { $cache = $this->createMock(FrontendInterface::class); diff --git a/typo3/sysext/core/Tests/Unit/Cache/Backend/Typo3DatabaseBackendTest.php b/typo3/sysext/core/Tests/Unit/Cache/Backend/Typo3DatabaseBackendTest.php index a7c0799d997a..fe21f51a0a0b 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/Backend/Typo3DatabaseBackendTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/Backend/Typo3DatabaseBackendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache\Backend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend; use TYPO3\CMS\Core\Cache\Exception; use TYPO3\CMS\Core\Cache\Exception\InvalidDataException; @@ -30,9 +31,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function setCacheCalculatesCacheTableName(): void { $frontend = new NullFrontend('test'); @@ -42,9 +41,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase self::assertEquals('cache_test', $subject->getCacheTable()); } - /** - * @test - */ + #[Test] public function setCacheCalculatesTagsTableName(): void { $frontend = new NullFrontend('test'); @@ -54,9 +51,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase self::assertEquals('cache_test_tags', $subject->getTagsTable()); } - /** - * @test - */ + #[Test] public function setThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -65,9 +60,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->set('identifier', 'data'); } - /** - * @test - */ + #[Test] public function setThrowsExceptionIfDataIsNotAString(): void { $frontend = new NullFrontend('test'); @@ -80,9 +73,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->set('identifier', ['iAmAnArray']); } - /** - * @test - */ + #[Test] public function getThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -91,9 +82,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->get('identifier'); } - /** - * @test - */ + #[Test] public function hasThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -102,9 +91,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->has('identifier'); } - /** - * @test - */ + #[Test] public function removeThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -113,9 +100,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->remove('identifier'); } - /** - * @test - */ + #[Test] public function collectGarbageThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -124,9 +109,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->collectGarbage(); } - /** - * @test - */ + #[Test] public function findIdentifiersByTagThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -135,9 +118,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->findIdentifiersByTag('identifier'); } - /** - * @test - */ + #[Test] public function flushThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -146,9 +127,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->flush(); } - /** - * @test - */ + #[Test] public function flushRemovesAllCacheEntries(): void { $frontend = new NullFrontend('test'); @@ -228,9 +207,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->flushByTags(['Tag1', 'Tag2']); } - /** - * @test - */ + #[Test] public function flushByTagThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); @@ -239,9 +216,7 @@ final class Typo3DatabaseBackendTest extends UnitTestCase $subject->flushByTag('Tag'); } - /** - * @test - */ + #[Test] public function flushByTagsThrowsExceptionIfFrontendWasNotSet(): void { $subject = new Typo3DatabaseBackend('Testing'); diff --git a/typo3/sysext/core/Tests/Unit/Cache/CacheManagerTest.php b/typo3/sysext/core/Tests/Unit/Cache/CacheManagerTest.php index 9c7d2e242ff7..87b8a67d1434 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/CacheManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/CacheManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Exception\DuplicateIdentifierException; @@ -40,9 +41,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CacheManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function managerThrowsExceptionOnCacheRegistrationWithAlreadyExistingIdentifier(): void { $this->expectException(DuplicateIdentifierException::class); @@ -63,9 +62,7 @@ final class CacheManagerTest extends UnitTestCase $manager->registerCache($cache2); } - /** - * @test - */ + #[Test] public function managerReturnsThePreviouslyRegisteredCache(): void { $manager = new CacheManager(); @@ -84,9 +81,7 @@ final class CacheManagerTest extends UnitTestCase self::assertSame($cache2, $manager->getCache('cache2'), 'The cache returned by getCache() was not the same I registered.'); } - /** - * @test - */ + #[Test] public function getCacheThrowsExceptionForNonExistingIdentifier(): void { $this->expectException(NoSuchCacheException::class); @@ -103,9 +98,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache('doesnotexist'); } - /** - * @test - */ + #[Test] public function hasCacheReturnsCorrectResult(): void { $manager = new CacheManager(); @@ -119,9 +112,7 @@ final class CacheManagerTest extends UnitTestCase self::assertFalse($manager->hasCache('cache2'), 'hasCache() did not return FALSE.'); } - /** - * @test - */ + #[Test] public function flushCachesByTagCallsTheFlushByTagMethodOfAllRegisteredCaches(): void { $manager = new CacheManager(); @@ -141,9 +132,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCachesByTag('theTag'); } - /** - * @test - */ + #[Test] public function flushCachesByTagsCallsTheFlushByTagsMethodOfAllRegisteredCaches(): void { $manager = new CacheManager(); @@ -163,9 +152,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCachesByTags(['theTag']); } - /** - * @test - */ + #[Test] public function flushCachesCallsTheFlushMethodOfAllRegisteredCaches(): void { $manager = new CacheManager(); @@ -185,9 +172,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCaches(); } - /** - * @test - */ + #[Test] public function flushCachesInGroupThrowsExceptionForNonExistingGroup(): void { $this->expectException(NoSuchCacheGroupException::class); @@ -197,9 +182,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCachesInGroup('nonExistingGroup'); } - /** - * @test - */ + #[Test] public function flushCachesInGroupByTagThrowsExceptionForNonExistingGroup(): void { $this->expectException(NoSuchCacheGroupException::class); @@ -209,9 +192,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCachesInGroup('nonExistingGroup'); } - /** - * @test - */ + #[Test] public function getCacheThrowsExceptionIfConfiguredFrontendDoesNotImplementFrontendInterface(): void { $manager = new CacheManager(); @@ -229,9 +210,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheThrowsExceptionIfConfiguredBackendDoesNotImplementBackendInterface(): void { $manager = new CacheManager(); @@ -249,9 +228,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheCallsInitializeObjectOnFrontendInstance(): void { $manager = new CacheManager(); @@ -270,9 +247,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheCallsInitializeObjectOnBackendInstance(): void { $manager = new CacheManager(); @@ -291,9 +266,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheCreatesBackendWithGivenConfiguration(): void { $manager = new CacheManager(); @@ -314,9 +287,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheCreatesCacheInstanceWithFallbackToDefaultFrontend(): void { $manager = $this->getAccessibleMock(CacheManager::class, null, [], '', false); @@ -339,9 +310,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheCreatesCacheInstanceWithFallbackToDefaultBackend(): void { $manager = $this->getAccessibleMock(CacheManager::class, null, [], '', false); @@ -364,9 +333,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheReturnsInstanceOfTheSpecifiedCacheFrontend(): void { $manager = new CacheManager(); @@ -382,9 +349,7 @@ final class CacheManagerTest extends UnitTestCase self::assertInstanceOf(FrontendFixture::class, $manager->getCache($cacheIdentifier)); } - /** - * @test - */ + #[Test] public function getCacheGivesIdentifierToCacheFrontend(): void { $manager = new CacheManager(); @@ -402,9 +367,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function getCacheGivesBackendInstanceToCacheFrontend(): void { $manager = new CacheManager(); @@ -422,9 +385,7 @@ final class CacheManagerTest extends UnitTestCase $manager->getCache($cacheIdentifier); } - /** - * @test - */ + #[Test] public function flushCachesInGroupByTagsWithEmptyTagsArrayDoesNotFlushCaches(): void { $manager = $this->getAccessibleMock(CacheManager::class, null, [], '', false); @@ -457,9 +418,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCachesInGroupByTags('group2', []); } - /** - * @test - */ + #[Test] public function flushCachesInGroupByTagsDeletesByTag(): void { $manager = $this->getAccessibleMock(CacheManager::class, null, [], '', false); @@ -493,9 +452,7 @@ final class CacheManagerTest extends UnitTestCase $manager->flushCachesInGroupByTags('group2', $tags); } - /** - * @test - */ + #[Test] public function setCacheConfigurationsThrowsExceptionIfConfiguredCacheDoesNotHaveAnIdentifier(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Cache/Frontend/AbstractFrontendTest.php b/typo3/sysext/core/Tests/Unit/Cache/Frontend/AbstractFrontendTest.php index acfb8439b2b2..0338d06de5e0 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/Frontend/AbstractFrontendTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/Frontend/AbstractFrontendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache\Frontend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\AbstractBackend; use TYPO3\CMS\Core\Cache\Backend\TaggableBackendInterface; use TYPO3\CMS\Core\Cache\Frontend\VariableFrontend; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class AbstractFrontendTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function theConstructorAcceptsValidIdentifiers(): void { $mockBackend = $this->getMockBuilder(AbstractBackend::class) @@ -45,9 +44,7 @@ final class AbstractFrontendTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function theConstructorRejectsInvalidIdentifiers(): void { $mockBackend = $this->getMockBuilder(AbstractBackend::class) @@ -67,9 +64,7 @@ final class AbstractFrontendTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function flushCallsBackend(): void { $identifier = 'someCacheIdentifier'; @@ -86,9 +81,7 @@ final class AbstractFrontendTest extends UnitTestCase $cache->flush(); } - /** - * @test - */ + #[Test] public function flushByTagRejectsInvalidTags(): void { $this->expectException(\InvalidArgumentException::class); @@ -104,9 +97,7 @@ final class AbstractFrontendTest extends UnitTestCase $cache->flushByTag('SomeInvalid\\Tag'); } - /** - * @test - */ + #[Test] public function flushByTagCallsBackendIfItIsATaggableBackend(): void { $tag = 'sometag'; @@ -123,9 +114,7 @@ final class AbstractFrontendTest extends UnitTestCase $cache->flushByTag($tag); } - /** - * @test - */ + #[Test] public function flushByTagsCallsBackendIfItIsATaggableBackend(): void { $tag = 'sometag'; @@ -142,9 +131,7 @@ final class AbstractFrontendTest extends UnitTestCase $cache->flushByTags([$tag]); } - /** - * @test - */ + #[Test] public function collectGarbageCallsBackend(): void { $identifier = 'someCacheIdentifier'; @@ -161,9 +148,7 @@ final class AbstractFrontendTest extends UnitTestCase $cache->collectGarbage(); } - /** - * @test - */ + #[Test] public function invalidEntryIdentifiersAreRecognizedAsInvalid(): void { $identifier = 'someCacheIdentifier'; @@ -177,9 +162,7 @@ final class AbstractFrontendTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function validEntryIdentifiersAreRecognizedAsValid(): void { $identifier = 'someCacheIdentifier'; @@ -193,9 +176,7 @@ final class AbstractFrontendTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function invalidTagsAreRecognizedAsInvalid(): void { $identifier = 'someCacheIdentifier'; @@ -209,9 +190,7 @@ final class AbstractFrontendTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function validTagsAreRecognizedAsValid(): void { $identifier = 'someCacheIdentifier'; diff --git a/typo3/sysext/core/Tests/Unit/Cache/Frontend/PhpFrontendTest.php b/typo3/sysext/core/Tests/Unit/Cache/Frontend/PhpFrontendTest.php index ec220a4ddc7e..56364d94a6c7 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/Frontend/PhpFrontendTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/Frontend/PhpFrontendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache\Frontend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\PhpCapableBackendInterface; use TYPO3\CMS\Core\Cache\Backend\SimpleFileBackend; use TYPO3\CMS\Core\Cache\Exception\InvalidDataException; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class PhpFrontendTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setChecksIfTheIdentifierIsValid(): void { $this->expectException(\InvalidArgumentException::class); @@ -45,9 +44,7 @@ final class PhpFrontendTest extends UnitTestCase $cache->set('foo', 'bar'); } - /** - * @test - */ + #[Test] public function setPassesPhpSourceCodeTagsAndLifetimeToBackend(): void { $originalSourceCode = 'return "hello world!";'; @@ -58,9 +55,7 @@ final class PhpFrontendTest extends UnitTestCase $cache->set('Foo-Bar', $originalSourceCode, ['tags'], 1234); } - /** - * @test - */ + #[Test] public function setThrowsInvalidDataExceptionOnNonStringValues(): void { $this->expectException(InvalidDataException::class); @@ -73,9 +68,7 @@ final class PhpFrontendTest extends UnitTestCase $cache->set('Foo-Bar', []); } - /** - * @test - */ + #[Test] public function requireOnceCallsTheBackendsRequireOnceMethod(): void { $mockBackend = $this->createMock(PhpCapableBackendInterface::class); @@ -85,9 +78,7 @@ final class PhpFrontendTest extends UnitTestCase self::assertSame('hello world!', $result); } - /** - * @test - */ + #[Test] public function requireCallsTheBackendsRequireMethod(): void { $mockBackend = $this->createMock(SimpleFileBackend::class); diff --git a/typo3/sysext/core/Tests/Unit/Cache/Frontend/VariableFrontendTest.php b/typo3/sysext/core/Tests/Unit/Cache/Frontend/VariableFrontendTest.php index 05cf05b02ef7..3e3e59d84842 100644 --- a/typo3/sysext/core/Tests/Unit/Cache/Frontend/VariableFrontendTest.php +++ b/typo3/sysext/core/Tests/Unit/Cache/Frontend/VariableFrontendTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Cache\Frontend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\AbstractBackend; use TYPO3\CMS\Core\Cache\Frontend\VariableFrontend; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class VariableFrontendTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setChecksIfTheIdentifierIsValid(): void { $this->expectException(\InvalidArgumentException::class); @@ -39,9 +38,7 @@ final class VariableFrontendTest extends UnitTestCase $cache->set('foo', 'bar'); } - /** - * @test - */ + #[Test] public function setPassesSerializedStringToBackend(): void { $theString = 'Just some value'; @@ -56,9 +53,7 @@ final class VariableFrontendTest extends UnitTestCase $cache->set('VariableCacheTest', $theString); } - /** - * @test - */ + #[Test] public function setPassesSerializedArrayToBackend(): void { $theArray = ['Just some value', 'and another one.']; @@ -73,9 +68,7 @@ final class VariableFrontendTest extends UnitTestCase $cache->set('VariableCacheTest', $theArray); } - /** - * @test - */ + #[Test] public function setPassesLifetimeToBackend(): void { $theString = 'Just some value'; @@ -91,9 +84,7 @@ final class VariableFrontendTest extends UnitTestCase $cache->set('VariableCacheTest', $theString, [], $theLifetime); } - /** - * @test - */ + #[Test] public function getFetchesStringValueFromBackend(): void { $backend = $this->getMockBuilder(AbstractBackend::class) @@ -107,9 +98,7 @@ final class VariableFrontendTest extends UnitTestCase self::assertEquals('Just some value', $cache->get('VariableCacheTest'), 'The returned value was not the expected string.'); } - /** - * @test - */ + #[Test] public function getFetchesArrayValueFromBackend(): void { $theArray = ['Just some value', 'and another one.']; @@ -124,9 +113,7 @@ final class VariableFrontendTest extends UnitTestCase self::assertEquals($theArray, $cache->get('VariableCacheTest'), 'The returned value was not the expected unserialized array.'); } - /** - * @test - */ + #[Test] public function getFetchesFalseBooleanValueFromBackend(): void { $backend = $this->getMockBuilder(AbstractBackend::class) @@ -140,9 +127,7 @@ final class VariableFrontendTest extends UnitTestCase self::assertFalse($cache->get('VariableCacheTest'), 'The returned value was not the FALSE.'); } - /** - * @test - */ + #[Test] public function hasReturnsResultFromBackend(): void { $backend = $this->getMockBuilder(AbstractBackend::class) @@ -156,9 +141,7 @@ final class VariableFrontendTest extends UnitTestCase self::assertTrue($cache->has('VariableCacheTest'), 'has() did not return TRUE.'); } - /** - * @test - */ + #[Test] public function removeCallsBackend(): void { $cacheIdentifier = 'someCacheIdentifier'; diff --git a/typo3/sysext/core/Tests/Unit/Category/Collection/CategoryCollectionTest.php b/typo3/sysext/core/Tests/Unit/Category/Collection/CategoryCollectionTest.php index 079e88c72962..8f600f010e35 100644 --- a/typo3/sysext/core/Tests/Unit/Category/Collection/CategoryCollectionTest.php +++ b/typo3/sysext/core/Tests/Unit/Category/Collection/CategoryCollectionTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Category\Collection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Category\Collection\CategoryCollection; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CategoryCollectionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function missingTableNameArgumentForObjectCategoryCollection(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/Charset/CharsetConverterTest.php b/typo3/sysext/core/Tests/Unit/Charset/CharsetConverterTest.php index ae8a795092b3..8817f789b10b 100644 --- a/typo3/sysext/core/Tests/Unit/Charset/CharsetConverterTest.php +++ b/typo3/sysext/core/Tests/Unit/Charset/CharsetConverterTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Charset; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Charset\CharsetConverter; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CharsetConverterTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function utf8DecodeACharacterToAscii(): void { $charsetConverter = new CharsetConverter(); @@ -42,9 +42,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertSame('ASCII', mb_detect_encoding($targetString, ['ASCII', 'UTF-8'])); } - /** - * @test - */ + #[Test] public function utf8DecodeACharacterToIso885915(): void { $charsetConverter = new CharsetConverter(); @@ -64,9 +62,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertNotSame($string, $targetString); } - /** - * @test - */ + #[Test] public function utf8DecodeEuroSignCharacterToIso885915(): void { $charsetConverter = new CharsetConverter(); @@ -86,9 +82,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertNotSame($string, $targetString); } - /** - * @test - */ + #[Test] public function utf8DecodeAKanjiToBig5(): void { $charsetConverter = new CharsetConverter(); @@ -108,9 +102,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertNotSame($string, $targetString); } - /** - * @test - */ + #[Test] public function convertingAUtf8EmojiSignToNonExistingAsciiRepresentationResultsInAQuestionMarkSign(): void { $charsetConverter = new CharsetConverter(); @@ -125,9 +117,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertSame('😂', $charsetConverter->utf8_decode($string, 'ascii', true)); } - /** - * @test - */ + #[Test] public function utf8DecodeToUtf8ReturnsTheSameSign(): void { self::assertSame( @@ -136,9 +126,7 @@ final class CharsetConverterTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function utf8EncodeIso885915ACharacter(): void { $string = "\x41"; // A @@ -151,9 +139,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertSame($string, $targetString); } - /** - * @test - */ + #[Test] public function utf8EncodeIso885915EuroSign(): void { $string = "\xA4"; // € sign encoded as iso-8859-15 @@ -165,9 +151,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertNotSame($string, $targetString); } - /** - * @test - */ + #[Test] public function utf8EncodeABig5EncodedSign(): void { $string = "\xA2\xC5"; // 〣 sign encoded as big5 @@ -180,9 +164,7 @@ final class CharsetConverterTest extends UnitTestCase self::assertNotSame($string, $targetString); } - /** - * @test - */ + #[Test] public function utf8EncodeAlreadyUtf8EncodedSign(): void { self::assertSame( @@ -191,9 +173,7 @@ final class CharsetConverterTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function utf8ToNumberArray(): void { $string = "\xF0\x9F\x98\x82 – a joyful emoji"; @@ -241,10 +221,8 @@ final class CharsetConverterTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validInputForSpecCharsToAscii - */ + #[DataProvider('validInputForSpecCharsToAscii')] + #[Test] public function specCharsToAsciiConvertsUmlautsToAscii( string $input, string $expectedString @@ -277,10 +255,10 @@ final class CharsetConverterTest extends UnitTestCase } /** - * @test - * @dataProvider invalidInputForSpecCharsToAscii * @param mixed $input */ + #[DataProvider('invalidInputForSpecCharsToAscii')] + #[Test] public function specCharsToAsciiConvertsInvalidInputToEmptyString($input): void { $subject = new CharsetConverter(); diff --git a/typo3/sysext/core/Tests/Unit/Command/Descriptor/TextDescriptorTest.php b/typo3/sysext/core/Tests/Unit/Command/Descriptor/TextDescriptorTest.php index a3e32b870726..3a41cb9babe4 100644 --- a/typo3/sysext/core/Tests/Unit/Command/Descriptor/TextDescriptorTest.php +++ b/typo3/sysext/core/Tests/Unit/Command/Descriptor/TextDescriptorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Command\Descriptor; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Console\Application; use Symfony\Component\Console\Output\OutputInterface; use TYPO3\CMS\Core\Command\Descriptor\TextDescriptor; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TextDescriptorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function ensureEmptyStringIsSetForDescriptionIfNoDescriptionForCommandIsGiven(): void { $commandRegistry = $this->createMock(CommandRegistry::class); diff --git a/typo3/sysext/core/Tests/Unit/Command/SendEmailCommandTest.php b/typo3/sysext/core/Tests/Unit/Command/SendEmailCommandTest.php index 37de735da4f1..b7939eeec5da 100644 --- a/typo3/sysext/core/Tests/Unit/Command/SendEmailCommandTest.php +++ b/typo3/sysext/core/Tests/Unit/Command/SendEmailCommandTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Command; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\Mailer\Transport\TransportInterface; use TYPO3\CMS\Core\Command\SendEmailCommand; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SendEmailCommandTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function executeWillFlushTheQueue(): void { $delayedTransportMock = $this->createMock(DelayedTransportInterface::class); diff --git a/typo3/sysext/core/Tests/Unit/Configuration/CKEditor5MigratorTest.php b/typo3/sysext/core/Tests/Unit/Configuration/CKEditor5MigratorTest.php index 105b39c07551..233f161debad 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/CKEditor5MigratorTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/CKEditor5MigratorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\CKEditor5Migrator; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -1978,10 +1980,8 @@ final class CKEditor5MigratorTest extends UnitTestCase ]; } - /** - * @dataProvider migrationDataProvider - * @test - */ + #[DataProvider('migrationDataProvider')] + #[Test] public function migrationTests(array $configuration, array $expectation): void { $finalConfiguration = GeneralUtility::makeInstance( diff --git a/typo3/sysext/core/Tests/Unit/Configuration/ConfigurationManagerTest.php b/typo3/sysext/core/Tests/Unit/Configuration/ConfigurationManagerTest.php index 35d1a854e212..1a5f4b724e80 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/ConfigurationManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/ConfigurationManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Configuration\ConfigurationManager; use TYPO3\CMS\Core\Core\Environment; @@ -58,9 +59,7 @@ final class ConfigurationManagerTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function getDefaultConfigurationExecutesDefinedDefaultConfigurationFile(): void { $this->expectException(\RuntimeException::class); @@ -79,9 +78,7 @@ final class ConfigurationManagerTest extends UnitTestCase $this->subject->getDefaultConfiguration(); } - /** - * @test - */ + #[Test] public function getSystemConfigurationExecutesDefinedConfigurationFile(): void { $this->expectException(\RuntimeException::class); @@ -99,9 +96,7 @@ final class ConfigurationManagerTest extends UnitTestCase $this->subject->getLocalConfiguration(); } - /** - * @test - */ + #[Test] public function updateLocalConfigurationWritesNewMergedLocalConfigurationArray(): void { $currentLocalConfiguration = [ @@ -134,9 +129,7 @@ final class ConfigurationManagerTest extends UnitTestCase $this->subject->updateLocalConfiguration($overrideConfiguration); } - /** - * @test - */ + #[Test] public function getDefaultConfigurationValueByPathReturnsCorrectValue(): void { $this->createSubjectWithMockedMethods( @@ -155,9 +148,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertSame('value', $this->subject->getDefaultConfigurationValueByPath('path')); } - /** - * @test - */ + #[Test] public function getLocalConfigurationValueByPathReturnsCorrectValue(): void { $this->createSubjectWithMockedMethods( @@ -176,9 +167,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertSame('value', $this->subject->getLocalConfigurationValueByPath('path')); } - /** - * @test - */ + #[Test] public function getConfigurationValueByPathReturnsCorrectValue(): void { $this->createSubjectWithMockedMethods( @@ -205,9 +194,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertSame('valueOverride', $this->subject->getConfigurationValueByPath('path')); } - /** - * @test - */ + #[Test] public function setLocalConfigurationValueByPathReturnFalseIfPathIsNotValid(): void { $this->createSubjectWithMockedMethods([ @@ -220,9 +207,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertFalse($this->subject->setLocalConfigurationValueByPath('path', 'value')); } - /** - * @test - */ + #[Test] public function setLocalConfigurationValueByPathUpdatesValueDefinedByPath(): void { $currentLocalConfiguration = [ @@ -254,9 +239,7 @@ final class ConfigurationManagerTest extends UnitTestCase $this->subject->setLocalConfigurationValueByPath('toUpdate', 'updated'); } - /** - * @test - */ + #[Test] public function setLocalConfigurationValuesByPathValuePairsSetsPathValuePairs(): void { $currentLocalConfiguration = [ @@ -293,9 +276,7 @@ final class ConfigurationManagerTest extends UnitTestCase $this->subject->setLocalConfigurationValuesByPathValuePairs($pairs); } - /** - * @test - */ + #[Test] public function removeLocalConfigurationKeysByPathRemovesGivenPathsFromConfigurationAndReturnsTrue(): void { $currentLocalConfiguration = [ @@ -327,9 +308,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertTrue($this->subject->removeLocalConfigurationKeysByPath($removePaths)); } - /** - * @test - */ + #[Test] public function removeLocalConfigurationKeysByPathReturnsFalseIfNothingIsRemoved(): void { $currentLocalConfiguration = [ @@ -351,9 +330,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertFalse($this->subject->removeLocalConfigurationKeysByPath($removeNothing)); } - /** - * @test - */ + #[Test] public function removeLocalConfigurationKeysByPathReturnsFalseIfSomethingInexistentIsRemoved(): void { $currentLocalConfiguration = [ @@ -375,9 +352,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertFalse($this->subject->removeLocalConfigurationKeysByPath($removeNonExisting)); } - /** - * @test - */ + #[Test] public function canWriteConfigurationReturnsTrueIfDirectoryAndFilesAreWritable(): void { $directory = StringUtility::getUniqueId('test_'); @@ -397,9 +372,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function writeLocalConfigurationWritesSortedContentToConfigurationFile(): void { $configurationFile = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('localConfiguration'); @@ -436,9 +409,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertSame($expectedContent, file_get_contents($configurationFile)); } - /** - * @test - */ + #[Test] public function createLocalConfigurationFromFactoryConfigurationThrowsExceptionIfFileExists(): void { $this->expectException(\RuntimeException::class); @@ -452,9 +423,7 @@ final class ConfigurationManagerTest extends UnitTestCase $subject->createLocalConfigurationFromFactoryConfiguration(); } - /** - * @test - */ + #[Test] public function createLocalConfigurationFromFactoryConfigurationWritesContentFromFactoryFile(): void { $subject = $this->getAccessibleMock(ConfigurationManager::class, ['writeLocalConfiguration', 'getSystemConfigurationFileLocation', 'getFactoryConfigurationFileLocation']); @@ -484,9 +453,7 @@ final class ConfigurationManagerTest extends UnitTestCase $subject->createLocalConfigurationFromFactoryConfiguration(); } - /** - * @test - */ + #[Test] public function createLocalConfigurationFromFactoryConfigurationMergesConfigurationWithAdditionalFactoryFile(): void { $subject = $this->getAccessibleMock(ConfigurationManager::class, ['writeLocalConfiguration', 'getSystemConfigurationFileLocation', 'getFactoryConfigurationFileLocation', 'getAdditionalFactoryConfigurationFileLocation']); @@ -528,9 +495,7 @@ final class ConfigurationManagerTest extends UnitTestCase $subject->createLocalConfigurationFromFactoryConfiguration(); } - /** - * @test - */ + #[Test] public function isValidLocalConfigurationPathAcceptsAllowedPath(): void { $subject = $this->getAccessibleMock(ConfigurationManager::class, null); @@ -538,9 +503,7 @@ final class ConfigurationManagerTest extends UnitTestCase self::assertTrue($subject->_call('isValidLocalConfigurationPath', 'foo/bar/baz')); } - /** - * @test - */ + #[Test] public function isValidLocalConfigurationPathDeniesNotAllowedPath(): void { $subject = $this->getAccessibleMock(ConfigurationManager::class, null); diff --git a/typo3/sysext/core/Tests/Unit/Configuration/ExtensionConfigurationTest.php b/typo3/sysext/core/Tests/Unit/Configuration/ExtensionConfigurationTest.php index fbdb6c5ad8a4..0445b319f3c0 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/ExtensionConfigurationTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/ExtensionConfigurationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\ConfigurationManager; use TYPO3\CMS\Core\Configuration\ExtensionConfiguration; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ExtensionConfigurationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getWithEmptyPathReturnsEntireExtensionConfiguration(): void { $extConf = [ @@ -39,9 +38,7 @@ final class ExtensionConfigurationTest extends UnitTestCase self::assertSame((new ExtensionConfiguration())->get('someExtension'), $extConf); } - /** - * @test - */ + #[Test] public function getWithPathReturnsGivenValue(): void { $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['someExtension'] = [ @@ -53,9 +50,7 @@ final class ExtensionConfigurationTest extends UnitTestCase self::assertSame((new ExtensionConfiguration())->get('someExtension', 'aFeature'), 'iAmEnabled'); } - /** - * @test - */ + #[Test] public function getWithPathReturnsGivenPathSegment(): void { $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['someExtension'] = [ @@ -67,9 +62,7 @@ final class ExtensionConfigurationTest extends UnitTestCase self::assertSame((new ExtensionConfiguration())->get('someExtension', 'aFlagCategory'), ['someFlag' => 'foo']); } - /** - * @test - */ + #[Test] public function setThrowsExceptionWithEmptyExtension(): void { $this->expectException(\RuntimeException::class); @@ -77,9 +70,7 @@ final class ExtensionConfigurationTest extends UnitTestCase (new ExtensionConfiguration())->set(''); } - /** - * @test - */ + #[Test] public function setRemovesFullExtensionConfiguration(): void { $configurationManagerMock = $this->createMock(ConfigurationManager::class); @@ -92,9 +83,7 @@ final class ExtensionConfigurationTest extends UnitTestCase self::assertFalse(isset($GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['foo'])); } - /** - * @test - */ + #[Test] public function setWritesFullExtensionConfig(): void { $value = ['bar' => 'baz']; diff --git a/typo3/sysext/core/Tests/Unit/Configuration/FeaturesTest.php b/typo3/sysext/core/Tests/Unit/Configuration/FeaturesTest.php index 0e3f62b16c53..c4c3629c26eb 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/FeaturesTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/FeaturesTest.php @@ -17,23 +17,20 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\Features; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FeaturesTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function nonExistingFeatureReturnsFalse(): void { $features = new Features(); self::assertFalse($features->isFeatureEnabled('nonExistingFeature')); } - /** - * @test - */ + #[Test] public function checkIfExistingDisabledFeatureIsDisabled(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['nativeFunctionality'] = false; @@ -41,9 +38,7 @@ final class FeaturesTest extends UnitTestCase self::assertFalse($features->isFeatureEnabled('nativeFunctionality')); } - /** - * @test - */ + #[Test] public function checkIfExistingEnabledFeatureIsEnabled(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['nativeFunctionality'] = true; @@ -51,9 +46,7 @@ final class FeaturesTest extends UnitTestCase self::assertTrue($features->isFeatureEnabled('nativeFunctionality')); } - /** - * @test - */ + #[Test] public function checkIfExistingEnabledFeatureIsDisabled(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['nativeFunctionality'] = false; diff --git a/typo3/sysext/core/Tests/Unit/Configuration/FlexForm/FlexFormToolsTest.php b/typo3/sysext/core/Tests/Unit/Configuration/FlexForm/FlexFormToolsTest.php index def39baa9bed..aa80dedb9447 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/FlexForm/FlexFormToolsTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/FlexForm/FlexFormToolsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration\FlexForm; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\Tests\Unit\Fixtures\EventDispatcher\MockEventDispatcher; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FlexFormToolsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function traverseFlexFormXmlDataRecurseDoesNotFailOnNotExistingField(): void { $dataStruct = [ @@ -47,9 +46,7 @@ final class FlexFormToolsTest extends UnitTestCase $subject->traverseFlexFormXMLData_recurse($dataStruct, $editData, $pA); } - /** - * @test - */ + #[Test] public function traverseFlexFormXmlDataRecurseDoesNotFailOnNotExistingArrayField(): void { $dataStruct = [ diff --git a/typo3/sysext/core/Tests/Unit/Configuration/Loader/YamlFileLoaderTest.php b/typo3/sysext/core/Tests/Unit/Configuration/Loader/YamlFileLoaderTest.php index 1db08de82cd6..859cacf801ec 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/Loader/YamlFileLoaderTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/Loader/YamlFileLoaderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration\Loader; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\Loader\YamlFileLoader; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -85,10 +87,9 @@ final class YamlFileLoaderTest extends UnitTestCase /** * Method checking for env placeholders - * - * @dataProvider loadWithEnvVarDataProvider - * @test */ + #[DataProvider('loadWithEnvVarDataProvider')] + #[Test] public function loadWithEnvVarPlaceholders(array $envs, string $yamlContent, array $expected): void { foreach ($envs as $env) { @@ -110,9 +111,8 @@ final class YamlFileLoaderTest extends UnitTestCase /** * Method checking for env placeholders - * - * @test */ + #[Test] public function loadWithEnvVarPlaceholdersDoesNotReplaceWithNonExistingValues(): void { $fileName = 'Berta.yml'; @@ -194,10 +194,8 @@ betterthanbefore: \'%env(mynonexistingenv)%\' ]; } - /** - * @dataProvider isPlaceholderDataProvider - * @test - */ + #[DataProvider('isPlaceholderDataProvider')] + #[Test] public function containsPlaceholderTest(mixed $placeholderValue, bool $expected): void { $subject = $this->getAccessibleMock(YamlFileLoader::class, null); diff --git a/typo3/sysext/core/Tests/Unit/Configuration/RichtextTest.php b/typo3/sysext/core/Tests/Unit/Configuration/RichtextTest.php index c019fe1f3472..3f1e7263025e 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/RichtextTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/RichtextTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\Richtext; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RichtextTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getConfigurationUsesOverruleModeFromType(): void { $fieldConfig = [ @@ -76,9 +76,7 @@ final class RichtextTest extends UnitTestCase self::assertSame($expected, $output); } - /** - * @test - */ + #[Test] public function getConfigurationUsesOverruleModeFromConfig(): void { $fieldConfig = [ @@ -126,9 +124,7 @@ final class RichtextTest extends UnitTestCase self::assertSame($expected, $output); } - /** - * @test - */ + #[Test] public function getConfigurationSetsOverruleModeIfMissing(): void { $fieldConfig = [ @@ -164,9 +160,7 @@ final class RichtextTest extends UnitTestCase self::assertSame($expected, $output); } - /** - * @test - */ + #[Test] public function getConfigurationOverridesByDefault(): void { $fieldConfig = [ @@ -243,9 +237,7 @@ final class RichtextTest extends UnitTestCase self::assertSame($expected, $output); } - /** - * @test - */ + #[Test] public function getConfigurationOverridesByFieldSpecificConfig(): void { $fieldConfig = [ @@ -333,9 +325,7 @@ final class RichtextTest extends UnitTestCase self::assertSame($expected, $output); } - /** - * @test - */ + #[Test] public function getConfigurationOverridesByFieldAndTypeSpecificConfig(): void { $fieldConfig = [ @@ -437,9 +427,7 @@ final class RichtextTest extends UnitTestCase self::assertSame($expected, $output); } - /** - * @test - */ + #[Test] public function getConfigurationPageTsOverridesPreset(): void { $pageId = 42; @@ -817,10 +805,8 @@ final class RichtextTest extends UnitTestCase ]; } - /** - * @dataProvider dataProviderGetConfigurationFindPresetInPageTsOverridesPreset - * @test - */ + #[DataProvider('dataProviderGetConfigurationFindPresetInPageTsOverridesPreset')] + #[Test] public function getConfigurationFindPresetInPageTsOverridesPreset($fieldConfig, $pageTsConfig, $expected, $message): void { // Accessible mock to $subject since getRtePageTsConfigOfPid calls BackendUtility::getPagesTSconfig() diff --git a/typo3/sysext/core/Tests/Unit/Configuration/SiteConfigurationTest.php b/typo3/sysext/core/Tests/Unit/Configuration/SiteConfigurationTest.php index 1a894304f20a..eb00bcc3cd0b 100644 --- a/typo3/sysext/core/Tests/Unit/Configuration/SiteConfigurationTest.php +++ b/typo3/sysext/core/Tests/Unit/Configuration/SiteConfigurationTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Yaml\Yaml; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Configuration\Exception\SiteConfigurationWriteException; @@ -56,17 +58,13 @@ final class SiteConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveAllExistingSitesReturnsEmptyArrayForNoSiteConfigsFound(): void { self::assertEmpty($this->siteConfiguration->resolveAllExistingSites()); } - /** - * @test - */ + #[Test] public function resolveAllExistingSitesReadsConfiguration(): void { $configuration = [ @@ -83,9 +81,7 @@ final class SiteConfigurationTest extends UnitTestCase self::assertEquals(new Uri('https://example.com'), $currentSite->getBase()); } - /** - * @test - */ + #[Test] public function writeOnlyWritesModifiedKeys(): void { $identifier = 'testsite'; @@ -114,9 +110,7 @@ final class SiteConfigurationTest extends UnitTestCase self::assertFileEquals($expected, $siteConfig); } - /** - * @test - */ + #[Test] public function writingOfNestedStructuresPreservesOrder(): void { $identifier = 'testsite'; @@ -169,10 +163,8 @@ final class SiteConfigurationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider writingPlaceholdersIsHandledDataProvider - */ + #[DataProvider('writingPlaceholdersIsHandledDataProvider')] + #[Test] public function writingPlaceholdersIsHandled(array $changes, bool $expectedException): void { if ($expectedException) { diff --git a/typo3/sysext/core/Tests/Unit/Console/CommandRegistryTest.php b/typo3/sysext/core/Tests/Unit/Console/CommandRegistryTest.php index fe4180e2ed5a..30357aaaf002 100644 --- a/typo3/sysext/core/Tests/Unit/Console/CommandRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Console/CommandRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Console; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use Symfony\Component\Console\Command\Command; @@ -35,18 +36,14 @@ final class CommandRegistryTest extends UnitTestCase $this->containerMock = $this->createMock(ContainerInterface::class); } - /** - * @test - */ + #[Test] public function implementsCommandLoaderInterface(): void { $commandRegistry = new CommandRegistry($this->containerMock); self::assertInstanceof(CommandLoaderInterface::class, $commandRegistry); } - /** - * @test - */ + #[Test] public function iteratesLazyCommandsOfActivePackages(): void { $command1Mock = $this->createMock(Command::class); diff --git a/typo3/sysext/core/Tests/Unit/Context/ContextTest.php b/typo3/sysext/core/Tests/Unit/Context/ContextTest.php index 3f1043fb54fb..d96f63ca3872 100644 --- a/typo3/sysext/core/Tests/Unit/Context/ContextTest.php +++ b/typo3/sysext/core/Tests/Unit/Context/ContextTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Context; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\Exception\AspectNotFoundException; use TYPO3\CMS\Core\Context\UserAspect; @@ -42,10 +44,8 @@ final class ContextTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validAspectKeysDataProvider - */ + #[DataProvider('validAspectKeysDataProvider')] + #[Test] public function hasAspectReturnsTrueOnExistingAspect(string $aspectName): void { $subject = new Context([ @@ -67,10 +67,8 @@ final class ContextTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidAspectKeysDataProvider - */ + #[DataProvider('invalidAspectKeysDataProvider')] + #[Test] public function hasAspectReturnsFalseOnNonExistingAspect(string $aspectName): void { $subject = new Context([ @@ -80,9 +78,7 @@ final class ContextTest extends UnitTestCase self::assertFalse($subject->hasAspect($aspectName)); } - /** - * @test - */ + #[Test] public function constructorAddsValidAspect(): void { $subject = new Context([ @@ -93,9 +89,7 @@ final class ContextTest extends UnitTestCase self::assertFalse($subject->hasAspect('uncoolio')); } - /** - * @test - */ + #[Test] public function getAspectThrowsExceptionOnInvalidAspect(): void { $aspect = new UserAspect(); @@ -108,9 +102,7 @@ final class ContextTest extends UnitTestCase $subject->getAspect('uncoolio'); } - /** - * @test - */ + #[Test] public function getAspectReturnsValidAspect(): void { $aspect = new UserAspect(); @@ -121,9 +113,7 @@ final class ContextTest extends UnitTestCase self::assertSame($aspect, $subject->getAspect('coolio')); } - /** - * @test - */ + #[Test] public function invalidAspectFromgetPropertyFromAspectThrowsException(): void { $aspect = new UserAspect(); @@ -136,9 +126,7 @@ final class ContextTest extends UnitTestCase $subject->getPropertyFromAspect('uncoolio', 'does not matter'); } - /** - * @test - */ + #[Test] public function invalidPropertyFromgetPropertyFromAspectReturnsDefault(): void { $defaultValue = 'default value'; @@ -151,9 +139,7 @@ final class ContextTest extends UnitTestCase self::assertEquals($defaultValue, $result); } - /** - * @test - */ + #[Test] public function validPropertyFromgetPropertyFromAspectReturnsValue(): void { $aspect = new WorkspaceAspect(13); @@ -165,9 +151,7 @@ final class ContextTest extends UnitTestCase self::assertEquals(13, $result); } - /** - * @test - */ + #[Test] public function setAspectSetsAnAspectAndCanReturnIt(): void { $aspect = new UserAspect(); @@ -177,9 +161,7 @@ final class ContextTest extends UnitTestCase self::assertSame($aspect, $subject->getAspect('coolio')); } - /** - * @test - */ + #[Test] public function setAspectOverridesAnExisting(): void { $initialAspect = new UserAspect(); diff --git a/typo3/sysext/core/Tests/Unit/Context/DateTimeAspectTest.php b/typo3/sysext/core/Tests/Unit/Context/DateTimeAspectTest.php index 4fdd1e421640..c1ab6821ad3f 100644 --- a/typo3/sysext/core/Tests/Unit/Context/DateTimeAspectTest.php +++ b/typo3/sysext/core/Tests/Unit/Context/DateTimeAspectTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Context; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\DateTimeAspect; use TYPO3\CMS\Core\Context\Exception\AspectPropertyNotFoundException; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DateTimeAspectTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getDateTimeReturnsSameObject(): void { $dateObject = new \DateTimeImmutable('2018-07-15', new \DateTimeZone('Europe/Moscow')); @@ -34,9 +34,7 @@ final class DateTimeAspectTest extends UnitTestCase self::assertSame($dateObject, $result); } - /** - * @test - */ + #[Test] public function getThrowsExceptionOnInvalidArgument(): void { $this->expectException(AspectPropertyNotFoundException::class); @@ -46,9 +44,7 @@ final class DateTimeAspectTest extends UnitTestCase $subject->get('football'); } - /** - * @test - */ + #[Test] public function getTimestampReturnsInteger(): void { $dateObject = new \DateTimeImmutable('2018-07-15', new \DateTimeZone('Europe/Moscow')); @@ -84,11 +80,11 @@ final class DateTimeAspectTest extends UnitTestCase } /** - * @test - * @dataProvider dateFormatValuesDataProvider * @param string $key * @param string $expectedResult */ + #[DataProvider('dateFormatValuesDataProvider')] + #[Test] public function getReturnsValidInformationFromProperty($key, $expectedResult): void { $dateObject = new \DateTimeImmutable('2018-07-15T13:00:05', new \DateTimeZone('Europe/Moscow')); diff --git a/typo3/sysext/core/Tests/Unit/Context/SecurityAspectTest.php b/typo3/sysext/core/Tests/Unit/Context/SecurityAspectTest.php index 5b597ea298f0..ab8035405a99 100644 --- a/typo3/sysext/core/Tests/Unit/Context/SecurityAspectTest.php +++ b/typo3/sysext/core/Tests/Unit/Context/SecurityAspectTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Context; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\SecurityAspect; use TYPO3\CMS\Core\Security\NoncePool; use TYPO3\CMS\Core\Security\RequestToken; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SecurityAspectTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function receivedRequestTokenIsFunctional(): void { $aspect = new SecurityAspect(); @@ -40,18 +39,14 @@ final class SecurityAspectTest extends UnitTestCase self::assertNull($aspect->getReceivedRequestToken()); } - /** - * @test - */ + #[Test] public function signingSecretResolverIsFunctional(): void { $aspect = new SecurityAspect(); self::assertInstanceOf(NoncePool::class, $aspect->getSigningSecretResolver()->findByType('nonce')); } - /** - * @test - */ + #[Test] public function noncePoolIsFunctional(): void { $aspect = new SecurityAspect(); diff --git a/typo3/sysext/core/Tests/Unit/Context/UserAspectTest.php b/typo3/sysext/core/Tests/Unit/Context/UserAspectTest.php index 7b1c61d8f6df..91dd1882c279 100644 --- a/typo3/sysext/core/Tests/Unit/Context/UserAspectTest.php +++ b/typo3/sysext/core/Tests/Unit/Context/UserAspectTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Context; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Context\Exception\AspectPropertyNotFoundException; use TYPO3\CMS\Core\Context\UserAspect; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class UserAspectTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getterReturnsProperDefaultValues(): void { $subject = new UserAspect(null, null); @@ -38,9 +38,7 @@ final class UserAspectTest extends UnitTestCase self::assertEquals([], $subject->get('groupNames')); } - /** - * @test - */ + #[Test] public function alternativeGroupsAreAlwaysReturned(): void { $subject = new UserAspect(null, []); @@ -49,9 +47,7 @@ final class UserAspectTest extends UnitTestCase self::assertEquals([567], $subject->get('groupIds')); } - /** - * @test - */ + #[Test] public function getterReturnsValidUserId(): void { $user = new FrontendUserAuthentication(); @@ -62,9 +58,7 @@ final class UserAspectTest extends UnitTestCase self::assertEquals(13, $subject->get('id')); } - /** - * @test - */ + #[Test] public function getterReturnsValidUsername(): void { $user = new FrontendUserAuthentication(); @@ -76,9 +70,7 @@ final class UserAspectTest extends UnitTestCase self::assertEquals('Teddy', $subject->get('username')); } - /** - * @test - */ + #[Test] public function isLoggedInReturnsTrueOnFrontendUserWithoutUserGroup(): void { $user = new FrontendUserAuthentication(); @@ -89,9 +81,7 @@ final class UserAspectTest extends UnitTestCase self::assertTrue($subject->isLoggedIn()); } - /** - * @test - */ + #[Test] public function isLoggedInReturnsTrueOnFrontendUserWithUserGroup(): void { $user = new FrontendUserAuthentication(); @@ -103,9 +93,7 @@ final class UserAspectTest extends UnitTestCase self::assertTrue($subject->isLoggedIn()); } - /** - * @test - */ + #[Test] public function isLoggedInReturnsTrueOnBackendUserWithId(): void { $user = new BackendUserAuthentication(); @@ -116,9 +104,7 @@ final class UserAspectTest extends UnitTestCase self::assertTrue($subject->isLoggedIn()); } - /** - * @test - */ + #[Test] public function getGroupIdsReturnsFrontendUserGroups(): void { $user = new FrontendUserAuthentication(); @@ -130,9 +116,7 @@ final class UserAspectTest extends UnitTestCase self::assertEquals([0, -2, 23, 54], $subject->getGroupIds()); } - /** - * @test - */ + #[Test] public function getGroupIdsReturnsOverriddenGroups(): void { $user = new FrontendUserAuthentication(); @@ -190,10 +174,8 @@ final class UserAspectTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isUserOrGroupSetDataProvider - */ + #[DataProvider('isUserOrGroupSetDataProvider')] + #[Test] public function isUserOrGroupSetChecksForValidUser(int $userId, ?array $userGroups, ?array $overriddenGroups, bool $expectedResult): void { $user = new FrontendUserAuthentication(); @@ -207,9 +189,7 @@ final class UserAspectTest extends UnitTestCase self::assertEquals($expectedResult, $subject->isUserOrGroupSet()); } - /** - * @test - */ + #[Test] public function getThrowsExceptionOnInvalidArgument(): void { $this->expectException(AspectPropertyNotFoundException::class); diff --git a/typo3/sysext/core/Tests/Unit/Context/VisibilityAspectTest.php b/typo3/sysext/core/Tests/Unit/Context/VisibilityAspectTest.php index d9b15c4fefdc..4a71962154c6 100644 --- a/typo3/sysext/core/Tests/Unit/Context/VisibilityAspectTest.php +++ b/typo3/sysext/core/Tests/Unit/Context/VisibilityAspectTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Context; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Exception\AspectPropertyNotFoundException; use TYPO3\CMS\Core\Context\VisibilityAspect; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class VisibilityAspectTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getterReturnsProperDefaultValues(): void { $subject = new VisibilityAspect(); @@ -35,9 +34,7 @@ final class VisibilityAspectTest extends UnitTestCase self::assertFalse($subject->includeScheduledRecords()); } - /** - * @test - */ + #[Test] public function getterReturnsProperValues(): void { $subject = new VisibilityAspect(true, true, true, true); @@ -47,9 +44,7 @@ final class VisibilityAspectTest extends UnitTestCase self::assertTrue($subject->includeScheduledRecords()); } - /** - * @test - */ + #[Test] public function getReturnsProperValues(): void { $subject = new VisibilityAspect(true, true, true, true); @@ -59,9 +54,7 @@ final class VisibilityAspectTest extends UnitTestCase self::assertTrue($subject->get('includeScheduledRecords')); } - /** - * @test - */ + #[Test] public function getThrowsExceptionOnInvalidArgument(): void { $this->expectException(AspectPropertyNotFoundException::class); diff --git a/typo3/sysext/core/Tests/Unit/Context/WorkspaceAspectTest.php b/typo3/sysext/core/Tests/Unit/Context/WorkspaceAspectTest.php index 59e8708dc2b4..ec3a972a4459 100644 --- a/typo3/sysext/core/Tests/Unit/Context/WorkspaceAspectTest.php +++ b/typo3/sysext/core/Tests/Unit/Context/WorkspaceAspectTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Context; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Exception\AspectPropertyNotFoundException; use TYPO3\CMS\Core\Context\WorkspaceAspect; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class WorkspaceAspectTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getterReturnsProperDefaultValues(): void { $subject = new WorkspaceAspect(); @@ -36,9 +35,7 @@ final class WorkspaceAspectTest extends UnitTestCase self::assertFalse($subject->get('isOffline')); } - /** - * @test - */ + #[Test] public function getterReturnsProperCustomValues(): void { $subject = new WorkspaceAspect(13); @@ -49,9 +46,7 @@ final class WorkspaceAspectTest extends UnitTestCase self::assertTrue($subject->get('isOffline')); } - /** - * @test - */ + #[Test] public function getThrowsExceptionOnInvalidArgument(): void { $this->expectException(AspectPropertyNotFoundException::class); diff --git a/typo3/sysext/core/Tests/Unit/Core/ApplicationContextTest.php b/typo3/sysext/core/Tests/Unit/Core/ApplicationContextTest.php index d4a2cca9624e..6f0d96e6f19a 100644 --- a/typo3/sysext/core/Tests/Unit/Core/ApplicationContextTest.php +++ b/typo3/sysext/core/Tests/Unit/Core/ApplicationContextTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Core; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\ApplicationContext; use TYPO3\CMS\Core\Exception; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -42,10 +44,8 @@ final class ApplicationContextTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider allowedContexts - */ + #[DataProvider('allowedContexts')] + #[Test] public function contextStringCanBeSetInConstructorAndReadByCallingToString($allowedContext): void { $context = new ApplicationContext($allowedContext); @@ -65,10 +65,8 @@ final class ApplicationContextTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider forbiddenContexts - */ + #[DataProvider('forbiddenContexts')] + #[Test] public function constructorThrowsExceptionIfMainContextIsForbidden($forbiddenContext): void { $this->expectException(Exception::class); @@ -130,10 +128,8 @@ final class ApplicationContextTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isMethods - */ + #[DataProvider('isMethods')] + #[Test] public function contextMethodsReturnTheCorrectValues($contextName, $isDevelopment, $isProduction, $isTesting, $parentContext): void { $context = new ApplicationContext($contextName); @@ -143,9 +139,7 @@ final class ApplicationContextTest extends UnitTestCase self::assertSame((string)$parentContext, (string)$context->getParent()); } - /** - * @test - */ + #[Test] public function parentContextIsConnectedRecursively(): void { $context = new ApplicationContext('Production/Foo/Bar'); diff --git a/typo3/sysext/core/Tests/Unit/Core/ClassLoadingInformationGeneratorTest.php b/typo3/sysext/core/Tests/Unit/Core/ClassLoadingInformationGeneratorTest.php index 65309e9c0b57..8eb0c0b663f6 100644 --- a/typo3/sysext/core/Tests/Unit/Core/ClassLoadingInformationGeneratorTest.php +++ b/typo3/sysext/core/Tests/Unit/Core/ClassLoadingInformationGeneratorTest.php @@ -18,6 +18,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Core; use Composer\Autoload\ClassLoader; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\ClassLoadingInformationGenerator; use TYPO3\CMS\Core\Error\Exception; use TYPO3\CMS\Core\Package\PackageInterface; @@ -27,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ClassLoadingInformationGeneratorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function buildClassAliasMapForPackageThrowsExceptionForWrongComposerManifestInformation(): void { $this->expectException(Exception::class); @@ -50,9 +50,7 @@ final class ClassLoadingInformationGeneratorTest extends UnitTestCase $generator->buildClassAliasMapForPackage($packageMock); } - /** - * @test - */ + #[Test] public function buildClassAliasMapForPackageThrowsExceptionForWrongClassAliasMapFile(): void { $this->expectException(Exception::class); @@ -72,9 +70,7 @@ final class ClassLoadingInformationGeneratorTest extends UnitTestCase $generator->buildClassAliasMapForPackage($packageMock); } - /** - * @test - */ + #[Test] public function buildClassAliasMapForPackageReturnsClassAliasMapForClassAliasMapFile(): void { $expectedClassMap = [ @@ -97,9 +93,7 @@ final class ClassLoadingInformationGeneratorTest extends UnitTestCase self::assertEquals($expectedClassMap, $generator->buildClassAliasMapForPackage($packageMock)); } - /** - * @test - */ + #[Test] public function buildClassAliasMapForPackageReturnsClassAliasMapForComposerManifestInformation(): void { $expectedClassMap = [ @@ -247,10 +241,8 @@ final class ClassLoadingInformationGeneratorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider autoloadFilesAreBuildCorrectlyDataProvider - */ + #[DataProvider('autoloadFilesAreBuildCorrectlyDataProvider')] + #[Test] public function autoloadFilesAreBuildCorrectly(array $packageManifest, array $expectedPsr4Files, array $expectedClassMapFiles): void { $classLoaderMock = $this->createMock(ClassLoader::class); @@ -347,10 +339,8 @@ final class ClassLoadingInformationGeneratorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider autoloadDevFilesAreBuildCorrectlyDataProvider - */ + #[DataProvider('autoloadDevFilesAreBuildCorrectlyDataProvider')] + #[Test] public function autoloadDevFilesAreBuildCorrectly(array $packageManifest, array $expectedPsr4Files, array $expectedClassMapFiles): void { $classLoaderMock = $this->createMock(ClassLoader::class); diff --git a/typo3/sysext/core/Tests/Unit/Core/SystemEnvironmentBuilderTest.php b/typo3/sysext/core/Tests/Unit/Core/SystemEnvironmentBuilderTest.php index 37aba07af820..2c708088a794 100644 --- a/typo3/sysext/core/Tests/Unit/Core/SystemEnvironmentBuilderTest.php +++ b/typo3/sysext/core/Tests/Unit/Core/SystemEnvironmentBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Core; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; use TYPO3\CMS\Core\Utility\StringUtility; @@ -36,9 +38,7 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase $this->subject = $this->getAccessibleMock(SystemEnvironmentBuilder::class, null); } - /** - * @test - */ + #[Test] public function getPathThisScriptCliReadsLocalPartFromArgv(): void { $fakedLocalPart = StringUtility::getUniqueId('Test'); @@ -46,9 +46,7 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase self::assertStringEndsWith($fakedLocalPart, $this->subject->_call('getPathThisScriptCli')); } - /** - * @test - */ + #[Test] public function getPathThisScriptCliReadsLocalPartFromEnv(): void { $fakedLocalPart = StringUtility::getUniqueId('Test'); @@ -57,9 +55,7 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase self::assertStringEndsWith($fakedLocalPart, $this->subject->_call('getPathThisScriptCli')); } - /** - * @test - */ + #[Test] public function getPathThisScriptCliReadsLocalPartFromServer(): void { $fakedLocalPart = StringUtility::getUniqueId('Test'); @@ -69,9 +65,7 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase self::assertStringEndsWith($fakedLocalPart, $this->subject->_call('getPathThisScriptCli')); } - /** - * @test - */ + #[Test] public function getPathThisScriptCliAddsCurrentWorkingDirectoryFromServerEnvironmentToLocalPathOnUnix(): void { $GLOBALS['_SERVER']['argv'][0] = 'foo'; @@ -80,9 +74,7 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase self::assertStringStartsWith($fakedAbsolutePart, $this->subject->_call('getPathThisScriptCli')); } - /** - * @test - */ + #[Test] public function initializeGlobalVariablesSetsGlobalT3ServicesArray(): void { unset($GLOBALS['T3_SERVICES']); @@ -104,10 +96,10 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase } /** - * @test - * @dataProvider initializeGlobalTimeTrackingVariablesSetsGlobalVariablesDataProvider * @param string $variable Variable to check for in $GLOBALS */ + #[DataProvider('initializeGlobalTimeTrackingVariablesSetsGlobalVariablesDataProvider')] + #[Test] public function initializeGlobalTimeTrackingVariablesSetsGlobalVariables($variable): void { unset($GLOBALS[$variable]); @@ -115,18 +107,14 @@ final class SystemEnvironmentBuilderTest extends UnitTestCase self::assertTrue(isset($GLOBALS[$variable])); } - /** - * @test - */ + #[Test] public function initializeGlobalTimeTrackingVariablesRoundsAccessTimeToSixtySeconds(): void { $this->subject->_call('initializeGlobalTimeTrackingVariables'); self::assertEquals(0, $GLOBALS['ACCESS_TIME'] % 60); } - /** - * @test - */ + #[Test] public function initializeGlobalTimeTrackingVariablesRoundsSimAccessTimeToSixtySeconds(): void { $this->subject->_call('initializeGlobalTimeTrackingVariables'); diff --git a/typo3/sysext/core/Tests/Unit/Country/CountryProviderTest.php b/typo3/sysext/core/Tests/Unit/Country/CountryProviderTest.php index dd52f7a92230..e25a707ee6f6 100644 --- a/typo3/sysext/core/Tests/Unit/Country/CountryProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/Country/CountryProviderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Country; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Country\Country; use TYPO3\CMS\Core\Country\CountryFilter; use TYPO3\CMS\Core\Country\CountryProvider; @@ -24,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CountryProviderTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function findAllCountriesReturnsCountryObjects(): void { $subject = new CountryProvider(); @@ -34,9 +34,7 @@ final class CountryProviderTest extends UnitTestCase self::assertGreaterThan(150, count($countries)); } - /** - * @test - */ + #[Test] public function findByIsoCodeReturnsValidObject(): void { $subject = new CountryProvider(); @@ -48,9 +46,7 @@ final class CountryProviderTest extends UnitTestCase self::assertEquals('French Republic', $countryIsoCode2->getOfficialName()); } - /** - * @test - */ + #[Test] public function findByThreeLetterIsoCodeReturnsValidObject(): void { $subject = new CountryProvider(); @@ -68,10 +64,8 @@ final class CountryProviderTest extends UnitTestCase self::assertEquals('FRA', $countryIsoCode3->getAlpha3IsoCode()); } - /** - * @test - * @dataProvider findByFilterReturnsValidObjectDataProvider - */ + #[DataProvider('findByFilterReturnsValidObjectDataProvider')] + #[Test] public function findByFilterReturnsValidObject(int $expectedCount, array $excludedCountries, array $includedCountries): void { $subject = new CountryProvider(); diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2iPasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2iPasswordHashTest.php index 8d31795cc026..d1a227669129 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2iPasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2iPasswordHashTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\Argon2iPasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -38,9 +39,7 @@ final class Argon2iPasswordHashTest extends UnitTestCase $this->subject = new Argon2iPasswordHash($options); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfMemoryCostIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -48,9 +47,7 @@ final class Argon2iPasswordHashTest extends UnitTestCase new Argon2iPasswordHash(['memory_cost' => 1]); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfTimeCostIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -58,17 +55,13 @@ final class Argon2iPasswordHashTest extends UnitTestCase new Argon2iPasswordHash(['time_cost' => 1]); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNullOnEmptyPassword(): void { self::assertNull($this->subject->getHashedPassword('')); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsString(): void { $hash = $this->subject->getHashedPassword('password'); @@ -76,9 +69,7 @@ final class Argon2iPasswordHashTest extends UnitTestCase self::assertIsString($hash); } - /** - * @test - */ + #[Test] public function isValidSaltedPwValidatesHastCreatedByGetHashedPassword(): void { $hash = $this->subject->getHashedPassword('password'); @@ -87,9 +78,8 @@ final class Argon2iPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with alphabet characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -99,9 +89,8 @@ final class Argon2iPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with numeric characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -111,9 +100,8 @@ final class Argon2iPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with US-ASCII special characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -123,9 +111,8 @@ final class Argon2iPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with latin1 special characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -139,9 +126,8 @@ final class Argon2iPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with latin1 umlauts. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -156,9 +142,7 @@ final class Argon2iPasswordHashTest extends UnitTestCase self::assertTrue($this->subject->checkPassword($password, $hash)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithNonValidPassword(): void { $password = 'password'; @@ -167,9 +151,7 @@ final class Argon2iPasswordHashTest extends UnitTestCase self::assertFalse($this->subject->checkPassword($password1, $hash)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForJustGeneratedHash(): void { $password = 'password'; @@ -177,9 +159,7 @@ final class Argon2iPasswordHashTest extends UnitTestCase self::assertFalse($this->subject->isHashUpdateNeeded($hash)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsTrueForHashGeneratedWithOldOptions(): void { $originalOptions = [ diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2idPasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2idPasswordHashTest.php index 576f6d7c4e40..4d4bf93bdaa5 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2idPasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Argon2idPasswordHashTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\Argon2idPasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -35,9 +36,7 @@ final class Argon2idPasswordHashTest extends UnitTestCase $this->subject = new Argon2idPasswordHash($options); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfMemoryCostIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -45,9 +44,7 @@ final class Argon2idPasswordHashTest extends UnitTestCase new Argon2idPasswordHash(['memory_cost' => 1]); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfTimeCostIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -55,17 +52,13 @@ final class Argon2idPasswordHashTest extends UnitTestCase new Argon2idPasswordHash(['time_cost' => 1]); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNullOnEmptyPassword(): void { self::assertNull($this->subject->getHashedPassword('')); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsString(): void { $hash = $this->subject->getHashedPassword('password'); @@ -73,9 +66,7 @@ final class Argon2idPasswordHashTest extends UnitTestCase self::assertIsString($hash); } - /** - * @test - */ + #[Test] public function isValidSaltedPwValidatesHastCreatedByGetHashedPassword(): void { $hash = $this->subject->getHashedPassword('password'); @@ -84,9 +75,8 @@ final class Argon2idPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with alphabet characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -96,9 +86,8 @@ final class Argon2idPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with numeric characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -108,9 +97,8 @@ final class Argon2idPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with US-ASCII special characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -120,9 +108,8 @@ final class Argon2idPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with latin1 special characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -136,9 +123,8 @@ final class Argon2idPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with latin1 umlauts. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -153,9 +139,7 @@ final class Argon2idPasswordHashTest extends UnitTestCase self::assertTrue($this->subject->checkPassword($password, $hash)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithNonValidPassword(): void { $password = 'password'; @@ -164,9 +148,7 @@ final class Argon2idPasswordHashTest extends UnitTestCase self::assertFalse($this->subject->checkPassword($password1, $hash)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForJustGeneratedHash(): void { $password = 'password'; @@ -174,9 +156,7 @@ final class Argon2idPasswordHashTest extends UnitTestCase self::assertFalse($this->subject->isHashUpdateNeeded($hash)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsTrueForHashGeneratedWithOldOptions(): void { $originalOptions = [ diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BcryptPasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BcryptPasswordHashTest.php index 31121de3f7a4..dc922b789e38 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BcryptPasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BcryptPasswordHashTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\BcryptPasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -37,9 +38,7 @@ final class BcryptPasswordHashTest extends UnitTestCase $this->subject = new BcryptPasswordHash($options); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfMemoryCostIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -47,9 +46,7 @@ final class BcryptPasswordHashTest extends UnitTestCase new BcryptPasswordHash(['cost' => 9]); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfMemoryCostIsTooHigh(): void { $this->expectException(\InvalidArgumentException::class); @@ -57,17 +54,13 @@ final class BcryptPasswordHashTest extends UnitTestCase new BcryptPasswordHash(['cost' => 32]); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNullOnEmptyPassword(): void { self::assertNull($this->subject->getHashedPassword('')); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsString(): void { $hash = $this->subject->getHashedPassword('password'); @@ -75,9 +68,7 @@ final class BcryptPasswordHashTest extends UnitTestCase self::assertIsString($hash); } - /** - * @test - */ + #[Test] public function isValidSaltedPwValidatesHastCreatedByGetHashedPassword(): void { $hash = $this->subject->getHashedPassword('password'); @@ -86,9 +77,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with alphabet characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -98,9 +88,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with numeric characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -110,9 +99,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with US-ASCII special characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -122,9 +110,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with latin1 special characters. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -138,9 +125,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Tests authentication procedure with latin1 umlauts. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -155,9 +141,7 @@ final class BcryptPasswordHashTest extends UnitTestCase self::assertTrue($this->subject->checkPassword($password, $hash)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsTrueForHashedPasswordWithNonValidPassword(): void { $password = 'password'; @@ -166,18 +150,14 @@ final class BcryptPasswordHashTest extends UnitTestCase self::assertFalse($this->subject->checkPassword($password1, $hash)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForJustGeneratedHash(): void { $hash = $this->subject->getHashedPassword('password'); self::assertFalse($this->subject->isHashUpdateNeeded($hash)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsTrueForHashGeneratedWithOldOptions(): void { $subject = new BcryptPasswordHash(['cost' => 10]); @@ -188,9 +168,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Bcrypt truncates on NUL characters by default - * - * @test */ + #[Test] public function getHashedPasswordDoesNotTruncateOnNul(): void { $password1 = 'pass' . "\x00" . 'word'; @@ -201,9 +180,8 @@ final class BcryptPasswordHashTest extends UnitTestCase /** * Bcrypt truncates after 72 characters by default - * - * @test */ + #[Test] public function getHashedPasswordDoesNotTruncateAfter72Chars(): void { $prefix = str_repeat('a', 72); diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BlowfishPasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BlowfishPasswordHashTest.php index c12fbf7f1f62..ec312953c07b 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BlowfishPasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/BlowfishPasswordHashTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\BlowfishPasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class BlowfishPasswordHashTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfHashCountIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -32,9 +31,7 @@ final class BlowfishPasswordHashTest extends UnitTestCase new BlowfishPasswordHash(['hash_count' => 3]); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfHashCountIsTooHigh(): void { $this->expectException(\InvalidArgumentException::class); @@ -42,27 +39,21 @@ final class BlowfishPasswordHashTest extends UnitTestCase new BlowfishPasswordHash(['hash_count' => 18]); } - /** - * @test - */ + #[Test] public function getHashedPasswordWithEmptyPasswordResultsInNullSaltedPassword(): void { $password = ''; self::assertNull((new BlowfishPasswordHash(['hash_count' => 4]))->getHashedPassword($password)); } - /** - * @test - */ + #[Test] public function getHashedPasswordWithNonEmptyPasswordResultsInNonNullSaltedPassword(): void { $password = 'a'; self::assertNotNull((new BlowfishPasswordHash(['hash_count' => 4]))->getHashedPassword($password)); } - /** - * @test - */ + #[Test] public function getHashedPasswordValidates(): void { $password = 'password'; @@ -76,9 +67,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same fixed salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPasswordAndFixedHash(): void { $password = 'password'; @@ -88,9 +78,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase /** * Tests that authentication procedure fails with broken hash to compare to - * - * @test */ + #[Test] public function checkPasswordReturnsFalseFailsWithBrokenHash(): void { $password = 'password'; @@ -103,9 +92,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -119,9 +107,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -135,9 +122,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -151,9 +137,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -171,9 +156,8 @@ final class BlowfishPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsReturnsTrueWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -191,9 +175,7 @@ final class BlowfishPasswordHashTest extends UnitTestCase self::assertTrue($subject->checkPassword($password, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsFalseWithNonValidPassword(): void { $password = 'password'; @@ -203,9 +185,7 @@ final class BlowfishPasswordHashTest extends UnitTestCase self::assertFalse($subject->checkPassword($password1, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForValidSaltedPassword(): void { $password = 'password'; @@ -214,9 +194,7 @@ final class BlowfishPasswordHashTest extends UnitTestCase self::assertFalse($subject->isHashUpdateNeeded($saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsTrueForHashGeneratedWithOldOptions(): void { $subject = new BlowfishPasswordHash(['hash_count' => 4]); diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Md5PasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Md5PasswordHashTest.php index 74acbfece14d..a67ffff8596f 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Md5PasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Md5PasswordHashTest.php @@ -17,30 +17,25 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\Md5PasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class Md5PasswordHashTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNullWithEmptyPassword(): void { self::assertNull((new Md5PasswordHash())->getHashedPassword('')); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNotNullWithNonEmptyPassword(): void { self::assertNotNull((new Md5PasswordHash())->getHashedPassword('a')); } - /** - * @test - */ + #[Test] public function getHashedPasswordCreatesAHashThatValidates(): void { $password = 'password'; @@ -54,9 +49,8 @@ final class Md5PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same fixed salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPasswordAndFixedHash(): void { $password = 'password'; @@ -66,9 +60,8 @@ final class Md5PasswordHashTest extends UnitTestCase /** * Tests that authentication procedure fails with broken hash to compare to - * - * @test */ + #[Test] public function checkPasswordReturnsFalseWithBrokenHash(): void { $password = 'password'; @@ -81,9 +74,8 @@ final class Md5PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -97,9 +89,8 @@ final class Md5PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -113,9 +104,8 @@ final class Md5PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -129,9 +119,8 @@ final class Md5PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -149,9 +138,8 @@ final class Md5PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -169,9 +157,7 @@ final class Md5PasswordHashTest extends UnitTestCase self::assertTrue($subject->checkPassword($password, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsFalseWithNonValidPassword(): void { $password = 'password'; @@ -181,9 +167,7 @@ final class Md5PasswordHashTest extends UnitTestCase self::assertFalse($subject->checkPassword($password1, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalse(): void { $password = 'password'; diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PasswordHashFactoryTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PasswordHashFactoryTest.php index 4d98683b8efa..f72fc368a5a2 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PasswordHashFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PasswordHashFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\Argon2iPasswordHash; use TYPO3\CMS\Core\Crypto\PasswordHashing\InvalidPasswordHashException; use TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PasswordHashFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getThrowsExceptionIfModeIsNotBeOrFe(): void { $this->expectException(\InvalidArgumentException::class); @@ -37,9 +36,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('ThisIsNotAValidHash', 'foo'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionWithBrokenClassNameModeConfiguration(): void { $this->expectException(\LogicException::class); @@ -48,9 +45,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('ThisIsNotAValidHash', 'FE'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionWithBrokenOptionsModeConfiguration(): void { $this->expectException(\LogicException::class); @@ -59,9 +54,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('ThisIsNotAValidHash', 'FE'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionIfARegisteredHashDoesNotImplementSaltInterface(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['availablePasswordHashAlgorithms'] = [ \stdClass::class ]; @@ -70,9 +63,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('ThisIsNotAValidHash', 'BE'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionIfNoClassIsFoundThatHandlesGivenHash(): void { $this->expectException(InvalidPasswordHashException::class); @@ -80,9 +71,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('ThisIsNotAValidHash', 'BE'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionIfClassThatHandlesAHashIsNotAvailable(): void { $phpassPasswordHashMock = $this->createMock(PhpassPasswordHash::class); @@ -93,9 +82,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('$P$C7u7E10SBEie/Jbdz0jDtUcWhzgOPF.', 'BE'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionIfClassThatHandlesAHashSaysNoToHash(): void { GeneralUtility::addInstance(PhpassPasswordHash::class, new PhpassPasswordHash()); @@ -105,9 +92,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get($hash, 'BE'); } - /** - * @test - */ + #[Test] public function getHandsConfiguredOptionsToHashClassIfMethodIsConfiguredDefaultForMode(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['availablePasswordHashAlgorithms'] = [ TestPasswordHash::class ]; @@ -122,9 +107,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->get('someHash', 'FE'); } - /** - * @test - */ + #[Test] public function getReturnsInstanceOfHashClassThatHandlesHash(): void { $phpassPasswordHash = new PhpassPasswordHash(); @@ -133,9 +116,7 @@ final class PasswordHashFactoryTest extends UnitTestCase self::assertSame($phpassPasswordHash, (new PasswordHashFactory())->get($hash, 'BE')); } - /** - * @test - */ + #[Test] public function getDefaultHashInstanceThrowsExceptionIfModeIsNotBeOrFe(): void { $this->expectException(\InvalidArgumentException::class); @@ -143,9 +124,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('foo'); } - /** - * @test - */ + #[Test] public function getDefaultHashInstanceThrowsExceptionWithBrokenClassNameModeConfiguration(): void { $this->expectException(\LogicException::class); @@ -154,9 +133,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('FE'); } - /** - * @test - */ + #[Test] public function getDefaultHashInstanceThrowsExceptionWithBrokenOptionsModeConfiguration(): void { $this->expectException(\LogicException::class); @@ -165,9 +142,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('FE'); } - /** - * @test - */ + #[Test] public function getDefaultHashReturnsInstanceOfConfiguredDefaultFeMethod(): void { $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['saltedpasswords']['FE']['saltedPWHashingMethod'] = Argon2iPasswordHash::class; @@ -175,9 +150,7 @@ final class PasswordHashFactoryTest extends UnitTestCase self::assertInstanceOf(Argon2iPasswordHash::class, $hashInstance); } - /** - * @test - */ + #[Test] public function getDefaultHashReturnsInstanceOfConfiguredDefaultBeMethod(): void { $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['saltedpasswords']['BE']['saltedPWHashingMethod'] = Argon2iPasswordHash::class; @@ -185,9 +158,7 @@ final class PasswordHashFactoryTest extends UnitTestCase self::assertInstanceOf(Argon2iPasswordHash::class, $hashInstance); } - /** - * @test - */ + #[Test] public function getDefaultHashThrowsExceptionIfDefaultHashMethodDoesNotImplementSaltInterface(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['passwordHashing']['className'] = \stdClass::class; @@ -197,9 +168,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('BE'); } - /** - * @test - */ + #[Test] public function getDefaultHashThrowsExceptionIfDefaultHashMethodIsNotRegistered(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['passwordHashing']['className'] = \stdClass::class; @@ -209,9 +178,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('BE'); } - /** - * @test - */ + #[Test] public function getDefaultHashThrowsExceptionIfDefaultHashMethodIsNotAvailable(): void { $argon2iPasswordHashMock = $this->createMock(Argon2iPasswordHash::class); @@ -223,9 +190,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('BE'); } - /** - * @test - */ + #[Test] public function getDefaultHoshHandsConfiguredOptionsToHashClass(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['availablePasswordHashAlgorithms'] = [ TestPasswordHash::class ]; @@ -240,9 +205,7 @@ final class PasswordHashFactoryTest extends UnitTestCase (new PasswordHashFactory())->getDefaultHashInstance('FE'); } - /** - * @test - */ + #[Test] public function getRegisteredSaltedHashingMethodsReturnsRegisteredMethods(): void { $methods = [ @@ -253,9 +216,7 @@ final class PasswordHashFactoryTest extends UnitTestCase self::assertSame($methods, PasswordHashFactory::getRegisteredSaltedHashingMethods()); } - /** - * @test - */ + #[Test] public function getRegisteredSaltedHashingMethodsThrowsExceptionIfNoMethodIsConfigured(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Pbkdf2PasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Pbkdf2PasswordHashTest.php index c56a46520f80..26034af26a14 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Pbkdf2PasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/Pbkdf2PasswordHashTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\Pbkdf2PasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class Pbkdf2PasswordHashTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfHashCountIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -32,9 +31,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase new Pbkdf2PasswordHash(['hash_count' => 999]); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfHashCountIsTooHigh(): void { $this->expectException(\InvalidArgumentException::class); @@ -42,9 +39,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase new Pbkdf2PasswordHash(['hash_count' => 10000001]); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNullWithEmptyPassword(): void { $password = ''; @@ -52,9 +47,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase self::assertNull($subject->getHashedPassword($password)); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNotNullWithNullPassword(): void { $password = 'a'; @@ -62,9 +55,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase self::assertNotNull($subject->getHashedPassword($password)); } - /** - * @test - */ + #[Test] public function getHashedPasswordValidates(): void { $password = 'password'; @@ -78,9 +69,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same fixed salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPasswordAndFixedHash(): void { $password = 'password'; @@ -91,9 +81,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase /** * Tests that authentication procedure fails with broken hash to compare to - * - * @test */ + #[Test] public function checkPasswordReturnsFalseWithBrokenHash(): void { $password = 'password'; @@ -107,9 +96,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -123,9 +111,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -139,9 +126,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -155,9 +141,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -175,9 +160,8 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -195,9 +179,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase self::assertTrue($subject->checkPassword($password, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsFalseWithNonValidPassword(): void { $password = 'password'; @@ -207,9 +189,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase self::assertFalse($subject->checkPassword($password1, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForValidSaltedPassword(): void { $password = 'password'; @@ -218,9 +198,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase self::assertFalse($subject->isHashUpdateNeeded($saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsTrueWithChangedHashCount(): void { $subject = new Pbkdf2PasswordHash(['hash_count' => 1000]); @@ -229,9 +207,7 @@ final class Pbkdf2PasswordHashTest extends UnitTestCase self::assertTrue($subject->isHashUpdateNeeded($saltedHashPassword)); } - /** - * @test - */ + #[Test] public function checkPasswordIsCompatibleWithPythonPasslibHashes(): void { $passlibSaltedHash = '$pbkdf2-sha256$6400$.6UI/S.nXIk8jcbdHx3Fhg$98jZicV16ODfEsEZeYPGHU3kbrUrvUEXOPimVSQDD44'; diff --git a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PhpassPasswordHashTest.php b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PhpassPasswordHashTest.php index cf201d689c05..48a605dbf0ba 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PhpassPasswordHashTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/PasswordHashing/PhpassPasswordHashTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PhpassPasswordHashTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfHashCountIsTooLow(): void { $this->expectException(\InvalidArgumentException::class); @@ -32,9 +31,7 @@ final class PhpassPasswordHashTest extends UnitTestCase new PhpassPasswordHash(['hash_count' => 6]); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfHashCountIsTooHigh(): void { $this->expectException(\InvalidArgumentException::class); @@ -42,27 +39,21 @@ final class PhpassPasswordHashTest extends UnitTestCase new PhpassPasswordHash(['hash_count' => 25]); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNullWithEmptyPassword(): void { $subject = new PhpassPasswordHash(['hash_count' => 7]); self::assertNull($subject->getHashedPassword('')); } - /** - * @test - */ + #[Test] public function getHashedPasswordReturnsNotNullWithNotEmptyPassword(): void { $subject = new PhpassPasswordHash(['hash_count' => 7]); self::assertNotNull($subject->getHashedPassword('a')); } - /** - * @test - */ + #[Test] public function getHashedPasswordValidates(): void { $password = 'password'; @@ -76,9 +67,8 @@ final class PhpassPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same fixed salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPasswordAndFixedHash(): void { $password = 'password'; @@ -89,9 +79,8 @@ final class PhpassPasswordHashTest extends UnitTestCase /** * Tests that authentication procedure fails with broken hash to compare to - * - * @test */ + #[Test] public function checkPasswordReturnsFalseWithBrokenHash(): void { $password = 'password'; @@ -105,9 +94,8 @@ final class PhpassPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAlphaCharClassPassword(): void { $password = 'aEjOtY'; @@ -121,9 +109,8 @@ final class PhpassPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidNumericCharClassPassword(): void { $password = '01369'; @@ -137,9 +124,8 @@ final class PhpassPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidAsciiSpecialCharClassPassword(): void { $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'; @@ -153,9 +139,8 @@ final class PhpassPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1SpecialCharClassPassword(): void { $password = ''; @@ -173,9 +158,8 @@ final class PhpassPasswordHashTest extends UnitTestCase * * Checks if a "plain-text password" is every time mapped to the * same "salted password hash" when using the same salt. - * - * @test */ + #[Test] public function checkPasswordReturnsTrueWithValidLatin1UmlautCharClassPassword(): void { $password = ''; @@ -193,9 +177,7 @@ final class PhpassPasswordHashTest extends UnitTestCase self::assertTrue($subject->checkPassword($password, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function checkPasswordReturnsFalseWithNonValidPassword(): void { $password = 'password'; @@ -205,9 +187,7 @@ final class PhpassPasswordHashTest extends UnitTestCase self::assertFalse($subject->checkPassword($password1, $saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForValidSaltedPassword(): void { $password = 'password'; @@ -216,9 +196,7 @@ final class PhpassPasswordHashTest extends UnitTestCase self::assertFalse($subject->isHashUpdateNeeded($saltedHashPassword)); } - /** - * @test - */ + #[Test] public function isHashUpdateNeededReturnsFalseForChangedHashCountSaltedPassword(): void { $password = 'password'; diff --git a/typo3/sysext/core/Tests/Unit/Crypto/RandomTest.php b/typo3/sysext/core/Tests/Unit/Crypto/RandomTest.php index 40ad40f20814..c90a437bf16d 100644 --- a/typo3/sysext/core/Tests/Unit/Crypto/RandomTest.php +++ b/typo3/sysext/core/Tests/Unit/Crypto/RandomTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Crypto; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Crypto\Random; use TYPO3\CMS\Core\Exception\InvalidPasswordRulesException; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RandomTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function generateRandomBytesReturnsExpectedAmountOfBytes(): void { $subject = new Random(); @@ -57,10 +57,10 @@ final class RandomTest extends UnitTestCase } /** - * @test - * @dataProvider generateRandomHexStringReturnsExpectedAmountOfCharsDataProvider * @param int $numberOfChars Number of Chars to generate */ + #[DataProvider('generateRandomHexStringReturnsExpectedAmountOfCharsDataProvider')] + #[Test] public function generateRandomHexStringReturnsExpectedAmountOfChars($numberOfChars): void { $subject = new Random(); @@ -91,10 +91,8 @@ final class RandomTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generateRandomPasswordThrowsInvalidPasswordRulesExceptionDataProvider - */ + #[DataProvider('generateRandomPasswordThrowsInvalidPasswordRulesExceptionDataProvider')] + #[Test] public function generateRandomPasswordThrowsInvalidPasswordRulesException( array $passwordRules, int $exceptionCode @@ -124,10 +122,8 @@ final class RandomTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generateRandomPasswordGeneratesRandomWithEncodingDataProvider - */ + #[DataProvider('generateRandomPasswordGeneratesRandomWithEncodingDataProvider')] + #[Test] public function generateRandomPasswordGeneratesRandomWithEncoding( array $passwordRules, string $pattern @@ -163,10 +159,8 @@ final class RandomTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generateRandomPasswordGeneratesRandomWithCharacterSetsDataProvider - */ + #[DataProvider('generateRandomPasswordGeneratesRandomWithCharacterSetsDataProvider')] + #[Test] public function generateRandomPasswordGeneratesRandomWithCharacterSets( array $passwordRules, string $pattern @@ -202,10 +196,8 @@ final class RandomTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generateRandomPasswordGeneratesRandomWithLengthDataProvider - */ + #[DataProvider('generateRandomPasswordGeneratesRandomWithLengthDataProvider')] + #[Test] public function generateRandomPasswordGeneratesRandomWithLength( array $passwordRules, int $length diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php index 53ca88f55392..d4d1300c881f 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Uid\Uuid; @@ -29,7 +31,8 @@ use TYPO3\CMS\Core\DataHandling\DataHandlerCheckModifyAccessListHookInterface; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\PasswordPolicy\Event\EnrichPasswordValidationContextDataEvent; use TYPO3\CMS\Core\PasswordPolicy\Validator\Dto\ContextData; -use TYPO3\CMS\Core\SysLog; +use TYPO3\CMS\Core\SysLog\Action; +use TYPO3\CMS\Core\SysLog\Error; use TYPO3\CMS\Core\Tests\Unit\DataHandling\Fixtures\AllowAccessHookFixture; use TYPO3\CMS\Core\Tests\Unit\DataHandling\Fixtures\InvalidHookFixture; use TYPO3\CMS\Core\Tests\Unit\DataHandling\Fixtures\UserOddNumberFilter; @@ -56,9 +59,7 @@ final class DataHandlerTest extends UnitTestCase $this->subject->start([], [], $this->backendUserMock); } - /** - * @test - */ + #[Test] public function fixtureCanBeCreated(): void { self::assertInstanceOf(DataHandler::class, $this->subject); @@ -67,27 +68,21 @@ final class DataHandlerTest extends UnitTestCase ////////////////////////////////////////// // Test concerning checkModifyAccessList ////////////////////////////////////////// - /** - * @test - */ + #[Test] public function adminIsAllowedToModifyNonAdminTable(): void { $this->subject->admin = true; self::assertTrue($this->subject->checkModifyAccessList('tt_content')); } - /** - * @test - */ + #[Test] public function nonAdminIsNorAllowedToModifyNonAdminTable(): void { $this->subject->admin = false; self::assertFalse($this->subject->checkModifyAccessList('tt_content')); } - /** - * @test - */ + #[Test] public function nonAdminWithTableModifyAccessIsAllowedToModifyNonAdminTable(): void { $this->subject->admin = false; @@ -95,27 +90,21 @@ final class DataHandlerTest extends UnitTestCase self::assertTrue($this->subject->checkModifyAccessList('tt_content')); } - /** - * @test - */ + #[Test] public function adminIsAllowedToModifyAdminTable(): void { $this->subject->admin = true; self::assertTrue($this->subject->checkModifyAccessList('be_users')); } - /** - * @test - */ + #[Test] public function nonAdminIsNotAllowedToModifyAdminTable(): void { $this->subject->admin = false; self::assertFalse($this->subject->checkModifyAccessList('be_users')); } - /** - * @test - */ + #[Test] public function nonAdminWithTableModifyAccessIsNotAllowedToModifyAdminTable(): void { $tableName = StringUtility::getUniqueId('aTable'); @@ -144,10 +133,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkValueForDatetimeDataProvider - */ + #[DataProvider('checkValueForDatetimeDataProvider')] + #[Test] public function checkValueForDatetime($input, $serverTimezone, $expectedOutput): void { $oldTimezone = date_default_timezone_get(); @@ -177,10 +164,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkValueForColorDataProvider - */ + #[DataProvider('checkValueForColorDataProvider')] + #[Test] public function checkValueForColor(string $input, mixed $expected, array $additionalFieldConfig = []): void { $output = $this->subject->_call( @@ -192,9 +177,7 @@ final class DataHandlerTest extends UnitTestCase self::assertEquals($expected, $output['value'] ?? null); } - /** - * @test - */ + #[Test] public function checkValuePasswordWithSaltedPasswordKeepsExistingHash(): void { // Note the involved salted passwords are NOT mocked since the factory is static @@ -203,9 +186,7 @@ final class DataHandlerTest extends UnitTestCase self::assertSame($inputValue, $result['value']); } - /** - * @test - */ + #[Test] public function checkValuePasswordWithSaltedPasswordReturnsHashForSaltedPassword(): void { $event = new EnrichPasswordValidationContextDataEvent(new ContextData(), [], ''); @@ -249,10 +230,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider numberValueCheckRecognizesStringValuesAsIntegerValuesCorrectlyDataProvider - */ + #[DataProvider('numberValueCheckRecognizesStringValuesAsIntegerValuesCorrectlyDataProvider')] + #[Test] public function numberValueCheckRecognizesStringValuesAsIntegerValuesCorrectly(string $value, int $expectedReturnValue): void { $tcaFieldConf = [ @@ -304,10 +283,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider numberValueCheckRecognizesDecimalStringValuesAsFloatValuesCorrectlyDataProvider - */ + #[DataProvider('numberValueCheckRecognizesDecimalStringValuesAsFloatValuesCorrectlyDataProvider')] + #[Test] public function numberValueCheckRecognizesDecimalStringValuesAsFloatValuesCorrectly(string $value, string $expectedReturnValue): void { $tcaFieldConf = [ @@ -351,10 +328,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider inputValuesRangeDoubleDataProvider - */ + #[DataProvider('inputValuesRangeDoubleDataProvider')] + #[Test] public function inputValueCheckRespectsRightLowerAndUpperLimitForDouble(string $value, string|int $expectedReturnValue): void { $tcaFieldConf = [ @@ -369,10 +344,8 @@ final class DataHandlerTest extends UnitTestCase self::assertSame($expectedReturnValue, $returnValue['value']); } - /** - * @test - * @dataProvider inputValuesRangeDoubleDataProvider - */ + #[DataProvider('inputValuesRangeDoubleDataProvider')] + #[Test] public function inputValueCheckRespectsRightLowerAndUpperLimitWithDefaultValueForDouble(string $value, string|int $expectedReturnValue): void { $tcaFieldConf = [ @@ -410,10 +383,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider datetimeValuesDataProvider - */ + #[DataProvider('datetimeValuesDataProvider')] + #[Test] public function valueCheckRecognizesDatetimeValuesAsIntegerValuesCorrectly(string $value, int $expected): void { $tcaFieldConf = [ @@ -455,10 +426,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @dataProvider inputValueRangeCheckIsIgnoredWhenDefaultIsZeroAndInputValueIsEmptyDataProvider - * @test - */ + #[DataProvider('inputValueRangeCheckIsIgnoredWhenDefaultIsZeroAndInputValueIsEmptyDataProvider')] + #[Test] public function inputValueRangeCheckIsIgnoredWhenDefaultIsZeroAndInputValueIsEmpty( string|int $inputValue, int $expected, @@ -515,9 +484,9 @@ final class DataHandlerTest extends UnitTestCase /** * Tests whether native dbtype inputs are parsed independent of the server timezone. - * @test - * @dataProvider datetimeValueCheckDbtypeIsIndependentFromTimezoneDataProvider */ + #[DataProvider('datetimeValueCheckDbtypeIsIndependentFromTimezoneDataProvider')] + #[Test] public function datetimeValueCheckDbtypeIsIndependentFromTimezone(string $value, string $dbtype, string $expectedOutput): void { $tcaFieldConf = [ @@ -604,9 +573,9 @@ final class DataHandlerTest extends UnitTestCase * @param string $format * @param bool $nullable * @param mixed|null $expectedOutput - * @dataProvider inputValueCheckNativeDbTypeDataProvider - * @test */ + #[DataProvider('inputValueCheckNativeDbTypeDataProvider')] + #[Test] public function inputValueCheckNativeDbType(string|null $value, string $dbType, string $format, bool $nullable, $expectedOutput): void { $tcaFieldConf = [ @@ -627,8 +596,8 @@ final class DataHandlerTest extends UnitTestCase // /** * Tests whether a wrong interface on the 'checkModifyAccessList' hook throws an exception. - * @test */ + #[Test] public function doesCheckModifyAccessListThrowExceptionOnWrongHookInterface(): void { $this->expectException(\UnexpectedValueException::class); @@ -640,9 +609,8 @@ final class DataHandlerTest extends UnitTestCase /** * Tests whether the 'checkModifyAccessList' hook is called correctly. - * - * @test */ + #[Test] public function doesCheckModifyAccessListHookGetsCalled(): void { $hookClass = StringUtility::getUniqueId('tx_coretest'); @@ -658,9 +626,8 @@ final class DataHandlerTest extends UnitTestCase /** * Tests whether the 'checkModifyAccessList' hook modifies the $accessAllowed variable. - * - * @test */ + #[Test] public function doesCheckModifyAccessListHookModifyAccessAllowed(): void { $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['checkModifyAccessList'][] = AllowAccessHookFixture::class; @@ -670,9 +637,7 @@ final class DataHandlerTest extends UnitTestCase ///////////////////////////////////// // Tests concerning process_datamap ///////////////////////////////////// - /** - * @test - */ + #[Test] public function processDatamapForFrozenNonZeroWorkspaceReturnsFalse(): void { $subject = $this->getMockBuilder(DataHandler::class) @@ -765,10 +730,9 @@ final class DataHandlerTest extends UnitTestCase /** * This test ensures, that the eval method checkValue_SW is called on * flexform structures. - * - * @test - * @dataProvider checkValue_flex_procInData_travDSDataProvider */ + #[DataProvider('checkValue_flex_procInData_travDSDataProvider')] + #[Test] public function checkValue_flex_procInData_travDS(array $dataValues, array $DSelements, array $expected): void { $pParams = [ @@ -789,33 +753,27 @@ final class DataHandlerTest extends UnitTestCase ///////////////////////////////////// // Tests concerning log ///////////////////////////////////// - /** - * @test - */ + #[Test] public function logCallsWriteLogOfBackendUserIfLoggingIsEnabled(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); $backendUser->expects(self::once())->method('writelog'); $this->subject->enableLogging = true; $this->subject->BE_USER = $backendUser; - $this->subject->log('', 23, SysLog\Action::UNDEFINED, 42, SysLog\Error::MESSAGE, 'details'); + $this->subject->log('', 23, Action::UNDEFINED, 42, Error::MESSAGE, 'details'); } - /** - * @test - */ + #[Test] public function logDoesNotCallWriteLogOfBackendUserIfLoggingIsDisabled(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); $backendUser->expects(self::never())->method('writelog'); $this->subject->enableLogging = false; $this->subject->BE_USER = $backendUser; - $this->subject->log('', 23, SysLog\Action::UNDEFINED, 42, SysLog\Error::MESSAGE, 'details'); + $this->subject->log('', 23, Action::UNDEFINED, 42, Error::MESSAGE, 'details'); } - /** - * @test - */ + #[Test] public function logAddsEntryToLocalErrorLogArray(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); @@ -823,14 +781,12 @@ final class DataHandlerTest extends UnitTestCase $this->subject->enableLogging = true; $this->subject->errorLog = []; $logDetailsUnique = StringUtility::getUniqueId('details'); - $this->subject->log('', 23, SysLog\Action::UNDEFINED, 42, SysLog\Error::USER_ERROR, $logDetailsUnique); + $this->subject->log('', 23, Action::UNDEFINED, 42, Error::USER_ERROR, $logDetailsUnique); self::assertArrayHasKey(0, $this->subject->errorLog); self::assertStringEndsWith($logDetailsUnique, $this->subject->errorLog[0]); } - /** - * @test - */ + #[Test] public function logFormatsDetailMessageWithAdditionalDataInLocalErrorArray(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); @@ -838,14 +794,12 @@ final class DataHandlerTest extends UnitTestCase $this->subject->enableLogging = true; $this->subject->errorLog = []; $logDetails = StringUtility::getUniqueId('details'); - $this->subject->log('', 23, SysLog\Action::UNDEFINED, 42, SysLog\Error::USER_ERROR, '%1$s' . $logDetails . '%2$s', -1, ['foo', 'bar']); + $this->subject->log('', 23, Action::UNDEFINED, 42, Error::USER_ERROR, '%1$s' . $logDetails . '%2$s', -1, ['foo', 'bar']); $expected = 'foo' . $logDetails . 'bar'; self::assertStringEndsWith($expected, $this->subject->errorLog[0]); } - /** - * @test - */ + #[Test] public function logFormatsDetailMessageWithPlaceholders(): void { $backendUser = $this->createMock(BackendUserAuthentication::class); @@ -853,16 +807,14 @@ final class DataHandlerTest extends UnitTestCase $this->subject->enableLogging = true; $this->subject->errorLog = []; $logDetails = 'An error occurred on {table}:{uid} when localizing'; - $this->subject->log('', 23, SysLog\Action::UNDEFINED, 42, SysLog\Error::USER_ERROR, $logDetails, -1, ['table' => 'tx_sometable', 0 => 'some random value']); + $this->subject->log('', 23, Action::UNDEFINED, 42, Error::USER_ERROR, $logDetails, -1, ['table' => 'tx_sometable', 0 => 'some random value']); // UID is kept as non-replaced, and other properties are not replaced. $expected = 'An error occurred on tx_sometable:{uid} when localizing'; self::assertStringEndsWith($expected, $this->subject->errorLog[0]); } - /** - * @dataProvider equalSubmittedAndStoredValuesAreDeterminedDataProvider - * @test - */ + #[DataProvider('equalSubmittedAndStoredValuesAreDeterminedDataProvider')] + #[Test] public function equalSubmittedAndStoredValuesAreDetermined(bool $expected, string|int|null $submittedValue, string|int|null $storedValue, string $storedType, bool $allowNull): void { $result = \Closure::bind(function () use ($submittedValue, $storedValue, $storedType, $allowNull) { @@ -1049,9 +1001,7 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function deletePagesOnRootLevelIsDenied(): void { $dataHandlerMock = $this->getMockBuilder(DataHandler::class) @@ -1068,9 +1018,7 @@ final class DataHandlerTest extends UnitTestCase $dataHandlerMock->deletePages(0); } - /** - * @test - */ + #[Test] public function deleteRecord_procBasedOnFieldTypeRespectsEnableCascadingDelete(): void { $table = StringUtility::getUniqueId('foo_'); @@ -1124,10 +1072,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @dataProvider checkValue_checkReturnsExpectedValuesDataProvider - * @test - */ + #[DataProvider('checkValue_checkReturnsExpectedValuesDataProvider')] + #[Test] public function checkValue_checkReturnsExpectedValues(string|int $value, string|int $expectedValue): void { $expectedResult = [ @@ -1144,9 +1090,7 @@ final class DataHandlerTest extends UnitTestCase self::assertSame($expectedResult, $this->subject->_call('checkValueForCheck', $result, $value, $tcaFieldConfiguration, '', 0, 0, '')); } - /** - * @test - */ + #[Test] public function checkValueForInputConvertsNullToEmptyString(): void { $expectedResult = ['value' => '']; @@ -1173,10 +1117,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkValueForJsonDataProvider - */ + #[DataProvider('checkValueForJsonDataProvider')] + #[Test] public function checkValueForJson(string|array $input, array $expected): void { self::assertSame( @@ -1189,9 +1131,7 @@ final class DataHandlerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function checkValueForUuidReturnsValidUuidUnmodified(): void { self::assertEquals( @@ -1200,27 +1140,21 @@ final class DataHandlerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function checkValueForUuidCreatesValidUuidValueForReqiredFieldsWithInvalidUuidGiven(): void { self::assertTrue(Uuid::isValid($this->subject->_call('checkValueForUuid', '', [])['value'])); self::assertTrue(Uuid::isValid($this->subject->_call('checkValueForUuid', '-_invalid_-', [])['value'])); } - /** - * @test - */ + #[Test] public function checkValueForUuidDiscardsInvalidUuidIfFieldIsNotRequired(): void { self::assertEmpty($this->subject->_call('checkValueForUuid', '', ['required' => false])); self::assertEmpty($this->subject->_call('checkValueForUuid', '-_invalid_-', ['required' => false])); } - /** - * @test - */ + #[Test] public function checkValueForUuidCreatesValidUuidValueWithDefinedVersion(): void { self::assertEquals(6, (int)$this->subject->_call('checkValueForUuid', '', ['version' => 6])['value'][14]); @@ -1232,10 +1166,8 @@ final class DataHandlerTest extends UnitTestCase self::assertEquals(4, (int)$this->subject->_call('checkValueForUuid', '', [])['value'][14]); } - /** - * @test - * @dataProvider referenceValuesAreCastedDataProvider - */ + #[DataProvider('referenceValuesAreCastedDataProvider')] + #[Test] public function referenceValuesAreCasted(string $value, array $configuration, bool $isNew, int|string $expected): void { self::assertEquals( @@ -1289,10 +1221,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider clearPrefixFromValueRemovesPrefixDataProvider - */ + #[DataProvider('clearPrefixFromValueRemovesPrefixDataProvider')] + #[Test] public function clearPrefixFromValueRemovesPrefix(string $input, string $expected): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -1338,18 +1268,14 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @dataProvider applyFiltersToValuesFiltersValuesDataProvider - * @test - */ + #[DataProvider('applyFiltersToValuesFiltersValuesDataProvider')] + #[Test] public function applyFiltersToValuesFiltersValues(array $tcaFieldConfiguration, array $values, array $expected): void { self::assertEqualsCanonicalizing($expected, $this->subject->_call('applyFiltersToValues', $tcaFieldConfiguration, $values)); } - /** - * @test - */ + #[Test] public function applyFiltersToValuesExpectsArray(): void { $tcaFieldConfiguration = [ @@ -1409,10 +1335,8 @@ final class DataHandlerTest extends UnitTestCase ]; } - /** - * @dataProvider validateValueForRequiredReturnsExpectedValueDataHandler - * @test - */ + #[DataProvider('validateValueForRequiredReturnsExpectedValueDataHandler')] + #[Test] public function validateValueForRequiredReturnsExpectedValue(array $tcaFieldConfig, $input, bool $expectation): void { self::assertSame($expectation, $this->subject->_call('validateValueForRequired', $tcaFieldConfig, $input)); diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/Localization/StateTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/Localization/StateTest.php index 08769f1a6378..91cff8d8b063 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/Localization/StateTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/Localization/StateTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\Localization; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\DataHandling\Localization\State; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,10 +32,8 @@ final class StateTest extends UnitTestCase $GLOBALS['TCA'] = []; } - /** - * @test - * @dataProvider stateObjectCanBeCreatedDataProvider - */ + #[DataProvider('stateObjectCanBeCreatedDataProvider')] + #[Test] public function stateObjectCanBeCreated(string $tableName, array $states): void { $subject = new State($tableName, $states); @@ -55,10 +55,8 @@ final class StateTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider statesAreEnrichedAndSanitizedOnObjectCreationDataProvider - */ + #[DataProvider('statesAreEnrichedAndSanitizedOnObjectCreationDataProvider')] + #[Test] public function statesAreEnrichedAndSanitizedOnObjectCreation( array $states, array $expected diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/Model/CorrelationIdTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/Model/CorrelationIdTest.php index a47b7f3f0a1a..2e925a88b957 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/Model/CorrelationIdTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/Model/CorrelationIdTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\Model; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\DataHandling\Model\CorrelationId; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -44,10 +46,8 @@ final class CorrelationIdTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canBeParsedDataProvider - */ + #[DataProvider('canBeParsedDataProvider')] + #[Test] public function canBeParsed(string $string, array $expectations): void { $correlationId = CorrelationId::fromString($string); @@ -59,9 +59,7 @@ final class CorrelationIdTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function subjectIsConsidered(): void { $correlationId = CorrelationId::forSubject('subject') @@ -69,9 +67,7 @@ final class CorrelationIdTest extends UnitTestCase self::assertSame('0400$subject/aspect-a', (string)$correlationId); } - /** - * @test - */ + #[Test] public function scopeIsConsidered(): void { $correlationId = CorrelationId::forScope('scope') @@ -80,9 +76,7 @@ final class CorrelationIdTest extends UnitTestCase self::assertSame('0400$scope:subject/aspect-a', (string)$correlationId); } - /** - * @test - */ + #[Test] public function doesNotVary(): void { $correlationId = '0400$scope:subject/aspect-a/aspect-b'; diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SlugHelperTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SlugHelperTest.php index 5cb575d3faa3..067a54287c02 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SlugHelperTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SlugHelperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\DataHandling\SlugHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -134,10 +136,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sanitizeDataProvider - */ + #[DataProvider('sanitizeDataProvider')] + #[Test] public function sanitizeConvertsString(array $configuration, string $input, string $expected): void { $subject = new SlugHelper( @@ -173,10 +173,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @dataProvider generateNeverDeliversEmptySlugDataProvider - * @test - */ + #[DataProvider('generateNeverDeliversEmptySlugDataProvider')] + #[Test] public function generateNeverDeliversEmptySlug(string $input, string $expected): void { $GLOBALS['dummyTable']['ctrl'] = []; @@ -326,10 +324,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sanitizeForPagesDataProvider - */ + #[DataProvider('sanitizeForPagesDataProvider')] + #[Test] public function sanitizeConvertsStringForPages(array $configuration, string $input, string $expected): void { $subject = new SlugHelper( @@ -365,10 +361,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @dataProvider generateNeverDeliversEmptySlugForPagesDataProvider - * @test - */ + #[DataProvider('generateNeverDeliversEmptySlugForPagesDataProvider')] + #[Test] public function generateNeverDeliversEmptySlugForPages(string $input, string $expected): void { $GLOBALS['dummyTable']['ctrl'] = []; @@ -466,10 +460,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @dataProvider generatePrependsSlugsForPagesDataProvider - * @test - */ + #[DataProvider('generatePrependsSlugsForPagesDataProvider')] + #[Test] public function generatePrependsSlugsForPages(string $input, string $expected, array $options): void { $GLOBALS['dummyTable']['ctrl'] = []; @@ -607,10 +599,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @dataProvider generateSlugWithNavTitleAndFallbackForPagesDataProvider - * @test - */ + #[DataProvider('generateSlugWithNavTitleAndFallbackForPagesDataProvider')] + #[Test] public function generateSlugWithNavTitleAndFallbackForPages(array $input, string $expected, array $options): void { $GLOBALS['dummyTable']['ctrl'] = []; @@ -631,9 +621,7 @@ final class SlugHelperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function generateSlugWithHookModifiers(): void { $options = []; @@ -682,10 +670,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @dataProvider generateSlugWithPid0DataProvider - * @test - */ + #[DataProvider('generateSlugWithPid0DataProvider')] + #[Test] public function generateSlugWithPid0(array $input, string $expected) { if (empty($GLOBALS[$input['table']]['ctrl'])) { @@ -718,10 +704,8 @@ final class SlugHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generatePrependsSlugsForNonPagesDataProvider - */ + #[DataProvider('generatePrependsSlugsForNonPagesDataProvider')] + #[Test] public function generatePrependsSlugsForNonPages(string $input, string $expected, array $options): void { $GLOBALS['dummyTable']['ctrl'] = []; diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/EmailSoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/EmailSoftReferenceParserTest.php index 6ae993f421f4..77d7cdbb4a4f 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/EmailSoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/EmailSoftReferenceParserTest.php @@ -17,6 +17,9 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; + final class EmailSoftReferenceParserTest extends AbstractSoftReferenceParserTestCase { public static function emailSoftReferenceParserTestDataProvider(): array @@ -74,10 +77,8 @@ final class EmailSoftReferenceParserTest extends AbstractSoftReferenceParserTest ]; } - /** - * @test - * @dataProvider emailSoftReferenceParserTestDataProvider - */ + #[DataProvider('emailSoftReferenceParserTestDataProvider')] + #[Test] public function emailSoftReferenceParserTest(string $content, string $expectedContent, array $expectedElements, bool $expectedHasMatched): void { $subject = $this->getParserByKey('email'); @@ -87,9 +88,7 @@ final class EmailSoftReferenceParserTest extends AbstractSoftReferenceParserTest self::assertEquals($expectedHasMatched, $result->hasMatched()); } - /** - * @test - */ + #[Test] public function emailSoftReferenceParserSubstituteTest(): void { $content = 'My email is: foo@bar.baz'; diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/ExtensionPathSoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/ExtensionPathSoftReferenceParserTest.php index 5e39326b3cd4..59d42f172df5 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/ExtensionPathSoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/ExtensionPathSoftReferenceParserTest.php @@ -17,6 +17,9 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; + final class ExtensionPathSoftReferenceParserTest extends AbstractSoftReferenceParserTestCase { public static function extensionPathSoftReferenceParserDataProvider(): array @@ -64,10 +67,8 @@ final class ExtensionPathSoftReferenceParserTest extends AbstractSoftReferencePa ]; } - /** - * @test - * @dataProvider extensionPathSoftReferenceParserDataProvider - */ + #[DataProvider('extensionPathSoftReferenceParserDataProvider')] + #[Test] public function extensionPathSoftReferenceParserTest(string $content, string $expectedContent, array $expectedElements, bool $expectedHasMatched): void { $subject = $this->getParserByKey('ext_fileref'); diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/NotifySoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/NotifySoftReferenceParserTest.php index f8c6dafd1dff..c1a1a326fb1c 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/NotifySoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/NotifySoftReferenceParserTest.php @@ -17,11 +17,11 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\Test; + final class NotifySoftReferenceParserTest extends AbstractSoftReferenceParserTestCase { - /** - * @test - */ + #[Test] public function notifySoftReferenceParserTest(): void { $subject = $this->getParserByKey('notify'); diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/SubstituteSoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/SubstituteSoftReferenceParserTest.php index 44fd2009bbf9..c7a2e5dc3199 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/SubstituteSoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/SubstituteSoftReferenceParserTest.php @@ -17,11 +17,11 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\Test; + final class SubstituteSoftReferenceParserTest extends AbstractSoftReferenceParserTestCase { - /** - * @test - */ + #[Test] public function substituteSoftReferenceParserTest(): void { $subject = $this->getParserByKey('substitute'); diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkSoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkSoftReferenceParserTest.php index e1ca423840d9..70c1cf918edc 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkSoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkSoftReferenceParserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -149,10 +151,8 @@ final class TypoLinkSoftReferenceParserTest extends AbstractSoftReferenceParserT ]; } - /** - * @test - * @dataProvider findRefReturnsParsedElementsDataProvider - */ + #[DataProvider('findRefReturnsParsedElementsDataProvider')] + #[Test] public function findRefReturnsParsedElements(array $softrefConfiguration, array $expectedElement): void { $subject = $this->getParserByKey('typolink'); @@ -237,10 +237,8 @@ final class TypoLinkSoftReferenceParserTest extends AbstractSoftReferenceParserT ]; } - /** - * @test - * @dataProvider findRefReturnsParsedElementsWithFileDataProvider - */ + #[DataProvider('findRefReturnsParsedElementsWithFileDataProvider')] + #[Test] public function findRefReturnsParsedElementsWithFile(array $softrefConfiguration, array $expectedElement): void { $storageObject = $this->createMock(ResourceStorage::class); @@ -293,10 +291,8 @@ final class TypoLinkSoftReferenceParserTest extends AbstractSoftReferenceParserT ]; } - /** - * @test - * @dataProvider findRefReturnsNullWithFolderDataProvider - */ + #[DataProvider('findRefReturnsNullWithFolderDataProvider')] + #[Test] public function findRefReturnsNullWithFolder(array $softrefConfiguration): void { $folderObject = $this->createMock(Folder::class); @@ -334,10 +330,8 @@ final class TypoLinkSoftReferenceParserTest extends AbstractSoftReferenceParserT ]; } - /** - * @test - * @dataProvider getTypoLinkPartsThrowExceptionWithPharReferencesDataProvider - */ + #[DataProvider('getTypoLinkPartsThrowExceptionWithPharReferencesDataProvider')] + #[Test] public function getTypoLinkPartsThrowExceptionWithPharReferences(string $pharUrl): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkTagSoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkTagSoftReferenceParserTest.php index eb8d7738b3dd..7b9a7a2a56e2 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkTagSoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/TypoLinkTagSoftReferenceParserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -136,10 +138,8 @@ final class TypoLinkTagSoftReferenceParserTest extends AbstractSoftReferencePars ]; } - /** - * @test - * @dataProvider findRefReturnsParsedElementsDataProvider - */ + #[DataProvider('findRefReturnsParsedElementsDataProvider')] + #[Test] public function findRefReturnsParsedElements(array $softrefConfiguration, array $expectedElement): void { $subject = $this->getParserByKey('typolink_tag'); @@ -181,10 +181,8 @@ final class TypoLinkTagSoftReferenceParserTest extends AbstractSoftReferencePars ]; } - /** - * @test - * @dataProvider findRefReturnsParsedElementsWithFileDataProvider - */ + #[DataProvider('findRefReturnsParsedElementsWithFileDataProvider')] + #[Test] public function findRefReturnsParsedElementsWithFile(array $softrefConfiguration, array $expectedElement): void { $fileObject = $this->createMock(File::class); @@ -236,10 +234,8 @@ final class TypoLinkTagSoftReferenceParserTest extends AbstractSoftReferencePars ]; } - /** - * @test - * @dataProvider findRefReturnsNullWithFolderDataProvider - */ + #[DataProvider('findRefReturnsNullWithFolderDataProvider')] + #[Test] public function findRefReturnsNullWithFolder(array $softrefConfiguration): void { $folderObject = $this->createMock(Folder::class); diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/UrlSoftReferenceParserTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/UrlSoftReferenceParserTest.php index a9055139e95d..bcf625ecbd30 100644 --- a/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/UrlSoftReferenceParserTest.php +++ b/typo3/sysext/core/Tests/Unit/DataHandling/SoftReference/UrlSoftReferenceParserTest.php @@ -17,6 +17,9 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DataHandling\SoftReference; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; + final class UrlSoftReferenceParserTest extends AbstractSoftReferenceParserTestCase { public static function urlSoftReferenceParserTestDataProvider(): array @@ -99,10 +102,8 @@ final class UrlSoftReferenceParserTest extends AbstractSoftReferenceParserTestCa ]; } - /** - * @test - * @dataProvider urlSoftReferenceParserTestDataProvider - */ + #[DataProvider('urlSoftReferenceParserTestDataProvider')] + #[Test] public function urlSoftReferenceParserTest(string $content, string $expectedContent, array $expectedElements): void { $subject = $this->getParserByKey('url'); @@ -111,9 +112,7 @@ final class UrlSoftReferenceParserTest extends AbstractSoftReferenceParserTestCa self::assertEquals($expectedElements, $result->getMatchedElements()); } - /** - * @test - */ + #[Test] public function urlSoftReferenceParserSubstituteTest(): void { $content = 'My website is: https://www.foo-bar.baz'; diff --git a/typo3/sysext/core/Tests/Unit/Database/ConnectionPoolTest.php b/typo3/sysext/core/Tests/Unit/Database/ConnectionPoolTest.php index 04a4a3d4474f..351362eebbf8 100644 --- a/typo3/sysext/core/Tests/Unit/Database/ConnectionPoolTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/ConnectionPoolTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConnectionPoolTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getConnectionNamesReturnsConfiguredConnectionNames(): void { $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/ConnectionTest.php b/typo3/sysext/core/Tests/Unit/Database/ConnectionTest.php index 2966d0a53b0f..d12ad6e0fbbf 100644 --- a/typo3/sysext/core/Tests/Unit/Database/ConnectionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/ConnectionTest.php @@ -22,6 +22,8 @@ use Doctrine\DBAL\Driver\AbstractMySQLDriver; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\MySQLPlatform; use Doctrine\DBAL\Result; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder; @@ -73,9 +75,7 @@ final class ConnectionTest extends UnitTestCase ->willReturn(new MockPlatform()); } - /** - * @test - */ + #[Test] public function createQueryBuilderReturnsInstanceOfTypo3QueryBuilder(): void { self::assertInstanceOf(QueryBuilder::class, $this->connection->createQueryBuilder()); @@ -128,18 +128,14 @@ final class ConnectionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider quoteIdentifierDataProvider - */ + #[DataProvider('quoteIdentifierDataProvider')] + #[Test] public function quoteIdentifier(string $input, string $expected): void { self::assertSame($expected, $this->connection->quoteIdentifier($input)); } - /** - * @test - */ + #[Test] public function quoteIdentifiers(): void { $input = [ @@ -189,10 +185,8 @@ final class ConnectionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider insertQueriesDataProvider - */ + #[DataProvider('insertQueriesDataProvider')] + #[Test] public function insertQueries(array $args, string $expectedQuery, array $expectedValues, array $expectedTypes): void { $this->connection->expects(self::once()) @@ -203,9 +197,7 @@ final class ConnectionTest extends UnitTestCase $this->connection->insert(...$args); } - /** - * @test - */ + #[Test] public function bulkInsert(): void { $this->connection->expects(self::once()) @@ -246,10 +238,8 @@ final class ConnectionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider updateQueriesDataProvider - */ + #[DataProvider('updateQueriesDataProvider')] + #[Test] public function updateQueries(array $args, string $expectedQuery, array $expectedValues, array $expectedTypes): void { // @todo drop else branch and condition once doctrine/dbal is requried in version 2.11.0 minimum @@ -298,10 +288,8 @@ final class ConnectionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider deleteQueriesDataProvider - */ + #[DataProvider('deleteQueriesDataProvider')] + #[Test] public function deleteQueries(array $args, string $expectedQuery, array $expectedValues, array $expectedTypes): void { // @todo drop else branch and condition once doctrine/dbal is requried in version 2.11.0 minimum @@ -383,10 +371,8 @@ final class ConnectionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider selectQueriesDataProvider - */ + #[DataProvider('selectQueriesDataProvider')] + #[Test] public function selectQueries(array $args, string $expectedQuery, array $expectedParameters): void { $resultStatement = $this->createMock(Result::class); @@ -428,10 +414,8 @@ final class ConnectionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider countQueriesDataProvider - */ + #[DataProvider('countQueriesDataProvider')] + #[Test] public function countQueries(array $args, string $expectedQuery, array $expectedParameters): void { $resultStatement = $this->createMock(Result::class); @@ -446,9 +430,7 @@ final class ConnectionTest extends UnitTestCase $this->connection->count(...$args); } - /** - * @test - */ + #[Test] public function truncateQuery(): void { $this->connection->expects(self::once()) @@ -459,9 +441,7 @@ final class ConnectionTest extends UnitTestCase $this->connection->truncate('aTestTable', false); } - /** - * @test - */ + #[Test] public function getServerVersionReportsPlatformVersion(): void { $wrappedConnectionMock = $this->createMock(Connection::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Platform/PlatformInformationTest.php b/typo3/sysext/core/Tests/Unit/Database/Platform/PlatformInformationTest.php index 0ad587f0a7fe..8ec70f9388f3 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Platform/PlatformInformationTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Platform/PlatformInformationTest.php @@ -21,6 +21,8 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\MySQLPlatform; use Doctrine\DBAL\Platforms\PostgreSQL94Platform as PostgreSQLPlatform; use Doctrine\DBAL\Platforms\SqlitePlatform; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Platform\PlatformInformation; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -39,10 +41,10 @@ final class PlatformInformationTest extends UnitTestCase } /** - * @test * @param class-string<AbstractPlatform> $platform - * @dataProvider platformDataProvider */ + #[DataProvider('platformDataProvider')] + #[Test] public function maxBindParameters(string $platform): void { $platformMock = $this->createMock($platform); @@ -50,19 +52,17 @@ final class PlatformInformationTest extends UnitTestCase } /** - * @test * @param class-string<AbstractPlatform> $platform - * @dataProvider platformDataProvider */ + #[DataProvider('platformDataProvider')] + #[Test] public function maxIdentifierLength(string $platform): void { $platformMock = $this->createMock($platform); self::assertGreaterThanOrEqual(1, PlatformInformation::getMaxIdentifierLength($platformMock)); } - /** - * @test - */ + #[Test] public function maxBindParametersWithUnknownPlatform(): void { $this->expectException(\RuntimeException::class); @@ -71,9 +71,7 @@ final class PlatformInformationTest extends UnitTestCase self::assertGreaterThanOrEqual(1, PlatformInformation::getMaxBindParameters($platformMock)); } - /** - * @test - */ + #[Test] public function maxIdentifierLengthWithUnknownPlatform(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/BulkInsertTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/BulkInsertTest.php index 39262912ad62..383ce92540a1 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/BulkInsertTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/BulkInsertTest.php @@ -18,6 +18,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query; use Doctrine\DBAL\Platforms\AbstractPlatform; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Query\BulkInsertQuery; use TYPO3\CMS\Core\Tests\Unit\Database\Mocks\MockPlatform; @@ -50,9 +51,7 @@ final class BulkInsertTest extends UnitTestCase ->willReturn(new MockPlatform()); } - /** - * @test - */ + #[Test] public function getSQLWithoutSpecifiedValuesThrowsException(): void { $this->expectException(\LogicException::class); @@ -63,9 +62,7 @@ final class BulkInsertTest extends UnitTestCase $query->getSQL(); } - /** - * @test - */ + #[Test] public function insertWithoutColumnAndTypeSpecification(): void { $query = new BulkInsertQuery($this->connection, $this->testTable); @@ -88,9 +85,7 @@ final class BulkInsertTest extends UnitTestCase self::assertSame([], $query->getParameterTypes()); } - /** - * @test - */ + #[Test] public function singleInsertWithoutColumnSpecification(): void { $query = new BulkInsertQuery($this->connection, $this->testTable); @@ -113,9 +108,7 @@ final class BulkInsertTest extends UnitTestCase self::assertSame([null, Connection::PARAM_INT, Connection::PARAM_BOOL], $query->getParameterTypes()); } - /** - * @test - */ + #[Test] public function multiInsertWithoutColumnSpecification(): void { $query = new BulkInsertQuery($this->connection, $this->testTable); @@ -156,9 +149,7 @@ final class BulkInsertTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function singleInsertWithColumnSpecificationAndPositionalTypeValues(): void { $query = new BulkInsertQuery($this->connection, $this->testTable, ['bar', 'baz']); @@ -178,9 +169,7 @@ final class BulkInsertTest extends UnitTestCase self::assertSame([null, Connection::PARAM_BOOL], $query->getParameterTypes()); } - /** - * @test - */ + #[Test] public function singleInsertWithColumnSpecificationAndNamedTypeValues(): void { $query = new BulkInsertQuery($this->connection, $this->testTable, ['bar', 'baz']); @@ -200,9 +189,7 @@ final class BulkInsertTest extends UnitTestCase self::assertSame([null, Connection::PARAM_INT], $query->getParameterTypes()); } - /** - * @test - */ + #[Test] public function singleInsertWithColumnSpecificationAndMixedTypeValues(): void { $query = new BulkInsertQuery($this->connection, $this->testTable, ['bar', 'baz']); @@ -222,9 +209,7 @@ final class BulkInsertTest extends UnitTestCase self::assertSame([Connection::PARAM_INT, Connection::PARAM_BOOL], $query->getParameterTypes()); } - /** - * @test - */ + #[Test] public function multiInsertWithColumnSpecification(): void { $query = new BulkInsertQuery($this->connection, $this->testTable, ['bar', 'baz']); @@ -271,9 +256,7 @@ final class BulkInsertTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function emptyInsertWithColumnSpecificationThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -283,9 +266,7 @@ final class BulkInsertTest extends UnitTestCase $query->addValues([]); } - /** - * @test - */ + #[Test] public function insertWithColumnSpecificationAndMultipleValuesForColumnThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -295,9 +276,7 @@ final class BulkInsertTest extends UnitTestCase $query->addValues(['bar', 'baz', 'baz' => 666]); } - /** - * @test - */ + #[Test] public function insertWithColumnSpecificationAndMultipleTypesForColumnThrowsException(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php index 65db7019b739..48c6caae446a 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php @@ -18,6 +18,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Expression; use Doctrine\DBAL\Platforms\TrimMode; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression; @@ -40,9 +42,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject = new ExpressionBuilder($this->connectionMock); } - /** - * @test - */ + #[Test] public function andXReturnType(): void { $result = $this->subject->and('"uid" = 1', '"pid" = 0'); @@ -51,9 +51,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame(CompositeExpression::TYPE_AND, $result->getType()); } - /** - * @test - */ + #[Test] public function orXReturnType(): void { $result = $this->subject->or('"uid" = 1', '"uid" = 7'); @@ -62,9 +60,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame(CompositeExpression::TYPE_OR, $result->getType()); } - /** - * @test - */ + #[Test] public function eqQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -73,9 +69,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField = 1', $result); } - /** - * @test - */ + #[Test] public function neqQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -84,9 +78,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField <> 1', $result); } - /** - * @test - */ + #[Test] public function ltQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -95,9 +87,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField < 1', $result); } - /** - * @test - */ + #[Test] public function lteQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -106,9 +96,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField <= 1', $result); } - /** - * @test - */ + #[Test] public function gtQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -117,9 +105,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField > 1', $result); } - /** - * @test - */ + #[Test] public function gteQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -128,9 +114,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField >= 1', $result); } - /** - * @test - */ + #[Test] public function isNullQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -139,9 +123,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField IS NULL', $result); } - /** - * @test - */ + #[Test] public function isNotNullQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -150,9 +132,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField IS NOT NULL', $result); } - /** - * @test - */ + #[Test] public function likeQuotesIdentifier(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -166,9 +146,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame("aField LIKE 'aValue%' ESCAPE \"\\\"", $result); } - /** - * @test - */ + #[Test] public function notLikeQuotesIdentifier(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -182,9 +160,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame("aField NOT LIKE 'aValue%' ESCAPE \"\\\"", $result); } - /** - * @test - */ + #[Test] public function inWithStringQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -193,9 +169,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField IN (1,2,3)', $result); } - /** - * @test - */ + #[Test] public function inWithArrayQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -204,9 +178,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField IN (1, 2, 3)', $result); } - /** - * @test - */ + #[Test] public function notInWithStringQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -215,9 +187,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField NOT IN (1,2,3)', $result); } - /** - * @test - */ + #[Test] public function notInWithArrayQuotesIdentifier(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField')->willReturnArgument(0); @@ -226,9 +196,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('aField NOT IN (1, 2, 3)', $result); } - /** - * @test - */ + #[Test] public function inSetThrowsExceptionWithEmptyValue(): void { $this->expectException(\InvalidArgumentException::class); @@ -236,9 +204,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->inSet('aField', ''); } - /** - * @test - */ + #[Test] public function inSetThrowsExceptionWithInvalidValue(): void { $this->expectException(\InvalidArgumentException::class); @@ -246,9 +212,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->inSet('aField', 'an,Invalid,Value'); } - /** - * @test - */ + #[Test] public function inSetForMySQL(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -265,9 +229,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('FIND_IN_SET(\'1\', `aField`)', $result); } - /** - * @test - */ + #[Test] public function inSetForPostgreSQL(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -296,9 +258,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('\'1\' = ANY(string_to_array("aField"::text, \',\'))', $result); } - /** - * @test - */ + #[Test] public function inSetForPostgreSQLWithColumn(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -316,9 +276,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('"testtable"."uid"::text = ANY(string_to_array("aField"::text, \',\'))', $result); } - /** - * @test - */ + #[Test] public function inSetForSQLite(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -349,9 +307,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('instr(\',\'||"aField"||\',\', \'%,1,%\')', $result); } - /** - * @test - */ + #[Test] public function inSetForSQLiteWithQuoteCharactersInValue(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -381,9 +337,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('instr(\',\'||"aField"||\',\', \',\'\'Some\'\'Value,\')', $result); } - /** - * @test - */ + #[Test] public function inSetForSQLiteThrowsExceptionOnPositionalPlaceholder(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -398,9 +352,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->inSet('aField', '?'); } - /** - * @test - */ + #[Test] public function inSetForSQLiteThrowsExceptionOnNamedPlaceholder(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -415,9 +367,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->inSet('aField', ':dcValue1'); } - /** - * @test - */ + #[Test] public function notInSetThrowsExceptionWithEmptyValue(): void { $this->expectException(\InvalidArgumentException::class); @@ -425,9 +375,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->notInSet('aField', ''); } - /** - * @test - */ + #[Test] public function notInSetThrowsExceptionWithInvalidValue(): void { $this->expectException(\InvalidArgumentException::class); @@ -435,9 +383,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->notInSet('aField', 'an,Invalid,Value'); } - /** - * @test - */ + #[Test] public function notInSetForMySQL(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -454,9 +400,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('NOT FIND_IN_SET(\'1\', `aField`)', $result); } - /** - * @test - */ + #[Test] public function notInSetForPostgreSQL(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -485,9 +429,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('\'1\' <> ALL(string_to_array("aField"::text, \',\'))', $result); } - /** - * @test - */ + #[Test] public function notInSetForPostgreSQLWithColumn(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -505,9 +447,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('"testtable"."uid"::text <> ALL(string_to_array("aField"::text, \',\'))', $result); } - /** - * @test - */ + #[Test] public function notInSetForSQLite(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -537,9 +477,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('instr(\',\'||"aField"||\',\', \'%,1,%\') = 0', $result); } - /** - * @test - */ + #[Test] public function notInSetForSQLiteWithQuoteCharactersInValue(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -569,9 +507,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('instr(\',\'||"aField"||\',\', \',\'\'Some\'\'Value,\') = 0', $result); } - /** - * @test - */ + #[Test] public function notInSetForSQLiteThrowsExceptionOnPositionalPlaceholder(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -586,9 +522,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->notInSet('aField', '?'); } - /** - * @test - */ + #[Test] public function notInSetForSQLiteThrowsExceptionOnNamedPlaceholder(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -603,9 +537,7 @@ final class ExpressionBuilderTest extends UnitTestCase $this->subject->inSet('aField', ':dcValue1'); } - /** - * @test - */ + #[Test] public function defaultBitwiseAnd(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -619,9 +551,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('"aField" & 1', $this->subject->bitAnd('aField', 1)); } - /** - * @test - */ + #[Test] public function bitwiseAndForOracle(): void { $databasePlatform = $this->createMock(MockPlatform::class); @@ -636,9 +566,7 @@ final class ExpressionBuilderTest extends UnitTestCase self::assertSame('BITAND("aField", 1)', $this->subject->bitAnd('aField', 1)); } - /** - * @test - */ + #[Test] public function maxQuotesIdentifier(): void { $this->connectionMock->method('quoteIdentifier')->willReturnCallback(static function (string $identifier): string { @@ -652,9 +580,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function minQuotesIdentifier(): void { $this->connectionMock->method('quoteIdentifier')->willReturnCallback(static function (string $identifier): string { @@ -668,9 +594,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function sumQuotesIdentifier(): void { $this->connectionMock->method('quoteIdentifier')->willReturnCallback(static function (string $identifier): string { @@ -684,9 +608,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function avgQuotesIdentifier(): void { $this->connectionMock->method('quoteIdentifier')->willReturnCallback(static function (string $identifier): string { @@ -700,9 +622,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function countQuotesIdentifier(): void { $this->connectionMock->method('quoteIdentifier')->willReturnCallback(static function (string $identifier): string { @@ -716,9 +636,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function lengthQuotesIdentifier(): void { $this->connectionMock->method('quoteIdentifier')->willReturnCallback(static function (string $identifier): string { @@ -732,9 +650,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function trimQuotesIdentifierWithDefaultValues(): void { $platform = new MockPlatform(); @@ -778,10 +694,8 @@ final class ExpressionBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider trimQuotesIdentifierDataProvider - */ + #[DataProvider('trimQuotesIdentifierDataProvider')] + #[Test] public function trimQuotesIdentifier(int $position, string $char, string $expected): void { $platform = new MockPlatform(); @@ -804,9 +718,7 @@ final class ExpressionBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function literalQuotesValue(): void { $this->connectionMock->expects(self::atLeastOnce())->method('quote')->with('aField', Connection::PARAM_STR) diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/QueryBuilderTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/QueryBuilderTest.php index 3e154013fad8..1e49dafbc7de 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/QueryBuilderTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/QueryBuilderTest.php @@ -24,6 +24,8 @@ use Doctrine\DBAL\Platforms\PostgreSQL94Platform as PostgreSQLPlatform; use Doctrine\DBAL\Platforms\SqlitePlatform; use Doctrine\DBAL\Query\QueryBuilder as DoctrineQueryBuilder; use Doctrine\DBAL\Result; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder; @@ -57,9 +59,7 @@ final class QueryBuilderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function exprReturnsExpressionBuilderForConnection(): void { $this->connection->expects(self::atLeastOnce())->method('getExpressionBuilder') @@ -67,9 +67,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->expr(); } - /** - * @test - */ + #[Test] public function getTypeDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getType') @@ -77,9 +75,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getType(); } - /** - * @test - */ + #[Test] public function getStateDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getState') @@ -87,9 +83,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getState(); } - /** - * @test - */ + #[Test] public function getSQLDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getSQL') @@ -99,9 +93,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getSQL(); } - /** - * @test - */ + #[Test] public function setParameterDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('setParameter')->with('aField', 5, self::anything()) @@ -109,9 +101,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->setParameter('aField', 5); } - /** - * @test - */ + #[Test] public function setParametersDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('setParameters')->with(['aField' => 'aValue'], []) @@ -119,9 +109,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->setParameters(['aField' => 'aValue']); } - /** - * @test - */ + #[Test] public function getParametersDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getParameters') @@ -129,9 +117,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getParameters(); } - /** - * @test - */ + #[Test] public function getParameterDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getParameter')->with('aField') @@ -139,18 +125,14 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getParameter('aField'); } - /** - * @test - */ + #[Test] public function getParameterTypesDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getParameterTypes')->willReturn([]); $this->subject->getParameterTypes(); } - /** - * @test - */ + #[Test] public function getParameterTypeDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getParameterType')->with('aField') @@ -158,9 +140,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getParameterType('aField'); } - /** - * @test - */ + #[Test] public function setFirstResultDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('setFirstResult')->with(self::anything()) @@ -168,18 +148,14 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->setFirstResult(1); } - /** - * @test - */ + #[Test] public function getFirstResultDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getFirstResult')->willReturn(1); $this->subject->getFirstResult(); } - /** - * @test - */ + #[Test] public function setMaxResultsDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('setMaxResults')->with(self::anything()) @@ -187,18 +163,14 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->setMaxResults(1); } - /** - * @test - */ + #[Test] public function getMaxResultsDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getMaxResults')->willReturn(1); $this->subject->getMaxResults(); } - /** - * @test - */ + #[Test] public function addDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('add')->with('select', 'aField', self::anything()) @@ -206,9 +178,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->add('select', 'aField'); } - /** - * @test - */ + #[Test] public function countBuildsExpressionAndCallsSelect(): void { $this->connection->method('getDatabasePlatform')->willReturn(new MockPlatform()); @@ -217,9 +187,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->count('*'); } - /** - * @test - */ + #[Test] public function selectQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $series = [ @@ -295,10 +263,8 @@ final class QueryBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider quoteIdentifiersForSelectDataProvider - */ + #[DataProvider('quoteIdentifiersForSelectDataProvider')] + #[Test] public function quoteIdentifiersForSelect(string $identifier, string $expectedResult): void { $this->connection->method('quoteIdentifier')->willReturnCallback( @@ -309,9 +275,7 @@ final class QueryBuilderTest extends UnitTestCase self::assertSame([$expectedResult], $this->subject->quoteIdentifiersForSelect([$identifier])); } - /** - * @test - */ + #[Test] public function quoteIdentifiersForSelectWithInvalidAlias(): void { $this->expectException(\InvalidArgumentException::class); @@ -324,9 +288,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->quoteIdentifiersForSelect(['aField AS anotherField,someField AS someThing']); } - /** - * @test - */ + #[Test] public function selectDoesNotQuoteStarPlaceholder(): void { $this->connection->expects(self::never())->method('quoteIdentifier')->with('*'); @@ -335,9 +297,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->select('*'); } - /** - * @test - */ + #[Test] public function addSelectQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $series = [ @@ -355,9 +315,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->addSelect('aField', 'anotherField'); } - /** - * @test - */ + #[Test] public function addSelectDoesNotQuoteStarPlaceholder(): void { $this->connection->expects(self::never())->method('quoteIdentifier')->with('*'); @@ -366,9 +324,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->addSelect('*'); } - /** - * @test - */ + #[Test] public function selectLiteralDirectlyDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::never())->method('quoteIdentifier')->with(self::anything()); @@ -377,9 +333,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->selectLiteral('MAX(aField) AS anAlias'); } - /** - * @test - */ + #[Test] public function addSelectLiteralDirectlyDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::never())->method('quoteIdentifier')->with(self::anything()); @@ -389,9 +343,9 @@ final class QueryBuilderTest extends UnitTestCase } /** - * @test * @todo: Test with alias */ + #[Test] public function deleteQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aTable') @@ -401,9 +355,9 @@ final class QueryBuilderTest extends UnitTestCase } /** - * @test * @todo: Test with alias */ + #[Test] public function updateQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aTable') @@ -412,9 +366,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->update('aTable'); } - /** - * @test - */ + #[Test] public function insertQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aTable') @@ -424,9 +376,9 @@ final class QueryBuilderTest extends UnitTestCase } /** - * @test * @todo: Test with alias */ + #[Test] public function fromQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aTable') @@ -435,9 +387,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->from('aTable'); } - /** - * @test - */ + #[Test] public function joinQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $series = [ @@ -456,9 +406,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->join('fromAlias', 'join', 'alias'); } - /** - * @test - */ + #[Test] public function innerJoinQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $series = [ @@ -477,9 +425,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->innerJoin('fromAlias', 'join', 'alias'); } - /** - * @test - */ + #[Test] public function leftJoinQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $series = [ @@ -500,9 +446,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->leftJoin('fromAlias', 'join', 'alias'); } - /** - * @test - */ + #[Test] public function rightJoinQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $series = [ @@ -524,9 +468,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->rightJoin('fromAlias', 'join', 'alias'); } - /** - * @test - */ + #[Test] public function setQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -538,9 +480,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->set('aField', 'aValue'); } - /** - * @test - */ + #[Test] public function setWithoutNamedParameterQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -551,9 +491,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->set('aField', 'aValue', false); } - /** - * @test - */ + #[Test] public function whereDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('where')->with('uid=1', 'type=9') @@ -561,9 +499,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->where('uid=1', 'type=9'); } - /** - * @test - */ + #[Test] public function andWhereDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('andWhere')->with('uid=1', 'type=9') @@ -571,9 +507,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->andWhere('uid=1', 'type=9'); } - /** - * @test - */ + #[Test] public function orWhereDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('orWhere')->with('uid=1', 'type=9') @@ -581,9 +515,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->orWhere('uid=1', 'type=9'); } - /** - * @test - */ + #[Test] public function groupByQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifiers')->with(['aField', 'anotherField']) @@ -593,9 +525,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->groupBy('aField', 'anotherField'); } - /** - * @test - */ + #[Test] public function addGroupByQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifiers')->with(['aField', 'anotherField']) @@ -605,9 +535,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->addGroupBy('aField', 'anotherField'); } - /** - * @test - */ + #[Test] public function setValueQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -619,9 +547,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->setValue('aField', 'aValue'); } - /** - * @test - */ + #[Test] public function setValueWithoutNamedParameterQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -631,9 +557,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->setValue('aField', 'aValue', false); } - /** - * @test - */ + #[Test] public function valuesQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteColumnValuePairs') @@ -653,9 +577,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->values(['aField' => 1, 'aValue' => 2]); } - /** - * @test - */ + #[Test] public function valuesWithoutNamedParametersQuotesIdentifiersAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteColumnValuePairs') @@ -665,9 +587,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->values(['aField' => 1, 'aValue' => 2], false); } - /** - * @test - */ + #[Test] public function havingDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('having')->with('uid=1', 'type=9') @@ -675,9 +595,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->having('uid=1', 'type=9'); } - /** - * @test - */ + #[Test] public function andHavingDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('andHaving')->with('uid=1', 'type=9') @@ -685,9 +603,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->andHaving('uid=1', 'type=9'); } - /** - * @test - */ + #[Test] public function orHavingDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('orHaving')->with('uid=1', 'type=9') @@ -695,9 +611,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->orHaving('uid=1', 'type=9'); } - /** - * @test - */ + #[Test] public function orderByQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -707,9 +621,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->orderBy('aField'); } - /** - * @test - */ + #[Test] public function addOrderByQuotesIdentifierAndDelegatesToConcreteQueryBuilder(): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -719,9 +631,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->addOrderBy('aField', 'DESC'); } - /** - * @test - */ + #[Test] public function getQueryPartDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getQueryPart')->with('from') @@ -729,9 +639,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getQueryPart('from'); } - /** - * @test - */ + #[Test] public function getQueryPartsDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('getQueryParts') @@ -739,9 +647,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->getQueryParts(); } - /** - * @test - */ + #[Test] public function resetQueryPartsDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('resetQueryParts')->with(['select', 'from']) @@ -749,9 +655,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->resetQueryParts(['select', 'from']); } - /** - * @test - */ + #[Test] public function resetQueryPartDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('resetQueryPart')->with('select') @@ -759,9 +663,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->resetQueryPart('select'); } - /** - * @test - */ + #[Test] public function createNamedParameterDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('createNamedParameter') @@ -769,9 +671,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->createNamedParameter(5); } - /** - * @test - */ + #[Test] public function createPositionalParameterDelegatesToConcreteQueryBuilder(): void { $this->concreteQueryBuilder->expects(self::atLeastOnce())->method('createPositionalParameter') @@ -779,9 +679,7 @@ final class QueryBuilderTest extends UnitTestCase $this->subject->createPositionalParameter(5); } - /** - * @test - */ + #[Test] public function queryRestrictionsAreAddedForSelectOnExecuteQuery(): void { $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -824,9 +722,7 @@ final class QueryBuilderTest extends UnitTestCase $subject->executeQuery(); } - /** - * @test - */ + #[Test] public function queryRestrictionsAreAddedForCountOnExecuteQuery(): void { $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -869,9 +765,7 @@ final class QueryBuilderTest extends UnitTestCase $subject->executeQuery(); } - /** - * @test - */ + #[Test] public function queryRestrictionsAreReevaluatedOnSettingsChangeForGetSQL(): void { $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -915,9 +809,7 @@ final class QueryBuilderTest extends UnitTestCase self::assertSame($expectedSQL, $subject->getSQL()); } - /** - * @test - */ + #[Test] public function queryRestrictionsAreReevaluatedOnSettingsChangeForExecuteQuery(): void { $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -974,9 +866,7 @@ final class QueryBuilderTest extends UnitTestCase $subject->executeQuery(); } - /** - * @test - */ + #[Test] public function getQueriedTablesReturnsSameTableTwiceForInnerJoin(): void { $this->connection->method('getDatabasePlatform')->willReturn(new MockPlatform()); @@ -1036,7 +926,7 @@ final class QueryBuilderTest extends UnitTestCase 'expected' => 'anIdentifier', ], 'postgres' => [ - 'platform' => PostgreSqlPlatform::class, + 'platform' => PostgreSQLPlatform::class, 'quoteChar' => '"', 'input' => '"anIdentifier"', 'expected' => 'anIdentifier', @@ -1044,10 +934,8 @@ final class QueryBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider unquoteSingleIdentifierUnquotesCorrectlyOnDifferentPlatformsDataProvider - */ + #[DataProvider('unquoteSingleIdentifierUnquotesCorrectlyOnDifferentPlatformsDataProvider')] + #[Test] public function unquoteSingleIdentifierUnquotesCorrectlyOnDifferentPlatforms(string $platform, string $quoteChar, string $input, string $expected): void { $connectionMock = $this->createMock(Connection::class); @@ -1059,18 +947,14 @@ final class QueryBuilderTest extends UnitTestCase self::assertEquals($expected, $result); } - /** - * @test - */ + #[Test] public function cloningQueryBuilderClonesConcreteQueryBuilder(): void { $clonedQueryBuilder = clone $this->subject; self::assertNotSame($this->subject->getConcreteQueryBuilder(), $clonedQueryBuilder->getConcreteQueryBuilder()); } - /** - * @test - */ + #[Test] public function changingClonedQueryBuilderDoesNotInfluenceSourceOne(): void { $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -1128,9 +1012,7 @@ final class QueryBuilderTest extends UnitTestCase self::assertSame($expectedCountSQL, $clonedQueryBuilder->getSQL()); } - /** - * @test - */ + #[Test] public function settingRestrictionContainerWillAddAdditionalRestrictionsFromConstructor(): void { $restrictionClass = get_class($this->createMock(QueryRestrictionInterface::class)); @@ -1149,9 +1031,7 @@ final class QueryBuilderTest extends UnitTestCase $queryBuilder->setRestrictions($container); } - /** - * @test - */ + #[Test] public function settingRestrictionContainerWillAddAdditionalRestrictionsFromConfiguration(): void { $restrictionClass = get_class($this->createMock(QueryRestrictionInterface::class)); @@ -1168,9 +1048,7 @@ final class QueryBuilderTest extends UnitTestCase $queryBuilder->setRestrictions($container); } - /** - * @test - */ + #[Test] public function settingRestrictionContainerWillNotAddAdditionalRestrictionsFromConfigurationIfNotDisabled(): void { $restrictionClass = get_class($this->createMock(QueryRestrictionInterface::class)); @@ -1187,9 +1065,7 @@ final class QueryBuilderTest extends UnitTestCase $queryBuilder->setRestrictions($container); } - /** - * @test - */ + #[Test] public function resettingToDefaultRestrictionContainerWillAddAdditionalRestrictionsFromConfiguration(): void { $restrictionClass = get_class($this->createMock(QueryRestrictionInterface::class)); @@ -1210,10 +1086,10 @@ final class QueryBuilderTest extends UnitTestCase } /** - * @test - * @dataProvider createNamedParameterInput * @param mixed $input */ + #[DataProvider('createNamedParameterInput')] + #[Test] public function setWithNamedParameterPassesGivenTypeToCreateNamedParameter($input, int $type): void { $this->connection->method('quoteIdentifier')->with('aField') @@ -1255,7 +1131,7 @@ final class QueryBuilderTest extends UnitTestCase 'CONVERT(aField, CHAR)', ], 'Test cast for PostgreSqlPlatform' => [ - new PostgreSqlPlatform(), + new PostgreSQLPlatform(), 'aField::text', ], 'Test cast for SqlitePlatform' => [ @@ -1269,10 +1145,8 @@ final class QueryBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider castFieldToTextTypeDataProvider - */ + #[DataProvider('castFieldToTextTypeDataProvider')] + #[Test] public function castFieldToTextType(AbstractPlatform $platform, string $expectation): void { $this->connection->expects(self::atLeastOnce())->method('quoteIdentifier')->with('aField') @@ -1288,9 +1162,7 @@ final class QueryBuilderTest extends UnitTestCase self::assertSame($expectation, $result); } - /** - * @test - */ + #[Test] public function limitRestrictionsToTablesLimitsRestrictionsInTheContainerToTheGivenTables(): void { $GLOBALS['TCA']['tt_content']['ctrl'] = $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -1337,9 +1209,7 @@ final class QueryBuilderTest extends UnitTestCase $subject->executeQuery(); } - /** - * @test - */ + #[Test] public function restrictionsCanStillBeRemovedAfterTheyHaveBeenLimitedToTables(): void { $GLOBALS['TCA']['tt_content']['ctrl'] = $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -1387,9 +1257,7 @@ final class QueryBuilderTest extends UnitTestCase $subject->executeQuery(); } - /** - * @test - */ + #[Test] public function restrictionsAreAppliedInJoinConditionForLeftJoins(): void { $GLOBALS['TCA']['tt_content']['ctrl'] = $GLOBALS['TCA']['pages']['ctrl'] = [ @@ -1435,9 +1303,7 @@ final class QueryBuilderTest extends UnitTestCase $subject->executeQuery(); } - /** - * @test - */ + #[Test] public function restrictionsAreAppliedInJoinConditionForRightJoins(): void { $GLOBALS['TCA']['tt_content']['ctrl'] = $GLOBALS['TCA']['pages']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/QueryHelperTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/QueryHelperTest.php index 547bebc20921..c26824279632 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/QueryHelperTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/QueryHelperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Query\QueryHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -46,10 +48,8 @@ final class QueryHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider stripLogicalOperatorPrefixDataProvider - */ + #[DataProvider('stripLogicalOperatorPrefixDataProvider')] + #[Test] public function stripLogicalOperatorPrefixRemovesConstraintPrefixes(string $input, string $expectedSql): void { self::assertSame($expectedSql, QueryHelper::stripLogicalOperatorPrefix($input)); @@ -128,10 +128,8 @@ final class QueryHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider parseOrderByDataProvider - */ + #[DataProvider('parseOrderByDataProvider')] + #[Test] public function parseOrderByTest(string $input, array $expectedResult): void { self::assertSame($expectedResult, QueryHelper::parseOrderBy($input)); @@ -200,10 +198,8 @@ final class QueryHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider parseTableListDataProvider - */ + #[DataProvider('parseTableListDataProvider')] + #[Test] public function parseTableListTest(string $input, array $expectedResult): void { self::assertSame($expectedResult, QueryHelper::parseTableList($input)); @@ -246,10 +242,8 @@ final class QueryHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider parseGroupByDataProvider - */ + #[DataProvider('parseGroupByDataProvider')] + #[Test] public function parseGroupByTest(string $input, array $expectedResult): void { self::assertSame($expectedResult, QueryHelper::parseGroupBy($input)); @@ -416,10 +410,8 @@ final class QueryHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider parseJoinDataProvider - */ + #[DataProvider('parseJoinDataProvider')] + #[Test] public function parseJoinSplitsStatement(string $input, array $expected): void { self::assertSame($expected, QueryHelper::parseJoin($input)); @@ -450,10 +442,8 @@ final class QueryHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider quoteDatabaseIdentifierDataProvider - */ + #[DataProvider('quoteDatabaseIdentifierDataProvider')] + #[Test] public function quoteDatabaseIdentifiers(string $input, string $expected): void { $connectionMock = $this->createMock(Connection::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/AbstractRestrictionContainerTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/AbstractRestrictionContainerTest.php index a3d60dd8e242..e2bf7c4a4c2c 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/AbstractRestrictionContainerTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/AbstractRestrictionContainerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression; use TYPO3\CMS\Core\Tests\Unit\Database\Mocks\InstantiatableAbstractRestrictionContainer; use TYPO3\CMS\Core\Tests\Unit\Database\Mocks\MockEnforceableQueryRestriction; @@ -24,9 +25,7 @@ use TYPO3\CMS\Core\Tests\Unit\Database\Mocks\MockQueryRestriction; final class AbstractRestrictionContainerTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function enforceableRestrictionsAreKeptWhenRemoveAllIsCalled(): void { $restriction = $this->createMock(MockEnforceableQueryRestriction::class); @@ -42,9 +41,7 @@ final class AbstractRestrictionContainerTest extends AbstractRestrictionTestCase self::assertSame('"aTable"."pid" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function enforceableRestrictionsWillBeRemovedWhenRemovedByType(): void { $restriction = $this->createMock(MockEnforceableQueryRestriction::class); @@ -59,9 +56,7 @@ final class AbstractRestrictionContainerTest extends AbstractRestrictionTestCase self::assertSame('', (string)$expression); } - /** - * @test - */ + #[Test] public function enforceableRestrictionsWillBeRemovedWhenRemovedByTypeAndRemovedAllIsAdditionallyCalled(): void { $restriction = $this->createMock(MockEnforceableQueryRestriction::class); @@ -77,9 +72,7 @@ final class AbstractRestrictionContainerTest extends AbstractRestrictionTestCase self::assertSame('', (string)$expression); } - /** - * @test - */ + #[Test] public function notEnforceableRestrictionsAreRemovedWhenRemoveAllIsCalled(): void { $restriction = $this->createMock(MockQueryRestriction::class); @@ -93,9 +86,7 @@ final class AbstractRestrictionContainerTest extends AbstractRestrictionTestCase self::assertSame('', (string)$expression); } - /** - * @test - */ + #[Test] public function enforceableRestrictionsThatDeclareThemselvesNonStickyAreRemovedWhenRemoveAllIsCalled(): void { $restriction = $this->createMock(MockEnforceableQueryRestriction::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DefaultRestrictionContainerTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DefaultRestrictionContainerTest.php index 76b01f073853..16a4b497bd44 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DefaultRestrictionContainerTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DefaultRestrictionContainerTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\DefaultRestrictionContainer; final class DefaultRestrictionContainerTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsAddsAllDefaultRestrictions(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DeletedRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DeletedRestrictionTest.php index db1b2f2fcb18..f2f9ef7b9620 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DeletedRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DeletedRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction; final class DeletedRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsAddsDeletedWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DocumentTypeExclusionRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DocumentTypeExclusionRestrictionTest.php index 07d9f5f964a2..8e133acdff74 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DocumentTypeExclusionRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DocumentTypeExclusionRestrictionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\DocumentTypeExclusionRestriction; final class DocumentTypeExclusionRestrictionTest extends AbstractRestrictionTestCase @@ -39,11 +41,8 @@ final class DocumentTypeExclusionRestrictionTest extends AbstractRestrictionTest ]; } - /** - * @test - * - * @dataProvider buildRestrictionsAddsDoktypeWhereClauseDataProvider - */ + #[DataProvider('buildRestrictionsAddsDoktypeWhereClauseDataProvider')] + #[Test] public function buildRestrictionsAddsDoktypeWhereClause($excludedDocumentTypes, string $expected): void { $subject = new DocumentTypeExclusionRestriction($excludedDocumentTypes); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/EndTimeRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/EndTimeRestrictionTest.php index d87b28f8424a..98d18c9b90e1 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/EndTimeRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/EndTimeRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\EndTimeRestriction; final class EndTimeRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsThrowsExceptionInStartTimeIfGlobalsAccessTimeIsMissing(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -40,9 +39,7 @@ final class EndTimeRestrictionTest extends AbstractRestrictionTestCase $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsStartTimeWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendGroupRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendGroupRestrictionTest.php index fb22b15f4eeb..e6af823c2fda 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendGroupRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendGroupRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\FrontendGroupRestriction; final class FrontendGroupRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildExpressionAddsNoAccessGroupWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -36,9 +35,7 @@ final class FrontendGroupRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."myGroupField" IS NULL) OR ("aTable"."myGroupField" = \'\') OR ("aTable"."myGroupField" = \'0\'))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsGroupWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendRestrictionContainerTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendRestrictionContainerTest.php index fa13e5bf724a..89b1e31569d2 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendRestrictionContainerTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendRestrictionContainerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\UserAspect; use TYPO3\CMS\Core\Context\VisibilityAspect; @@ -135,10 +137,8 @@ final class FrontendRestrictionContainerTest extends AbstractRestrictionTestCase ]; } - /** - * @test - * @dataProvider frontendStatesDataProvider - */ + #[DataProvider('frontendStatesDataProvider')] + #[Test] public function buildExpressionAddsCorrectClause( string $tableName, string $tableAlias, diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/HiddenRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/HiddenRestrictionTest.php index fbf773f59879..fe6f98c88909 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/HiddenRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/HiddenRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction; final class HiddenRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsAddsHiddenWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/LimitToTablesRestrictionContainerTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/LimitToTablesRestrictionContainerTest.php index 246486f2f60c..8aad415e233c 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/LimitToTablesRestrictionContainerTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/LimitToTablesRestrictionContainerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\DefaultRestrictionContainer; use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction; use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction; @@ -25,9 +26,7 @@ use TYPO3\CMS\Core\Database\Query\Restriction\QueryRestrictionContainerInterface final class LimitToTablesRestrictionContainerTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildExpressionAddsRestrictionsOnlyToGivenAlias(): void { $GLOBALS['TCA']['bTable']['ctrl']['enablecolumns']['disabled'] = 'hidden'; @@ -38,9 +37,7 @@ final class LimitToTablesRestrictionContainerTest extends AbstractRestrictionTes self::assertSame('"bt"."hidden" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsRestrictionsOfDefaultRestrictionContainerOnlyToGivenAlias(): void { $GLOBALS['TCA']['bTable']['ctrl']['enablecolumns']['disabled'] = 'hidden'; @@ -52,9 +49,7 @@ final class LimitToTablesRestrictionContainerTest extends AbstractRestrictionTes self::assertSame('(("bt"."deleted" = 0) AND ("bt"."hidden" = 0))', (string)$expression); } - /** - * @test - */ + #[Test] public function removeByTypeRemovesRestrictionsByTypeAlsoFromDefaultRestrictionContainer(): void { $GLOBALS['TCA']['bTable']['ctrl']['enablecolumns']['disabled'] = 'hidden'; @@ -67,9 +62,7 @@ final class LimitToTablesRestrictionContainerTest extends AbstractRestrictionTes self::assertSame('"bt"."hidden" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function removeByTypeRemovesRestrictionsByTypeAlsoFromAnyRestrictionContainer(): void { $GLOBALS['TCA']['bTable']['ctrl']['enablecolumns']['disabled'] = 'hidden'; diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PageIdListRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PageIdListRestrictionTest.php index 3e2962022939..81dccdaf4bde 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PageIdListRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PageIdListRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\PageIdListRestriction; final class PageIdListRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsAddsPidWhereClause(): void { $subject = new PageIdListRestriction([], [0]); @@ -31,9 +30,7 @@ final class PageIdListRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTable"."pid" IN (0)', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsAliasedPidWhereClause(): void { $subject = new PageIdListRestriction([], [13, 14]); @@ -41,9 +38,7 @@ final class PageIdListRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTableAlias"."pid" IN (13, 14)', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsPidWhereClauseIfTableIsSpecified(): void { $subject = new PageIdListRestriction(['aTable'], [13, 14]); @@ -51,9 +46,7 @@ final class PageIdListRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTable"."pid" IN (13, 14)', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsAliasedPidWhereClauseIfAliasIsSpecified(): void { $subject = new PageIdListRestriction(['aTableAlias'], [13, 14]); @@ -61,9 +54,7 @@ final class PageIdListRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTableAlias"."pid" IN (13, 14)', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsConvertsToIntegers(): void { $subject = new PageIdListRestriction(['aTableAlias'], ['13', '14']); @@ -71,9 +62,7 @@ final class PageIdListRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTableAlias"."pid" IN (13, 14)', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsSkipsUnrestrictedTablesIfOtherTableIsSpecifiedThanUsedInTheQuery(): void { $subject = new PageIdListRestriction(['aTable'], [13, 14]); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PagePermissionRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PagePermissionRestrictionTest.php index dec15deb31c3..7da4877082b8 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PagePermissionRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/PagePermissionRestrictionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\UserAspect; use TYPO3\CMS\Core\Database\Query\Restriction\PagePermissionRestriction; use TYPO3\CMS\Core\Type\Bitmask\Permission; @@ -62,9 +63,7 @@ final class PagePermissionRestrictionTest extends AbstractRestrictionTestCase }; } - /** - * @test - */ + #[Test] public function buildRestrictionsOnlyWorksOnPagesTable(): void { $aspect = $this->getPreparedUserAspect(true, false, 2, [13]); @@ -75,9 +74,7 @@ final class PagePermissionRestrictionTest extends AbstractRestrictionTestCase self::assertEmpty((string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsReturnsAZeroReturnSetWhenNotLoggedIn(): void { $aspect = $this->getPreparedUserAspect(false, false, 2, [13]); @@ -86,9 +83,7 @@ final class PagePermissionRestrictionTest extends AbstractRestrictionTestCase self::assertSame('1 = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsIsSkippedForAdmins(): void { $aspect = $this->getPreparedUserAspect(true, true, 2, [13]); @@ -97,9 +92,7 @@ final class PagePermissionRestrictionTest extends AbstractRestrictionTestCase self::assertEmpty((string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsContainsNonAdminUserIdAsOwnerAndGroupIdsAsOwnerGroup(): void { $aspect = $this->getPreparedUserAspect(true, false, 2, [13, 14, 15, 16]); @@ -108,9 +101,7 @@ final class PagePermissionRestrictionTest extends AbstractRestrictionTestCase self::assertEquals('(("pages"."perms_everybody" & 1 = 1) OR ((("pages"."perms_userid" = 2) AND ("pages"."perms_user" & 1 = 1))) OR ((("pages"."perms_groupid" IN (13, 14, 15, 16)) AND ("pages"."perms_group" & 1 = 1))))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsChecksForDeletionPermission(): void { $aspect = $this->getPreparedUserAspect(true, false, 42, [13, 14, 15, 16]); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/RootLevelRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/RootLevelRestrictionTest.php index 65259467549e..20e5654047d6 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/RootLevelRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/RootLevelRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\RootLevelRestriction; final class RootLevelRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsAddsPidWhereClause(): void { $subject = new RootLevelRestriction(); @@ -31,9 +30,7 @@ final class RootLevelRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTable"."pid" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsAliasedPidWhereClause(): void { $subject = new RootLevelRestriction(); @@ -41,9 +38,7 @@ final class RootLevelRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTableAlias"."pid" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsPidWhereClauseIfTableIsSpecified(): void { $subject = new RootLevelRestriction(['aTable']); @@ -51,9 +46,7 @@ final class RootLevelRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTable"."pid" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsAliasedPidWhereClauseIfAliasIsSpecified(): void { $subject = new RootLevelRestriction(['aTableAlias']); @@ -61,9 +54,7 @@ final class RootLevelRestrictionTest extends AbstractRestrictionTestCase self::assertSame('"aTableAlias"."pid" = 0', (string)$expression); } - /** - * @test - */ + #[Test] public function buildRestrictionsSkipsUnrestrictedTablesIfOtherTableIsSpecifiedThanUsedInTheQuery(): void { $subject = new RootLevelRestriction(['aTable']); diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/StartTimeRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/StartTimeRestrictionTest.php index 97e1b55d0807..ba691e934fc2 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/StartTimeRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/StartTimeRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\StartTimeRestriction; final class StartTimeRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildRestrictionsThrowsExceptionInStartTimeIfGlobalsAccessTimeIsMissing(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -40,9 +39,7 @@ final class StartTimeRestrictionTest extends AbstractRestrictionTestCase $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder); } - /** - * @test - */ + #[Test] public function buildRestrictionsAddsStartTimeWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/WorkspaceRestrictionTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/WorkspaceRestrictionTest.php index 75790da9f183..c0f65c667b79 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/WorkspaceRestrictionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Restriction/WorkspaceRestrictionTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction; final class WorkspaceRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildExpressionAddsLiveWorkspaceWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -34,9 +33,7 @@ final class WorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."t3ver_wsid" = 0) AND ((("aTable"."t3ver_oid" = 0) OR ("aTable"."t3ver_state" = 4))))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsNonLiveWorkspaceWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -47,9 +44,7 @@ final class WorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."t3ver_wsid" IN (0, 42)) AND ((("aTable"."t3ver_oid" = 0) OR ("aTable"."t3ver_state" = 4))))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsLiveWorkspaceLimitedWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -60,9 +55,7 @@ final class WorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsNonLiveWorkspaceLimitedWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -73,9 +66,7 @@ final class WorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionQueriesAllVersionedRecordsWithinAWorkspaceAsWell(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -85,9 +76,7 @@ final class WorkspaceRestrictionTest extends AbstractRestrictionTestCase $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder); self::assertSame('(("aTable"."t3ver_wsid" IN (0, 42)) AND ("t3ver_state" <> 2))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionQueriesAllVersionedRecordsWithinLiveStillRemovesDeletedState(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/RelationHandlerTest.php b/typo3/sysext/core/Tests/Unit/Database/RelationHandlerTest.php index 140883dcd241..a6751368ace4 100644 --- a/typo3/sysext/core/Tests/Unit/Database/RelationHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/RelationHandlerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\RelationHandler; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,9 +34,7 @@ final class RelationHandlerTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function purgeItemArrayReturnsFalseIfVersioningForTableIsDisabled(): void { $GLOBALS['TCA']['sys_category']['ctrl']['versioningWS'] = false; @@ -47,9 +46,7 @@ final class RelationHandlerTest extends UnitTestCase self::assertFalse($this->subject->purgeItemArray(0)); } - /** - * @test - */ + #[Test] public function purgeItemArrayReturnsTrueIfItemsHaveBeenPurged(): void { $GLOBALS['TCA']['sys_category']['ctrl']['versioningWS'] = true; diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/ConnectionMigratorTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/ConnectionMigratorTest.php index 70a210b1c369..74af9351159f 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/ConnectionMigratorTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/ConnectionMigratorTest.php @@ -23,6 +23,7 @@ use Doctrine\DBAL\Schema\SchemaDiff; use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Schema\TableDiff; use Doctrine\DBAL\Types\Type; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Platform\PlatformInformation; @@ -54,9 +55,7 @@ final class ConnectionMigratorTest extends UnitTestCase $this->subject->_set('connection', $connectionMock); } - /** - * @test - */ + #[Test] public function tableNamesStickToTheMaximumCharactersWhenPrefixedForRemoval(): void { $originalSchemaDiff = new SchemaDiff([], [], [$this->getTable()]); @@ -69,9 +68,7 @@ final class ConnectionMigratorTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function columnNamesStickToTheMaximumCharactersWhenPrefixedForRemoval(): void { $table = $this->getTable(); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php index 6f413acde3f3..86c85ccb166e 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/DefaultTcaSchemaTest.php @@ -24,6 +24,7 @@ use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Types\IntegerType; use Doctrine\DBAL\Types\StringType; use Doctrine\DBAL\Types\Type; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -39,18 +40,14 @@ final class DefaultTcaSchemaTest extends UnitTestCase $this->defaultTable = new Table('aTable'); } - /** - * @test - */ + #[Test] public function enrichKeepsGivenTablesArrayWithEmptyTca(): void { $GLOBALS['TCA'] = []; self::assertEquals([$this->defaultTable], $this->subject->enrich([$this->defaultTable])); } - /** - * @test - */ + #[Test] public function enrichDoesNotAddColumnIfExists(): void { $GLOBALS['TCA']['aTable']['ctrl'] = []; @@ -70,9 +67,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expected, $this->subject->enrich($input)); } - /** - * @test - */ + #[Test] public function enrichDoesNotAddColumnIfTableExistsMultipleTimesAndUidExists(): void { $GLOBALS['TCA']['aTable']['ctrl'] = []; @@ -98,9 +93,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expected, $this->subject->enrich($input)); } - /** - * @test - */ + #[Test] public function enrichAddsFieldToFirstTableDefinitionOfThatName(): void { $GLOBALS['TCA']['aTable']['ctrl'] = []; @@ -118,9 +111,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertInstanceOf(Column::class, $result[0]->getColumn('uid')); } - /** - * @test - */ + #[Test] public function enrichAddsUidAndPrimaryKey(): void { $GLOBALS['TCA']['aTable']['ctrl'] = []; @@ -139,9 +130,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedPrimaryKey, $result[0]->getPrimaryKey()); } - /** - * @test - */ + #[Test] public function enrichAddsPid(): void { $GLOBALS['TCA']['aTable']['ctrl'] = []; @@ -158,9 +147,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedPidColumn, $result[0]->getColumn('pid')); } - /** - * @test - */ + #[Test] public function enrichAddsTstamp(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -179,9 +166,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('updatedon')); } - /** - * @test - */ + #[Test] public function enrichAddsCrdate(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -200,9 +185,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('createdon')); } - /** - * @test - */ + #[Test] public function enrichAddsDeleted(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -221,9 +204,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('deleted')); } - /** - * @test - */ + #[Test] public function enrichAddsDisabled(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -244,9 +225,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('disabled')); } - /** - * @test - */ + #[Test] public function enrichAddsStarttime(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -267,9 +246,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('starttime')); } - /** - * @test - */ + #[Test] public function enrichAddsEndtime(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -290,9 +267,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('endtime')); } - /** - * @test - */ + #[Test] public function enrichAddsFegroup(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -313,9 +288,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('fe_group')); } - /** - * @test - */ + #[Test] public function enrichAddsSorting(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -334,9 +307,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('sorting')); } - /** - * @test - */ + #[Test] public function enrichAddsParentKey(): void { $GLOBALS['TCA']['aTable']['ctrl'] = []; @@ -345,9 +316,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedIndex, $result[0]->getIndex('parent')); } - /** - * @test - */ + #[Test] public function enrichAddsParentKeyWithDelete(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -358,9 +327,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedIndex, $result[0]->getIndex('parent')); } - /** - * @test - */ + #[Test] public function enrichAddsParentKeyWithDisabled(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -373,9 +340,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedIndex, $result[0]->getIndex('parent')); } - /** - * @test - */ + #[Test] public function enrichAddsParentKeyInCorrectOrder(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -389,9 +354,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedIndex, $result[0]->getIndex('parent')); } - /** - * @test - */ + #[Test] public function enrichAddsSysLanguageUid(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -410,9 +373,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('sys_language_uid')); } - /** - * @test - */ + #[Test] public function enrichAddsL10nParent(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -432,9 +393,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('l10n_parent')); } - /** - * @test - */ + #[Test] public function enrichDoesNotAddL10nParentIfLanguageFieldIsNotDefined(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -445,9 +404,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase $result[0]->getColumn('l10n_parent'); } - /** - * @test - */ + #[Test] public function enrichAddsDescription(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -465,9 +422,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('rowDescription')); } - /** - * @test - */ + #[Test] public function enrichAddsEditlock(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -486,9 +441,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('editlock')); } - /** - * @test - */ + #[Test] public function enrichAddsL10nSource(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -508,9 +461,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('l10n_source')); } - /** - * @test - */ + #[Test] public function enrichDoesNotAddL10nSourceIfLanguageFieldIsNotDefined(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -521,9 +472,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase $result[0]->getColumn('l10n_source'); } - /** - * @test - */ + #[Test] public function enrichAddsL10nState(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -542,9 +491,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('l10n_state')); } - /** - * @test - */ + #[Test] public function enrichDoesNotAddL10nStateIfLanguageFieldIsNotDefined(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -555,9 +502,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase $result[0]->getColumn('l10n_state'); } - /** - * @test - */ + #[Test] public function enrichDoesNotAddL10nStateIfTransOrigPointerFieldIsNotDefined(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -568,9 +513,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase $result[0]->getColumn('l10n_state'); } - /** - * @test - */ + #[Test] public function enrichAddsT3origUid(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -589,9 +532,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('t3_origuid')); } - /** - * @test - */ + #[Test] public function enrichAddsL10nDiffsource(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -609,9 +550,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('l18n_diffsource')); } - /** - * @test - */ + #[Test] public function enrichAddsT3verOid(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -630,9 +569,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_oid')); } - /** - * @test - */ + #[Test] public function enrichAddsT3verWsid(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -651,9 +588,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_wsid')); } - /** - * @test - */ + #[Test] public function enrichAddsT3verState(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -672,9 +607,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_state')); } - /** - * @test - */ + #[Test] public function enrichAddsT3verStage(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -693,9 +626,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_stage')); } - /** - * @test - */ + #[Test] public function enrichAddsT3verOidIndex(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -706,9 +637,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedIndex, $result[0]->getIndex('t3ver_oid')); } - /** - * @test - */ + #[Test] public function enrichAddsSimpleMmForSelect(): void { $GLOBALS['TCA']['aTable']['columns']['aField']['config'] = [ @@ -772,9 +701,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedMmTable, $result[1]); } - /** - * @test - */ + #[Test] public function enrichAddsMmWithTcaHasUid(): void { $GLOBALS['TCA']['aTable']['columns']['aField']['config'] = [ @@ -848,9 +775,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedMmTable, $result[1]); } - /** - * @test - */ + #[Test] public function enrichAddsMmWithTablenamesAndFieldname(): void { $GLOBALS['TCA']['aTable']['columns']['aField']['config'] = [ @@ -935,9 +860,7 @@ final class DefaultTcaSchemaTest extends UnitTestCase self::assertEquals($expectedMmTable, $result[1]); } - /** - * @test - */ + #[Test] public function enrichAddsSlug(): void { $GLOBALS['TCA']['aTable']['columns']['slug'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/EventListener/SchemaColumnDefinitionListenerTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/EventListener/SchemaColumnDefinitionListenerTest.php index 0a2891476eb9..67d3f2342a45 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/EventListener/SchemaColumnDefinitionListenerTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/EventListener/SchemaColumnDefinitionListenerTest.php @@ -21,6 +21,7 @@ use Doctrine\DBAL\Event\SchemaColumnDefinitionEventArgs; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Schema\Column; use Doctrine\DBAL\Types\Type; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Schema\EventListener\SchemaColumnDefinitionListener; @@ -41,9 +42,7 @@ final class SchemaColumnDefinitionListenerTest extends UnitTestCase $this->connectionMock = $this->createMock(Connection::class); } - /** - * @test - */ + #[Test] public function isInactiveForStandardColumnTypes(): void { $event = new SchemaColumnDefinitionEventArgs( @@ -58,9 +57,7 @@ final class SchemaColumnDefinitionListenerTest extends UnitTestCase self::assertNull($event->getColumn()); } - /** - * @test - */ + #[Test] public function buildsColumnForEnumDataType(): void { if (Type::hasType('enum')) { @@ -86,9 +83,7 @@ final class SchemaColumnDefinitionListenerTest extends UnitTestCase self::assertSame(['value1', 'value2', 'value3'], $event->getColumn()->getPlatformOption('unquotedValues')); } - /** - * @test - */ + #[Test] public function buildsColumnForSetDataType(): void { if (Type::hasType('set')) { diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionAttributesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionAttributesTest.php index bae59261946d..fbe9b94c98e0 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionAttributesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionAttributesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateColumnDefinitionItem; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; @@ -334,10 +336,10 @@ final class ColumnDefinitionAttributesTest extends UnitTestCase } /** - * @test - * @dataProvider canParseColumnDefinitionAttributesDataProvider * @param mixed $defaultValue */ + #[DataProvider('canParseColumnDefinitionAttributesDataProvider')] + #[Test] public function canParseColumnDefinitionAttributes( string $columnAttribute, bool $allowNull, diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionItemTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionItemTest.php index e34ee142a487..2a708465a195 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionItemTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ColumnDefinitionItemTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateColumnDefinitionItem; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ColumnDefinitionItemTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function canParseUnquotedMysqlKeywordAsTableName(): void { $subject = $this->createSubject('CREATE TABLE `aTable`(checksum VARCHAR(64));'); @@ -42,9 +41,8 @@ final class ColumnDefinitionItemTest extends UnitTestCase * The old regular expression based create table parser processed invalid dump files * where the last column/index definition included a comma before the closing parenthesis. * Emulate this behaviour to avoid breaking lots of (partial) dump files. - * - * @test */ + #[Test] public function canParseCreateDefinitionWithTrailingComma(): void { $subject = $this->createSubject('CREATE TABLE `aTable`(aField VARCHAR(64), );'); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/CreateTableFragmentTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/CreateTableFragmentTest.php index 01a886c2ae93..e7af6294aedc 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/CreateTableFragmentTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/CreateTableFragmentTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\AbstractCreateStatement; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; @@ -79,10 +81,8 @@ final class CreateTableFragmentTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canParseCreateTableFragmentDataProvider - */ + #[DataProvider('canParseCreateTableFragmentDataProvider')] + #[Test] public function canParseCreateTableFragment(string $statement, string $tableName, bool $isTemporary): void { $subject = $this->createSubject($statement); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/CharacterTypeAttributesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/CharacterTypeAttributesTest.php index 7c63b22325f3..27c0acc65b26 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/CharacterTypeAttributesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/CharacterTypeAttributesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypeAttributes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; /** @@ -54,10 +56,8 @@ final class CharacterTypeAttributesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseCharacterDataTypeAttributesProvider - */ + #[DataProvider('canParseCharacterDataTypeAttributesProvider')] + #[Test] public function canParseDataType(string $columnDefinition, array $options): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/EnumerationTypeAttributesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/EnumerationTypeAttributesTest.php index 04695abcd9c7..f8f4c42e2243 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/EnumerationTypeAttributesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/EnumerationTypeAttributesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypeAttributes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; /** @@ -46,10 +48,8 @@ final class EnumerationTypeAttributesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseEnumerationDataTypeAttributesProvider - */ + #[DataProvider('canParseEnumerationDataTypeAttributesProvider')] + #[Test] public function canParseDataType(string $columnDefinition, array $options): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/NumericTypeAttributesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/NumericTypeAttributesTest.php index 9253d8da5f0c..396aa0190e05 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/NumericTypeAttributesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypeAttributes/NumericTypeAttributesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypeAttributes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; /** @@ -46,10 +48,8 @@ final class NumericTypeAttributesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseNumericDataTypeAttributesProvider - */ + #[DataProvider('canParseNumericDataTypeAttributesProvider')] + #[Test] public function canParseDataType(string $columnDefinition, array $options): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BinaryDataTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BinaryDataTypeTest.php index 16bec2b98085..41829dab3bca 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BinaryDataTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BinaryDataTypeTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Exception\StatementException; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\BinaryDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\VarBinaryDataType; @@ -52,10 +54,8 @@ final class BinaryDataTypeTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseBinaryDataTypeProvider - */ + #[DataProvider('canParseBinaryDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, int $length): void { $subject = $this->createSubject($columnDefinition); @@ -64,9 +64,7 @@ final class BinaryDataTypeTest extends AbstractDataTypeBaseTestCase self::assertSame($length, $subject->dataType->getLength()); } - /** - * @test - */ + #[Test] public function lengthIsRequiredForVarBinaryType(): void { $this->expectException(StatementException::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BitDataTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BitDataTypeTest.php index 5715ea5e1265..504fbd932034 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BitDataTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BitDataTypeTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\BitDataType; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; @@ -44,10 +46,8 @@ final class BitDataTypeTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseBitDataTypeProvider - */ + #[DataProvider('canParseBitDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, int $length): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BlobTypesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BlobTypesTest.php index 2613211ce68e..9c850d8d8ab0 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BlobTypesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/BlobTypesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\BlobDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\LongBlobDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\MediumBlobDataType; @@ -53,10 +55,8 @@ final class BlobTypesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseBlobDataTypeProvider - */ + #[DataProvider('canParseBlobDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/CharDataTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/CharDataTypeTest.php index ad0e93f86839..6e20987e69d3 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/CharDataTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/CharDataTypeTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Exception\StatementException; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\CharDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\VarCharDataType; @@ -52,10 +54,8 @@ final class CharDataTypeTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseBinaryDataTypeProvider - */ + #[DataProvider('canParseBinaryDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, int $length): void { $subject = $this->createSubject($columnDefinition); @@ -64,9 +64,7 @@ final class CharDataTypeTest extends AbstractDataTypeBaseTestCase self::assertSame($length, $subject->dataType->getLength()); } - /** - * @test - */ + #[Test] public function lengthIsRequiredForVarCharType(): void { $this->expectException(StatementException::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/DateTimeTypesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/DateTimeTypesTest.php index 8e8727be37c1..df23138cccf9 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/DateTimeTypesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/DateTimeTypesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Exception\StatementException; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\DateDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\DateTimeDataType; @@ -79,10 +81,8 @@ final class DateTimeTypesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseDateTimeTypeProvider - */ + #[DataProvider('canParseDateTimeTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, int $length = null): void { $subject = $this->createSubject($columnDefinition); @@ -95,9 +95,7 @@ final class DateTimeTypesTest extends AbstractDataTypeBaseTestCase } } - /** - * @test - */ + #[Test] public function parseDateTimeTypeWithInvalidLowerBound(): void { $this->expectException(StatementException::class); @@ -107,9 +105,7 @@ final class DateTimeTypesTest extends AbstractDataTypeBaseTestCase $this->createSubject('TIME(-1)'); } - /** - * @test - */ + #[Test] public function parseDateTimeTypeWithInvalidUpperBound(): void { $this->expectException(StatementException::class); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/EnumDataTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/EnumDataTypeTest.php index 7aa41fd395eb..2705689e3101 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/EnumDataTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/EnumDataTypeTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\EnumDataType; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; @@ -49,10 +51,8 @@ final class EnumDataTypeTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseEnumDataTypeProvider - */ + #[DataProvider('canParseEnumDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, array $values): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FixedPointTypesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FixedPointTypesTest.php index 7a76ec1b147e..6e23a3ae1fed 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FixedPointTypesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FixedPointTypesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\DecimalDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\NumericDataType; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; @@ -71,10 +73,8 @@ final class FixedPointTypesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseFixedPointTypesProvider - */ + #[DataProvider('canParseFixedPointTypesProvider')] + #[Test] public function canParseDataType( string $columnDefinition, string $className, diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FloatingPointTypesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FloatingPointTypesTest.php index 4b12ccaf1498..5507bec5ba10 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FloatingPointTypesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/FloatingPointTypesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\DoubleDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\FloatDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\RealDataType; @@ -90,10 +92,8 @@ final class FloatingPointTypesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseFloatingPointTypesProvider - */ + #[DataProvider('canParseFloatingPointTypesProvider')] + #[Test] public function canParseDataType( string $columnDefinition, string $className, diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/IntegerTypesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/IntegerTypesTest.php index 0acfc5370d49..582bf98f76eb 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/IntegerTypesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/IntegerTypesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\BigIntDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\IntegerDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\MediumIntDataType; @@ -102,10 +104,8 @@ final class IntegerTypesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseIntegerDataTypeProvider - */ + #[DataProvider('canParseIntegerDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, int $length): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/JsonDataTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/JsonDataTypeTest.php index 2d6a473683a7..37db67b186e7 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/JsonDataTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/JsonDataTypeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\JsonDataType; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; @@ -25,9 +26,7 @@ use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCas */ final class JsonDataTypeTest extends AbstractDataTypeBaseTestCase { - /** - * @test - */ + #[Test] public function canParseBitDataType(): void { $subject = $this->createSubject('JSON'); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/SetDataTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/SetDataTypeTest.php index eee09bc09b7d..5f7378713c69 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/SetDataTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/SetDataTypeTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\SetDataType; use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase; @@ -49,10 +51,8 @@ final class SetDataTypeTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseSetDataTypeProvider - */ + #[DataProvider('canParseSetDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className, array $values): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/TextTypesTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/TextTypesTest.php index 99ef918dd4fd..1a2a73b2a258 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/TextTypesTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/DataTypes/TextTypesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypes; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\LongTextDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\MediumTextDataType; use TYPO3\CMS\Core\Database\Schema\Parser\AST\DataType\TextDataType; @@ -53,10 +55,8 @@ final class TextTypesTest extends AbstractDataTypeBaseTestCase ]; } - /** - * @test - * @dataProvider canParseTextDataTypeProvider - */ + #[DataProvider('canParseTextDataTypeProvider')] + #[Test] public function canParseDataType(string $columnDefinition, string $className): void { $subject = $this->createSubject($columnDefinition); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ForeignKeyDefinitionTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ForeignKeyDefinitionTest.php index 68a54cfa4967..deb75e3cbfff 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ForeignKeyDefinitionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ForeignKeyDefinitionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateForeignKeyDefinitionItem; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; @@ -63,10 +65,8 @@ final class ForeignKeyDefinitionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canParseForeignKeyDefinitionDataProvider - */ + #[DataProvider('canParseForeignKeyDefinitionDataProvider')] + #[Test] public function canParseForeignKeyDefinition( string $indexDefinition, string $indexName, diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/IndexDefinitionTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/IndexDefinitionTest.php index 07a985ecd372..e9f2923d9c89 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/IndexDefinitionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/IndexDefinitionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateIndexDefinitionItem; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\AST\Identifier; @@ -515,10 +517,8 @@ final class IndexDefinitionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canParseIndexDefinitionDataProvider - */ + #[DataProvider('canParseIndexDefinitionDataProvider')] + #[Test] public function canParseIndexDefinition( string $indexDefinition, string $indexName, diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ReferenceDefinitionTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ReferenceDefinitionTest.php index d9bf92db056c..88aa24a36ad9 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ReferenceDefinitionTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/ReferenceDefinitionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\AST\ReferenceDefinition; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; @@ -170,10 +172,8 @@ final class ReferenceDefinitionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canParseReferenceDefinitionDataProvider - */ + #[DataProvider('canParseReferenceDefinitionDataProvider')] + #[Test] public function canParseReferenceDefinition( string $columnAttribute, string $table, diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableBuilderTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableBuilderTest.php index c62634716edc..052093deb6a7 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableBuilderTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableBuilderTest.php @@ -23,6 +23,7 @@ use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Types\IntegerType; use Doctrine\DBAL\Types\SmallIntType; use Doctrine\DBAL\Types\TextType; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; use TYPO3\CMS\Core\Database\Schema\SqlReader; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; @@ -46,62 +47,48 @@ final class TableBuilderTest extends UnitTestCase $this->table = $parser->parse()[0]; } - /** - * @test - */ + #[Test] public function hasExpectedTableName(): void { self::assertSame('aTestTable', $this->table->getName()); } - /** - * @test - */ + #[Test] public function hasExpectedTableEngine(): void { self::assertTrue($this->table->hasOption('engine')); self::assertSame('MyISAM', $this->table->getOption('engine')); } - /** - * @test - */ + #[Test] public function hasExpectedTableCollation(): void { self::assertTrue($this->table->hasOption('charset')); self::assertSame('latin1', $this->table->getOption('charset')); } - /** - * @test - */ + #[Test] public function hasExpectedTableCharacterSet(): void { self::assertTrue($this->table->hasOption('collate')); self::assertSame('latin1_german_cs', $this->table->getOption('collate')); } - /** - * @test - */ + #[Test] public function hasExpectedTableRowFormat(): void { self::assertTrue($this->table->hasOption('row_format')); self::assertSame('DYNAMIC', $this->table->getOption('row_format')); } - /** - * @test - */ + #[Test] public function hasExpectedTableAutoIncrementValue(): void { self::assertTrue($this->table->hasOption('auto_increment')); self::assertSame('1', $this->table->getOption('auto_increment')); } - /** - * @test - */ + #[Test] public function isExpectedUidColumn(): void { $subject = $this->table->getColumn('uid'); @@ -113,9 +100,7 @@ final class TableBuilderTest extends UnitTestCase self::assertTrue($subject->getAutoincrement()); } - /** - * @test - */ + #[Test] public function isExpectedPidColumn(): void { $subject = $this->table->getColumn('pid'); @@ -127,9 +112,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame('0', $subject->getDefault()); } - /** - * @test - */ + #[Test] public function isExpectedTstampColumn(): void { $subject = $this->table->getColumn('tstamp'); @@ -141,9 +124,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame('0', $subject->getDefault()); } - /** - * @test - */ + #[Test] public function isExpectedSortingColumn(): void { $subject = $this->table->getColumn('sorting'); @@ -155,9 +136,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame(0, $subject->getDefault()); } - /** - * @test - */ + #[Test] public function isExpectedDeletedColumn(): void { $subject = $this->table->getColumn('deleted'); @@ -169,9 +148,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame('0', $subject->getDefault()); } - /** - * @test - */ + #[Test] public function isExpectedTSconfigColumn(): void { $subject = $this->table->getColumn('TSconfig'); @@ -181,9 +158,7 @@ final class TableBuilderTest extends UnitTestCase self::assertNull($subject->getDefault()); } - /** - * @test - */ + #[Test] public function isExpectedNoCacheColumn(): void { $subject = $this->table->getColumn('no_cache'); @@ -195,9 +170,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame('0', $subject->getDefault()); } - /** - * @test - */ + #[Test] public function isExpectedPrimaryKey(): void { $subject = $this->table->getPrimaryKey(); @@ -206,9 +179,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame(['`uid`'], $subject->getColumns()); } - /** - * @test - */ + #[Test] public function isExpectedParentKey(): void { $subject = $this->table->getIndex('parent'); @@ -217,9 +188,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame(['`pid`', '`deleted`', '`sorting`'], $subject->getColumns()); } - /** - * @test - */ + #[Test] public function isExpectedNoCacheKey(): void { $subject = $this->table->getIndex('noCache'); @@ -228,9 +197,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame(['`no_cache`'], $subject->getColumns()); } - /** - * @test - */ + #[Test] public function isExpectedForeignKey(): void { $subject = $this->table->getForeignKey('fk_overlay'); @@ -241,9 +208,7 @@ final class TableBuilderTest extends UnitTestCase self::assertSame('any_foreign_table', $subject->getForeignTableName()); } - /** - * @test - */ + #[Test] public function hasColumnLengthOnIndex(): void { $subject = $this->table->getIndex('substring'); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableOptionsTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableOptionsTest.php index 670877a75262..b1eee0d1f5dd 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableOptionsTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Parser/TableOptionsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Parser\AST\AbstractCreateStatement; use TYPO3\CMS\Core\Database\Schema\Parser\AST\CreateTableStatement; use TYPO3\CMS\Core\Database\Schema\Parser\Parser; @@ -138,10 +140,8 @@ final class TableOptionsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canParseTableOptionsDataProvider - */ + #[DataProvider('canParseTableOptionsDataProvider')] + #[Test] public function canParseTableOptions( string $tableOptionsSQL, array $expectedTableOptions diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php index 23426d7dbecd..bd1e108629fa 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\SqlReader; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\Package\PackageManager; @@ -26,9 +28,7 @@ final class SqlReaderTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function getStatementArraySplitsStatements(): void { $subject = new SqlReader(new NoopEventDispatcher(), $this->createMock(PackageManager::class)); @@ -42,9 +42,7 @@ final class SqlReaderTest extends UnitTestCase self::assertStringStartsWith('INSERT INTO', $result[1]); } - /** - * @test - */ + #[Test] public function getStatementArrayFiltersStatements(): void { $subject = new SqlReader(new NoopEventDispatcher(), $this->createMock(PackageManager::class)); @@ -58,9 +56,7 @@ final class SqlReaderTest extends UnitTestCase self::assertStringStartsWith('CREATE TABLE', array_pop($result)); } - /** - * @test - */ + #[Test] public function getInsertStatementArrayResult(): void { $subject = new SqlReader(new NoopEventDispatcher(), $this->createMock(PackageManager::class)); @@ -74,9 +70,7 @@ final class SqlReaderTest extends UnitTestCase self::assertStringStartsWith('INSERT', array_pop($result)); } - /** - * @test - */ + #[Test] public function getInsertStatementArrayResultWithNewline(): void { $subject = new SqlReader(new NoopEventDispatcher(), $this->createMock(PackageManager::class)); @@ -92,9 +86,7 @@ final class SqlReaderTest extends UnitTestCase self::assertSame('INSERT INTO aTestTable(`aTestField`) VALUES(1);', array_pop($result)); } - /** - * @test - */ + #[Test] public function getCreateTableStatementArrayResult(): void { $subject = new SqlReader(new NoopEventDispatcher(), $this->createMock(PackageManager::class)); @@ -107,10 +99,8 @@ final class SqlReaderTest extends UnitTestCase self::assertStringStartsWith('CREATE TABLE', array_pop($result)); } - /** - * @dataProvider commentProvider - * @test - */ + #[DataProvider('commentProvider')] + #[Test] public function getCreateTableStatementArrayResultWithComment(string $comment): void { $subject = new SqlReader(new NoopEventDispatcher(), $this->createMock(PackageManager::class)); diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Types/EnumTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Types/EnumTypeTest.php index 30f16e23317e..bde4ab2c91d3 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Types/EnumTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Types/EnumTypeTest.php @@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Types; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\Type; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Types\EnumType; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -32,18 +33,14 @@ final class EnumTypeTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function getNameReturnsTypeIdentifier(): void { $subject = Type::getType(EnumType::TYPE); self::assertSame(EnumType::TYPE, $subject->getName()); } - /** - * @test - */ + #[Test] public function getSQLDeclaration(): void { $fieldDeclaration = [ diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/Types/SetTypeTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/Types/SetTypeTest.php index 6cc9cb66baf6..dc887a9f2b66 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/Types/SetTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/Types/SetTypeTest.php @@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Types; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\Type; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Schema\Types\SetType; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -32,18 +33,14 @@ final class SetTypeTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function getNameReturnsTypeIdentifier(): void { $subject = Type::getType(SetType::TYPE); self::assertSame(SetType::TYPE, $subject->getName()); } - /** - * @test - */ + #[Test] public function getSQLDeclaration(): void { $fieldDeclaration = [ diff --git a/typo3/sysext/core/Tests/Unit/DependencyInjection/ConsoleCommandPassTest.php b/typo3/sysext/core/Tests/Unit/DependencyInjection/ConsoleCommandPassTest.php index e9acce06c44e..50a7543bf77a 100644 --- a/typo3/sysext/core/Tests/Unit/DependencyInjection/ConsoleCommandPassTest.php +++ b/typo3/sysext/core/Tests/Unit/DependencyInjection/ConsoleCommandPassTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DependencyInjection; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use Symfony\Component\Console\Command\Command; use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend; @@ -55,9 +56,7 @@ final class ConsoleCommandPassTest extends UnitTestCase return (new ContainerBuilder([]))->createDependencyInjectionContainer($packageManagerMock, $cacheMock); } - /** - * @test - */ + #[Test] public function commandRegistrationViaTags(): void { $container = $this->buildContainer(__METHOD__, [ @@ -78,9 +77,7 @@ final class ConsoleCommandPassTest extends UnitTestCase self::assertInstanceOf(Command::class, $commandRegistry->getCommandByIdentifier('test:cmd')); } - /** - * @test - */ + #[Test] public function withoutConfiguration(): void { $container = $this->buildContainer(__METHOD__, [ diff --git a/typo3/sysext/core/Tests/Unit/DependencyInjection/FailsafeContainerTest.php b/typo3/sysext/core/Tests/Unit/DependencyInjection/FailsafeContainerTest.php index 027648d2b6f0..cbe4744611ed 100644 --- a/typo3/sysext/core/Tests/Unit/DependencyInjection/FailsafeContainerTest.php +++ b/typo3/sysext/core/Tests/Unit/DependencyInjection/FailsafeContainerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DependencyInjection; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; @@ -27,17 +29,13 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FailsafeContainerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsInterface(): void { self::assertInstanceOf(ContainerInterface::class, new Container()); } - /** - * @test - */ + #[Test] public function withString(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -53,10 +51,8 @@ final class FailsafeContainerTest extends UnitTestCase self::assertEquals('value', $container->get('param')); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function get(mixed $factory): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -70,10 +66,8 @@ final class FailsafeContainerTest extends UnitTestCase self::assertInstanceOf(Service::class, $container->get('service')); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function multipleGetServicesShouldBeEqual(mixed $factory): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -93,9 +87,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame($extensionOne, $extensionTwo); } - /** - * @test - */ + #[Test] public function passesContainerAsParameter(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -114,9 +106,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame($container, $container->get('container')); } - /** - * @test - */ + #[Test] public function nullValueEntry(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -132,9 +122,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertNull($container->get('null')); } - /** - * @test - */ + #[Test] public function nullValueEntryCallsFactoryOnlyOnce(): void { $calledCount = 0; @@ -156,9 +144,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertEquals(1, $calledCount); } - /** - * @test - */ + #[Test] public function has(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -193,9 +179,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertFalse($container->has('non_existent')); } - /** - * @test - */ + #[Test] public function defaultEntry(): void { $default = ['param' => 'value']; @@ -204,9 +188,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame('value', $container->get('param')); } - /** - * @test - */ + #[Test] public function getValidatesKeyIsPresent(): void { $container = new Container(); @@ -216,10 +198,8 @@ final class FailsafeContainerTest extends UnitTestCase $container->get('foo'); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function extension(mixed $factory): void { $providerMockA = $this->createMock(ServiceProviderInterface::class); @@ -243,10 +223,8 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame('value', $container->get('service')->value); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function extendingLaterProvider(mixed $factory): void { $providerMockA = $this->createMock(ServiceProviderInterface::class); @@ -266,10 +244,8 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame('value', $container->get('service')->value); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function extendingOwnFactory(mixed $factory): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -287,9 +263,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame('value', $container->get('service')->value); } - /** - * @test - */ + #[Test] public function extendingNonExistingFactory(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -308,10 +282,8 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame('value', $container->get('service')->value); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function multipleExtensions(mixed $factory): void { $providerMockA = $this->createMock(ServiceProviderInterface::class); @@ -340,10 +312,8 @@ final class FailsafeContainerTest extends UnitTestCase self::assertSame('12', $container->get('service')->value); } - /** - * @test - * @dataProvider objectFactories - */ + #[DataProvider('objectFactories')] + #[Test] public function entryOverriding(mixed $factory): void { $providerMockA = $this->createMock(ServiceProviderInterface::class); @@ -362,9 +332,7 @@ final class FailsafeContainerTest extends UnitTestCase self::assertEquals('value', $container->get('service')); } - /** - * @test - */ + #[Test] public function cyclicDependency(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -385,9 +353,7 @@ final class FailsafeContainerTest extends UnitTestCase $container->get('A'); } - /** - * @test - */ + #[Test] public function cyclicDependencyRetrievedTwice(): void { $providerMock = $this->createMock(ServiceProviderInterface::class); @@ -413,18 +379,14 @@ final class FailsafeContainerTest extends UnitTestCase $container->get('A'); } - /** - * @test - */ + #[Test] public function nullContainer(): void { $container = new Container(); self::assertFalse($container->has('foo')); } - /** - * @test - */ + #[Test] public function nullContainerWithDefaultEntries(): void { $container = new Container([], ['foo' => 'bar']); diff --git a/typo3/sysext/core/Tests/Unit/DependencyInjection/ListenerProviderPassTest.php b/typo3/sysext/core/Tests/Unit/DependencyInjection/ListenerProviderPassTest.php index 0465108eec32..2ef836695776 100644 --- a/typo3/sysext/core/Tests/Unit/DependencyInjection/ListenerProviderPassTest.php +++ b/typo3/sysext/core/Tests/Unit/DependencyInjection/ListenerProviderPassTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DependencyInjection; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -51,9 +52,7 @@ final class ListenerProviderPassTest extends UnitTestCase return $container; } - /** - * @test - */ + #[Test] public function simpleChainsAndDependencies(): void { $container = $this->getContainerWithListenerProvider([ @@ -88,9 +87,7 @@ final class ListenerProviderPassTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function cycleException(): void { $this->expectException(\UnexpectedValueException::class); @@ -102,9 +99,7 @@ final class ListenerProviderPassTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function withoutConfiguration(): void { $container = $this->getContainerWithListenerProvider([]); diff --git a/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderCompilationPassTest.php b/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderCompilationPassTest.php index 20200b1c599a..6aaa6119fc27 100644 --- a/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderCompilationPassTest.php +++ b/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderCompilationPassTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DependencyInjection; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -65,9 +66,7 @@ final class ServiceProviderCompilationPassTest extends UnitTestCase return $container; } - /** - * @test - */ + #[Test] public function simpleServiceProvider(): void { $container = $this->getContainer([ @@ -84,9 +83,7 @@ final class ServiceProviderCompilationPassTest extends UnitTestCase self::assertIsObject($container->get('function')); } - /** - * @test - */ + #[Test] public function serviceProviderOverrides(): void { $container = $this->getContainer([ @@ -106,9 +103,7 @@ final class ServiceProviderCompilationPassTest extends UnitTestCase self::assertEquals('baz', $serviceE->parameter); } - /** - * @test - */ + #[Test] public function serviceProviderFactoryOverrides(): void { $container = $this->getContainer([ @@ -122,9 +117,7 @@ final class ServiceProviderCompilationPassTest extends UnitTestCase self::assertEquals('remotehost', $serviceA->serviceB->parameter); } - /** - * @test - */ + #[Test] public function serviceProviderFactoryOverridesForSymfonyDefinedServices(): void { $container = $this->getContainer( @@ -149,9 +142,7 @@ final class ServiceProviderCompilationPassTest extends UnitTestCase self::assertEquals('foobar', $serviceA->serviceB->symfony_defined_parameter); } - /** - * @test - */ + #[Test] public function serviceProviderFactoryOverrideResetsAutowiring(): void { $container = $this->getContainer( @@ -178,9 +169,7 @@ final class ServiceProviderCompilationPassTest extends UnitTestCase self::assertFalse($container->getDefinition('serviceB')->isAutowired()); } - /** - * @test - */ + #[Test] public function exceptionForNonNullableExtensionArgument(): void { $this->expectException(\Exception::class); diff --git a/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderRegistryTest.php b/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderRegistryTest.php index 386c6fdd5b44..1b7ebaca272e 100644 --- a/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\DependencyInjection; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use TYPO3\CMS\Core\DependencyInjection\ServiceProviderRegistry; @@ -46,9 +47,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase $this->packageManagerMock->method('getActivePackages')->willReturn([$package]); } - /** - * @test - */ + #[Test] public function registry(): void { $this->mockPackage('core', TestRegistryServiceProvider::class); @@ -56,9 +55,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertEquals(new TestRegistryServiceProvider(), $subject->get('core')); } - /** - * @test - */ + #[Test] public function registryCaches(): void { $this->mockPackage('core', TestRegistryServiceProvider::class); @@ -67,9 +64,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertSame($subject->get('core'), $subject->get('core')); } - /** - * @test - */ + #[Test] public function registryPassesPackageAsConstructorArgument(): void { $this->mockPackage('core', TestStatefulServiceProvider::class); @@ -78,9 +73,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertInstanceOf(Package::class, $subject->get('core')->package); } - /** - * @test - */ + #[Test] public function getException(): void { $this->expectException(\InvalidArgumentException::class); @@ -88,9 +81,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase $subject->get('backend'); } - /** - * @test - */ + #[Test] public function getServices(): void { $this->mockPackage('core', TestRegistryServiceProvider::class); @@ -101,9 +92,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertSame($services['serviceA'], $services2['serviceA']); } - /** - * @test - */ + #[Test] public function extendServices(): void { $this->mockPackage('core', TestRegistryServiceProvider::class); @@ -114,9 +103,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertSame($services['serviceB'], $services2['serviceB']); } - /** - * @test - */ + #[Test] public function getServiceFactory(): void { $this->mockPackage('core', TestRegistryServiceProvider::class); @@ -126,9 +113,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertEquals(42, $subject); } - /** - * @test - */ + #[Test] public function getServiceExtension(): void { $this->mockPackage('core', TestRegistryServiceProvider::class); @@ -138,9 +123,7 @@ final class ServiceProviderRegistryTest extends UnitTestCase self::assertInstanceOf(\stdClass::class, $service); } - /** - * @test - */ + #[Test] public function iterator(): void { $packages = [ diff --git a/typo3/sysext/core/Tests/Unit/Error/DebugExceptionHandlerTest.php b/typo3/sysext/core/Tests/Unit/Error/DebugExceptionHandlerTest.php index 391b016d76b9..e86ce715edd8 100644 --- a/typo3/sysext/core/Tests/Unit/Error/DebugExceptionHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/Error/DebugExceptionHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Error; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Psr\Log\LoggerTrait; @@ -54,9 +56,7 @@ final class DebugExceptionHandlerTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function echoExceptionWebEscapesExceptionMessage(): void { $message = '<b>b</b><script>alert(1);</script>'; @@ -105,10 +105,8 @@ final class DebugExceptionHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider exampleUrlsForTokenAnonymization - */ + #[DataProvider('exampleUrlsForTokenAnonymization')] + #[Test] public function logEntriesContainAnonymousTokens(string $originalUrl, string $expectedUrl): void { $subject = new DebugExceptionHandler(); diff --git a/typo3/sysext/core/Tests/Unit/Error/ErrorHandlerTest.php b/typo3/sysext/core/Tests/Unit/Error/ErrorHandlerTest.php index d537921e0a11..1f0aff148fbc 100644 --- a/typo3/sysext/core/Tests/Unit/Error/ErrorHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/Error/ErrorHandlerTest.php @@ -70,10 +70,6 @@ final class ErrorHandlerTest extends UnitTestCase #[WithoutErrorHandler] #[Test] #[DataProvider('errorTests')] - /** - * @test - * @dataProvider errorTests - */ public function errorHandlerLogsCorrectly( int $levelsToHandle, int $levelsToThrow, diff --git a/typo3/sysext/core/Tests/Unit/Error/ProductionExceptionHandlerTest.php b/typo3/sysext/core/Tests/Unit/Error/ProductionExceptionHandlerTest.php index 6f058be113ae..03eff59b7813 100644 --- a/typo3/sysext/core/Tests/Unit/Error/ProductionExceptionHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/Error/ProductionExceptionHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Error; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Psr\Log\LoggerTrait; @@ -54,9 +56,7 @@ final class ProductionExceptionHandlerTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function echoExceptionWebEscapesExceptionMessage(): void { $typo3InformationMock = $this->createMock(Typo3Information::class); @@ -72,9 +72,7 @@ final class ProductionExceptionHandlerTest extends UnitTestCase self::assertStringNotContainsString($message, $output); } - /** - * @test - */ + #[Test] public function echoExceptionWebEscapesExceptionTitle(): void { $typo3InformationMock = $this->createMock(Typo3Information::class); @@ -129,10 +127,8 @@ final class ProductionExceptionHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider exampleUrlsForTokenAnonymization - */ + #[DataProvider('exampleUrlsForTokenAnonymization')] + #[Test] public function logEntriesContainAnonymousTokens(string $originalUrl, string $expectedUrl): void { $typo3InformationMock = $this->createMock(Typo3Information::class); diff --git a/typo3/sysext/core/Tests/Unit/EventDispatcher/EventDispatcherTest.php b/typo3/sysext/core/Tests/Unit/EventDispatcher/EventDispatcherTest.php index 1f6f767a0a6e..e542839d261d 100644 --- a/typo3/sysext/core/Tests/Unit/EventDispatcher/EventDispatcherTest.php +++ b/typo3/sysext/core/Tests/Unit/EventDispatcher/EventDispatcherTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\EventDispatcher; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use Psr\EventDispatcher\ListenerProviderInterface; @@ -38,18 +40,14 @@ final class EventDispatcherTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function implementsPsrInterface(): void { self::assertInstanceOf(EventDispatcherInterface::class, $this->eventDispatcher); } - /** - * @test - * @dataProvider callables - */ + #[DataProvider('callables')] + #[Test] public function dispatchesEvent(callable $callable): void { $event = new \stdClass(); @@ -64,10 +62,8 @@ final class EventDispatcherTest extends UnitTestCase self::assertEquals(1, $event->invoked); } - /** - * @test - * @dataProvider callables - */ + #[DataProvider('callables')] + #[Test] public function doesNotDispatchStoppedEvent(callable $callable): void { $event = new class () implements StoppableEventInterface { @@ -88,10 +84,8 @@ final class EventDispatcherTest extends UnitTestCase self::assertEquals(0, $event->invoked); } - /** - * @test - * @dataProvider callables - */ + #[DataProvider('callables')] + #[Test] public function dispatchesMultipleListeners(callable $callable): void { $event = new \stdClass(); @@ -107,10 +101,8 @@ final class EventDispatcherTest extends UnitTestCase self::assertEquals(2, $event->invoked); } - /** - * @test - * @dataProvider callables - */ + #[DataProvider('callables')] + #[Test] public function stopsOnStoppedEvent(callable $callable): void { $event = new class () implements StoppableEventInterface { @@ -137,9 +129,7 @@ final class EventDispatcherTest extends UnitTestCase self::assertEquals(2, $event->invoked); } - /** - * @test - */ + #[Test] public function listenerExceptionIsPropagated(): void { $this->expectException(\BadMethodCallException::class); diff --git a/typo3/sysext/core/Tests/Unit/EventDispatcher/ListenerProviderTest.php b/typo3/sysext/core/Tests/Unit/EventDispatcher/ListenerProviderTest.php index d6e94d5467db..06ca360fff62 100644 --- a/typo3/sysext/core/Tests/Unit/EventDispatcher/ListenerProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/EventDispatcher/ListenerProviderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\EventDispatcher; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use Psr\EventDispatcher\ListenerProviderInterface; @@ -37,17 +39,13 @@ final class ListenerProviderTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function implementsPsrInterface(): void { self::assertInstanceOf(ListenerProviderInterface::class, $this->listenerProvider); } - /** - * @test - */ + #[Test] public function addedListenersAreReturnedByGetAllListenerDefinitions(): void { $this->listenerProvider->addListener('Event\\Name', 'listener1'); @@ -61,9 +59,7 @@ final class ListenerProviderTest extends UnitTestCase ], $this->listenerProvider->getAllListenerDefinitions()); } - /** - * @test - */ + #[Test] public function addedListenerCorrectlySetsTheListenerIdentifier(): void { $this->listenerProvider->addListener(event: 'Event\\Name', service: 'service.name1'); @@ -77,10 +73,8 @@ final class ListenerProviderTest extends UnitTestCase ], $this->listenerProvider->getAllListenerDefinitions()); } - /** - * @test - * @dataProvider listeners - */ + #[DataProvider('listeners')] + #[Test] public function dispatchesEvent($listener, string $method = null): void { $event = new \stdClass(); @@ -96,10 +90,8 @@ final class ListenerProviderTest extends UnitTestCase self::assertEquals(1, $event->invoked); } - /** - * @test - * @dataProvider listeners - */ + #[DataProvider('listeners')] + #[Test] public function associatesToEventParentClass($listener, string $method = null): void { $extendedEvent = new class () extends \stdClass { @@ -115,10 +107,8 @@ final class ListenerProviderTest extends UnitTestCase self::assertEquals(1, $extendedEvent->invoked); } - /** - * @test - * @dataProvider listeners - */ + #[DataProvider('listeners')] + #[Test] public function associatesToImplementedInterfaces($listener, string $method = null): void { $eventImplementation = new class () implements \IteratorAggregate { @@ -139,9 +129,7 @@ final class ListenerProviderTest extends UnitTestCase self::assertEquals(1, $eventImplementation->invoked); } - /** - * @test - */ + #[Test] public function addListenerPreservesOrder(): void { $this->listenerProvider->addListener(\stdClass::class, 'listener1'); @@ -164,9 +152,7 @@ final class ListenerProviderTest extends UnitTestCase self::assertEquals('ab', $event->sequence); } - /** - * @test - */ + #[Test] public function throwsExceptionForInvalidCallable(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/EventDispatcher/NoopEventDispatcherTest.php b/typo3/sysext/core/Tests/Unit/EventDispatcher/NoopEventDispatcherTest.php index adbfd2505de9..b540a511142b 100644 --- a/typo3/sysext/core/Tests/Unit/EventDispatcher/NoopEventDispatcherTest.php +++ b/typo3/sysext/core/Tests/Unit/EventDispatcher/NoopEventDispatcherTest.php @@ -17,23 +17,20 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\EventDispatcher; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class NoopEventDispatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsEventDispatcherInterface(): void { self::assertInstanceOf(EventDispatcherInterface::class, new NoopEventDispatcher()); } - /** - * @test - */ + #[Test] public function dispatchReturnsProvidedEvent(): void { $event = new \stdClass(); diff --git a/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php b/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php index abe5c89123b3..72c1109ff019 100644 --- a/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php +++ b/typo3/sysext/core/Tests/Unit/ExpressionLanguage/ResolverTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\ExpressionLanguage; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\ExpressionLanguage\ExpressionFunction; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Configuration\Features; @@ -61,10 +63,8 @@ final class ResolverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider basicExpressionsDataProvider - */ + #[DataProvider('basicExpressionsDataProvider')] + #[Test] public function basicExpressionHandlingResultsWorksAsExpected(string $expression, mixed $expectedResult): void { $defaultProvider = new DefaultProvider(new Typo3Version(), new Context(), new Features()); @@ -89,10 +89,8 @@ final class ResolverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider basicExpressionsWithVariablesDataProvider - */ + #[DataProvider('basicExpressionsWithVariablesDataProvider')] + #[Test] public function basicExpressionHandlingWithCustomVariablesWorksAsExpected(string $expression, mixed $expectedResult): void { $contextMock = $this->createMock(DefaultProvider::class); @@ -117,10 +115,8 @@ final class ResolverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider basicExpressionHandlingWithContextVariablesDataProvider - */ + #[DataProvider('basicExpressionHandlingWithContextVariablesDataProvider')] + #[Test] public function basicExpressionHandlingWithContextVariablesWorksAsExpected(string $expression, array $contextVariables, mixed $expectedResult): void { $contextMock = $this->createMock(DefaultProvider::class); @@ -147,10 +143,10 @@ final class ResolverTest extends UnitTestCase } /** - * @test - * @dataProvider basicExpressionsWithVariablesAndExpressionLanguageProviderDataProvider * @param mixed $expectedResult */ + #[DataProvider('basicExpressionsWithVariablesAndExpressionLanguageProviderDataProvider')] + #[Test] public function basicExpressionHandlingWithCustomVariablesAndExpressionLanguageProviderWorksAsExpected(string $expression, mixed $expectedResult): void { $expressionProviderMock = $this->createMock(DefaultFunctionsProvider::class); diff --git a/typo3/sysext/core/Tests/Unit/FormProtection/AbstractFormProtectionTest.php b/typo3/sysext/core/Tests/Unit/FormProtection/AbstractFormProtectionTest.php index 0e0d2b6585b0..880aa6f56332 100644 --- a/typo3/sysext/core/Tests/Unit/FormProtection/AbstractFormProtectionTest.php +++ b/typo3/sysext/core/Tests/Unit/FormProtection/AbstractFormProtectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\FormProtection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\FormProtection\Fixtures\FormProtectionTesting; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -34,9 +35,7 @@ final class AbstractFormProtectionTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; } - /** - * @test - */ + #[Test] public function generateTokenRetrievesTokenOnce(): void { $subject = $this->getMockBuilder(FormProtectionTesting::class) @@ -47,9 +46,7 @@ final class AbstractFormProtectionTest extends UnitTestCase $subject->generateToken('foo'); } - /** - * @test - */ + #[Test] public function validateTokenRetrievesTokenOnce(): void { $subject = $this->getMockBuilder(FormProtectionTesting::class) @@ -60,9 +57,7 @@ final class AbstractFormProtectionTest extends UnitTestCase $subject->validateToken('foo', 'bar'); } - /** - * @test - */ + #[Test] public function cleanMakesTokenInvalid(): void { $formName = 'foo'; @@ -71,9 +66,7 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertFalse($this->subject->validateToken($tokenId, $formName)); } - /** - * @test - */ + #[Test] public function cleanPersistsToken(): void { $subject = $this->getMockBuilder(FormProtectionTesting::class) @@ -83,9 +76,7 @@ final class AbstractFormProtectionTest extends UnitTestCase $subject->clean(); } - /** - * @test - */ + #[Test] public function generateTokenFormForEmptyFormNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -93,65 +84,49 @@ final class AbstractFormProtectionTest extends UnitTestCase $this->subject->generateToken('', 'edit', 'bar'); } - /** - * @test - */ + #[Test] public function generateTokenFormForEmptyActionNotThrowsException(): void { $this->subject->generateToken('foo', '', '42'); } - /** - * @test - */ + #[Test] public function generateTokenFormForEmptyFormInstanceNameNotThrowsException(): void { $this->subject->generateToken('foo', 'edit', ''); } - /** - * @test - */ + #[Test] public function generateTokenFormForOmittedActionAndFormInstanceNameNotThrowsException(): void { $this->subject->generateToken('foo'); } - /** - * @test - */ + #[Test] public function generateTokenReturns32CharacterHexToken(): void { self::assertMatchesRegularExpression('/^[0-9a-f]{40}$/', $this->subject->generateToken('foo')); } - /** - * @test - */ + #[Test] public function generateTokenCalledTwoTimesWithSameParametersReturnsSameTokens(): void { self::assertEquals($this->subject->generateToken('foo', 'edit', 'bar'), $this->subject->generateToken('foo', 'edit', 'bar')); } - /** - * @test - */ + #[Test] public function validateTokenWithFourEmptyParametersNotThrowsException(): void { $this->subject->validateToken('', '', '', ''); } - /** - * @test - */ + #[Test] public function validateTokenWithTwoEmptyAndTwoMissingParametersNotThrowsException(): void { $this->subject->validateToken('', ''); } - /** - * @test - */ + #[Test] public function validateTokenWithDataFromGenerateTokenWithFormInstanceNameReturnsTrue(): void { $formName = 'foo'; @@ -160,18 +135,14 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertTrue($this->subject->validateToken($this->subject->generateToken($formName, $action, $formInstanceName), $formName, $action, $formInstanceName)); } - /** - * @test - */ + #[Test] public function validateTokenWithDataFromGenerateTokenWithMissingActionAndFormInstanceNameReturnsTrue(): void { $formName = 'foo'; self::assertTrue($this->subject->validateToken($this->subject->generateToken($formName), $formName)); } - /** - * @test - */ + #[Test] public function validateTokenWithValidDataCalledTwoTimesReturnsTrueOnSecondCall(): void { $formName = 'foo'; @@ -182,9 +153,7 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertTrue($this->subject->validateToken($tokenId, $formName, $action, $formInstanceName)); } - /** - * @test - */ + #[Test] public function validateTokenWithMismatchingTokenIdReturnsFalse(): void { $formName = 'foo'; @@ -194,9 +163,7 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertFalse($this->subject->validateToken('Hello world!', $formName, $action, $formInstanceName)); } - /** - * @test - */ + #[Test] public function validateTokenWithMismatchingFormNameReturnsFalse(): void { $formName = 'foo'; @@ -206,9 +173,7 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertFalse($this->subject->validateToken($tokenId, 'espresso', $action, $formInstanceName)); } - /** - * @test - */ + #[Test] public function validateTokenWithMismatchingActionReturnsFalse(): void { $formName = 'foo'; @@ -218,9 +183,7 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertFalse($this->subject->validateToken($tokenId, $formName, 'delete', $formInstanceName)); } - /** - * @test - */ + #[Test] public function validateTokenWithMismatchingFormInstanceNameReturnsFalse(): void { $formName = 'foo'; @@ -230,9 +193,7 @@ final class AbstractFormProtectionTest extends UnitTestCase self::assertFalse($this->subject->validateToken($tokenId, $formName, $action, 'beer')); } - /** - * @test - */ + #[Test] public function validateTokenForValidTokenNotCallsCreateValidationErrorMessage(): void { $subject = $this->getMockBuilder(FormProtectionTesting::class) @@ -246,9 +207,7 @@ final class AbstractFormProtectionTest extends UnitTestCase $subject->validateToken($token, $formName, $action, $formInstanceName); } - /** - * @test - */ + #[Test] public function validateTokenForInvalidTokenCallsCreateValidationErrorMessage(): void { $subject = $this->getMockBuilder(FormProtectionTesting::class) @@ -262,9 +221,7 @@ final class AbstractFormProtectionTest extends UnitTestCase $subject->validateToken('an invalid token ...', $formName, $action, $formInstanceName); } - /** - * @test - */ + #[Test] public function validateTokenForInvalidFormNameCallsCreateValidationErrorMessage(): void { $subject = $this->getMockBuilder(FormProtectionTesting::class) diff --git a/typo3/sysext/core/Tests/Unit/FormProtection/BackendFormProtectionTest.php b/typo3/sysext/core/Tests/Unit/FormProtection/BackendFormProtectionTest.php index 2848da7385a3..ec10e991873e 100644 --- a/typo3/sysext/core/Tests/Unit/FormProtection/BackendFormProtectionTest.php +++ b/typo3/sysext/core/Tests/Unit/FormProtection/BackendFormProtectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\FormProtection; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\FormProtection\BackendFormProtection; @@ -44,9 +45,7 @@ final class BackendFormProtectionTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; } - /** - * @test - */ + #[Test] public function generateTokenReadsTokenFromSessionData(): void { $this->backendUserMock @@ -57,9 +56,7 @@ final class BackendFormProtectionTest extends UnitTestCase $this->subject->generateToken('foo'); } - /** - * @test - */ + #[Test] public function tokenFromSessionDataIsAvailableForValidateToken(): void { $sessionToken = '881ffea2159ac72182557b79dc0c723f5a8d20136f9fab56cdd4f8b3a1dbcfcd'; @@ -82,9 +79,7 @@ final class BackendFormProtectionTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function restoreSessionTokenFromRegistryThrowsExceptionIfSessionTokenIsEmpty(): void { $this->expectException(\UnexpectedValueException::class); @@ -93,9 +88,7 @@ final class BackendFormProtectionTest extends UnitTestCase $this->subject->setSessionTokenFromRegistry(); } - /** - * @test - */ + #[Test] public function persistSessionTokenWritesTokenToSession(): void { $this->backendUserMock @@ -104,9 +97,7 @@ final class BackendFormProtectionTest extends UnitTestCase $this->subject->persistSessionToken(); } - /** - * @test - */ + #[Test] public function failingTokenValidationInvokesFailingTokenClosure(): void { $this->expectException(\Exception::class); diff --git a/typo3/sysext/core/Tests/Unit/FormProtection/FormProtectionFactoryTest.php b/typo3/sysext/core/Tests/Unit/FormProtection/FormProtectionFactoryTest.php index 7763a20d6342..7a3b06bc89b1 100644 --- a/typo3/sysext/core/Tests/Unit/FormProtection/FormProtectionFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/FormProtection/FormProtectionFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\FormProtection; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Cache\Backend\TransientMemoryBackend; @@ -61,18 +62,14 @@ final class FormProtectionFactoryTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function createForTypeReturnsDisabledIfInvalidTypeIsGiven(): void { $formProtection = $this->subject->createForType('invalid-type'); self::assertInstanceOf(DisabledFormProtection::class, $formProtection); } - /** - * @test - */ + #[Test] public function createForTypeReturnsDisabledIfInvalidTypeIsGivenAndSameInstanceIfDisabledIsGivenLaterOn(): void { $formProtection = $this->subject->createForType('invalid-type'); @@ -82,9 +79,7 @@ final class FormProtectionFactoryTest extends UnitTestCase self::assertSame($formProtectionDisabled, $formProtection); } - /** - * @test - */ + #[Test] public function createForTypeReturnsDisabledForValidTypeButWithoutValidGlobalArguments(): void { $formProtection = $this->subject->createForType('frontend'); @@ -93,18 +88,14 @@ final class FormProtectionFactoryTest extends UnitTestCase self::assertInstanceOf(DisabledFormProtection::class, $formProtection); } - /** - * @test - */ + #[Test] public function createForTypeAlwaysReturnsInstallToolRegardlessOfRequirementsIfRequested(): void { $formProtection = $this->subject->createForType('installtool'); self::assertInstanceOf(InstallToolFormProtection::class, $formProtection); } - /** - * @test - */ + #[Test] public function createForTypeReturnsDisabledIfBackendUserIsNotAvailable(): void { $user = new BackendUserAuthentication(); @@ -114,9 +105,7 @@ final class FormProtectionFactoryTest extends UnitTestCase self::assertInstanceOf(DisabledFormProtection::class, $formProtection); } - /** - * @test - */ + #[Test] public function createForTypeReturnsBackendIfBackendUserIsLoggedIn(): void { $user = new BackendUserAuthentication(); @@ -127,9 +116,7 @@ final class FormProtectionFactoryTest extends UnitTestCase self::assertInstanceOf(BackendFormProtection::class, $formProtection); } - /** - * @test - */ + #[Test] public function createForTypeReturnsTheSameInstanceEvenThoughUserWasLoggedInLaterOn(): void { $user = new BackendUserAuthentication(); diff --git a/typo3/sysext/core/Tests/Unit/FormProtection/InstallToolFormProtectionTest.php b/typo3/sysext/core/Tests/Unit/FormProtection/InstallToolFormProtectionTest.php index 4571d6840708..61065b6ffd19 100644 --- a/typo3/sysext/core/Tests/Unit/FormProtection/InstallToolFormProtectionTest.php +++ b/typo3/sysext/core/Tests/Unit/FormProtection/InstallToolFormProtectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\FormProtection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\FormProtection\InstallToolFormProtection; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -29,9 +30,7 @@ final class InstallToolFormProtectionTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; } - /** - * @test - */ + #[Test] public function tokenFromSessionDataIsAvailableForValidateToken(): void { $sessionToken = '881ffea2159ac72182557b79dc0c723f5a8d20136f9fab56cdd4f8b3a1dbcfcd'; @@ -45,9 +44,7 @@ final class InstallToolFormProtectionTest extends UnitTestCase self::assertTrue($subject->validateToken($tokenId, $formName, $action, $formInstanceName)); } - /** - * @test - */ + #[Test] public function persistSessionTokenWritesTokensToSession(): void { $_SESSION['installToolFormToken'] = 'foo'; diff --git a/typo3/sysext/core/Tests/Unit/Hooks/TcaItemsProcessorFunctionsTest.php b/typo3/sysext/core/Tests/Unit/Hooks/TcaItemsProcessorFunctionsTest.php index fc1f7c8bc249..1531193a9774 100644 --- a/typo3/sysext/core/Tests/Unit/Hooks/TcaItemsProcessorFunctionsTest.php +++ b/typo3/sysext/core/Tests/Unit/Hooks/TcaItemsProcessorFunctionsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Hooks; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Backend\Module\ModuleFactory; use TYPO3\CMS\Backend\Module\ModuleProvider; @@ -60,9 +62,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function populateAvailableTablesTest(): void { $fieldDefinition = ['items' => [0 => ['label' => '---', 'value' => 0]]]; @@ -98,9 +98,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase self::assertSame($expected, $fieldDefinition); } - /** - * @test - */ + #[Test] public function populateAvailablePageTypesTest(): void { $fieldDefinition = ['items' => []]; @@ -142,9 +140,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase self::assertSame($expected, $fieldDefinition); } - /** - * @test - */ + #[Test] public function populateAvailableUserModulesTest(): void { $moduleProviderMock = $this->createMock(ModuleProvider::class); @@ -191,10 +187,8 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase self::assertSame($expected, $fieldDefinition); } - /** - * @test - * @dataProvider populateExcludeFieldsTestDataProvider - */ + #[DataProvider('populateExcludeFieldsTestDataProvider')] + #[Test] public function populateExcludeFieldsTest(array $tca, array $expectedItems): void { $GLOBALS['TCA'] = $tca; @@ -322,9 +316,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function populateExcludeFieldsWithFlexFormTest(): void { $GLOBALS['TCA'] = [ @@ -392,10 +384,8 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase self::assertSame($expected, $fieldDefinition); } - /** - * @test - * @dataProvider populateExplicitAuthValuesTestDataProvider - */ + #[DataProvider('populateExplicitAuthValuesTestDataProvider')] + #[Test] public function populateExplicitAuthValuesTest(array $tca, array $expectedItems): void { $GLOBALS['TCA'] = $tca; @@ -447,9 +437,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function populateCustomPermissionOptionsTest(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['customPermOptions'] = [ @@ -492,9 +480,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase self::assertSame($expected, $fieldDefinition); } - /** - * @test - */ + #[Test] public function populateAvailableCategoryFieldsThrowsExceptionOnMissingTable(): void { $this->expectException(\UnexpectedValueException::class); @@ -504,9 +490,7 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase (new TcaItemsProcessorFunctions())->populateAvailableCategoryFields($fieldDefinition); } - /** - * @test - */ + #[Test] public function populateAvailableCategoryFieldsThrowsExceptionOnInvalidTable(): void { $this->expectException(\RuntimeException::class); @@ -516,10 +500,8 @@ final class TcaItemsProcessorFunctionsTest extends UnitTestCase (new TcaItemsProcessorFunctions())->populateAvailableCategoryFields($fieldDefinition); } - /** - * @test - * @dataProvider populateAvailableCategoryFieldsDataProvider - */ + #[DataProvider('populateAvailableCategoryFieldsDataProvider')] + #[Test] public function populateAvailableCategoryFields(array $itemsProcConfig, array $expectedItems): void { $GLOBALS['TCA']['aTable']['columns'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Html/HtmlCropperTest.php b/typo3/sysext/core/Tests/Unit/Html/HtmlCropperTest.php index 58b97ebaadd0..d547c77f16f3 100644 --- a/typo3/sysext/core/Tests/Unit/Html/HtmlCropperTest.php +++ b/typo3/sysext/core/Tests/Unit/Html/HtmlCropperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Html; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Html\HtmlCropper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +32,7 @@ final class HtmlCropperTest extends UnitTestCase $this->subject = new HtmlCropper(); } - /** - * @test - */ + #[Test] public function cropIsMultibyteSafe(): void { $actual = $this->subject->crop( @@ -479,10 +479,8 @@ final class HtmlCropperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cropWorksDataProvicer - */ + #[DataProvider('cropWorksDataProvicer')] + #[Test] public function cropWorks(string $expected, string $content, int $numberOfChars, string $replacementForEllipsis, bool $cropToSpace): void { $this->handleCharset($content, $expected); diff --git a/typo3/sysext/core/Tests/Unit/Html/HtmlParserTest.php b/typo3/sysext/core/Tests/Unit/Html/HtmlParserTest.php index 0cb748f104ed..0e0484eacfc2 100644 --- a/typo3/sysext/core/Tests/Unit/Html/HtmlParserTest.php +++ b/typo3/sysext/core/Tests/Unit/Html/HtmlParserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Html; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Html\HtmlParser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -123,32 +125,28 @@ final class HtmlParserTest extends UnitTestCase } /** - * @test * @param string $tag List of tags, comma separated. * @param string $content HTML-content * @param bool $eliminateExtraEndTags If set, excessive end tags are ignored - you should probably set this in most cases. * @param array $expected The expected result - * @dataProvider splitIntoBlockDataProvider */ + #[DataProvider('splitIntoBlockDataProvider')] + #[Test] public function splitIntoBlock(string $tag, string $content, bool $eliminateExtraEndTags, array $expected): void { self::assertSame($expected, $this->subject->splitIntoBlock($tag, $content, $eliminateExtraEndTags)); } - /** - * @test - * @dataProvider cDataWillRemainUnmodifiedDataProvider - */ + #[DataProvider('cDataWillRemainUnmodifiedDataProvider')] + #[Test] public function xHtmlCleaningDoesNotModifyCDATA(string $source, string $expected): void { $result = $this->subject->HTMLcleaner($source, [], 1); self::assertSame($expected, $result); } - /** - * @test - * @dataProvider htmlWithDifferentSingleTagsDataProvider - */ + #[DataProvider('htmlWithDifferentSingleTagsDataProvider')] + #[Test] public function htmlCleanerKeepsSingleTagsWithAndWithoutEndingSlashUnchanged(string $exampleString): void { $result = $this->subject->HTMLcleaner($exampleString, ['br' => true], 0); @@ -188,10 +186,8 @@ final class HtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider spanTagCorrectlyRemovedWhenRmTagIfNoAttribIsConfiguredDataProvider - */ + #[DataProvider('spanTagCorrectlyRemovedWhenRmTagIfNoAttribIsConfiguredDataProvider')] + #[Test] public function tagCorrectlyRemovedWhenRmTagIfNoAttribIsConfigured(string $content, string $expectedResult): void { $tsConfig = [ @@ -206,9 +202,7 @@ final class HtmlParserTest extends UnitTestCase self::assertEquals($expectedResult, $this->parseConfigAndCleanHtml($tsConfig, $content)); } - /** - * @test - */ + #[Test] public function rmTagIfNoAttribIsConfiguredDoesNotChangeNestingType(): void { $tsConfig = [ @@ -250,10 +244,8 @@ final class HtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider localNestingCorrectlyRemovesInvalidTagsDataProvider - */ + #[DataProvider('localNestingCorrectlyRemovesInvalidTagsDataProvider')] + #[Test] public function localNestingCorrectlyRemovesInvalidTags(string $content, string $expectedResult): void { $tsConfig = [ @@ -292,10 +284,8 @@ final class HtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider globalNestingCorrectlyRemovesInvalidTagsDataProvider - */ + #[DataProvider('globalNestingCorrectlyRemovesInvalidTagsDataProvider')] + #[Test] public function globalNestingCorrectlyRemovesInvalidTags(string $content, string $expectedResult): void { $tsConfig = [ @@ -344,14 +334,14 @@ final class HtmlParserTest extends UnitTestCase } /** - * @test - * @dataProvider emptyTagsDataProvider * @param bool $stripOn TRUE if stripping should be activated. * @param string|bool $tagList Comma separated list of tags that should be stripped. * @param bool $treatNonBreakingSpaceAsEmpty If TRUE will be considered empty. * @param string $content The HTML code that should be modified. * @param string $expectedResult The expected HTML code result. */ + #[DataProvider('emptyTagsDataProvider')] + #[Test] public function stripEmptyTags( bool $stripOn, $tagList, @@ -391,13 +381,13 @@ final class HtmlParserTest extends UnitTestCase } /** - * @test - * @dataProvider stripEmptyTagsKeepsConfiguredTagsDataProvider * @param string $tagList List of tags that should be kept, event if they are empty. * @param bool $treatNonBreakingSpaceAsEmpty If true will be considered empty. * @param string $content The HTML content that should be parsed. * @param string $expectedResult The expected HTML code result. */ + #[DataProvider('stripEmptyTagsKeepsConfiguredTagsDataProvider')] + #[Test] public function stripEmptyTagsKeepsConfiguredTags( string $tagList, bool $treatNonBreakingSpaceAsEmpty, @@ -462,12 +452,12 @@ final class HtmlParserTest extends UnitTestCase * Returns the first tag in $str * Actually everything from the beginning of the $str is returned, so you better make sure the tag is the first thing... * - * @test - * @dataProvider getFirstTagDataProvider * * @param string $str HTML string with tags * @param string $expected The expected result. */ + #[DataProvider('getFirstTagDataProvider')] + #[Test] public function getFirstTag(string $str, string $expected): void { self::assertEquals($expected, $this->subject->getFirstTag($str)); @@ -531,13 +521,13 @@ final class HtmlParserTest extends UnitTestCase /** * Returns the NAME of the first tag in $str * - * @test - * @dataProvider getFirstTagNameDataProvider * * @param string $str HTML tag (The element name MUST be separated from the attributes by a space character! Just *whitespace* will not do) * @param bool $preserveCase If set, then the tag is NOT converted to uppercase by case is preserved. * @param string $expected The expected result. */ + #[DataProvider('getFirstTagNameDataProvider')] + #[Test] public function getFirstTagName(string $str, bool $preserveCase, string $expected): void { self::assertEquals($expected, $this->subject->getFirstTagName($str, $preserveCase)); @@ -585,10 +575,10 @@ final class HtmlParserTest extends UnitTestCase * Removes the first and last tag in the string * Anything before the first and after the last tags respectively is also removed * - * @test - * @dataProvider removeFirstAndLastTagDataProvider * @param string $str String to process */ + #[DataProvider('removeFirstAndLastTagDataProvider')] + #[Test] public function removeFirstAndLastTag(string $str, string $expectedResult): void { self::assertEquals($expectedResult, $this->subject->removeFirstAndLastTag($str)); @@ -626,10 +616,10 @@ final class HtmlParserTest extends UnitTestCase * Returns an array with all attributes and its meta information from a tag. * Removes tag-name if found * - * @test - * @dataProvider getTagAttributesDataProvider * @param string $tag String to process */ + #[DataProvider('getTagAttributesDataProvider')] + #[Test] public function getTagAttributes(string $tag, array $expectedResult): void { self::assertEquals($expectedResult, $this->subject->get_tag_attributes($tag)); @@ -673,13 +663,13 @@ final class HtmlParserTest extends UnitTestCase /** * Strips empty tags from HTML. * - * @test - * @dataProvider stripEmptyTagsDataProvider * @param string $content The content to be stripped of empty tags * @param string $tagList The comma separated list of tags to be stripped. * If empty, all empty tags will be stripped * @param bool $treatNonBreakingSpaceAsEmpty If TRUE tags containing only entities will be treated as empty. */ + #[DataProvider('stripEmptyTagsDataProvider')] + #[Test] public function rawStripEmptyTagsTest( string $content, string $tagList, @@ -764,10 +754,8 @@ final class HtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider prefixResourcePathDataProvider - */ + #[DataProvider('prefixResourcePathDataProvider')] + #[Test] public function prefixResourcePathTest(string $content, string $prefix, string $expectedResult): void { self::assertSame( diff --git a/typo3/sysext/core/Tests/Unit/Html/Parser/ParserTest.php b/typo3/sysext/core/Tests/Unit/Html/Parser/ParserTest.php index e13a0f13520d..4b8fa6a66be0 100644 --- a/typo3/sysext/core/Tests/Unit/Html/Parser/ParserTest.php +++ b/typo3/sysext/core/Tests/Unit/Html/Parser/ParserTest.php @@ -17,7 +17,10 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Html\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Html\SimpleNode; +use TYPO3\CMS\Core\Html\SimpleParser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ParserTest extends UnitTestCase @@ -104,12 +107,12 @@ final class ParserTest extends UnitTestCase /** * @param string[] $expectation - * @test - * @dataProvider nodesAreResolvedDataProvider */ + #[DataProvider('nodesAreResolvedDataProvider')] + #[Test] public function nodesAreResolved(string $html, array $expectation): void { - $parser = \TYPO3\CMS\Core\Html\SimpleParser::fromString($html); + $parser = SimpleParser::fromString($html); $nodes = array_map( static function (SimpleNode $node) { return sprintf('[%s]: %s', self::TYPES[$node->getType()], $node); diff --git a/typo3/sysext/core/Tests/Unit/Html/RteHtmlParserTest.php b/typo3/sysext/core/Tests/Unit/Html/RteHtmlParserTest.php index 40979236d58b..fc0b40fb1b79 100644 --- a/typo3/sysext/core/Tests/Unit/Html/RteHtmlParserTest.php +++ b/typo3/sysext/core/Tests/Unit/Html/RteHtmlParserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Html; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Html\RteHtmlParser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -96,10 +98,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider hrTagCorrectlyTransformedOnWayToDataBaseDataProvider - */ + #[DataProvider('hrTagCorrectlyTransformedOnWayToDataBaseDataProvider')] + #[Test] public function hrTagCorrectlyTransformedOnWayToDataBase($content, $expectedResult): void { // @todo Explicitly disabled HTML Sanitizer (since it is based on HTML5) @@ -174,10 +174,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider hrTagCorrectlyTransformedOnWayToDatabaseAndBackToRteProvider - */ + #[DataProvider('hrTagCorrectlyTransformedOnWayToDatabaseAndBackToRteProvider')] + #[Test] public function hrTagCorrectlyTransformedOnWayToDatabaseAndBackToRte($content, $expectedResult): void { // @todo Explicitly disabled HTML Sanitizer (since it is based on HTML5) @@ -208,10 +206,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider brTagCorrectlyTransformedOnWayToDatabaseAndBackToRteProvider - */ + #[DataProvider('brTagCorrectlyTransformedOnWayToDatabaseAndBackToRteProvider')] + #[Test] public function brTagCorrectlyTransformedOnWayToDatabaseAndBackToRte($content, $expectedResult): void { // @todo Explicitly disabled HTML Sanitizer (since it is based on HTML5) @@ -398,10 +394,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider paragraphCorrectlyTransformedOnWayToDatabaseProvider - */ + #[DataProvider('paragraphCorrectlyTransformedOnWayToDatabaseProvider')] + #[Test] public function paragraphCorrectlyTransformedOnWayToDatabase($content, $expectedResult): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -498,10 +492,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider lineBreakCorrectlyTransformedOnWayToRTEProvider - */ + #[DataProvider('lineBreakCorrectlyTransformedOnWayToRTEProvider')] + #[Test] public function lineBreakCorrectlyTransformedOnWayToRTE($content, $expectedResult): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -650,10 +642,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider paragraphCorrectlyTransformedOnWayToDatabaseAndBackToRteProvider - */ + #[DataProvider('paragraphCorrectlyTransformedOnWayToDatabaseAndBackToRteProvider')] + #[Test] public function paragraphCorrectlyTransformedOnWayToDatabaseAndBackToRte($content, $expectedResult): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -686,10 +676,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider anchorCorrectlyTransformedOnWayToDatabaseProvider - */ + #[DataProvider('anchorCorrectlyTransformedOnWayToDatabaseProvider')] + #[Test] public function anchorCorrectlyTransformedOnWayToDatabase(string $content, string $expectedResult): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -722,10 +710,8 @@ final class RteHtmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider anchorCorrectlyTransformedOnWayToDatabaseAndBackToRTEProvider - */ + #[DataProvider('anchorCorrectlyTransformedOnWayToDatabaseAndBackToRTEProvider')] + #[Test] public function anchorCorrectlyTransformedOnWayToDatabaseAndBackToRTE(string $content, string $expectedResult): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -733,9 +719,7 @@ final class RteHtmlParserTest extends UnitTestCase self::assertEquals($expectedResult, $subject->transformTextForRichTextEditor($subject->transformTextForPersistence($content, $this->procOptions), $this->procOptions)); } - /** - * @test - */ + #[Test] public function allowTagsOutsidePreventsWrappingTaginPTag(): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -744,9 +728,7 @@ final class RteHtmlParserTest extends UnitTestCase self::assertEquals('<p><span>Not allowed outside of p-tag</span></p>', $subject->transformTextForRichTextEditor('<span>Not allowed outside of p-tag</span>', $this->procOptions)); } - /** - * @test - */ + #[Test] public function tableAndFigureApplyCorrectlyOutsideOfParagraphTags(): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); @@ -755,9 +737,7 @@ final class RteHtmlParserTest extends UnitTestCase self::assertEquals('<figure class="table">' . CRLF . '<table>Allowed outside of p-tag</table>' . CRLF . '<figcaption>My Logo</figcaption></figure>', $subject->transformTextForRichTextEditor('<figure class="table">' . CRLF . '<table>Allowed outside of p-tag</table>' . CRLF . '<figcaption>My Logo</figcaption></figure>', $this->procOptions)); } - /** - * @test - */ + #[Test] public function resetsAllowTagsWhenProcessingConfigurationChanges(): void { $eventDispatcher = $this->createMock(EventDispatcherInterface::class); diff --git a/typo3/sysext/core/Tests/Unit/Http/ApplicationTypeTest.php b/typo3/sysext/core/Tests/Unit/Http/ApplicationTypeTest.php index 68131252a45d..f499422a178c 100644 --- a/typo3/sysext/core/Tests/Unit/Http/ApplicationTypeTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/ApplicationTypeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; use TYPO3\CMS\Core\Http\ApplicationType; use TYPO3\CMS\Core\Http\ServerRequest; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ApplicationTypeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function fromRequestThrowsIfTypeIsMissing(): void { $this->expectException(\RuntimeException::class); @@ -34,9 +33,7 @@ final class ApplicationTypeTest extends UnitTestCase ApplicationType::fromRequest(new ServerRequest()); } - /** - * @test - */ + #[Test] public function isFrontendReturnsTrueIfFrontend(): void { self::assertTrue( @@ -45,9 +42,7 @@ final class ApplicationTypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function isFrontendReturnsFalseIfNotFrontend(): void { self::assertFalse( @@ -56,9 +51,7 @@ final class ApplicationTypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function isBackendReturnsTrueIfBackend(): void { self::assertTrue( @@ -67,9 +60,7 @@ final class ApplicationTypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function isBackendReturnsTrueIfNotBackend(): void { self::assertFalse( @@ -78,9 +69,7 @@ final class ApplicationTypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function isFrontendEnumResolved(): void { $type = ApplicationType::FRONTEND; @@ -88,9 +77,7 @@ final class ApplicationTypeTest extends UnitTestCase self::assertSame('FE', $type->abbreviate()); } - /** - * @test - */ + #[Test] public function isBackendEnumResolved(): void { $type = ApplicationType::BACKEND; diff --git a/typo3/sysext/core/Tests/Unit/Http/ClientTest.php b/typo3/sysext/core/Tests/Unit/Http/ClientTest.php index 78ebd2b5f64e..89f9d9ee789c 100644 --- a/typo3/sysext/core/Tests/Unit/Http/ClientTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/ClientTest.php @@ -25,6 +25,7 @@ use GuzzleHttp\Handler\MockHandler as GuzzleMockHandler; use GuzzleHttp\HandlerStack as GuzzleHandlerStack; use GuzzleHttp\Middleware as GuzzleMiddleware; use GuzzleHttp\Psr7\Response as GuzzleResponse; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Client\ClientExceptionInterface; use Psr\Http\Client\ClientInterface; use Psr\Http\Client\NetworkExceptionInterface; @@ -37,18 +38,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ClientTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsPsr18ClientInterface(): void { $client = new Client(); self::assertInstanceOf(ClientInterface::class, $client); } - /** - * @test - */ + #[Test] public function sendRequest(): void { $transactions = []; @@ -79,9 +76,7 @@ final class ClientTest extends UnitTestCase self::assertSame('Baz', $response2->getHeaderLine('X-Foo')); } - /** - * @test - */ + #[Test] public function requestException(): void { $request = new Request('https://example.com', 'GET', 'php://temp'); @@ -95,9 +90,7 @@ final class ClientTest extends UnitTestCase $client->sendRequest($request); } - /** - * @test - */ + #[Test] public function networkException(): void { $request = new Request('https://example.com', 'GET', 'php://temp'); @@ -111,9 +104,7 @@ final class ClientTest extends UnitTestCase $client->sendRequest($request); } - /** - * @test - */ + #[Test] public function genericGuzzleException(): void { $request = new Request('https://example.com', 'GET', 'php://temp'); @@ -127,9 +118,7 @@ final class ClientTest extends UnitTestCase $client->sendRequest($request); } - /** - * @test - */ + #[Test] public function redirectIsNotHandledRecursivelyButReturnedAsResponse(): void { $transactions = []; @@ -148,9 +137,7 @@ final class ClientTest extends UnitTestCase self::assertSame('https://example.com', $response->getHeaderLine('Location')); } - /** - * @test - */ + #[Test] public function errorResponsesDoNotThrowAnException(): void { $mock = new GuzzleMockHandler([ diff --git a/typo3/sysext/core/Tests/Unit/Http/MessageTest.php b/typo3/sysext/core/Tests/Unit/Http/MessageTest.php index f41c0d1a2b24..fa89b4710622 100644 --- a/typo3/sysext/core/Tests/Unit/Http/MessageTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/MessageTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\Message; use TYPO3\CMS\Core\Http\Stream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -38,17 +40,13 @@ final class MessageTest extends UnitTestCase $this->message = (new Message())->withBody($this->stream); } - /** - * @test - */ + #[Test] public function protocolHasAcceptableDefault(): void { self::assertEquals('1.1', $this->message->getProtocolVersion()); } - /** - * @test - */ + #[Test] public function protocolMutatorReturnsCloneWithChanges(): void { $message = $this->message->withProtocolVersion('1.0'); @@ -56,17 +54,13 @@ final class MessageTest extends UnitTestCase self::assertEquals('1.0', $message->getProtocolVersion()); } - /** - * @test - */ + #[Test] public function usesStreamProvidedInConstructorAsBody(): void { self::assertSame($this->stream, $this->message->getBody()); } - /** - * @test - */ + #[Test] public function bodyMutatorReturnsCloneWithChanges(): void { $stream = new Stream('php://memory', 'wb+'); @@ -75,9 +69,7 @@ final class MessageTest extends UnitTestCase self::assertSame($stream, $message->getBody()); } - /** - * @test - */ + #[Test] public function getHeaderReturnsHeaderValueAsArray(): void { $message = $this->message->withHeader('X-Foo', ['Foo', 'Bar']); @@ -85,9 +77,7 @@ final class MessageTest extends UnitTestCase self::assertEquals(['Foo', 'Bar'], $message->getHeader('X-Foo')); } - /** - * @test - */ + #[Test] public function getHeaderLineReturnsHeaderValueAsCommaConcatenatedString(): void { $message = $this->message->withHeader('X-Foo', ['Foo', 'Bar']); @@ -95,9 +85,7 @@ final class MessageTest extends UnitTestCase self::assertEquals('Foo,Bar', $message->getHeaderLine('X-Foo')); } - /** - * @test - */ + #[Test] public function getHeadersKeepsHeaderCaseSensitivity(): void { $message = $this->message->withHeader('X-Foo', ['Foo', 'Bar']); @@ -105,9 +93,7 @@ final class MessageTest extends UnitTestCase self::assertEquals(['X-Foo' => ['Foo', 'Bar']], $message->getHeaders()); } - /** - * @test - */ + #[Test] public function getHeadersReturnsCaseWithWhichHeaderFirstRegistered(): void { $message = $this->message @@ -117,17 +103,13 @@ final class MessageTest extends UnitTestCase self::assertEquals(['X-Foo' => ['Foo', 'Bar']], $message->getHeaders()); } - /** - * @test - */ + #[Test] public function hasHeaderReturnsFalseIfHeaderIsNotPresent(): void { self::assertFalse($this->message->hasHeader('X-Foo')); } - /** - * @test - */ + #[Test] public function hasHeaderReturnsTrueIfHeaderIsPresent(): void { $message = $this->message->withHeader('X-Foo', 'Foo'); @@ -135,9 +117,7 @@ final class MessageTest extends UnitTestCase self::assertTrue($message->hasHeader('X-Foo')); } - /** - * @test - */ + #[Test] public function addHeaderAppendsToExistingHeader(): void { $message = $this->message->withHeader('X-Foo', 'Foo'); @@ -147,9 +127,7 @@ final class MessageTest extends UnitTestCase self::assertEquals('Foo,Bar', $message2->getHeaderLine('X-Foo')); } - /** - * @test - */ + #[Test] public function canRemoveHeaders(): void { $message = $this->message->withHeader('X-Foo', 'Foo'); @@ -161,9 +139,7 @@ final class MessageTest extends UnitTestCase self::assertFalse($message2->hasHeader('X-Foo')); } - /** - * @test - */ + #[Test] public function headerRemovalIsCaseInsensitive(): void { $message = $this->message @@ -193,10 +169,8 @@ final class MessageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidGeneralHeaderValuesDataProvider - */ + #[DataProvider('invalidGeneralHeaderValuesDataProvider')] + #[Test] public function withHeaderRaisesExceptionForInvalidNestedHeaderValue($value): void { $this->expectException(\InvalidArgumentException::class); @@ -216,9 +190,7 @@ final class MessageTest extends UnitTestCase ]; } - /** - * @dataProvider invalidHeaderValuesDataProvider - */ + #[DataProvider('invalidHeaderValuesDataProvider')] public function withHeaderRaisesExceptionForInvalidValueType($value): void { $this->expectException(\InvalidArgumentException::class); @@ -226,9 +198,7 @@ final class MessageTest extends UnitTestCase $this->message->withHeader('X-Foo', $value); } - /** - * @dataProvider invalidHeaderValuesDataProvider - */ + #[DataProvider('invalidHeaderValuesDataProvider')] public function withAddedHeaderRaisesExceptionForNonStringNonArrayValue($value): void { $this->expectException(\InvalidArgumentException::class); @@ -236,9 +206,7 @@ final class MessageTest extends UnitTestCase $this->message->withAddedHeader('X-Foo', $value); } - /** - * @test - */ + #[Test] public function withoutHeaderDoesNothingIfHeaderDoesNotExist(): void { self::assertFalse($this->message->hasHeader('X-Foo')); @@ -247,17 +215,13 @@ final class MessageTest extends UnitTestCase self::assertFalse($message->hasHeader('X-Foo')); } - /** - * @test - */ + #[Test] public function getHeaderReturnsAnEmptyArrayWhenHeaderDoesNotExist(): void { self::assertSame([], $this->message->getHeader('X-Foo-Bar')); } - /** - * @test - */ + #[Test] public function getHeaderLineReturnsEmptyStringWhenHeaderDoesNotExist(): void { self::assertSame('', $this->message->getHeaderLine('X-Foo-Bar')); @@ -288,20 +252,16 @@ final class MessageTest extends UnitTestCase ]; } - /** - * @dataProvider headersWithInjectionVectorsDataProvider - * @test - */ + #[DataProvider('headersWithInjectionVectorsDataProvider')] + #[Test] public function doesNotAllowCRLFInjectionWhenCallingWithHeader($name, $value): void { $this->expectException(\InvalidArgumentException::class); $this->message->withHeader($name, $value); } - /** - * @dataProvider headersWithInjectionVectorsDataProvider - * @test - */ + #[DataProvider('headersWithInjectionVectorsDataProvider')] + #[Test] public function doesNotAllowCRLFInjectionWhenCallingWithAddedHeader($name, $value): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Http/MiddlewareDispatcherTest.php b/typo3/sysext/core/Tests/Unit/Http/MiddlewareDispatcherTest.php index 5b59e20630e4..9cba2fe4f595 100644 --- a/typo3/sysext/core/Tests/Unit/Http/MiddlewareDispatcherTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/MiddlewareDispatcherTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -30,9 +31,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MiddlewareDispatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function executesKernelWithEmptyMiddlewareStack(): void { $kernel = new class () implements RequestHandlerInterface { @@ -48,9 +47,7 @@ final class MiddlewareDispatcherTest extends UnitTestCase self::assertSame(204, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function executesMiddlewaresLastInFirstOut(): void { $kernel = new class () implements RequestHandlerInterface { @@ -93,9 +90,7 @@ final class MiddlewareDispatcherTest extends UnitTestCase self::assertSame(204, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function doesNotInstantiateLazyMiddlewareInCaseOfAnEarlyReturningOuterMiddleware(): void { $kernel = new class () implements RequestHandlerInterface { @@ -119,9 +114,7 @@ final class MiddlewareDispatcherTest extends UnitTestCase self::assertSame(404, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function throwsExceptionForLazyNonMiddlewareInterfaceClasses(): void { $this->expectException(\InvalidArgumentException::class); @@ -140,9 +133,7 @@ final class MiddlewareDispatcherTest extends UnitTestCase $dispatcher->handle(new ServerRequest()); } - /** - * @test - */ + #[Test] public function canBeExecutedMultipleTimes(): void { $kernel = new class () implements RequestHandlerInterface { @@ -168,9 +159,7 @@ final class MiddlewareDispatcherTest extends UnitTestCase self::assertSame(204, $response2->getStatusCode()); } - /** - * @test - */ + #[Test] public function canBeReExecutedRecursivelyDuringDispatch(): void { $kernel = new class () implements RequestHandlerInterface { @@ -208,9 +197,7 @@ final class MiddlewareDispatcherTest extends UnitTestCase self::assertSame(['nested', 'outer'], $response->getHeader('X-TRACE')); } - /** - * @test - */ + #[Test] public function fetchesMiddlewareFromContainer(): void { $kernel = new class () implements RequestHandlerInterface { diff --git a/typo3/sysext/core/Tests/Unit/Http/MiddlewareStackResolverTest.php b/typo3/sysext/core/Tests/Unit/Http/MiddlewareStackResolverTest.php index f3093c3a4cfb..11c8bddcaf58 100644 --- a/typo3/sysext/core/Tests/Unit/Http/MiddlewareStackResolverTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/MiddlewareStackResolverTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Http\MiddlewareStackResolver; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MiddlewareStackResolverTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function resolveReturnsMiddlewareStack(): void { $middlewares = new \ArrayObject(array_replace_recursive( @@ -53,9 +52,7 @@ final class MiddlewareStackResolverTest extends UnitTestCase self::assertEquals($expected, $subject->resolve('testStack')); } - /** - * @test - */ + #[Test] public function resolveReturnsEmptyMiddlewareStackForZeroPackages(): void { $middlewares = new \ArrayObject(); @@ -75,9 +72,7 @@ final class MiddlewareStackResolverTest extends UnitTestCase self::assertEquals($expected, $subject->resolve('testStack')); } - /** - * @test - */ + #[Test] public function resolveAllowsDisablingAMiddleware(): void { $middlewares = new \ArrayObject(array_replace_recursive( @@ -103,9 +98,7 @@ final class MiddlewareStackResolverTest extends UnitTestCase self::assertEquals($expected, $subject->resolve('testStack')); } - /** - * @test - */ + #[Test] public function resolveAllowsReplacingAMiddleware(): void { $middlewares = new \ArrayObject(array_replace_recursive( diff --git a/typo3/sysext/core/Tests/Unit/Http/NormalizedParamsTest.php b/typo3/sysext/core/Tests/Unit/Http/NormalizedParamsTest.php index b0fa6f10d866..06f46a665bbd 100644 --- a/typo3/sysext/core/Tests/Unit/Http/NormalizedParamsTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/NormalizedParamsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\NormalizedParams; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -120,10 +122,8 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getHttpHostReturnsSanitizedValueDataProvider - */ + #[DataProvider('getHttpHostReturnsSanitizedValueDataProvider')] + #[Test] public function getHttpHostReturnsSanitizedValue(array $serverParams, array $configuration, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, $configuration, '', ''); @@ -323,19 +323,15 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isHttpsReturnSanitizedValueDataProvider - */ + #[DataProvider('isHttpsReturnSanitizedValueDataProvider')] + #[Test] public function isHttpsReturnSanitizedValue(array $serverParams, array $configuration, bool $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, $configuration, '', ''); self::assertSame($expected, $serverRequestParameters->isHttps()); } - /** - * @test - */ + #[Test] public function getRequestHostReturnsRequestHost(): void { $serverParams = [ @@ -400,10 +396,8 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getScriptNameReturnsExpectedValueDataProvider - */ + #[DataProvider('getScriptNameReturnsExpectedValueDataProvider')] + #[Test] public function getScriptNameReturnsExpectedValue(array $serverParams, array $configuration, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, $configuration, '', ''); @@ -501,19 +495,15 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getRequestUriReturnsExpectedValueDataProvider - */ + #[DataProvider('getRequestUriReturnsExpectedValueDataProvider')] + #[Test] public function getRequestUriReturnsExpectedValue(array $serverParams, array $configuration, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, $configuration, '', ''); self::assertSame($expected, $serverRequestParameters->getRequestUri()); } - /** - * @test - */ + #[Test] public function getRequestUriFetchesFromConfiguredRequestUriVar(): void { $GLOBALS['foo']['bar'] = '/foo/bar.php'; @@ -528,9 +518,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getRequestUri()); } - /** - * @test - */ + #[Test] public function getRequestUrlReturnsExpectedValue(): void { $serverParams = [ @@ -542,9 +530,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getRequestUrl()); } - /** - * @test - */ + #[Test] public function getRequestScriptReturnsExpectedValue(): void { $serverParams = [ @@ -556,9 +542,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getRequestScript()); } - /** - * @test - */ + #[Test] public function getRequestDirReturnsExpectedValue(): void { $serverParams = [ @@ -616,10 +600,8 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isBehindReverseProxyReturnsExpectedValueDataProvider - */ + #[DataProvider('isBehindReverseProxyReturnsExpectedValueDataProvider')] + #[Test] public function isBehindReverseProxyReturnsExpectedValue(array $serverParams, array $configuration, bool $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, $configuration, '', ''); @@ -679,10 +661,8 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getRemoteAddressReturnsExpectedValueDataProvider - */ + #[DataProvider('getRemoteAddressReturnsExpectedValueDataProvider')] + #[Test] public function getRemoteAddressReturnsExpectedValue(array $serverParams, array $configuration, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, $configuration, '', ''); @@ -743,10 +723,8 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getRequestHostOnlyReturnsExpectedValueDataProvider - */ + #[DataProvider('getRequestHostOnlyReturnsExpectedValueDataProvider')] + #[Test] public function getRequestHostOnlyReturnsExpectedValue(array $serverParams, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, [], '', ''); @@ -807,19 +785,15 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getRequestPortOnlyReturnsExpectedValueDataProvider - */ + #[DataProvider('getRequestPortOnlyReturnsExpectedValueDataProvider')] + #[Test] public function getRequestPortReturnsExpectedValue(array $serverParams, int $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, [], '', ''); self::assertSame($expected, $serverRequestParameters->getRequestPort()); } - /** - * @test - */ + #[Test] public function getScriptFilenameReturnsThirdConstructorArgument(): void { $serverParams = [ @@ -831,9 +805,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame('/var/www/typo3/index.php', $serverRequestParameters->getScriptFilename()); } - /** - * @test - */ + #[Test] public function getDocumentRootReturnsExpectedPath(): void { $serverParams = [ @@ -847,9 +819,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getDocumentRoot()); } - /** - * @test - */ + #[Test] public function getSiteUrlReturnsExpectedUrl(): void { $serverParams = [ @@ -863,9 +833,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getSiteUrl()); } - /** - * @test - */ + #[Test] public function getSiteUrlReturnsExpectedUrlForCliCommand(): void { $serverParams = []; @@ -909,10 +877,8 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getSitePathReturnsExpectedPathDataProvider - */ + #[DataProvider('getSitePathReturnsExpectedPathDataProvider')] + #[Test] public function getSitePathReturnsExpectedPath(array $serverParams, string $pathThisScript, string $pathSite, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, [], $pathThisScript, $pathSite); @@ -958,19 +924,15 @@ final class NormalizedParamsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getSiteScriptReturnsExpectedPathDataProvider - */ + #[DataProvider('getSiteScriptReturnsExpectedPathDataProvider')] + #[Test] public function getSiteScriptReturnsExpectedPath(array $serverParams, string $pathThisScript, string $pathSite, string $expected): void { $serverRequestParameters = new NormalizedParams($serverParams, [], $pathThisScript, $pathSite); self::assertSame($expected, $serverRequestParameters->getSiteScript()); } - /** - * @test - */ + #[Test] public function getPathInfoReturnsExpectedValue(): void { $serverParams = [ @@ -981,9 +943,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getPathInfo()); } - /** - * @test - */ + #[Test] public function getHttpRefererReturnsExpectedValue(): void { $serverParams = [ @@ -994,9 +954,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getHttpReferer()); } - /** - * @test - */ + #[Test] public function getHttpUserAgentReturnsExpectedValue(): void { $serverParams = [ @@ -1007,9 +965,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getHttpUserAgent()); } - /** - * @test - */ + #[Test] public function getHttpAcceptEncodingReturnsExpectedValue(): void { $serverParams = [ @@ -1020,9 +976,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getHttpAcceptEncoding()); } - /** - * @test - */ + #[Test] public function getHttpAcceptLanguageReturnsExpectedValue(): void { $serverParams = [ @@ -1033,9 +987,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getHttpAcceptLanguage()); } - /** - * @test - */ + #[Test] public function getRemoteHostReturnsExpectedValue(): void { $serverParams = [ @@ -1046,9 +998,7 @@ final class NormalizedParamsTest extends UnitTestCase self::assertSame($expected, $serverRequestParameters->getRemoteHost()); } - /** - * @test - */ + #[Test] public function getQueryStringReturnsExpectedValue(): void { $serverParams = [ diff --git a/typo3/sysext/core/Tests/Unit/Http/RedirectResponseTest.php b/typo3/sysext/core/Tests/Unit/Http/RedirectResponseTest.php index 480350e20ab7..c532503813e1 100644 --- a/typo3/sysext/core/Tests/Unit/Http/RedirectResponseTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/RedirectResponseTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\RedirectResponse; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RedirectResponseTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getHeadersReturnsLocationUrlSetByConstructorArgument(): void { $subject = new RedirectResponse('theRedirectUrl'); @@ -36,9 +35,7 @@ final class RedirectResponseTest extends UnitTestCase self::assertSame($expected, $subject->getHeaders()); } - /** - * @test - */ + #[Test] public function getHeaderReturnsLocationUrlSetByConstructorArgument(): void { $subject = new RedirectResponse('theRedirectUrl'); @@ -48,9 +45,7 @@ final class RedirectResponseTest extends UnitTestCase self::assertSame($expected, $subject->getHeader('location')); } - /** - * @test - */ + #[Test] public function getHeadersReturnsHeaderSetByConstructorArgument(): void { $input = [ @@ -72,9 +67,7 @@ final class RedirectResponseTest extends UnitTestCase self::assertSame($expected, $subject->getHeaders()); } - /** - * @test - */ + #[Test] public function getHeaderReturnsHeaderSetByConstructorArgument(): void { $input = [ @@ -87,9 +80,7 @@ final class RedirectResponseTest extends UnitTestCase self::assertSame($expected, $subject->getHeader('lowercasedheadername')); } - /** - * @test - */ + #[Test] public function getHeaderReturnsHeaderSetByConstructorArgumentLowerCased(): void { $input = [ diff --git a/typo3/sysext/core/Tests/Unit/Http/RequestFactoryTest.php b/typo3/sysext/core/Tests/Unit/Http/RequestFactoryTest.php index 052d31f59c06..dd20d4269c40 100644 --- a/typo3/sysext/core/Tests/Unit/Http/RequestFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/RequestFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\RequestFactoryInterface; use Psr\Http\Message\RequestInterface; use TYPO3\CMS\Core\Http\Client\GuzzleClientFactory; @@ -28,18 +29,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class RequestFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsPsr17FactoryInterface(): void { $factory = new RequestFactory(new GuzzleClientFactory()); self::assertInstanceOf(RequestFactoryInterface::class, $factory); } - /** - * @test - */ + #[Test] public function requestHasMethodSet(): void { $factory = new RequestFactory(new GuzzleClientFactory()); @@ -47,9 +44,7 @@ final class RequestFactoryTest extends UnitTestCase self::assertSame('POST', $request->getMethod()); } - /** - * @test - */ + #[Test] public function requestFactoryHasAWritableEmptyBody(): void { $factory = new RequestFactory(new GuzzleClientFactory()); @@ -67,9 +62,7 @@ final class RequestFactoryTest extends UnitTestCase self::assertSame('Foo', $body->__toString()); } - /** - * @test - */ + #[Test] public function raisesExceptionForInvalidMethod(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Http/RequestTest.php b/typo3/sysext/core/Tests/Unit/Http/RequestTest.php index 26a85b168f1f..6579d6cf88e1 100644 --- a/typo3/sysext/core/Tests/Unit/Http/RequestTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/RequestTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\StreamInterface; use TYPO3\CMS\Core\Http\Request; use TYPO3\CMS\Core\Http\Stream; @@ -38,17 +40,13 @@ final class RequestTest extends UnitTestCase $this->request = new Request(); } - /** - * @test - */ + #[Test] public function getMethodIsGetByDefault(): void { self::assertEquals('GET', $this->request->getMethod()); } - /** - * @test - */ + #[Test] public function getMethodMutatorReturnsCloneWithChangedMethod(): void { $request = $this->request->withMethod('GET'); @@ -56,9 +54,7 @@ final class RequestTest extends UnitTestCase self::assertEquals('GET', $request->getMethod()); } - /** - * @test - */ + #[Test] public function withUriReturnsNewInstanceWithNewUri(): void { $request = $this->request->withUri(new Uri('https://example.com:10082/foo/bar?baz=bat')); @@ -69,9 +65,7 @@ final class RequestTest extends UnitTestCase self::assertEquals('/baz/bat?foo=bar', (string)$request2->getUri()); } - /** - * @test - */ + #[Test] public function constructorCanAcceptAllMessageParts(): void { $uri = new Uri('http://example.com/'); @@ -96,9 +90,7 @@ final class RequestTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function constructorRaisesExceptionForInvalidMethodByString(): void { $this->expectException(\InvalidArgumentException::class); @@ -118,10 +110,8 @@ final class RequestTest extends UnitTestCase ]; } - /** - * @dataProvider invalidRequestBodyDataProvider - * @test - */ + #[DataProvider('invalidRequestBodyDataProvider')] + #[Test] public function constructorRaisesExceptionForInvalidBody($body): void { $this->expectException(\InvalidArgumentException::class); @@ -141,17 +131,15 @@ final class RequestTest extends UnitTestCase /** * @param resource|StreamInterface|string|null $body - * @dataProvider validRequestBodyDataProvider - * @test */ + #[DataProvider('validRequestBodyDataProvider')] + #[Test] public function constructorDoesNotRaiseExceptionForValidBody($body): void { new Request(null, 'GET', $body); } - /** - * @test - */ + #[Test] public function constructorIgnoresInvalidHeaders(): void { $headers = [ @@ -177,18 +165,14 @@ final class RequestTest extends UnitTestCase self::assertEquals($expected, $request->getHeaders()); } - /** - * @test - */ + #[Test] public function getRequestTargetIsSlashWhenNoUriPresent(): void { $request = new Request(); self::assertEquals('/', $request->getRequestTarget()); } - /** - * @test - */ + #[Test] public function getRequestTargetIsSlashWhenUriHasNoPathOrQuery(): void { $request = (new Request()) @@ -226,10 +210,8 @@ final class RequestTest extends UnitTestCase ]; } - /** - * @dataProvider requestsWithUriDataProvider - * @test - */ + #[DataProvider('requestsWithUriDataProvider')] + #[Test] public function getRequestTargetWhenUriIsPresent($request, $expected): void { self::assertEquals($expected, $request->getRequestTarget()); @@ -247,19 +229,15 @@ final class RequestTest extends UnitTestCase ]; } - /** - * @dataProvider validRequestTargetsDataProvider - * @test - */ + #[DataProvider('validRequestTargetsDataProvider')] + #[Test] public function getRequestTargetCanProvideARequestTarget($requestTarget): void { $request = (new Request())->withRequestTarget($requestTarget); self::assertEquals($requestTarget, $request->getRequestTarget()); } - /** - * @test - */ + #[Test] public function withRequestTargetCannotContainWhitespace(): void { $request = new Request(); @@ -268,9 +246,7 @@ final class RequestTest extends UnitTestCase $request->withRequestTarget('foo bar baz'); } - /** - * @test - */ + #[Test] public function getRequestTargetDoesNotCacheBetweenInstances(): void { $request = (new Request())->withUri(new Uri('https://example.com/foo/bar')); @@ -279,9 +255,7 @@ final class RequestTest extends UnitTestCase self::assertNotEquals($original, $newRequest->getRequestTarget()); } - /** - * @test - */ + #[Test] public function getRequestTargetIsResetWithNewUri(): void { $request = (new Request())->withUri(new Uri('https://example.com/foo/bar')); @@ -289,9 +263,7 @@ final class RequestTest extends UnitTestCase $request->withUri(new Uri('http://mwop.net/bar/baz')); } - /** - * @test - */ + #[Test] public function getHeadersContainsHostHeaderIfUriWithHostIsPresent(): void { $request = new Request('http://example.com'); @@ -300,9 +272,7 @@ final class RequestTest extends UnitTestCase self::assertContains('example.com', $headers['host']); } - /** - * @test - */ + #[Test] public function getHeadersContainsNoHostHeaderIfNoUriPresent(): void { $request = new Request(); @@ -310,9 +280,7 @@ final class RequestTest extends UnitTestCase self::assertArrayNotHasKey('host', $headers); } - /** - * @test - */ + #[Test] public function getHeadersContainsNoHostHeaderIfUriDoesNotContainHost(): void { $request = new Request(new Uri()); @@ -320,9 +288,7 @@ final class RequestTest extends UnitTestCase self::assertArrayNotHasKey('host', $headers); } - /** - * @test - */ + #[Test] public function getHeaderWithHostReturnsUriHostWhenPresent(): void { $request = new Request('http://example.com'); @@ -330,27 +296,21 @@ final class RequestTest extends UnitTestCase self::assertEquals(['example.com'], $header); } - /** - * @test - */ + #[Test] public function getHeaderWithHostReturnsEmptyArrayIfNoUriPresent(): void { $request = new Request(); self::assertSame([], $request->getHeader('host')); } - /** - * @test - */ + #[Test] public function getHeaderWithHostReturnsEmptyArrayIfUriDoesNotContainHost(): void { $request = new Request(new Uri()); self::assertSame([], $request->getHeader('host')); } - /** - * @test - */ + #[Test] public function getHeaderLineWithHostReturnsUriHostWhenPresent(): void { $request = new Request('http://example.com'); @@ -358,27 +318,21 @@ final class RequestTest extends UnitTestCase self::assertStringContainsString('example.com', $header); } - /** - * @test - */ + #[Test] public function getHeaderLineWithHostReturnsEmptyStringIfNoUriPresent(): void { $request = new Request(); self::assertSame('', $request->getHeaderLine('host')); } - /** - * @test - */ + #[Test] public function getHeaderLineWithHostReturnsEmptyStringIfUriDoesNotContainHost(): void { $request = new Request(new Uri()); self::assertSame('', $request->getHeaderLine('host')); } - /** - * @test - */ + #[Test] public function getHeaderLineWithHostTakesPrecedenceOverModifiedUri(): void { $request = (new Request()) @@ -390,9 +344,7 @@ final class RequestTest extends UnitTestCase self::assertEquals('example.com', $new->getHeaderLine('Host')); } - /** - * @test - */ + #[Test] public function getHeaderLineWithHostTakesPrecedenceOverEmptyUri(): void { $request = (new Request()) @@ -404,9 +356,7 @@ final class RequestTest extends UnitTestCase self::assertEquals('example.com', $new->getHeaderLine('Host')); } - /** - * @test - */ + #[Test] public function getHeaderLineWithHostDoesNotTakePrecedenceOverHostWithPortFromUri(): void { $request = (new Request()) @@ -431,10 +381,8 @@ final class RequestTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider headersWithUpperAndLowerCaseValuesDataProvider - */ + #[DataProvider('headersWithUpperAndLowerCaseValuesDataProvider')] + #[Test] public function headerCanBeRetrieved($header, $value, $expected): void { $request = new Request(null, 'GET', 'php://memory', [$header => $value]); @@ -460,28 +408,22 @@ final class RequestTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider headersWithInjectionVectorsDataProvider - */ + #[DataProvider('headersWithInjectionVectorsDataProvider')] + #[Test] public function constructorRaisesExceptionForHeadersWithCRLFVectors($name, $value): void { $this->expectException(\InvalidArgumentException::class); new Request(null, 'GET', 'php://memory', [$name => $value]); } - /** - * @test - */ + #[Test] public function supportedRequestMethodsWork(): void { $request = new Request('some-uri', 'PURGE'); self::assertEquals('PURGE', $request->getMethod()); } - /** - * @test - */ + #[Test] public function nonSupportedRequestMethodsRaisesException(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Http/ResponseFactoryTest.php b/typo3/sysext/core/Tests/Unit/Http/ResponseFactoryTest.php index c9720637f751..3e258aa0414a 100644 --- a/typo3/sysext/core/Tests/Unit/Http/ResponseFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/ResponseFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ResponseFactoryInterface; use TYPO3\CMS\Core\Http\ResponseFactory; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,18 +27,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ResponseFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsPsr17FactoryInterface(): void { $factory = new ResponseFactory(); self::assertInstanceOf(ResponseFactoryInterface::class, $factory); } - /** - * @test - */ + #[Test] public function responseHasStatusCode200ByDefault(): void { $factory = new ResponseFactory(); @@ -45,9 +42,7 @@ final class ResponseFactoryTest extends UnitTestCase self::assertSame(200, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function responseHasStatusCodeSet(): void { $factory = new ResponseFactory(); @@ -55,9 +50,7 @@ final class ResponseFactoryTest extends UnitTestCase self::assertSame(201, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function responseHasDefaultReasonPhrase(): void { $factory = new ResponseFactory(); @@ -65,9 +58,7 @@ final class ResponseFactoryTest extends UnitTestCase self::assertSame('Moved Permanently', $response->getReasonPhrase()); } - /** - * @test - */ + #[Test] public function responseHasCustomReasonPhrase(): void { $factory = new ResponseFactory(); diff --git a/typo3/sysext/core/Tests/Unit/Http/ResponseTest.php b/typo3/sysext/core/Tests/Unit/Http/ResponseTest.php index 97b404e94ba2..798ce10f9dcc 100644 --- a/typo3/sysext/core/Tests/Unit/Http/ResponseTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/ResponseTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\Response; use TYPO3\CMS\Core\Http\Stream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -31,17 +33,13 @@ final class ResponseTest extends UnitTestCase $this->response = new Response(); } - /** - * @test - */ + #[Test] public function statusCodeIs200ByDefault(): void { self::assertEquals(200, $this->response->getStatusCode()); } - /** - * @test - */ + #[Test] public function statusCodeMutatorReturnsCloneWithChanges(): void { $response = $this->response->withStatus(400); @@ -57,46 +55,36 @@ final class ResponseTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidStatusCodesDataProvider - */ + #[DataProvider('invalidStatusCodesDataProvider')] + #[Test] public function cannotSetInvalidStatusCode($code): void { $this->expectException(\InvalidArgumentException::class); $this->response->withStatus($code); } - /** - * @test - */ + #[Test] public function reasonPhraseDefaultsToStandards(): void { $response = $this->response->withStatus(422); self::assertEquals('Unprocessable Entity', $response->getReasonPhrase()); } - /** - * @test - */ + #[Test] public function canSetCustomReasonPhrase(): void { $response = $this->response->withStatus(422, 'Foo Bar!'); self::assertEquals('Foo Bar!', $response->getReasonPhrase()); } - /** - * @test - */ + #[Test] public function constructorRaisesExceptionForInvalidStream(): void { $this->expectException(\InvalidArgumentException::class); new Response(['TOTALLY INVALID']); } - /** - * @test - */ + #[Test] public function constructorCanAcceptAllMessageParts(): void { $body = new Stream('php://memory'); @@ -119,10 +107,8 @@ final class ResponseTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidStatusDataProvider - */ + #[DataProvider('invalidStatusDataProvider')] + #[Test] public function constructorRaisesExceptionForInvalidStatus($code): void { $this->expectException(\InvalidArgumentException::class); @@ -142,10 +128,8 @@ final class ResponseTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidResponseBodyDataProvider - */ + #[DataProvider('invalidResponseBodyDataProvider')] + #[Test] public function constructorRaisesExceptionForInvalidBody($body): void { $this->expectException(\InvalidArgumentException::class); @@ -153,9 +137,7 @@ final class ResponseTest extends UnitTestCase new Response($body); } - /** - * @test - */ + #[Test] public function constructorIgnoresInvalidHeaders(): void { $headers = [ @@ -199,19 +181,15 @@ final class ResponseTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider headersWithInjectionVectorsDataProvider - */ + #[DataProvider('headersWithInjectionVectorsDataProvider')] + #[Test] public function constructorRaisesExceptionForHeadersWithCRLFVectors($name, $value): void { $this->expectException(\InvalidArgumentException::class); new Response('php://memory', 200, [$name => $value]); } - /** - * @test - */ + #[Test] public function getHeaderReturnsHeaderSetByConstructorArgument(): void { $subject = new Response('php://memory', 200, ['location' => 'foo']); diff --git a/typo3/sysext/core/Tests/Unit/Http/Security/ReferrerEnforcerTest.php b/typo3/sysext/core/Tests/Unit/Http/Security/ReferrerEnforcerTest.php index e5a527302651..32b23da33c50 100644 --- a/typo3/sysext/core/Tests/Unit/Http/Security/ReferrerEnforcerTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/Security/ReferrerEnforcerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http\Security; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Core\Http\NormalizedParams; use TYPO3\CMS\Core\Http\Security\InvalidReferrerException; @@ -109,10 +111,9 @@ final class ReferrerEnforcerTest extends UnitTestCase /** * @param string[]|null $options - * - * @test - * @dataProvider validReferrerIsHandledDataProvider */ + #[DataProvider('validReferrerIsHandledDataProvider')] + #[Test] public function validReferrerIsHandled(string $requestUri, string $referrer, ?array $options, ?string $expectedResponse): void { $subject = $this->buildSubject($requestUri, $referrer); @@ -153,9 +154,9 @@ final class ReferrerEnforcerTest extends UnitTestCase /** * @param string[]|null $options - * @test - * @dataProvider invalidReferrerIsHandledDataProvider */ + #[DataProvider('invalidReferrerIsHandledDataProvider')] + #[Test] public function invalidReferrerIsHandled(string $requestUri, string $referrer, ?array $options): void { $this->expectException(InvalidReferrerException::class); @@ -164,9 +165,7 @@ final class ReferrerEnforcerTest extends UnitTestCase $subject->handle($options); } - /** - * @test - */ + #[Test] public function missingReferrerIsHandled(): void { $this->expectException(MissingReferrerException::class); @@ -178,9 +177,7 @@ final class ReferrerEnforcerTest extends UnitTestCase $subject->handle(); } - /** - * @test - */ + #[Test] public function nonceIsAppliedToResponse(): void { $nonce = new ConsumableNonce(); diff --git a/typo3/sysext/core/Tests/Unit/Http/ServerRequestFactoryTest.php b/typo3/sysext/core/Tests/Unit/Http/ServerRequestFactoryTest.php index 47c035f4effb..86154b97adf7 100644 --- a/typo3/sysext/core/Tests/Unit/Http/ServerRequestFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/ServerRequestFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ServerRequestFactoryInterface; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Core\Http\ServerRequest; @@ -29,18 +30,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ServerRequestFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsPsr17FactoryInterface(): void { $factory = new ServerRequestFactory(); self::assertInstanceOf(ServerRequestFactoryInterface::class, $factory); } - /** - * @test - */ + #[Test] public function serverRequestHasMethodSet(): void { $factory = new ServerRequestFactory(); @@ -48,9 +45,7 @@ final class ServerRequestFactoryTest extends UnitTestCase self::assertSame('POST', $request->getMethod()); } - /** - * @test - */ + #[Test] public function serverRequestFactoryHasAWritableEmptyBody(): void { $factory = new ServerRequestFactory(); @@ -68,9 +63,7 @@ final class ServerRequestFactoryTest extends UnitTestCase self::assertSame('Foo', $body->__toString()); } - /** - * @test - */ + #[Test] public function raisesExceptionForInvalidMethod(): void { $this->expectException(\InvalidArgumentException::class); @@ -79,9 +72,7 @@ final class ServerRequestFactoryTest extends UnitTestCase $factory->createServerRequest('BOGUS-BODY', '/'); } - /** - * @test - */ + #[Test] public function uploadedFilesAreNormalizedFromFilesSuperGlobal(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -144,9 +135,7 @@ final class ServerRequestFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function uploadedFilesAreNotCreatedForEmptyFilesArray(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -160,9 +149,7 @@ final class ServerRequestFactoryTest extends UnitTestCase self::assertEmpty($uploadedFiles); } - /** - * @test - */ + #[Test] public function uploadedFilesAreNotCreatedIfTmpNameIsEmpty(): void { $_SERVER['HTTP_HOST'] = 'localhost'; @@ -183,9 +170,7 @@ final class ServerRequestFactoryTest extends UnitTestCase self::assertEmpty($uploadedFiles); } - /** - * @test - */ + #[Test] public function handlesNumericKeys(): void { $_SERVER['HTTP_HOST'] = 'localhost'; diff --git a/typo3/sysext/core/Tests/Unit/Http/ServerRequestTest.php b/typo3/sysext/core/Tests/Unit/Http/ServerRequestTest.php index 668c893b0d62..fbcb9ea72eaf 100644 --- a/typo3/sysext/core/Tests/Unit/Http/ServerRequestTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/ServerRequestTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Http\UploadedFile; use TYPO3\CMS\Core\Http\Uri; @@ -37,25 +38,19 @@ final class ServerRequestTest extends UnitTestCase $this->request = new ServerRequest(); } - /** - * @test - */ + #[Test] public function getServerParamsAreEmptyByDefault(): void { self::assertEmpty($this->request->getServerParams()); } - /** - * @test - */ + #[Test] public function getQueryParamsAreEmptyByDefault(): void { self::assertEmpty($this->request->getQueryParams()); } - /** - * @test - */ + #[Test] public function withQueryParamsMutatorReturnsCloneWithChanges(): void { $value = ['foo' => 'bar']; @@ -64,17 +59,13 @@ final class ServerRequestTest extends UnitTestCase self::assertEquals($value, $request->getQueryParams()); } - /** - * @test - */ + #[Test] public function getCookieParamsAreEmptyByDefault(): void { self::assertEmpty($this->request->getCookieParams()); } - /** - * @test - */ + #[Test] public function withCookieParamsMutatorReturnsCloneWithChanges(): void { $value = ['foo' => 'bar']; @@ -83,25 +74,19 @@ final class ServerRequestTest extends UnitTestCase self::assertEquals($value, $request->getCookieParams()); } - /** - * @test - */ + #[Test] public function getUploadedFilesAreEmptyByDefault(): void { self::assertEmpty($this->request->getUploadedFiles()); } - /** - * @test - */ + #[Test] public function getParsedBodyIsEmptyByDefault(): void { self::assertEmpty($this->request->getParsedBody()); } - /** - * @test - */ + #[Test] public function withParsedBodyMutatorReturnsCloneWithChanges(): void { $value = ['foo' => 'bar']; @@ -110,17 +95,13 @@ final class ServerRequestTest extends UnitTestCase self::assertEquals($value, $request->getParsedBody()); } - /** - * @test - */ + #[Test] public function getAttributesAreEmptyByDefault(): void { self::assertEmpty($this->request->getAttributes()); } - /** - * @test - */ + #[Test] public function withAttributeMutatorReturnsCloneWithChanges(): ServerRequest { $request = $this->request->withAttribute('foo', 'bar'); @@ -130,9 +111,7 @@ final class ServerRequestTest extends UnitTestCase return $request; } - /** - * @test - */ + #[Test] public function withoutAttributeReturnsCloneWithoutAttribute(): void { $request = $this->request; @@ -141,9 +120,7 @@ final class ServerRequestTest extends UnitTestCase self::assertNull($new->getAttribute('foo', null)); } - /** - * @test - */ + #[Test] public function constructorUsesProvidedArguments(): void { $server = [ diff --git a/typo3/sysext/core/Tests/Unit/Http/StreamFactoryTest.php b/typo3/sysext/core/Tests/Unit/Http/StreamFactoryTest.php index 7a838d5cd099..fdd41521c5ed 100644 --- a/typo3/sysext/core/Tests/Unit/Http/StreamFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/StreamFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\StreamFactoryInterface; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Http\StreamFactory; @@ -41,18 +42,14 @@ final class StreamFactoryTest extends UnitTestCase return $path; } - /** - * @test - */ + #[Test] public function implementsPsr17FactoryInterface(): void { $factory = new StreamFactory(); self::assertInstanceOf(StreamFactoryInterface::class, $factory); } - /** - * @test - */ + #[Test] public function createStreamReturnsEmptyStreamByDefault(): void { $factory = new StreamFactory(); @@ -60,9 +57,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamFromEmptyString(): void { $factory = new StreamFactory(); @@ -70,9 +65,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamFromNonEmptyString(): void { $factory = new StreamFactory(); @@ -80,9 +73,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('Foo', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamReturnsWritableStream(): void { $factory = new StreamFactory(); @@ -91,9 +82,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('Foo', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamReturnsAppendableStream(): void { $factory = new StreamFactory(); @@ -102,9 +91,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('FooBar', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamFromFile(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -115,9 +102,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('Foo', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamFromFileWithMode(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -130,9 +115,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('Foo', $contents); } - /** - * @test - */ + #[Test] public function createStreamFromFileWithInvalidMode(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -144,9 +127,7 @@ final class StreamFactoryTest extends UnitTestCase $factory->createStreamFromFile($fileName, 'z'); } - /** - * @test - */ + #[Test] public function createStreamFromFileWithMissingFile(): void { $unavailableFileName = Environment::getVarPath() . '/tests/' . StringUtility::getUniqueId('test_'); @@ -156,9 +137,7 @@ final class StreamFactoryTest extends UnitTestCase $factory->createStreamFromFile($unavailableFileName, 'r'); } - /** - * @test - */ + #[Test] public function createStreamFromResource(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -172,9 +151,7 @@ final class StreamFactoryTest extends UnitTestCase self::assertSame('Foo', $stream->__toString()); } - /** - * @test - */ + #[Test] public function createStreamResourceFromInvalidResource(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Http/StreamTest.php b/typo3/sysext/core/Tests/Unit/Http/StreamTest.php index 07ec60cbe23e..5115f40b9dea 100644 --- a/typo3/sysext/core/Tests/Unit/Http/StreamTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/StreamTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Http\Stream; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -37,17 +39,13 @@ final class StreamTest extends UnitTestCase return $path; } - /** - * @test - */ + #[Test] public function canInstantiateWithStreamIdentifier(): void { self::assertInstanceOf(Stream::class, new Stream('php://memory', 'wb+')); } - /** - * @test - */ + #[Test] public function canInstantiateWithStreamResource(): void { $resource = fopen('php://memory', 'wb+'); @@ -55,9 +53,7 @@ final class StreamTest extends UnitTestCase self::assertInstanceOf(Stream::class, $subject); } - /** - * @test - */ + #[Test] public function isReadableReturnsFalseIfStreamIsNotReadable(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -66,18 +62,14 @@ final class StreamTest extends UnitTestCase self::assertFalse($subject->isReadable()); } - /** - * @test - */ + #[Test] public function isWritableReturnsFalseIfStreamIsNotWritable(): void { $subject = new Stream('php://memory', 'r'); self::assertFalse($subject->isWritable()); } - /** - * @test - */ + #[Test] public function toStringRetrievesFullContentsOfStream(): void { $message = 'foo bar'; @@ -86,9 +78,7 @@ final class StreamTest extends UnitTestCase self::assertEquals($message, (string)$subject); } - /** - * @test - */ + #[Test] public function detachReturnsResource(): void { $resource = fopen('php://memory', 'wb+'); @@ -96,18 +86,14 @@ final class StreamTest extends UnitTestCase self::assertSame($resource, $subject->detach()); } - /** - * @test - */ + #[Test] public function constructorRaisesExceptionWhenPassingInvalidStreamResource(): void { $this->expectException(\InvalidArgumentException::class); new Stream([' THIS WILL NOT WORK ']); } - /** - * @test - */ + #[Test] public function toStringSerializationReturnsEmptyStringWhenStreamIsNotReadable(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -117,9 +103,7 @@ final class StreamTest extends UnitTestCase self::assertEquals('', $subject->__toString()); } - /** - * @test - */ + #[Test] public function closeClosesResource(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -132,9 +116,7 @@ final class StreamTest extends UnitTestCase self::assertFalse($isResource); } - /** - * @test - */ + #[Test] public function closeUnsetsResource(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -145,9 +127,7 @@ final class StreamTest extends UnitTestCase self::assertNull($subject->detach()); } - /** - * @test - */ + #[Test] public function closeDoesNothingAfterDetach(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -160,9 +140,7 @@ final class StreamTest extends UnitTestCase self::assertSame($resource, $detached); } - /** - * @test - */ + #[Test] public function getSizeReportsNullWhenNoResourcePresent(): void { $subject = new Stream('php://memory', 'wb+'); @@ -170,9 +148,7 @@ final class StreamTest extends UnitTestCase self::assertNull($subject->getSize()); } - /** - * @test - */ + #[Test] public function tellReportsCurrentPositionInResource(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -183,9 +159,7 @@ final class StreamTest extends UnitTestCase self::assertEquals(2, $subject->tell()); } - /** - * @test - */ + #[Test] public function tellRaisesExceptionIfResourceIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -199,9 +173,7 @@ final class StreamTest extends UnitTestCase $subject->tell(); } - /** - * @test - */ + #[Test] public function eofReportsFalseWhenNotAtEndOfStream(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -212,9 +184,7 @@ final class StreamTest extends UnitTestCase self::assertFalse($subject->eof()); } - /** - * @test - */ + #[Test] public function eofReportsTrueWhenAtEndOfStream(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -227,9 +197,7 @@ final class StreamTest extends UnitTestCase self::assertTrue($subject->eof()); } - /** - * @test - */ + #[Test] public function eofReportsTrueWhenStreamIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -241,9 +209,7 @@ final class StreamTest extends UnitTestCase self::assertTrue($subject->eof()); } - /** - * @test - */ + #[Test] public function isSeekableReturnsTrueForReadableStreams(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -253,9 +219,7 @@ final class StreamTest extends UnitTestCase self::assertTrue($subject->isSeekable()); } - /** - * @test - */ + #[Test] public function isSeekableReturnsFalseForDetachedStreams(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -266,9 +230,7 @@ final class StreamTest extends UnitTestCase self::assertFalse($subject->isSeekable()); } - /** - * @test - */ + #[Test] public function seekAdvancesToGivenOffsetOfStream(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -279,9 +241,7 @@ final class StreamTest extends UnitTestCase self::assertEquals(2, $subject->tell()); } - /** - * @test - */ + #[Test] public function rewindResetsToStartOfStream(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -293,9 +253,7 @@ final class StreamTest extends UnitTestCase self::assertEquals(0, $subject->tell()); } - /** - * @test - */ + #[Test] public function seekRaisesExceptionWhenStreamIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -308,9 +266,7 @@ final class StreamTest extends UnitTestCase $subject->seek(2); } - /** - * @test - */ + #[Test] public function isWritableReturnsFalseWhenStreamIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -321,9 +277,7 @@ final class StreamTest extends UnitTestCase self::assertFalse($subject->isWritable()); } - /** - * @test - */ + #[Test] public function writeRaisesExceptionWhenStreamIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -336,9 +290,7 @@ final class StreamTest extends UnitTestCase $subject->write('bar'); } - /** - * @test - */ + #[Test] public function isReadableReturnsFalseWhenStreamIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -349,9 +301,7 @@ final class StreamTest extends UnitTestCase self::assertFalse($subject->isReadable()); } - /** - * @test - */ + #[Test] public function readRaisesExceptionWhenStreamIsDetached(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -364,9 +314,7 @@ final class StreamTest extends UnitTestCase $subject->read(4096); } - /** - * @test - */ + #[Test] public function readReturnsEmptyStringWhenAtEndOfFile(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -379,9 +327,7 @@ final class StreamTest extends UnitTestCase self::assertEquals('', $subject->read(4096)); } - /** - * @test - */ + #[Test] public function getContentsReturnsEmptyStringIfStreamIsNotReadable(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -404,10 +350,8 @@ final class StreamTest extends UnitTestCase ]; } - /** - * @dataProvider invalidResourcesDataProvider - * @test - */ + #[DataProvider('invalidResourcesDataProvider')] + #[Test] public function attachWithNonStringNonResourceRaisesExceptionByType($resource): void { $this->expectException(\InvalidArgumentException::class); @@ -416,9 +360,7 @@ final class StreamTest extends UnitTestCase $subject->attach($resource); } - /** - * @test - */ + #[Test] public function attachWithNonStringNonResourceRaisesExceptionByString(): void { $this->expectException(\InvalidArgumentException::class); @@ -427,9 +369,7 @@ final class StreamTest extends UnitTestCase $subject->attach('foo-bar-baz'); } - /** - * @test - */ + #[Test] public function attachWithResourceAttachesResource(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -441,9 +381,7 @@ final class StreamTest extends UnitTestCase self::assertSame($resource, $reflection->getValue($subject)); } - /** - * @test - */ + #[Test] public function attachWithStringRepresentingResourceCreatesAndAttachesResource(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -456,9 +394,7 @@ final class StreamTest extends UnitTestCase self::assertEquals('FooBar', (string)$subject); } - /** - * @test - */ + #[Test] public function getContentsShouldGetFullStreamContents(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -472,9 +408,7 @@ final class StreamTest extends UnitTestCase self::assertEquals('FooBar', $subject->getContents()); } - /** - * @test - */ + #[Test] public function getContentsShouldReturnStreamContentsFromCurrentPointer(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -488,9 +422,7 @@ final class StreamTest extends UnitTestCase self::assertEquals('Bar', $subject->getContents()); } - /** - * @test - */ + #[Test] public function getMetadataReturnsAllMetadataWhenNoKeyPresent(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -502,9 +434,7 @@ final class StreamTest extends UnitTestCase self::assertEquals($expected, $subject->getMetadata()); } - /** - * @test - */ + #[Test] public function getMetadataReturnsDataForSpecifiedKey(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -517,9 +447,7 @@ final class StreamTest extends UnitTestCase self::assertEquals($expected, $subject->getMetadata('uri')); } - /** - * @test - */ + #[Test] public function getMetadataReturnsNullIfNoDataExistsForKey(): void { $fileName = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -530,9 +458,7 @@ final class StreamTest extends UnitTestCase self::assertNull($subject->getMetadata('TOTALLY_MADE_UP')); } - /** - * @test - */ + #[Test] public function getSizeReturnsStreamSize(): void { $resource = fopen(__FILE__, 'r'); diff --git a/typo3/sysext/core/Tests/Unit/Http/UploadedFileFactoryTest.php b/typo3/sysext/core/Tests/Unit/Http/UploadedFileFactoryTest.php index 297400466e3f..ae687094edf2 100644 --- a/typo3/sysext/core/Tests/Unit/Http/UploadedFileFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/UploadedFileFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\UploadedFileFactoryInterface; use Psr\Http\Message\UploadedFileInterface; use TYPO3\CMS\Core\Http\Stream; @@ -25,18 +26,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class UploadedFileFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsPsr17FactoryInterface(): void { $factory = new UploadedFileFactory(); self::assertInstanceOf(UploadedFileFactoryInterface::class, $factory); } - /** - * @test - */ + #[Test] public function createUploadedFile(): void { $stream = new Stream('php://memory'); @@ -49,9 +46,7 @@ final class UploadedFileFactoryTest extends UnitTestCase self::assertNull($uploadedFile->getClientMediaType()); } - /** - * @test - */ + #[Test] public function createUploadedFileWithParams(): void { $stream = new Stream('php://memory'); @@ -64,9 +59,7 @@ final class UploadedFileFactoryTest extends UnitTestCase self::assertSame('text/html', $uploadedFile->getClientMediaType()); } - /** - * @test - */ + #[Test] public function createUploadedFileCreateSizeFromStreamSize(): void { $stream = new Stream('php://memory', 'rw'); @@ -78,9 +71,7 @@ final class UploadedFileFactoryTest extends UnitTestCase self::assertSame(5, $uploadedFile->getSize()); } - /** - * @test - */ + #[Test] public function createUploadedFileThrowsExceptionWhenStreamSizeCanNotBeDetermined(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Http/UploadedFileTest.php b/typo3/sysext/core/Tests/Unit/Http/UploadedFileTest.php index 517eebaa70ab..f71a1930bc04 100644 --- a/typo3/sysext/core/Tests/Unit/Http/UploadedFileTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/UploadedFileTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\Stream; use TYPO3\CMS\Core\Http\UploadedFile; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -54,10 +56,8 @@ final class UploadedFileTest extends UnitTestCase ]; } - /** - * @dataProvider invalidStreamsDataProvider - * @test - */ + #[DataProvider('invalidStreamsDataProvider')] + #[Test] public function constructorRaisesExceptionOnInvalidStreamOrFile($streamOrFile): void { $this->expectException(\InvalidArgumentException::class); @@ -72,10 +72,8 @@ final class UploadedFileTest extends UnitTestCase ]; } - /** - * @dataProvider invalidErrorStatusesDataProvider - * @test - */ + #[DataProvider('invalidErrorStatusesDataProvider')] + #[Test] public function constructorRaisesExceptionOnInvalidErrorStatus($status): void { $this->expectException(\InvalidArgumentException::class); @@ -83,9 +81,7 @@ final class UploadedFileTest extends UnitTestCase new UploadedFile(fopen('php://temp', 'wb+'), 0, $status); } - /** - * @test - */ + #[Test] public function getStreamReturnsOriginalStreamObject(): void { $stream = new Stream('php://temp'); @@ -93,9 +89,7 @@ final class UploadedFileTest extends UnitTestCase self::assertSame($stream, $upload->getStream()); } - /** - * @test - */ + #[Test] public function getStreamReturnsWrappedPhpStream(): void { $stream = fopen('php://temp', 'wb+'); @@ -104,9 +98,7 @@ final class UploadedFileTest extends UnitTestCase self::assertSame($stream, $uploadStream); } - /** - * @test - */ + #[Test] public function getStreamReturnsStreamForFile(): void { $this->tmpFile = $stream = tempnam(sys_get_temp_dir(), 'phly'); @@ -116,9 +108,7 @@ final class UploadedFileTest extends UnitTestCase self::assertSame($stream, $r->getValue($uploadStream)); } - /** - * @test - */ + #[Test] public function moveToMovesFileToDesignatedPath(): void { $stream = new Stream('php://temp', 'wb+'); @@ -132,9 +122,7 @@ final class UploadedFileTest extends UnitTestCase self::assertEquals($stream->__toString(), $contents); } - /** - * @test - */ + #[Test] public function moveToRaisesExceptionForEmptyPath(): void { $stream = new Stream('php://temp', 'wb+'); @@ -145,9 +133,7 @@ final class UploadedFileTest extends UnitTestCase $upload->moveTo(''); } - /** - * @test - */ + #[Test] public function moveToCannotBeCalledMoreThanOnce(): void { $stream = new Stream('php://temp', 'wb+'); @@ -163,9 +149,7 @@ final class UploadedFileTest extends UnitTestCase $upload->moveTo($to); } - /** - * @test - */ + #[Test] public function getGetStreamRaisesExceptionAfterMove(): void { $stream = new Stream('php://temp', 'wb+'); @@ -183,8 +167,8 @@ final class UploadedFileTest extends UnitTestCase /** * see https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization, "NFD" - * @test */ + #[Test] public function nfdFileNameIsNormalized(): void { $clientFileName = hex2bin('6fcc88') . '.png'; diff --git a/typo3/sysext/core/Tests/Unit/Http/UriFactoryTest.php b/typo3/sysext/core/Tests/Unit/Http/UriFactoryTest.php index 7db7f8681212..a2e741c10bfa 100644 --- a/typo3/sysext/core/Tests/Unit/Http/UriFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/UriFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\UriFactoryInterface; use Psr\Http\Message\UriInterface; use TYPO3\CMS\Core\Http\UriFactory; @@ -27,18 +28,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class UriFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function implementsPsr17FactoryInterface(): void { $factory = new UriFactory(); self::assertInstanceOf(UriFactoryInterface::class, $factory); } - /** - * @test - */ + #[Test] public function uriIsCreated(): void { $factory = new UriFactory(); diff --git a/typo3/sysext/core/Tests/Unit/Http/UriTest.php b/typo3/sysext/core/Tests/Unit/Http/UriTest.php index 24706bc63d77..3087eac58b50 100644 --- a/typo3/sysext/core/Tests/Unit/Http/UriTest.php +++ b/typo3/sysext/core/Tests/Unit/Http/UriTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\Uri; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class UriTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorSetsAllProperties(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -46,18 +46,14 @@ final class UriTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canSerializeToStringDataProvider - */ + #[DataProvider('canSerializeToStringDataProvider')] + #[Test] public function canSerializeToString(string $uri): void { self::assertEquals($uri, (string)(new Uri($uri))); } - /** - * @test - */ + #[Test] public function withSchemeReturnsNewInstanceWithNewScheme(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -67,9 +63,7 @@ final class UriTest extends UnitTestCase self::assertEquals('http://user:pass@local.example.com:3001/foo?bar=baz#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withUserInfoReturnsNewInstanceWithProvidedUser(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -79,9 +73,7 @@ final class UriTest extends UnitTestCase self::assertEquals('https://matthew@local.example.com:3001/foo?bar=baz#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withUserInfoReturnsNewInstanceWithProvidedUserAndPassword(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -91,9 +83,7 @@ final class UriTest extends UnitTestCase self::assertEquals('https://matthew:zf2@local.example.com:3001/foo?bar=baz#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withHostReturnsNewInstanceWithProvidedHost(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -103,9 +93,7 @@ final class UriTest extends UnitTestCase self::assertEquals('https://user:pass@framework.zend.com:3001/foo?bar=baz#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withPortAndNullValueReturnsInstanceWithProvidedPort(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -124,10 +112,8 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider validPortsDataProvider - * @test - */ + #[DataProvider('validPortsDataProvider')] + #[Test] public function withPortReturnsNewInstanceWithProvidedPort($port): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -149,10 +135,8 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider invalidPortsDataProviderRange - * @test - */ + #[DataProvider('invalidPortsDataProviderRange')] + #[Test] public function withPortRaisesExceptionForInvalidPortsByRange($port): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -161,36 +145,28 @@ final class UriTest extends UnitTestCase $uri->withPort($port); } - /** - * @test - */ + #[Test] public function standardPortAndSchemeDoesNotRenderPort(): void { $subject = new Uri('http://www.example.com:80'); self::assertEquals('http://www.example.com', (string)$subject); } - /** - * @test - */ + #[Test] public function standardPortAndNoSchemeDoesRenderPort(): void { $subject = new Uri('www.example.com:80'); self::assertEquals('//www.example.com:80', (string)$subject); } - /** - * @test - */ + #[Test] public function noPortAndNoSchemeDoesNotRenderPort(): void { $subject = new Uri('www.example.com'); self::assertEquals('/www.example.com', (string)$subject); } - /** - * @test - */ + #[Test] public function withPathReturnsNewInstanceWithProvidedPath(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -200,9 +176,7 @@ final class UriTest extends UnitTestCase self::assertEquals('https://user:pass@local.example.com:3001/bar/baz?bar=baz#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withPathRaisesExceptionForInvalidPathsWithQuery(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -211,9 +185,7 @@ final class UriTest extends UnitTestCase $uri->withPath('/bar/baz?bat=quz'); } - /** - * @test - */ + #[Test] public function withPathRaisesExceptionForInvalidPathsWithFragment(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -222,9 +194,7 @@ final class UriTest extends UnitTestCase $uri->withPath('/bar/baz#bat'); } - /** - * @test - */ + #[Test] public function withQueryReturnsNewInstanceWithProvidedQuery(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -234,9 +204,7 @@ final class UriTest extends UnitTestCase self::assertEquals('https://user:pass@local.example.com:3001/foo?baz=bat#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withQueryRaisesExceptionForInvalidQueryStringsByFragment(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -245,9 +213,7 @@ final class UriTest extends UnitTestCase $uri->withQuery('baz=bat#quz'); } - /** - * @test - */ + #[Test] public function withFragmentReturnsNewInstanceWithProvidedFragment(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -267,19 +233,15 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider authorityInfoDataProvider - * @test - */ + #[DataProvider('authorityInfoDataProvider')] + #[Test] public function getAuthorityReturnsExpectedValues($url, $expected): void { $uri = new Uri($url); self::assertEquals($expected, $uri->getAuthority()); } - /** - * @test - */ + #[Test] public function canEmitOriginFormUrl(): void { $url = '/foo/bar?baz=bat'; @@ -287,9 +249,7 @@ final class UriTest extends UnitTestCase self::assertEquals($url, (string)$uri); } - /** - * @test - */ + #[Test] public function settingEmptyPathOnAbsoluteUriReturnsAnEmptyPath(): void { $uri = new Uri('http://example.com/foo'); @@ -297,27 +257,21 @@ final class UriTest extends UnitTestCase self::assertEquals('', $new->getPath()); } - /** - * @test - */ + #[Test] public function stringRepresentationOfAbsoluteUriWithNoPathSetsAnEmptyPath(): void { $uri = new Uri('http://example.com'); self::assertEquals('http://example.com', (string)$uri); } - /** - * @test - */ + #[Test] public function getPathOnOriginFormRemainsAnEmptyPath(): void { $uri = new Uri('?foo=bar'); self::assertEquals('', $uri->getPath()); } - /** - * @test - */ + #[Test] public function stringRepresentationOfOriginFormWithNoPathRetainsEmptyPath(): void { $uri = new Uri('?foo=bar'); @@ -337,27 +291,21 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider invalidConstructorUrisDataProvider - */ + #[DataProvider('invalidConstructorUrisDataProvider')] public function constructorRaisesExceptionForNonStringURI($uri): void { $this->expectException(\InvalidArgumentException::class); new Uri($uri); } - /** - * @test - */ + #[Test] public function constructorRaisesExceptionForSeriouslyMalformedURI(): void { $this->expectException(\InvalidArgumentException::class); new Uri('http:///www.php-fig.org/'); } - /** - * @test - */ + #[Test] public function withSchemeStripsOffDelimiter(): void { $uri = new Uri('http://example.com'); @@ -376,10 +324,8 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider invalidSchemesDataProvider - * @test - */ + #[DataProvider('invalidSchemesDataProvider')] + #[Test] public function constructWithUnsupportedSchemeRaisesAnException($scheme): void { $this->expectException(\InvalidArgumentException::class); @@ -387,10 +333,8 @@ final class UriTest extends UnitTestCase new Uri($scheme . '://example.com'); } - /** - * @dataProvider invalidSchemesDataProvider - * @test - */ + #[DataProvider('invalidSchemesDataProvider')] + #[Test] public function withSchemeUsingUnsupportedSchemeRaisesAnException($scheme): void { $uri = new Uri('http://example.com'); @@ -399,9 +343,7 @@ final class UriTest extends UnitTestCase $uri->withScheme($scheme); } - /** - * @test - */ + #[Test] public function withPathIsNotPrefixedWithSlashIfSetWithoutOne(): void { $uri = new Uri('http://example.com'); @@ -409,9 +351,7 @@ final class UriTest extends UnitTestCase self::assertEquals('foo/bar', $new->getPath()); } - /** - * @test - */ + #[Test] public function withEmptySchemeReturnsNewInstanceWithAbsoluteUri(): void { $uri = new Uri('https://user:pass@local.example.com:3001/foo?bar=baz#quz'); @@ -422,9 +362,7 @@ final class UriTest extends UnitTestCase self::assertEquals('//user:pass@local.example.com:3001/foo?bar=baz#quz', (string)$new); } - /** - * @test - */ + #[Test] public function withPathNotSlashPrefixedIsEmittedWithSlashDelimiterWhenUriIsCastToString(): void { $uri = new Uri('http://example.com'); @@ -432,9 +370,7 @@ final class UriTest extends UnitTestCase self::assertEquals('http://example.com/foo/bar', $new->__toString()); } - /** - * @test - */ + #[Test] public function withQueryStripsQueryPrefixIfPresent(): void { $uri = new Uri('http://example.com'); @@ -442,9 +378,7 @@ final class UriTest extends UnitTestCase self::assertEquals('foo=bar', $new->getQuery()); } - /** - * @test - */ + #[Test] public function withFragmentStripsFragmentPrefixIfPresent(): void { $uri = new Uri('http://example.com'); @@ -460,10 +394,8 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider standardSchemePortCombinationsDataProvider - * @test - */ + #[DataProvider('standardSchemePortCombinationsDataProvider')] + #[Test] public function getAuthorityOmitsPortForStandardSchemePortCombinations($scheme, $port): void { $uri = (new Uri()) @@ -473,9 +405,7 @@ final class UriTest extends UnitTestCase self::assertEquals('example.com', $uri->getAuthority()); } - /** - * @test - */ + #[Test] public function getPathIsProperlyEncoded(): void { $uri = (new Uri())->withPath('/foo^bar'); @@ -483,9 +413,7 @@ final class UriTest extends UnitTestCase self::assertEquals($expected, $uri->getPath()); } - /** - * @test - */ + #[Test] public function getPathDoesNotBecomeDoubleEncoded(): void { $uri = (new Uri())->withPath('/foo%5Ebar'); @@ -504,29 +432,23 @@ final class UriTest extends UnitTestCase ]; } - /** - * @dataProvider queryStringsForEncodingDataProvider - * @test - */ + #[DataProvider('queryStringsForEncodingDataProvider')] + #[Test] public function getQueryIsProperlyEncoded($query, $expected): void { $uri = (new Uri())->withQuery($query); self::assertEquals($expected, $uri->getQuery()); } - /** - * @dataProvider queryStringsForEncodingDataProvider - * @test - */ + #[DataProvider('queryStringsForEncodingDataProvider')] + #[Test] public function getQueryIsNotDoubleEncoded($query, $expected): void { $uri = (new Uri())->withQuery($expected); self::assertEquals($expected, $uri->getQuery()); } - /** - * @test - */ + #[Test] public function getFragmentIsProperlyEncoded(): void { $uri = (new Uri())->withFragment('/p^th?key^=`bar#b@z'); @@ -534,9 +456,7 @@ final class UriTest extends UnitTestCase self::assertEquals($expected, $uri->getFragment()); } - /** - * @test - */ + #[Test] public function getFragmentIsNotDoubleEncoded(): void { $expected = '/p%5Eth?key%5E=%60bar%23b@z'; diff --git a/typo3/sysext/core/Tests/Unit/Imaging/DimensionTest.php b/typo3/sysext/core/Tests/Unit/Imaging/DimensionTest.php index b1be384dfa9b..958ab138006c 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/DimensionTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/DimensionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\Dimension; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -36,9 +37,7 @@ final class DimensionTest extends UnitTestCase $this->subject = new Dimension(Icon::SIZE_MEDIUM); } - /** - * @test - */ + #[Test] public function getWidthReturnsValidInteger(): void { $value = $this->subject->getWidth(); @@ -46,9 +45,7 @@ final class DimensionTest extends UnitTestCase self::assertIsInt($value); } - /** - * @test - */ + #[Test] public function getHeightReturnsValidInteger(): void { $value = $this->subject->getHeight(); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/GraphicalFunctionsTest.php b/typo3/sysext/core/Tests/Unit/Imaging/GraphicalFunctionsTest.php index e307ef5007d7..4f9a11587f82 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/GraphicalFunctionsTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/GraphicalFunctionsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\GraphicalFunctions; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -285,10 +287,8 @@ final class GraphicalFunctionsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getScaleForImageDataProvider - */ + #[DataProvider('getScaleForImageDataProvider')] + #[Test] public function getScaleForImage(array $info, string $width, string $height, array $options, bool $mayScaleUp, array $expected): void { $GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_allowUpscaling'] = $mayScaleUp; @@ -297,9 +297,7 @@ final class GraphicalFunctionsTest extends UnitTestCase self::assertSame($result, $expected); } - /** - * @test - */ + #[Test] public function imageMagickIdentifyReturnsFormattedValues(): void { $file = 'myImageFile.png'; @@ -318,9 +316,7 @@ final class GraphicalFunctionsTest extends UnitTestCase self::assertEquals($result, $expected); } - /** - * @test - */ + #[Test] public function imageMagickIdentifyReturnsFormattedValuesWithOffset(): void { $file = 'myImageFile.png'; diff --git a/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/BitmapIconProviderTest.php b/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/BitmapIconProviderTest.php index 948397631ac1..1d37f17c1212 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/BitmapIconProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/BitmapIconProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging\IconProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider; @@ -44,27 +45,21 @@ final class BitmapIconProviderTest extends UnitTestCase $this->icon->setSize(Icon::SIZE_SMALL); } - /** - * @test - */ + #[Test] public function prepareIconMarkupWithRelativeSourceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, ['source' => 'fileadmin/foo.png']); self::assertEquals('<img src="fileadmin/foo.png" width="16" height="16" alt="" />', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function prepareIconMarkupWithAbsoluteSourceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, ['source' => Environment::getPublicPath() . '/fileadmin/foo.png']); self::assertEquals('<img src="fileadmin/foo.png" width="16" height="16" alt="" />', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function prepareIconMarkupEXTSourceReferenceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, ['source' => 'EXT:core/Resources/Public/Images/foo.png']); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgIconProviderTest.php b/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgIconProviderTest.php index 7128474511f4..c285e5a362c3 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgIconProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgIconProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging\IconProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider; @@ -44,36 +45,28 @@ final class SvgIconProviderTest extends UnitTestCase $this->icon->setSize(Icon::SIZE_SMALL); } - /** - * @test - */ + #[Test] public function prepareIconMarkupWithRelativeSourceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, ['source' => 'fileadmin/foo.svg']); self::assertEquals('<img src="fileadmin/foo.svg" width="16" height="16" alt="" />', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function prepareIconMarkupWithAbsoluteSourceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, ['source' => Environment::getPublicPath() . '/fileadmin/foo.svg']); self::assertEquals('<img src="fileadmin/foo.svg" width="16" height="16" alt="" />', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function getIconWithEXTSourceReferenceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, ['source' => 'EXT:core/Resources/Public/Images/foo.svg']); self::assertEquals('<img src="typo3/sysext/core/Resources/Public/Images/foo.svg" width="16" height="16" alt="" />', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function getIconWithInlineOptionReturnsCleanSvgMarkup(): void { $testFile = GeneralUtility::tempnam('svg_', '.svg'); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgSpriteIconProviderTest.php b/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgSpriteIconProviderTest.php index 227e6ac5311a..b7b49798a8bc 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgSpriteIconProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/IconProvider/SvgSpriteIconProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging\IconProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconProvider\SvgSpriteIconProvider; @@ -44,9 +45,7 @@ final class SvgSpriteIconProviderTest extends UnitTestCase $this->icon->setSize(Icon::SIZE_SMALL); } - /** - * @test - */ + #[Test] public function prepareIconMarkupWithRelativeSourceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, [ @@ -56,9 +55,7 @@ final class SvgSpriteIconProviderTest extends UnitTestCase self::assertEquals('<svg class="icon-color"><use xlink:href="fileadmin/sprites/actions.svg#actions-plus" /></svg>', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function prepareIconMarkupWithAbsoluteSourceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, [ @@ -68,9 +65,7 @@ final class SvgSpriteIconProviderTest extends UnitTestCase self::assertEquals('<svg class="icon-color"><use xlink:href="fileadmin/sprites/actions.svg#actions-plus" /></svg>', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function getIconWithEXTSourceReferenceReturnsInstanceOfIconWithCorrectMarkup(): void { $this->subject->prepareIconMarkup($this->icon, [ @@ -80,9 +75,7 @@ final class SvgSpriteIconProviderTest extends UnitTestCase self::assertEquals('<svg class="icon-color"><use xlink:href="typo3/sysext/core/Resources/Public/Images/sprites/actions.svg#actions-plus" /></svg>', $this->icon->getMarkup()); } - /** - * @test - */ + #[Test] public function getIconWithInlineOptionReturnsCleanSvgMarkup(): void { $testFile = GeneralUtility::tempnam('svg_', '.svg'); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/IconRegistryTest.php b/typo3/sysext/core/Tests/Unit/Imaging/IconRegistryTest.php index ea88bf6528c3..0fb14e29e7f6 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/IconRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/IconRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Exception; use TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider; @@ -27,18 +28,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IconRegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getDefaultIconIdentifierReturnsTheCorrectDefaultIconIdentifierString(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getDefaultIconIdentifier(); self::assertEquals('default-not-found', $result); } - /** - * @test - */ + #[Test] public function isRegisteredReturnsTrueForRegisteredIcon(): void { $subject = new IconRegistry(new NullFrontend('test'), 'BackendIcons'); @@ -46,18 +43,14 @@ final class IconRegistryTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function isRegisteredReturnsFalseForNotRegisteredIcon(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->isRegistered('my-super-unregistered-identifier'); self::assertFalse($result); } - /** - * @test - */ + #[Test] public function registerIconAddNewIconToRegistry(): void { $unregisteredIcon = 'foo-bar-unregistered'; @@ -70,9 +63,7 @@ final class IconRegistryTest extends UnitTestCase self::assertTrue($subject->isRegistered($unregisteredIcon)); } - /** - * @test - */ + #[Test] public function registerIconThrowsInvalidArgumentExceptionWithInvalidIconProvider(): void { $this->expectException(\InvalidArgumentException::class); @@ -81,9 +72,7 @@ final class IconRegistryTest extends UnitTestCase (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->registerIcon('my-super-unregistered-identifier', GeneralUtility::class); } - /** - * @test - */ + #[Test] public function getIconConfigurationByIdentifierThrowsExceptionWithUnregisteredIconIdentifier(): void { $this->expectException(Exception::class); @@ -92,9 +81,7 @@ final class IconRegistryTest extends UnitTestCase (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getIconConfigurationByIdentifier('my-super-unregistered-identifier'); } - /** - * @test - */ + #[Test] public function getIconConfigurationByIdentifierReturnsCorrectConfiguration(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getIconConfigurationByIdentifier('default-not-found'); @@ -105,17 +92,13 @@ final class IconRegistryTest extends UnitTestCase self::assertContains(IconProviderInterface::class, class_implements($result['provider'])); } - /** - * @test - */ + #[Test] public function getAllRegisteredIconIdentifiersReturnsAnArrayWithIconIdentifiers(): void { self::assertIsArray((new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getAllRegisteredIconIdentifiers()); } - /** - * @test - */ + #[Test] public function getAllRegisteredIconIdentifiersReturnsArrayWithAllRegisteredIconIdentifiers(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getAllRegisteredIconIdentifiers(); @@ -123,36 +106,28 @@ final class IconRegistryTest extends UnitTestCase self::assertContains('default-not-found', $result); } - /** - * @test - */ + #[Test] public function getIconIdentifierForFileExtensionReturnsDefaultIconIdentifierForEmptyFileExtension(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getIconIdentifierForFileExtension(''); self::assertEquals('mimetypes-other-other', $result); } - /** - * @test - */ + #[Test] public function getIconIdentifierForFileExtensionReturnsDefaultIconIdentifierForUnknownFileExtension(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getIconIdentifierForFileExtension('xyz'); self::assertEquals('mimetypes-other-other', $result); } - /** - * @test - */ + #[Test] public function getIconIdentifierForFileExtensionReturnsImageIconIdentifierForImageFileExtension(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getIconIdentifierForFileExtension('jpg'); self::assertEquals('mimetypes-media-image', $result); } - /** - * @test - */ + #[Test] public function registerFileExtensionRegisterAnIcon(): void { $subject = new IconRegistry(new NullFrontend('test'), 'BackendIcons'); @@ -161,9 +136,7 @@ final class IconRegistryTest extends UnitTestCase self::assertEquals('xyz', $result); } - /** - * @test - */ + #[Test] public function registerFileExtensionOverwriteAnExistingIcon(): void { $subject = new IconRegistry(new NullFrontend('test'), 'BackendIcons'); @@ -172,9 +145,7 @@ final class IconRegistryTest extends UnitTestCase self::assertEquals('xyz', $result); } - /** - * @test - */ + #[Test] public function registerMimeTypeIconRegisterAnIcon(): void { $subject = new IconRegistry(new NullFrontend('test'), 'BackendIcons'); @@ -183,9 +154,7 @@ final class IconRegistryTest extends UnitTestCase self::assertEquals('mimetype-foo-bar', $result); } - /** - * @test - */ + #[Test] public function registerMimeTypeIconOverwriteAnExistingIcon(): void { $subject = new IconRegistry(new NullFrontend('test'), 'BackendIcons'); @@ -194,9 +163,7 @@ final class IconRegistryTest extends UnitTestCase self::assertEquals('mimetype-foo-bar', $result); } - /** - * @test - */ + #[Test] public function getIconIdentifierForMimeTypeWithUnknownMimeTypeReturnNull(): void { $result = (new IconRegistry(new NullFrontend('test'), 'BackendIcons'))->getIconIdentifierForMimeType('bar/foo'); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/IconTest.php b/typo3/sysext/core/Tests/Unit/Imaging/IconTest.php index a04ed13ba5e8..477c52a2f678 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/IconTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/IconTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; @@ -41,41 +43,31 @@ final class IconTest extends UnitTestCase $this->subject = $iconFactory->getIcon($this->iconIdentifier, Icon::SIZE_SMALL, $this->overlayIdentifier, IconState::cast(IconState::STATE_DISABLED)); } - /** - * @test - */ + #[Test] public function renderAndCastToStringReturnsTheSameCode(): void { self::assertEquals($this->subject->render(), (string)$this->subject); } - /** - * @test - */ + #[Test] public function getIdentifierReturnsCorrectIdentifier(): void { self::assertEquals($this->iconIdentifier, $this->subject->getIdentifier()); } - /** - * @test - */ + #[Test] public function getOverlayIdentifierReturnsCorrectIdentifier(): void { self::assertEquals($this->overlayIdentifier, $this->subject->getOverlayIcon()->getIdentifier()); } - /** - * @test - */ + #[Test] public function getSizeIdentifierReturnsCorrectIdentifier(): void { self::assertEquals(Icon::SIZE_SMALL, $this->subject->getSize()); } - /** - * @test - */ + #[Test] public function getStateReturnsCorrectIdentifier(): void { self::assertTrue($this->subject->getState()->equals(IconState::STATE_DISABLED)); @@ -109,10 +101,8 @@ final class IconTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider setSizeSetsExpectedValuesDataProvider - */ + #[DataProvider('setSizeSetsExpectedValuesDataProvider')] + #[Test] public function setSizeSetsExpectedValues(string $size, array $expectedDimensions): void { $icon = new Icon(); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/ImageDimensionTest.php b/typo3/sysext/core/Tests/Unit/Imaging/ImageDimensionTest.php index e93d54d1a945..374d1c871c56 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/ImageDimensionTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/ImageDimensionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\ImageDimension; use TYPO3\CMS\Core\Imaging\ImageManipulation\Area; use TYPO3\CMS\Core\Resource\File; @@ -167,10 +169,8 @@ final class ImageDimensionTest extends UnitTestCase ]; } - /** - * @dataProvider givenProcessingInstructionsCalculatesCorrectDimensionDataProvider - * @test - */ + #[DataProvider('givenProcessingInstructionsCalculatesCorrectDimensionDataProvider')] + #[Test] public function givenProcessingInstructionsCalculatesCorrectDimension( array $processingConfiguration, ImageDimension $originalImageDimension, diff --git a/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/AreaTest.php b/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/AreaTest.php index e1861d92f374..15591e706680 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/AreaTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/AreaTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging\ImageManipulation; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\ImageManipulation\Area; use TYPO3\CMS\Core\Imaging\ImageManipulation\Ratio; use TYPO3\CMS\Core\Resource\File; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AreaTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function makeRelativeToFileReducesSizes(): void { $imageArea = new Area(50.0, 50.0, 100.0, 100.0); @@ -68,10 +68,8 @@ final class AreaTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider applyRatioRestrictsAreaToRespectRatioDataProvider - */ + #[DataProvider('applyRatioRestrictsAreaToRespectRatioDataProvider')] + #[Test] public function applyRatioRestrictsAreaToRespectRatio(array $areaSize, float $ratio): void { $area = new Area(...$areaSize); @@ -80,9 +78,7 @@ final class AreaTest extends UnitTestCase self::assertSame($areaData['width'] / $areaData['height'], $ratio); } - /** - * @test - */ + #[Test] public function applyRatioDoesNothingForFreeRatio(): void { $area = new Area(0.1, 0.1, 0.2, 0.4); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantCollectionTest.php b/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantCollectionTest.php index 399908fba1f6..f2fc57384875 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantCollectionTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging\ImageManipulation; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\ImageManipulation\Area; use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariant; use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection; @@ -68,9 +69,7 @@ final class CropVariantCollectionTest extends UnitTestCase ], ]; - /** - * @test - */ + #[Test] public function createFromJsonWorks(): void { $cropVariant1 = self::$tca; @@ -92,9 +91,7 @@ final class CropVariantCollectionTest extends UnitTestCase $assertSameValues(['default' => $cropVariant1, 'Second' => $cropVariant2], $cropVariantCollection->asArray()); } - /** - * @test - */ + #[Test] public function duplicateIdThrowsException(): void { $this->expectException(InvalidConfigurationException::class); @@ -103,17 +100,13 @@ final class CropVariantCollectionTest extends UnitTestCase new CropVariantCollection([$cropVariant1, $cropVariant2]); } - /** - * @test - */ + #[Test] public function createEmptyWorks(): void { self::assertTrue(CropVariantCollection::create('')->getCropArea()->isEmpty()); } - /** - * @test - */ + #[Test] public function castToStringReturnsJsonArrayOnEmptyInput(): void { $variants = new CropVariantCollection([]); diff --git a/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantTest.php b/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantTest.php index 89486d949123..6656905500be 100644 --- a/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantTest.php +++ b/typo3/sysext/core/Tests/Unit/Imaging/ImageManipulation/CropVariantTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Imaging\ImageManipulation; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariant; use TYPO3\CMS\Core\Imaging\ImageManipulation\InvalidConfigurationException; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -77,9 +78,7 @@ final class CropVariantTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function createFromTcaWorks(): void { $cropVariant = CropVariant::createFromConfiguration(self::$expectedConfig['id'], self::$tca); @@ -87,9 +86,7 @@ final class CropVariantTest extends UnitTestCase self::assertSame(self::$expectedConfig, $cropVariant->asArray()); } - /** - * @test - */ + #[Test] public function selectedRatioCanBeNull(): void { $tca = self::$tca; @@ -97,9 +94,7 @@ final class CropVariantTest extends UnitTestCase self::assertInstanceOf(CropVariant::class, CropVariant::createFromConfiguration(self::$expectedConfig['id'], $tca)); } - /** - * @test - */ + #[Test] public function throwsExceptionOnTypeMismatchInRatio(): void { $tca = self::$tca; diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/EmailLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/EmailLinkHandlerTest.php index b6a64440a2cf..f4f64b2cb439 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/EmailLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/EmailLinkHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\EmailLinkHandler; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -59,15 +61,13 @@ final class EmailLinkHandlerTest extends UnitTestCase } /** - * @test - * * @param string $input * @param array $expected * @param string $finalString - * - * @dataProvider resolveParametersForNonFilesDataProvider * @todo Defining the method parameter types results in test bench errors */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function resolveReturnsSplitParameters($input, $expected, $finalString): void { $subject = new EmailLinkHandler(); @@ -75,15 +75,13 @@ final class EmailLinkHandlerTest extends UnitTestCase } /** - * @test - * * @param string $input * @param array $parameters * @param string $expected - * - * @dataProvider resolveParametersForNonFilesDataProvider * @todo Defining the method parameter types results in test bench errors */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifier($input, $parameters, $expected): void { $subject = new EmailLinkHandler(); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/FileLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/FileLinkHandlerTest.php index 284efec7cc8f..4f05a5e71231 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/FileLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/FileLinkHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\FileLinkHandler; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -82,12 +84,9 @@ final class FileLinkHandlerTest extends UnitTestCase /** * Helpful to know in which if() clause the stuff gets in - * - * @test - * - * - * @dataProvider resolveParametersForFilesDataProvider */ + #[DataProvider('resolveParametersForFilesDataProvider')] + #[Test] public function resolveFileReferencesToSplitParameters(array $input, array $expected): void { $storage = $this->getMockBuilder(ResourceStorage::class) @@ -111,12 +110,9 @@ final class FileLinkHandlerTest extends UnitTestCase /** * Helpful to know in which if() clause the stuff gets in - * - * @test - * - * - * @dataProvider resolveParametersForFilesDataProvider */ + #[DataProvider('resolveParametersForFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifierForFiles(array $input, array $parameters, string $expected): void { $fileObject = $this->getMockBuilder(File::class) diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/FolderLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/FolderLinkHandlerTest.php index 8270dd0c08f6..71c8cc47b1a9 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/FolderLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/FolderLinkHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\FolderLinkHandler; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -61,10 +63,9 @@ final class FolderLinkHandlerTest extends UnitTestCase /** * Helpful to know in which if() clause the stuff gets in - * - * @test - * @dataProvider resolveParametersForFilesDataProvider */ + #[DataProvider('resolveParametersForFilesDataProvider')] + #[Test] public function resolveFileReferencesToSplitParameters(array $input, array $expected): void { $storage = $this->getMockBuilder(ResourceStorage::class) @@ -89,10 +90,9 @@ final class FolderLinkHandlerTest extends UnitTestCase /** * Helpful to know in which if() clause the stuff gets in - * - * @test - * @dataProvider resolveParametersForFilesDataProvider */ + #[DataProvider('resolveParametersForFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifierForFiles(array $input, array $parameters, string $expected): void { $folderObject = $this->getMockBuilder(Folder::class) diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/LegacyLinkNotationConverterTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/LegacyLinkNotationConverterTest.php index 5eb141034a35..671c568f0563 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/LegacyLinkNotationConverterTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/LegacyLinkNotationConverterTest.php @@ -17,6 +17,9 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; +use TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException; use TYPO3\CMS\Core\LinkHandling\LegacyLinkNotationConverter; use TYPO3\CMS\Core\LinkHandling\LinkService; use TYPO3\CMS\Core\Resource\File; @@ -134,12 +137,8 @@ final class LegacyLinkNotationConverterTest extends UnitTestCase ]; } - /** - * @test - * - * - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function resolveReturnsSplitParameters(string $input, array $expected): void { $subject = new LegacyLinkNotationConverter(); @@ -151,12 +150,10 @@ final class LegacyLinkNotationConverterTest extends UnitTestCase } /** - * @test - * - * - * @throws \TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException - * @dataProvider resolveParametersForNonFilesDataProvider + * @throws UnknownLinkHandlerException */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifier(string $input, array $parameters, string $expected): void { $subject = new LinkService(); @@ -248,12 +245,9 @@ final class LegacyLinkNotationConverterTest extends UnitTestCase /** * Helpful to know in which if() clause the stuff gets in - * - * @test - * - * - * @dataProvider resolveParametersForFilesDataProvider */ + #[DataProvider('resolveParametersForFilesDataProvider')] + #[Test] public function resolveFileReferencesToSplitParameters(string $input, array $expected): void { $storage = $this->getMockBuilder(ResourceStorage::class) @@ -296,12 +290,11 @@ final class LegacyLinkNotationConverterTest extends UnitTestCase /** * Helpful to know in which if() clause the stuff gets in * - * @test * - * - * @throws \TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException - * @dataProvider resolveParametersForFilesDataProvider + * @throws UnknownLinkHandlerException */ + #[DataProvider('resolveParametersForFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifierForFiles(string $input, array $parameters, string $expected): void { // fake methods to return proper objects @@ -365,12 +358,8 @@ final class LegacyLinkNotationConverterTest extends UnitTestCase ]; } - /** - * @test - * - * - * @dataProvider resolveThrowExceptionWithPharReferencesDataProvider - */ + #[DataProvider('resolveThrowExceptionWithPharReferencesDataProvider')] + #[Test] public function resolveThrowExceptionWithPharReferences(string $pharUrl): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/LinkServiceTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/LinkServiceTest.php index ed223edfd6c5..54bfcf4a2352 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/LinkServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/LinkServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\LinkService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -176,20 +178,16 @@ final class LinkServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function resolveReturnsSplitParameters(string $input, array $expected, string $finalString): void { $subject = new LinkService(); self::assertEquals($expected, $subject->resolve($input)); } - /** - * @test - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifier(string $input, array $parameters, string $expected): void { $subject = new LinkService(); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/PageLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/PageLinkHandlerTest.php index 01b7cb321915..71fe031de2e9 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/PageLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/PageLinkHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\PageLinkHandler; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -58,10 +60,8 @@ final class PageLinkHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function resolveReturnsSplitParameters(array $input, array $expected, string $finalString): void { $subject = new PageLinkHandler(); @@ -72,10 +72,8 @@ final class PageLinkHandlerTest extends UnitTestCase self::assertSame($expected, $subject->resolveHandlerData($input)); } - /** - * @test - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifier(array $input, array $parameters, string $expected): void { $subject = new PageLinkHandler(); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/RecordLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/RecordLinkHandlerTest.php index d3182820dbe6..058e944755c1 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/RecordLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/RecordLinkHandlerTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\RecordLinkHandler; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RecordLinkHandlerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function asStringReturnsUrl(): void { $subject = new RecordLinkHandler(); @@ -57,10 +57,8 @@ final class RecordLinkHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider missingParameterDataProvider - */ + #[DataProvider('missingParameterDataProvider')] + #[Test] public function resolveHandlerDataThrowsExceptionIfParameterIsMissing(array $parameters): void { $this->expectException(\InvalidArgumentException::class); @@ -70,10 +68,8 @@ final class RecordLinkHandlerTest extends UnitTestCase $subject->resolveHandlerData($parameters); } - /** - * @test - * @dataProvider missingParameterDataProvider - */ + #[DataProvider('missingParameterDataProvider')] + #[Test] public function asStringThrowsExceptionIfParameterIsMissing(array $parameters): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/TelephoneLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/TelephoneLinkHandlerTest.php index 7edf58338960..6d2ad3f6a307 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/TelephoneLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/TelephoneLinkHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\TelephoneLinkHandler; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -79,20 +81,16 @@ final class TelephoneLinkHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function resolveReturnsSplitParameters(array $input, array $expected): void { $subject = new TelephoneLinkHandler(); self::assertEquals($expected, $subject->resolveHandlerData($input)); } - /** - * @test - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifier(array $input, array $parameters, string $expected): void { $subject = new TelephoneLinkHandler(); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/TypoLinkCodecServiceTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/TypoLinkCodecServiceTest.php index 7c590f26ca43..da64d857e6b8 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/TypoLinkCodecServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/TypoLinkCodecServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\TypoLinkCodecService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,10 +32,8 @@ final class TypoLinkCodecServiceTest extends UnitTestCase $this->subject = new TypoLinkCodecService(); } - /** - * @test - * @dataProvider encodeReturnsExpectedResultDataProvider - */ + #[DataProvider('encodeReturnsExpectedResultDataProvider')] + #[Test] public function encodeReturnsExpectedResult(array $parts, string $expected): void { self::assertSame($expected, $this->subject->encode($parts)); @@ -72,10 +72,8 @@ final class TypoLinkCodecServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeReturnsExpectedResultDataProvider - */ + #[DataProvider('decodeReturnsExpectedResultDataProvider')] + #[Test] public function decodeReturnsExpectedResult(string $typoLink, array $expected): void { self::assertSame($expected, $this->subject->decode($typoLink)); diff --git a/typo3/sysext/core/Tests/Unit/LinkHandling/UrlLinkHandlerTest.php b/typo3/sysext/core/Tests/Unit/LinkHandling/UrlLinkHandlerTest.php index 97d655420618..41dabcb7d498 100644 --- a/typo3/sysext/core/Tests/Unit/LinkHandling/UrlLinkHandlerTest.php +++ b/typo3/sysext/core/Tests/Unit/LinkHandling/UrlLinkHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\LinkHandling; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\LinkHandling\LinkHandlingInterface; use TYPO3\CMS\Core\LinkHandling\UrlLinkHandler; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -135,31 +137,23 @@ final class UrlLinkHandlerTest extends UnitTestCase ]; } - /** - * @test - * - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function resolveReturnsSplitParameters(array $input, array $expected, string $finalString): void { $subject = new UrlLinkHandler(); self::assertEquals($expected, $subject->resolveHandlerData($input)); } - /** - * @test - * - * @dataProvider resolveParametersForNonFilesDataProvider - */ + #[DataProvider('resolveParametersForNonFilesDataProvider')] + #[Test] public function splitParametersToUnifiedIdentifier(array $input, array $parameters, string $expected): void { $subject = new UrlLinkHandler(); self::assertEquals($expected, $subject->asString($parameters)); } - /** - * @test - */ + #[Test] public function getDefaultSchemeForNoSchemeInConfigurationReturnsFallbackScheme(): void { unset($GLOBALS['TYPO3_CONF_VARS']['SYS']['defaultScheme']); @@ -169,9 +163,7 @@ final class UrlLinkHandlerTest extends UnitTestCase self::assertSame(LinkHandlingInterface::DEFAULT_SCHEME, $result); } - /** - * @test - */ + #[Test] public function getDefaultSchemeForEmptySchemeInConfigurationReturnsFallbackScheme(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['defaultScheme'] = ''; @@ -181,9 +173,7 @@ final class UrlLinkHandlerTest extends UnitTestCase self::assertSame(LinkHandlingInterface::DEFAULT_SCHEME, $result); } - /** - * @test - */ + #[Test] public function getDefaultSchemeForSchemeInConfigurationReturnsSchemeFromConfiguration(): void { $scheme = 'https'; diff --git a/typo3/sysext/core/Tests/Unit/Localization/DateFormatterTest.php b/typo3/sysext/core/Tests/Unit/Localization/DateFormatterTest.php index 001bfe89ac08..179ef113be1f 100644 --- a/typo3/sysext/core/Tests/Unit/Localization/DateFormatterTest.php +++ b/typo3/sysext/core/Tests/Unit/Localization/DateFormatterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Localization; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\DateFormatter; use TYPO3\CMS\Core\Localization\Locale; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -154,10 +156,8 @@ final class DateFormatterTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider formatDateProvider - */ + #[DataProvider('formatDateProvider')] + #[Test] public function formatFormatsCorrectly(string $expected, mixed $format, string|Locale|null $locale = 'C'): void { $input = new \DateTimeImmutable('2023-02-02 13:05:00'); diff --git a/typo3/sysext/core/Tests/Unit/Localization/LocaleTest.php b/typo3/sysext/core/Tests/Unit/Localization/LocaleTest.php index 5d13a3b773e7..7612b60b759c 100644 --- a/typo3/sysext/core/Tests/Unit/Localization/LocaleTest.php +++ b/typo3/sysext/core/Tests/Unit/Localization/LocaleTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Localization; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\Locale; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LocaleTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function localeWithJustLanguageCodeSanitizesIncomingValuesProperly(): void { $subject = new Locale('en'); @@ -63,9 +62,7 @@ final class LocaleTest extends UnitTestCase self::assertEquals('en', (string)$subject); } - /** - * @test - */ + #[Test] public function localeWithLanguageAndScriptCodeSanitizesIncomingValuesProperly(): void { $subject = new Locale('zh_HANS'); @@ -75,9 +72,7 @@ final class LocaleTest extends UnitTestCase self::assertEquals('zh-Hans', (string)$subject); } - /** - * @test - */ + #[Test] public function localeWithLanguageAndScriptCodeAndCountryCodeSanitizesIncomingValuesProperly(): void { $subject = new Locale('zh_HANS_CN'); @@ -87,9 +82,7 @@ final class LocaleTest extends UnitTestCase self::assertEquals('zh-Hans-CN', (string)$subject); } - /** - * @test - */ + #[Test] public function variousCombinationsOfLanguageAndCountryCodeReturnsSanitizedValues(): void { $subject = new Locale('fr_CA'); @@ -104,9 +97,7 @@ final class LocaleTest extends UnitTestCase self::assertEquals('de-AT', (string)$subject); } - /** - * @test - */ + #[Test] public function dependenciesAreSetAndRetrievedCorrectly(): void { $subject = new Locale('fr_CA', ['fr', 'en']); diff --git a/typo3/sysext/core/Tests/Unit/Localization/LocalesTest.php b/typo3/sysext/core/Tests/Unit/Localization/LocalesTest.php index 69fd2cb2686d..39b37dddf253 100644 --- a/typo3/sysext/core/Tests/Unit/Localization/LocalesTest.php +++ b/typo3/sysext/core/Tests/Unit/Localization/LocalesTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Localization; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\Locales; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -42,9 +44,7 @@ final class LocalesTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function isValidLanguageKeyAlsoDetectsRegionSpecificKeys(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['localization']['locales']['user'] = [ @@ -66,9 +66,7 @@ final class LocalesTest extends UnitTestCase self::assertTrue($locales->isValidLanguageKey('default')); } - /** - * @test - */ + #[Test] public function getLocaleDependenciesResolvesAutomaticAndDefinedDependencies(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['localization']['locales']['user'] = [ @@ -121,10 +119,8 @@ final class LocalesTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider browserLanguageDetectionWorksDataProvider - */ + #[DataProvider('browserLanguageDetectionWorksDataProvider')] + #[Test] public function browserLanguageDetectionWorks(string $acceptLanguageHeader, string $expected): void { $detectedLanguage = (new Locales())->getPreferredClientLanguage( @@ -133,9 +129,7 @@ final class LocalesTest extends UnitTestCase self::assertSame($expected, $detectedLanguage); } - /** - * @test - */ + #[Test] public function setSystemLocaleFromSiteLanguageWithoutLocaleDoesNotSetLocale(): void { $site = $this->createSiteWithDefaultLanguage(''); @@ -146,9 +140,7 @@ final class LocalesTest extends UnitTestCase self::assertEquals($this->originalLocale, $currentLocale); } - /** - * @test - */ + #[Test] public function setSystemLocaleFromSiteLanguageWithProperLocaleSetsLocale(): void { $locale = 'en_US'; diff --git a/typo3/sysext/core/Tests/Unit/Localization/LocalizationFactoryTest.php b/typo3/sysext/core/Tests/Unit/Localization/LocalizationFactoryTest.php index 23ecfe0c3d94..c892a563b2a2 100644 --- a/typo3/sysext/core/Tests/Unit/Localization/LocalizationFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Localization/LocalizationFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Localization; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Localization\Exception\FileNotFoundException; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LocalizationFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getParsedDataCallsLocalizationOverrideIfFileNotFoundExceptionIsThrown(): void { $languageStoreMock = $this->createMock(LanguageStore::class); @@ -54,9 +53,7 @@ final class LocalizationFactoryTest extends UnitTestCase ->getParsedData(__DIR__ . '/Fixtures/locallang.invalid', 'default'); } - /** - * @test - */ + #[Test] public function ensureLocalizationIsProperlyCached(): void { $packageManagerMock = $this->createMock(PackageManager::class); diff --git a/typo3/sysext/core/Tests/Unit/Localization/Parser/XliffParserTest.php b/typo3/sysext/core/Tests/Unit/Localization/Parser/XliffParserTest.php index 14fc689e655d..1385ae7395c3 100644 --- a/typo3/sysext/core/Tests/Unit/Localization/Parser/XliffParserTest.php +++ b/typo3/sysext/core/Tests/Unit/Localization/Parser/XliffParserTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Localization\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\Parser\XliffParser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class XliffParserTest extends UnitTestCase { - /** - * @test - * @dataProvider canParseXliffDataProvider - */ + #[DataProvider('canParseXliffDataProvider')] + #[Test] public function canParseXliff(string $languageKey, array $expectedLabels, bool $requireApprovedLocalizations): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['lang']['requireApprovedLocalizations'] = $requireApprovedLocalizations; diff --git a/typo3/sysext/core/Tests/Unit/Locking/FileLockStrategyTest.php b/typo3/sysext/core/Tests/Unit/Locking/FileLockStrategyTest.php index 02c7f6ef5a7a..b1f5d1bb1a9b 100644 --- a/typo3/sysext/core/Tests/Unit/Locking/FileLockStrategyTest.php +++ b/typo3/sysext/core/Tests/Unit/Locking/FileLockStrategyTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Locking; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Locking\FileLockStrategy; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class FileLockStrategyTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorCreatesLockDirectoryIfNotExisting(): void { GeneralUtility::rmdir(Environment::getVarPath() . '/' . FileLockStrategy::FILE_LOCK_FOLDER, true); @@ -37,26 +36,20 @@ final class FileLockStrategyTest extends UnitTestCase self::assertDirectoryExists(Environment::getVarPath() . '/' . FileLockStrategy::FILE_LOCK_FOLDER); } - /** - * @test - */ + #[Test] public function constructorSetsFilePathToExpectedValue(): void { $lock = $this->getAccessibleMock(FileLockStrategy::class, null, ['999999999']); self::assertSame(Environment::getVarPath() . '/' . FileLockStrategy::FILE_LOCK_FOLDER . 'flock_' . md5('999999999'), $lock->_get('filePath')); } - /** - * @test - */ + #[Test] public function getPriorityReturnsDefaultPriority(): void { self::assertEquals(FileLockStrategy::DEFAULT_PRIORITY, FileLockStrategy::getPriority()); } - /** - * @test - */ + #[Test] public function setPriority(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['locking']['strategies'][FileLockStrategy::class]['priority'] = 10; diff --git a/typo3/sysext/core/Tests/Unit/Locking/LockFactoryTest.php b/typo3/sysext/core/Tests/Unit/Locking/LockFactoryTest.php index a2bb9df22d44..ae7f2126591c 100644 --- a/typo3/sysext/core/Tests/Unit/Locking/LockFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Locking/LockFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Locking; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Locking\Exception\LockCreateException; use TYPO3\CMS\Core\Locking\FileLockStrategy; @@ -61,18 +62,14 @@ final class LockFactoryTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function addLockingStrategyAddsTheClassNameToTheInternalArray(): void { $this->mockFactory->addLockingStrategy(DummyLock::class); self::assertArrayHasKey(DummyLock::class, $this->mockFactory->_get('lockingStrategy')); } - /** - * @test - */ + #[Test] public function addLockingStrategyThrowsExceptionIfInterfaceIsNotImplemented(): void { $this->expectException(\InvalidArgumentException::class); @@ -81,9 +78,7 @@ final class LockFactoryTest extends UnitTestCase $this->mockFactory->addLockingStrategy(\stdClass::class); } - /** - * @test - */ + #[Test] public function getLockerReturnsExpectedClass(): void { $this->mockFactory->_set('lockingStrategy', [FileLockStrategy::class => true, DummyLock::class => true]); @@ -94,9 +89,7 @@ final class LockFactoryTest extends UnitTestCase self::assertInstanceOf(FileLockStrategy::class, $locker); } - /** - * @test - */ + #[Test] public function getLockerReturnsClassWithHighestPriority(): void { $this->mockFactory->_set('lockingStrategy', [SemaphoreLockStrategy::class => true, DummyLock::class => true]); @@ -104,9 +97,7 @@ final class LockFactoryTest extends UnitTestCase self::assertInstanceOf(DummyLock::class, $locker); } - /** - * @test - */ + #[Test] public function setPriorityGetLockerReturnsClassWithHighestPriority(): void { $lowestValue = min([ @@ -123,9 +114,7 @@ final class LockFactoryTest extends UnitTestCase unset($GLOBALS['TYPO3_CONF_VARS']['SYS']['locking']['strategies'][SemaphoreLockStrategy::class]['priority']); } - /** - * @test - */ + #[Test] public function getLockerThrowsExceptionIfNoMatchFound(): void { $this->expectException(LockCreateException::class); diff --git a/typo3/sysext/core/Tests/Unit/Locking/SemaphoreLockStrategyTest.php b/typo3/sysext/core/Tests/Unit/Locking/SemaphoreLockStrategyTest.php index f7f798da5b2a..3d079f9ea18a 100644 --- a/typo3/sysext/core/Tests/Unit/Locking/SemaphoreLockStrategyTest.php +++ b/typo3/sysext/core/Tests/Unit/Locking/SemaphoreLockStrategyTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Locking; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Locking\SemaphoreLockStrategy; use TYPO3\CMS\Core\Locking\SimpleLockStrategy; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class SemaphoreLockStrategyTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function acquireGetsSemaphore(): void { $lock = new SemaphoreLockStrategy('99999'); @@ -37,17 +36,13 @@ final class SemaphoreLockStrategyTest extends UnitTestCase $lock->destroy(); } - /** - * @test - */ + #[Test] public function getPriorityReturnsDefaultPriority(): void { self::assertEquals(SimpleLockStrategy::DEFAULT_PRIORITY, SimpleLockStrategy::getPriority()); } - /** - * @test - */ + #[Test] public function setPriority(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['locking']['strategies'][SemaphoreLockStrategy::class]['priority'] = 10; diff --git a/typo3/sysext/core/Tests/Unit/Locking/SimpleLockStrategyTest.php b/typo3/sysext/core/Tests/Unit/Locking/SimpleLockStrategyTest.php index 72a6a5cfabec..c63eb0fd8f4e 100644 --- a/typo3/sysext/core/Tests/Unit/Locking/SimpleLockStrategyTest.php +++ b/typo3/sysext/core/Tests/Unit/Locking/SimpleLockStrategyTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Locking; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Locking\SemaphoreLockStrategy; use TYPO3\CMS\Core\Locking\SimpleLockStrategy; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SimpleLockStrategyTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorCreatesLockDirectoryIfNotExisting(): void { GeneralUtility::rmdir(Environment::getVarPath() . '/' . SimpleLockStrategy::FILE_LOCK_FOLDER, true); @@ -35,18 +35,14 @@ final class SimpleLockStrategyTest extends UnitTestCase self::assertDirectoryExists(Environment::getVarPath() . '/' . SimpleLockStrategy::FILE_LOCK_FOLDER); } - /** - * @test - */ + #[Test] public function constructorSetsResourceToPathWithIdIfUsingSimpleLocking(): void { $lock = $this->getAccessibleMock(SimpleLockStrategy::class, null, ['999999999']); self::assertSame(Environment::getVarPath() . '/' . SimpleLockStrategy::FILE_LOCK_FOLDER . 'simple_' . md5('999999999'), $lock->_get('filePath')); } - /** - * @test - */ + #[Test] public function acquireFixesPermissionsOnLockFile(): void { if (Environment::isWindows()) { @@ -67,9 +63,7 @@ final class SimpleLockStrategyTest extends UnitTestCase self::assertEquals('0777', $resultFilePermissions); } - /** - * @test - */ + #[Test] public function releaseRemovesLockfileInTypo3TempLocks(): void { $lock = $this->getAccessibleMock(SimpleLockStrategy::class, null, ['999999999']); @@ -91,10 +85,8 @@ final class SimpleLockStrategyTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider releaseDoesNotRemoveFilesNotWithinTypo3TempLocksDirectoryDataProvider - */ + #[DataProvider('releaseDoesNotRemoveFilesNotWithinTypo3TempLocksDirectoryDataProvider')] + #[Test] public function releaseDoesNotRemoveFilesNotWithinTypo3TempLocksDirectory(string $file): void { // Create test file @@ -112,17 +104,13 @@ final class SimpleLockStrategyTest extends UnitTestCase self::assertTrue($fileExists); } - /** - * @test - */ + #[Test] public function getPriorityReturnsDefaultPriority(): void { self::assertEquals(SemaphoreLockStrategy::DEFAULT_PRIORITY, SemaphoreLockStrategy::getPriority()); } - /** - * @test - */ + #[Test] public function setPriority(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['locking']['strategies'][SimpleLockStrategy::class]['priority'] = 10; diff --git a/typo3/sysext/core/Tests/Unit/Log/LogLevelTest.php b/typo3/sysext/core/Tests/Unit/Log/LogLevelTest.php index 37ce53de281a..53ac79e8683f 100644 --- a/typo3/sysext/core/Tests/Unit/Log/LogLevelTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/LogLevelTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\InvalidArgumentException; use TYPO3\CMS\Core\Log\LogLevel; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LogLevelTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isValidLevelValidatesValidLevels(): void { $validLevels = [0, 1, 2, 3, 4, 5, 6, 7]; @@ -34,9 +34,7 @@ final class LogLevelTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function isValidLevelDoesNotValidateInvalidLevels(): void { $invalidLevels = [-1, 8]; @@ -56,10 +54,8 @@ final class LogLevelTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isValidLevelThrowsExceptionOnInvalidLevelIfAskedToDoSoDataProvider - */ + #[DataProvider('isValidLevelThrowsExceptionOnInvalidLevelIfAskedToDoSoDataProvider')] + #[Test] public function isValidLevelThrowsExceptionOnInvalidLevelIfAskedToDoSo($inputValue): void { $this->expectException(InvalidArgumentException::class); @@ -68,9 +64,7 @@ final class LogLevelTest extends UnitTestCase LogLevel::validateLevel($inputValue); } - /** - * @test - */ + #[Test] public function normalizeLevelConvertsValidLevelFromStringToInteger(): void { self::assertEquals(7, LogLevel::normalizeLevel('debug')); @@ -110,10 +104,8 @@ final class LogLevelTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider atLeastReturnsCorrectListOfLevelsDataProvider - */ + #[DataProvider('atLeastReturnsCorrectListOfLevelsDataProvider')] + #[Test] public function atLeastReturnsCorrectListOfLevels(string $level, array $expected): void { self::assertSame($expected, LogLevel::atLeast($level)); diff --git a/typo3/sysext/core/Tests/Unit/Log/LogManagerTest.php b/typo3/sysext/core/Tests/Unit/Log/LogManagerTest.php index 057dc15edce7..652a442e2daa 100644 --- a/typo3/sysext/core/Tests/Unit/Log/LogManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/LogManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\Logger; use TYPO3\CMS\Core\Log\LogManager; @@ -27,33 +28,25 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LogManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function logManagerReturnsLoggerWhenRequestedWithGetLogger(): void { self::assertInstanceOf(Logger::class, (new LogManager())->getLogger('test')); } - /** - * @test - */ + #[Test] public function logManagerTurnsUnderScoreStyleLoggerNamesIntoDotStyleLoggerNames(): void { self::assertSame('test.a.b', (new LogManager())->getLogger('test_a_b')->getName()); } - /** - * @test - */ + #[Test] public function logManagerTurnsNamespaceStyleLoggerNamesIntoDotStyleLoggerNames(): void { self::assertSame('test.a.b', (new LogManager())->getLogger('test\\a\\b')->getName()); } - /** - * @test - */ + #[Test] public function managerReturnsSameLoggerOnRepeatedRequest(): void { $loggerName = StringUtility::getUniqueId('test.core.log'); @@ -64,9 +57,7 @@ final class LogManagerTest extends UnitTestCase self::assertSame($logger1, $logger2); } - /** - * @test - */ + #[Test] public function configuresLoggerWithConfiguredWriter(): void { $component = 'test'; @@ -82,9 +73,7 @@ final class LogManagerTest extends UnitTestCase self::assertInstanceOf($writer, $writers[$level][0]); } - /** - * @test - */ + #[Test] public function configuresLoggerWithConfiguredProcessor(): void { $component = 'test'; diff --git a/typo3/sysext/core/Tests/Unit/Log/LogRecordTest.php b/typo3/sysext/core/Tests/Unit/Log/LogRecordTest.php index 852f1c6007c3..db758e8ebbbc 100644 --- a/typo3/sysext/core/Tests/Unit/Log/LogRecordTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/LogRecordTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\InvalidArgumentException; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\LogRecord; @@ -40,9 +41,7 @@ final class LogRecordTest extends UnitTestCase return $record; } - /** - * @test - */ + #[Test] public function constructorSetsCorrectComponent(): void { $component = 'test.core.log'; @@ -50,9 +49,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($component, $record->getComponent()); } - /** - * @test - */ + #[Test] public function constructorSetsCorrectLogLevel(): void { $logLevel = LogLevel::CRITICAL; @@ -60,9 +57,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($logLevel, $record->getLevel()); } - /** - * @test - */ + #[Test] public function constructorSetsCorrectMessage(): void { $logMessage = 'test message'; @@ -70,9 +65,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($logMessage, $record->getMessage()); } - /** - * @test - */ + #[Test] public function constructorSetsCorrectData(): void { $dataArray = [ @@ -82,9 +75,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($dataArray, $record->getData()); } - /** - * @test - */ + #[Test] public function setComponentSetsComponent(): void { $record = $this->getRecord(); @@ -92,9 +83,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($component, $record->setComponent($component)->getComponent()); } - /** - * @test - */ + #[Test] public function setLevelSetsLevel(): void { $record = $this->getRecord(); @@ -102,9 +91,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($level, $record->setLevel($level)->getLevel()); } - /** - * @test - */ + #[Test] public function setLevelValidatesLevel(): void { $this->expectException(InvalidArgumentException::class); @@ -114,9 +101,7 @@ final class LogRecordTest extends UnitTestCase $record->setLevel('foo'); } - /** - * @test - */ + #[Test] public function setMessageSetsMessage(): void { $record = $this->getRecord(); @@ -124,9 +109,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($message, $record->setMessage($message)->getMessage()); } - /** - * @test - */ + #[Test] public function setCreatedSetsCreated(): void { $record = $this->getRecord(); @@ -134,9 +117,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($created, $record->setCreated($created)->getCreated()); } - /** - * @test - */ + #[Test] public function setRequestIdSetsRequestId(): void { $record = $this->getRecord(); @@ -144,9 +125,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($requestId, $record->setRequestId($requestId)->getRequestId()); } - /** - * @test - */ + #[Test] public function toArrayReturnsCorrectValues(): void { $component = 'test.core.log'; @@ -161,9 +140,7 @@ final class LogRecordTest extends UnitTestCase self::assertEquals($data, $recordArray['data']); } - /** - * @test - */ + #[Test] public function toStringIncludesDataAsJson(): void { $dataArray = ['foo' => 'bar']; @@ -171,9 +148,7 @@ final class LogRecordTest extends UnitTestCase self::assertStringContainsString(json_encode($dataArray), (string)$record); } - /** - * @test - */ + #[Test] public function toStringIncludesExceptionDataAsJson(): void { $dataArray = ['exception' => new \Exception('foo', 1476049451)]; diff --git a/typo3/sysext/core/Tests/Unit/Log/LoggerTest.php b/typo3/sysext/core/Tests/Unit/Log/LoggerTest.php index 26396d010a8a..6ffff0e681ef 100644 --- a/typo3/sysext/core/Tests/Unit/Log/LoggerTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/LoggerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\Logger; use TYPO3\CMS\Core\Log\LogRecord; @@ -27,18 +29,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LoggerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getNameGetsLoggerName(): void { $logger = new Logger('test.core.log'); self::assertSame('test.core.log', $logger->getName()); } - /** - * @test - */ + #[Test] public function loggerDoesNotLogRecordsLessCriticalThanLogLevel(): void { $logger = new Logger('test.core.log'); @@ -49,9 +47,7 @@ final class LoggerTest extends UnitTestCase self::assertEmpty($writer->getRecords()); } - /** - * @test - */ + #[Test] public function loggerCallsProcessor(): void { $component = 'test.core.log'; @@ -68,9 +64,7 @@ final class LoggerTest extends UnitTestCase $logger->warning($message); } - /** - * @test - */ + #[Test] public function loggerLogsRecord(): void { $logger = new Logger('test.core.log'); @@ -82,9 +76,7 @@ final class LoggerTest extends UnitTestCase $logger->warning('test'); } - /** - * @test - */ + #[Test] public function loggerLogsRecordsAtLeastAsCriticalAsLogLevel(): void { $logger = new Logger('test.core.log'); @@ -109,10 +101,8 @@ final class LoggerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider loggerLogsRecordsThroughShorthandMethodDataProvider - */ + #[DataProvider('loggerLogsRecordsThroughShorthandMethodDataProvider')] + #[Test] public function loggerLogsRecordsThroughShorthandMethod(string $shorthandMethod): void { $logger = new Logger('test.core.log'); @@ -122,9 +112,7 @@ final class LoggerTest extends UnitTestCase self::assertNotEmpty($writer->getRecords()); } - /** - * @test - */ + #[Test] public function loggerLogsRecordsMoreCriticalThanLogLevel(): void { $logger = new Logger('test.core.log'); @@ -135,9 +123,7 @@ final class LoggerTest extends UnitTestCase self::assertNotEmpty($writer->getRecords()); } - /** - * @test - */ + #[Test] public function addWriterAddsWriterToTheSpecifiedLevel(): void { $logger = new Logger('test.core.log'); @@ -147,9 +133,7 @@ final class LoggerTest extends UnitTestCase self::assertContains($writer, $writers[LogLevel::NOTICE]); } - /** - * @test - */ + #[Test] public function addWriterAddsWriterAlsoToHigherLevelsThanSpecified(): void { $logger = new Logger('test.core.log'); diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php index 5f5f61e6e0d7..315c74846f0b 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Log\Processor\Fixtures\TestingMemoryProcessor; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractMemoryProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setRealMemoryUsageSetsRealMemoryUsage(): void { $processor = new TestingMemoryProcessor(); @@ -32,9 +31,7 @@ final class AbstractMemoryProcessorTest extends UnitTestCase self::assertFalse($processor->getRealMemoryUsage()); } - /** - * @test - */ + #[Test] public function setFormatSizeSetsFormatSize(): void { $processor = new TestingMemoryProcessor(); diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractProcessorTest.php index 2ed4ea9e5588..21950d6e497c 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\Exception\InvalidLogProcessorConfigurationException; use TYPO3\CMS\Core\Log\Logger; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function processorRefusesInvalidConfigurationOptions(): void { $this->expectException(InvalidLogProcessorConfigurationException::class); @@ -43,9 +42,7 @@ final class AbstractProcessorTest extends UnitTestCase GeneralUtility::makeInstance(ProcessorFixture::class, $invalidConfiguration); } - /** - * @test - */ + #[Test] public function loggerExecutesProcessors(): void { $logger = new Logger('test.core.log'); diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/IntrospectionProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/IntrospectionProcessorTest.php index 519e63559dec..dbd357d4d297 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/IntrospectionProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/IntrospectionProcessorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\LogRecord; @@ -64,9 +66,7 @@ final class IntrospectionProcessorTest extends UnitTestCase $this->processor = $this->getAccessibleMock(IntrospectionProcessor::class, ['getDebugBacktrace']); } - /** - * @test - */ + #[Test] public function introspectionProcessorAddsLastBacktraceItemToLogRecord(): void { $this->processor->method('getDebugBacktrace')->willReturn($this->dummyBacktrace); @@ -79,9 +79,7 @@ final class IntrospectionProcessorTest extends UnitTestCase self::assertEquals($this->dummyBacktrace[0]['function'], $logRecord['data']['function']); } - /** - * @test - */ + #[Test] public function introspectionProcessorShiftsLogRelatedFunctionsFromBacktrace(): void { $dummyBacktrace = $this->dummyBacktrace; @@ -123,10 +121,8 @@ final class IntrospectionProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider introspectionProcessorShiftsGivenNumberOfEntriesFromBacktraceDataProvider - */ + #[DataProvider('introspectionProcessorShiftsGivenNumberOfEntriesFromBacktraceDataProvider')] + #[Test] public function introspectionProcessorShiftsGivenNumberOfEntriesFromBacktrace($number): void { $this->processor->method('getDebugBacktrace')->willReturn($this->dummyBacktrace); @@ -141,9 +137,7 @@ final class IntrospectionProcessorTest extends UnitTestCase self::assertEquals($this->dummyBacktrace[$number]['function'], $logRecord['data']['function']); } - /** - * @test - */ + #[Test] public function introspectionProcessorLeavesOneEntryIfGivenNumberOfEntriesFromBacktraceIsGreaterOrEqualNumberOfBacktraceLevels(): void { $this->processor->method('getDebugBacktrace')->willReturn($this->dummyBacktrace); @@ -158,9 +152,7 @@ final class IntrospectionProcessorTest extends UnitTestCase self::assertEquals($this->dummyBacktrace[3]['function'], $logRecord['data']['function']); } - /** - * @test - */ + #[Test] public function appendFullBacktraceAddsTheFullBacktraceAsStringToTheLog(): void { $this->processor->method('getDebugBacktrace')->willReturn($this->dummyBacktrace); diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryPeakUsageProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryPeakUsageProcessorTest.php index d7aaa0e3e425..19293c1223b5 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryPeakUsageProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryPeakUsageProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\LogRecord; use TYPO3\CMS\Core\Log\Processor\MemoryPeakUsageProcessor; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MemoryPeakUsageProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function memoryPeakUsageProcessorAddsMemoryPeakUsageDataToLogRecord(): void { $logRecord = new LogRecord('test.core.log', LogLevel::DEBUG, 'test'); diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryUsageProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryUsageProcessorTest.php index e92d2e07c4f1..75e0b7e1275f 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryUsageProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/MemoryUsageProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\LogRecord; use TYPO3\CMS\Core\Log\Processor\MemoryUsageProcessor; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MemoryUsageProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function memoryUsageProcessorAddsMemoryUsageDataToLogRecord(): void { $logRecord = new LogRecord('test.core.log', LogLevel::DEBUG, 'test'); diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/WebProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/WebProcessorTest.php index 03aa07829116..b26930009eb3 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/WebProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/WebProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Log\LogRecord; use TYPO3\CMS\Core\Log\Processor\WebProcessor; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class WebProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function webProcessorAddsWebDataToLogRecord(): void { $_SERVER['REQUEST_URI'] = ''; diff --git a/typo3/sysext/core/Tests/Unit/Log/Writer/AbstractWriterTest.php b/typo3/sysext/core/Tests/Unit/Log/Writer/AbstractWriterTest.php index 59068c5ef9d9..0dc198c1fea9 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Writer/AbstractWriterTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Writer/AbstractWriterTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Writer; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Log\Exception\InvalidLogWriterConfigurationException; use TYPO3\CMS\Core\Tests\Unit\Log\Fixtures\WriterFixture; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractWriterTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructThrowsExceptionWithInvalidConfigurationOption(): void { $this->expectException(InvalidLogWriterConfigurationException::class); diff --git a/typo3/sysext/core/Tests/Unit/Log/Writer/DatabaseWriterTest.php b/typo3/sysext/core/Tests/Unit/Log/Writer/DatabaseWriterTest.php index 5a1f3d40c056..3d5c869d5092 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Writer/DatabaseWriterTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Writer/DatabaseWriterTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Writer; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Log\Writer\DatabaseWriter; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseWriterTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getTableReturnsPreviouslySetTable(): void { $logTable = StringUtility::getUniqueId('logtable_'); diff --git a/typo3/sysext/core/Tests/Unit/Log/Writer/FileWriterTest.php b/typo3/sysext/core/Tests/Unit/Log/Writer/FileWriterTest.php index bee01e3d8d5f..a8293cb7192e 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Writer/FileWriterTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Writer/FileWriterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Writer; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LogLevel; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Log\Logger; @@ -69,9 +71,7 @@ final class FileWriterTest extends UnitTestCase return $this->testRoot . $this->logFileDirectory . '/' . $prependName . $this->logFileName; } - /** - * @test - */ + #[Test] public function setLogFileSetsLogFile(): void { $writer = GeneralUtility::makeInstance(FileWriter::class); @@ -79,9 +79,7 @@ final class FileWriterTest extends UnitTestCase self::assertEquals($this->getDefaultFileName(), $writer->getLogFile()); } - /** - * @test - */ + #[Test] public function setLogFileAcceptsAbsolutePath(): void { $writer = GeneralUtility::makeInstance(FileWriter::class); @@ -90,18 +88,14 @@ final class FileWriterTest extends UnitTestCase self::assertEquals($tempFile, $writer->getLogFile()); } - /** - * @test - */ + #[Test] public function createsLogFileDirectory(): void { $this->createWriter(); self::assertDirectoryExists($this->testRoot . $this->logFileDirectory); } - /** - * @test - */ + #[Test] public function createsLogFile(): void { $this->createWriter(); @@ -118,10 +112,8 @@ final class FileWriterTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider logsToFileDataProvider - */ + #[DataProvider('logsToFileDataProvider')] + #[Test] public function logsToFile(LogRecord $record, string $expectedResult): void { $this->createWriter()->writeLog($record); @@ -129,10 +121,8 @@ final class FileWriterTest extends UnitTestCase self::assertEquals($expectedResult, $logFileContents); } - /** - * @test - * @dataProvider logsToFileDataProvider - */ + #[DataProvider('logsToFileDataProvider')] + #[Test] public function differentWritersLogToDifferentFiles(LogRecord $record, string $expectedResult): void { $firstWriter = $this->createWriter(); @@ -148,9 +138,7 @@ final class FileWriterTest extends UnitTestCase self::assertEquals($expectedResult, $secondLogFileContents); } - /** - * @test - */ + #[Test] public function logsToFileWithUnescapedCharacters(): void { $recordWithData = GeneralUtility::makeInstance( @@ -168,9 +156,7 @@ final class FileWriterTest extends UnitTestCase self::assertStringContainsString($expectedResult, $logFileContents); } - /** - * @test - */ + #[Test] public function aSecondLogWriterToTheSameFileDoesNotOpenTheFileTwice(): void { $firstWriter = $this->getMockBuilder(FileWriter::class) @@ -187,9 +173,7 @@ final class FileWriterTest extends UnitTestCase $secondWriter->setLogFile($this->getDefaultFileName($logFilePrefix)); } - /** - * @test - */ + #[Test] public function fileHandleIsNotClosedIfSecondFileWriterIsStillUsingSameFile(): void { $firstWriter = $this->getMockBuilder(FileWriter::class) diff --git a/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php b/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php index 946e62860b2a..baa516149da0 100644 --- a/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php +++ b/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Mail\Event; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Mailer\Transport\SendmailTransport; use TYPO3\CMS\Core\Mail\Event\AfterMailerSentMessageEvent; use TYPO3\CMS\Core\Mail\Mailer; @@ -37,9 +38,7 @@ final class AfterMailerSentMessageEventTest extends UnitTestCase GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory); } - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $mailer = (new Mailer()); diff --git a/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php b/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php index d5cef191f338..ef5df1e5e5a0 100644 --- a/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php +++ b/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Mail\Event; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Mailer\Envelope; use Symfony\Component\Mailer\Transport\SendmailTransport; use Symfony\Component\Mime\Address; @@ -40,9 +41,7 @@ final class BeforeMailerSentMessageEventTest extends UnitTestCase GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory); } - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $mailer = (new Mailer()); @@ -55,9 +54,7 @@ final class BeforeMailerSentMessageEventTest extends UnitTestCase self::assertEquals($rawMessage, $event->getMessage()); self::assertEquals($envelope, $event->getEnvelope()); } - /** - * @test - */ + #[Test] public function modifyingInitializedObjects(): void { $mailer = (new Mailer()); diff --git a/typo3/sysext/core/Tests/Unit/Mail/FileSpoolTest.php b/typo3/sysext/core/Tests/Unit/Mail/FileSpoolTest.php index dc535cbabd5c..8488508e0b59 100644 --- a/typo3/sysext/core/Tests/Unit/Mail/FileSpoolTest.php +++ b/typo3/sysext/core/Tests/Unit/Mail/FileSpoolTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Mail; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Mailer\Envelope; use Symfony\Component\Mailer\Transport\NullTransport; use Symfony\Component\Mime\Address; @@ -39,10 +41,8 @@ final class FileSpoolTest extends UnitTestCase $this->subject->setTimeLimit(1); } - /** - * @test - * @dataProvider messageCountProvider - */ + #[DataProvider('messageCountProvider')] + #[Test] public function spoolsMessagesCorrectly(int $count): void { for ($i = 1; $i <= $count; $i++) { diff --git a/typo3/sysext/core/Tests/Unit/Mail/MailMessageTest.php b/typo3/sysext/core/Tests/Unit/Mail/MailMessageTest.php index de1f3963d0fa..2accad81f544 100644 --- a/typo3/sysext/core/Tests/Unit/Mail/MailMessageTest.php +++ b/typo3/sysext/core/Tests/Unit/Mail/MailMessageTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Mail; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Mime\Address; use TYPO3\CMS\Core\Mail\MailMessage; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,17 +35,13 @@ final class MailMessageTest extends UnitTestCase $this->subject = new MailMessage(); } - /** - * @test - */ + #[Test] public function isSentReturnsFalseIfMailWasNotSent(): void { self::assertFalse($this->subject->isSent()); } - /** - * @test - */ + #[Test] public function setSubjectWorksAsExpected(): void { $this->subject->setSubject('Test'); @@ -52,9 +50,7 @@ final class MailMessageTest extends UnitTestCase self::assertSame('Test2', $this->subject->getSubject()); } - /** - * @test - */ + #[Test] public function setDateWorksAsExpected(): void { $time = time(); @@ -65,9 +61,7 @@ final class MailMessageTest extends UnitTestCase self::assertSame($time, (int)$this->subject->getDate()->format('U')); } - /** - * @test - */ + #[Test] public function setReturnPathWorksAsExpected(): void { $this->subject->setReturnPath('noreply@typo3.com'); @@ -94,10 +88,8 @@ final class MailMessageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider setSenderAddressDataProvider - */ + #[DataProvider('setSenderAddressDataProvider')] + #[Test] public function setSenderWorksAsExpected(string $address, ?string $name, array $expectedAddresses): void { $this->subject->setSender($address, $name); @@ -161,10 +153,8 @@ final class MailMessageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider globalSetAddressDataProvider - */ + #[DataProvider('globalSetAddressDataProvider')] + #[Test] public function setFromWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { // We first add one address, because set should override / remove existing addresses @@ -173,10 +163,8 @@ final class MailMessageTest extends UnitTestCase $this->assertCorrectAddresses($this->subject->getFrom(), $expectedAddresses); } - /** - * @test - * @dataProvider globalSetAddressDataProvider - */ + #[DataProvider('globalSetAddressDataProvider')] + #[Test] public function setReplyToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { // We first add one address, because set should override / remove existing addresses @@ -185,10 +173,8 @@ final class MailMessageTest extends UnitTestCase $this->assertCorrectAddresses($this->subject->getReplyTo(), $expectedAddresses); } - /** - * @test - * @dataProvider globalSetAddressDataProvider - */ + #[DataProvider('globalSetAddressDataProvider')] + #[Test] public function setToToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { // We first add one address, because set should override / remove existing addresses @@ -197,10 +183,8 @@ final class MailMessageTest extends UnitTestCase $this->assertCorrectAddresses($this->subject->getTo(), $expectedAddresses); } - /** - * @test - * @dataProvider globalSetAddressDataProvider - */ + #[DataProvider('globalSetAddressDataProvider')] + #[Test] public function setCcToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { // We first add one address, because set should override / remove existing addresses @@ -209,10 +193,8 @@ final class MailMessageTest extends UnitTestCase $this->assertCorrectAddresses($this->subject->getCc(), $expectedAddresses); } - /** - * @test - * @dataProvider globalSetAddressDataProvider - */ + #[DataProvider('globalSetAddressDataProvider')] + #[Test] public function setBccToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { // We first add one address, because set should override / remove existing addresses @@ -242,59 +224,47 @@ final class MailMessageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider globalAddAddressDataProvider - */ + #[DataProvider('globalAddAddressDataProvider')] + #[Test] public function addFromToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { $this->subject->addFrom($address, $name); $this->assertCorrectAddresses($this->subject->getFrom(), $expectedAddresses); } - /** - * @test - * @dataProvider globalAddAddressDataProvider - */ + #[DataProvider('globalAddAddressDataProvider')] + #[Test] public function addReplyToToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { $this->subject->addReplyTo($address, $name); $this->assertCorrectAddresses($this->subject->getReplyTo(), $expectedAddresses); } - /** - * @test - * @dataProvider globalAddAddressDataProvider - */ + #[DataProvider('globalAddAddressDataProvider')] + #[Test] public function addToToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { $this->subject->addTo($address, $name); $this->assertCorrectAddresses($this->subject->getTo(), $expectedAddresses); } - /** - * @test - * @dataProvider globalAddAddressDataProvider - */ + #[DataProvider('globalAddAddressDataProvider')] + #[Test] public function addCcToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { $this->subject->addCc($address, $name); $this->assertCorrectAddresses($this->subject->getCc(), $expectedAddresses); } - /** - * @test - * @dataProvider globalAddAddressDataProvider - */ + #[DataProvider('globalAddAddressDataProvider')] + #[Test] public function addBccToWorksAsExpected(string|array $address, ?string $name, array $expectedAddresses): void { $this->subject->addBcc($address, $name); $this->assertCorrectAddresses($this->subject->getBcc(), $expectedAddresses); } - /** - * @test - */ + #[Test] public function setReadReceiptToToWorksAsExpected(): void { $this->subject->setReadReceiptTo('foo@example.com'); @@ -312,10 +282,8 @@ final class MailMessageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider exceptionIsThrownForInvalidArgumentCombinationsDataProvider - */ + #[DataProvider('exceptionIsThrownForInvalidArgumentCombinationsDataProvider')] + #[Test] public function exceptionIsThrownForInvalidArgumentCombinations(string $method): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php b/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php index ef82148c1c76..18bc4caf9d8a 100644 --- a/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php +++ b/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Mail; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use Symfony\Component\Mailer\Transport\NullTransport; @@ -61,9 +63,7 @@ final class MailerTest extends UnitTestCase }; } - /** - * @test - */ + #[Test] public function injectedSettingsAreNotReplacedByGlobalSettings(): void { $settings = ['transport' => 'mbox', 'transport_mbox_file' => '/path/to/file']; @@ -77,9 +77,7 @@ final class MailerTest extends UnitTestCase $this->subject->__construct(); } - /** - * @test - */ + #[Test] public function globalSettingsAreUsedIfNoSettingsAreInjected(): void { $settings = ($GLOBALS['TYPO3_CONF_VARS']['MAIL'] = ['transport' => 'sendmail', 'transport_sendmail_command' => 'sendmail -bs']); @@ -101,10 +99,8 @@ final class MailerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider wrongConfigurationProvider - */ + #[DataProvider('wrongConfigurationProvider')] + #[Test] public function wrongConfigurationThrowsException(array $settings): void { $this->expectException(Exception::class); @@ -116,9 +112,7 @@ final class MailerTest extends UnitTestCase $this->subject->__construct(); } - /** - * @test - */ + #[Test] public function providingCorrectClassnameDoesNotThrowException(): void { $transportFactory = new TransportFactory($this->eventDispatcher, $this->logManager); @@ -127,9 +121,7 @@ final class MailerTest extends UnitTestCase $this->subject->__construct(); } - /** - * @test - */ + #[Test] public function noPortSettingSetsPortTo25(): void { $transportFactory = new TransportFactory($this->eventDispatcher, $this->logManager); @@ -140,9 +132,7 @@ final class MailerTest extends UnitTestCase self::assertEquals(25, $port); } - /** - * @test - */ + #[Test] public function emptyPortSettingSetsPortTo25(): void { $transportFactory = new TransportFactory($this->eventDispatcher, $this->logManager); @@ -153,9 +143,7 @@ final class MailerTest extends UnitTestCase self::assertEquals(25, $port); } - /** - * @test - */ + #[Test] public function givenPortSettingIsRespected(): void { $transportFactory = new TransportFactory($this->eventDispatcher, $this->logManager); @@ -180,10 +168,8 @@ final class MailerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getRealTransportReturnsNoSpoolTransportProvider - */ + #[DataProvider('getRealTransportReturnsNoSpoolTransportProvider')] + #[Test] public function getRealTransportReturnsNoSpoolTransport($settings): void { $transportFactory = new TransportFactory($this->eventDispatcher, $this->logManager); diff --git a/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php b/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php index 6fed6dbc4f9d..ffca2de0e1de 100644 --- a/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Mail; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use Symfony\Component\Mailer\Exception\TransportExceptionInterface; use Symfony\Component\Mailer\Transport\NullTransport; @@ -54,9 +55,7 @@ final class TransportFactoryTest extends UnitTestCase return $transportFactory; } - /** - * @test - */ + #[Test] public function getReturnsSpoolTransportUsingFileSpool(): void { $mailSettings = [ @@ -88,9 +87,7 @@ final class TransportFactoryTest extends UnitTestCase self::assertStringContainsString($mailSettings['transport_spool_filepath'], $path); } - /** - * @test - */ + #[Test] public function getReturnsSpoolTransportUsingMemorySpool(): void { $mailSettings = [ @@ -119,9 +116,7 @@ final class TransportFactoryTest extends UnitTestCase self::assertInstanceOf(MemorySpool::class, $transport); } - /** - * @test - */ + #[Test] public function getReturnsSpoolTransportUsingCustomSpool(): void { $mailSettings = [ @@ -149,9 +144,7 @@ final class TransportFactoryTest extends UnitTestCase self::assertSame($mailSettings, $transport->getSettings()); } - /** - * @test - */ + #[Test] public function getThrowsRuntimeExceptionForInvalidCustomSpool(): void { $this->expectExceptionCode(1466799482); @@ -177,9 +170,7 @@ final class TransportFactoryTest extends UnitTestCase $this->getSubject($eventDispatcher)->get($mailSettings); } - /** - * @test - */ + #[Test] public function getThrowsExceptionForMissingDsnConfig(): void { $this->expectExceptionCode(1615021869); @@ -192,9 +183,7 @@ final class TransportFactoryTest extends UnitTestCase $this->getSubject($eventDispatcher)->get($mailSettings); } - /** - * @test - */ + #[Test] public function dsnTransportCallsDispatchOfDispatcher(): void { $mailSettings = [ @@ -217,9 +206,7 @@ final class TransportFactoryTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function getReturnsMailerTransportInterface(): void { $mailSettings = [ @@ -244,9 +231,7 @@ final class TransportFactoryTest extends UnitTestCase self::assertInstanceOf(TransportInterface::class, $transport); } - /** - * @test - */ + #[Test] public function smtpTransportCallsDispatchOfDispatcher(): void { $mailSettings = [ @@ -280,9 +265,7 @@ final class TransportFactoryTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function sendmailTransportCallsDispatchOfDispatcher(): void { $mailSettings = [ @@ -316,9 +299,7 @@ final class TransportFactoryTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function nullTransportCallsDispatchOfDispatcher(): void { $mailSettings = [ @@ -348,9 +329,7 @@ final class TransportFactoryTest extends UnitTestCase $transport->send($message); } - /** - * @test - */ + #[Test] public function smtpTransportIsCorrectlyConfigured(): void { $mailSettings = [ diff --git a/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageRendererResolverTest.php b/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageRendererResolverTest.php index 1be0ea44e036..6ac1ac90c8c4 100644 --- a/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageRendererResolverTest.php +++ b/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageRendererResolverTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Messaging; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessageRendererResolver; use TYPO3\CMS\Core\Messaging\Renderer\FlashMessageRendererInterface; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FlashMessageRendererResolverTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function flashMessageRendererResolverResolveRendererWithoutContext(): void { $rendererClass = GeneralUtility::makeInstance(FlashMessageRendererResolver::class)->resolve(); diff --git a/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageServiceTest.php b/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageServiceTest.php index 4e70a8374dcf..a02850935583 100644 --- a/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Messaging; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessageService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +31,7 @@ final class FlashMessageServiceTest extends UnitTestCase $this->flashMessageService = new FlashMessageService(); } - /** - * @test - */ + #[Test] public function getMessageQueueByIdentifierRegistersNewFlashmessageQueuesOnlyOnce(): void { self::assertSame( diff --git a/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageTest.php b/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageTest.php index b1c57db6b81e..f89812698603 100644 --- a/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageTest.php +++ b/typo3/sysext/core/Tests/Unit/Messaging/FlashMessageTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Messaging; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FlashMessageTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function jsonSerializeReturnsArrayWithDetailData(): void { $message = new FlashMessage('aMessage', 'aTitle', ContextualFeedbackSeverity::INFO); diff --git a/typo3/sysext/core/Tests/Unit/Messaging/Renderer/BootstrapRendererTest.php b/typo3/sysext/core/Tests/Unit/Messaging/Renderer/BootstrapRendererTest.php index e4f7bd5d1825..196be30fe07c 100644 --- a/typo3/sysext/core/Tests/Unit/Messaging/Renderer/BootstrapRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Messaging/Renderer/BootstrapRendererTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Messaging\Renderer; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Messaging\FlashMessage; @@ -45,9 +46,7 @@ final class BootstrapRendererTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function renderCreatesCorrectOutputForFlashMessage(): void { $rendererClass = GeneralUtility::makeInstance(BootstrapRenderer::class); @@ -65,9 +64,7 @@ final class BootstrapRendererTest extends UnitTestCase self::assertStringContainsString('<p class="alert-message">messageBody</p>', $output); } - /** - * @test - */ + #[Test] public function renderCreatesCorrectOutputForFlashMessageWithoutTitle(): void { $rendererClass = GeneralUtility::makeInstance(BootstrapRenderer::class); diff --git a/typo3/sysext/core/Tests/Unit/Messaging/Renderer/ListRendererTest.php b/typo3/sysext/core/Tests/Unit/Messaging/Renderer/ListRendererTest.php index d8f869323289..ca87563bf1d8 100644 --- a/typo3/sysext/core/Tests/Unit/Messaging/Renderer/ListRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Messaging/Renderer/ListRendererTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Messaging\Renderer; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Messaging\Renderer\ListRenderer; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ListRendererTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderCreatesCorrectOutputForFlashMessage(): void { $rendererClass = GeneralUtility::makeInstance(ListRenderer::class); @@ -40,9 +39,7 @@ final class ListRendererTest extends UnitTestCase self::assertSame('<ul class="typo3-messages"><li class="alert alert-notice"><h4 class="alert-title">messageTitle</h4><p class="alert-message">messageBody</p></li></ul>', $rendererClass->render([$flashMessage])); } - /** - * @test - */ + #[Test] public function renderCreatesCorrectOutputForFlashMessageWithoutTitle(): void { $rendererClass = GeneralUtility::makeInstance(ListRenderer::class); diff --git a/typo3/sysext/core/Tests/Unit/Messaging/Renderer/PlaintextRendererTest.php b/typo3/sysext/core/Tests/Unit/Messaging/Renderer/PlaintextRendererTest.php index 1e299eef9a6c..b1a5fc4aaf27 100644 --- a/typo3/sysext/core/Tests/Unit/Messaging/Renderer/PlaintextRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Messaging/Renderer/PlaintextRendererTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Messaging\Renderer; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Messaging\Renderer\PlaintextRenderer; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PlaintextRendererTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function renderCreatesCorrectOutputForFlashMessage(): void { $rendererClass = GeneralUtility::makeInstance(PlaintextRenderer::class); @@ -40,9 +39,7 @@ final class PlaintextRendererTest extends UnitTestCase self::assertSame('[NOTICE] messageTitle: messageBody', $rendererClass->render([$flashMessage])); } - /** - * @test - */ + #[Test] public function renderCreatesCorrectOutputForFlashMessageWithoutTitle(): void { $rendererClass = GeneralUtility::makeInstance(PlaintextRenderer::class); diff --git a/typo3/sysext/core/Tests/Unit/MetaTag/GenericMetaTagManagerTest.php b/typo3/sysext/core/Tests/Unit/MetaTag/GenericMetaTagManagerTest.php index a6bf266762dd..0516b4cfe6ee 100644 --- a/typo3/sysext/core/Tests/Unit/MetaTag/GenericMetaTagManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/MetaTag/GenericMetaTagManagerTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\MetaTag; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\MetaTag\GenericMetaTagManager; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class GenericMetaTagManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function checkIfGetAllHandledPropertiesReturnsNonEmptyArray(): void { $manager = new GenericMetaTagManager(); @@ -33,9 +33,7 @@ final class GenericMetaTagManagerTest extends UnitTestCase self::assertEmpty($handledProperties); } - /** - * @test - */ + #[Test] public function checkIfMethodCanHandlePropertyAlwaysReturnsTrue(): void { $manager = new GenericMetaTagManager(); @@ -44,11 +42,8 @@ final class GenericMetaTagManagerTest extends UnitTestCase self::assertTrue($manager->canHandleProperty('og:title')); } - /** - * @dataProvider propertiesProvider - * - * @test - */ + #[DataProvider('propertiesProvider')] + #[Test] public function checkIfPropertyIsStoredAfterAddingProperty($property, $expected, $expectedRenderedTag): void { $manager = new GenericMetaTagManager(); @@ -64,9 +59,7 @@ final class GenericMetaTagManagerTest extends UnitTestCase self::assertEquals($expectedRenderedTag, $manager->renderProperty($property['property'])); } - /** - * @test - */ + #[Test] public function checkRenderAllPropertiesRendersCorrectMetaTags(): void { $properties = [ @@ -128,9 +121,7 @@ final class GenericMetaTagManagerTest extends UnitTestCase self::assertEquals($expected, $manager->renderAllProperties()); } - /** - * @test - */ + #[Test] public function checkIfRemovePropertyReallyRemovesProperty(): void { $manager = new GenericMetaTagManager(); diff --git a/typo3/sysext/core/Tests/Unit/MetaTag/MetaTagManagerRegistryTest.php b/typo3/sysext/core/Tests/Unit/MetaTag/MetaTagManagerRegistryTest.php index cd28dba7ddbe..708f0375c5eb 100644 --- a/typo3/sysext/core/Tests/Unit/MetaTag/MetaTagManagerRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/MetaTag/MetaTagManagerRegistryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\MetaTag; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\MetaTag\GenericMetaTagManager; use TYPO3\CMS\Core\MetaTag\Html5MetaTagManager; use TYPO3\CMS\Core\MetaTag\MetaTagManagerRegistry; @@ -28,9 +30,7 @@ final class MetaTagManagerRegistryTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function checkRegisterNonExistingManagerDoesntThrowErrorWhenFetchingManagers(): void { $metaTagManagerRegistry = new MetaTagManagerRegistry(); @@ -39,10 +39,8 @@ final class MetaTagManagerRegistryTest extends UnitTestCase $metaTagManagerRegistry->getAllManagers(); } - /** - * @dataProvider registerMetaTagManagersProvider - * @test - */ + #[DataProvider('registerMetaTagManagersProvider')] + #[Test] public function checkRegisterExistingManagerDoRegister(array $managersToRegister, array $expected): void { $metaTagManagerRegistry = new MetaTagManagerRegistry(); @@ -66,9 +64,7 @@ final class MetaTagManagerRegistryTest extends UnitTestCase self::assertEquals($expected, $managers); } - /** - * @test - */ + #[Test] public function checkConditionRaceResultsIntoException(): void { $input = [ diff --git a/typo3/sysext/core/Tests/Unit/Middleware/VerifyHostHeaderTest.php b/typo3/sysext/core/Tests/Unit/Middleware/VerifyHostHeaderTest.php index 2d835a886de3..b16d612bd3bf 100644 --- a/typo3/sysext/core/Tests/Unit/Middleware/VerifyHostHeaderTest.php +++ b/typo3/sysext/core/Tests/Unit/Middleware/VerifyHostHeaderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Middleware; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Server\RequestHandlerInterface; use TYPO3\CMS\Core\Http\Response; use TYPO3\CMS\Core\Http\ServerRequest; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class VerifyHostHeaderTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isAllowedHostHeaderValueReturnsFalseIfTrustedHostsIsNotConfigured(): void { $subject = new VerifyHostHeader(''); @@ -63,9 +63,9 @@ final class VerifyHostHeaderTest extends UnitTestCase /** * @param string $httpHost HTTP_HOST string * @param string $hostNamePattern trusted hosts pattern - * @test - * @dataProvider hostnamesMatchingTrustedHostsConfigurationDataProvider */ + #[DataProvider('hostnamesMatchingTrustedHostsConfigurationDataProvider')] + #[Test] public function isAllowedHostHeaderValueReturnsTrueIfHostValueMatches(string $httpHost, string $hostNamePattern): void { $serverParams = $_SERVER; @@ -77,9 +77,9 @@ final class VerifyHostHeaderTest extends UnitTestCase /** * @param string $httpHost HTTP_HOST string * @param string $hostNamePattern trusted hosts pattern - * @test - * @dataProvider hostnamesNotMatchingTrustedHostsConfigurationDataProvider */ + #[DataProvider('hostnamesNotMatchingTrustedHostsConfigurationDataProvider')] + #[Test] public function isAllowedHostHeaderValueReturnsFalseIfHostValueMatches(string $httpHost, string $hostNamePattern): void { $serverParams = $_SERVER; @@ -167,10 +167,8 @@ final class VerifyHostHeaderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider serverNamePatternDataProvider - */ + #[DataProvider('serverNamePatternDataProvider')] + #[Test] public function isAllowedHostHeaderValueWorksCorrectlyWithWithServerNamePattern( string $httpHost, string $serverName, @@ -188,10 +186,8 @@ final class VerifyHostHeaderTest extends UnitTestCase self::assertSame($isAllowed, $subject->isAllowedHostHeaderValue($httpHost, $serverParams)); } - /** - * @test - * @dataProvider serverNamePatternDataProvider - */ + #[DataProvider('serverNamePatternDataProvider')] + #[Test] public function isAllowedHostHeaderValueWorksCorrectlyWithWithServerNamePatternAndSslProxy( string $httpHost, string $serverName, @@ -210,10 +206,8 @@ final class VerifyHostHeaderTest extends UnitTestCase self::assertSame($isAllowed, $subject->isAllowedHostHeaderValue($httpHost, $serverParams)); } - /** - * @test - * @dataProvider hostnamesNotMatchingTrustedHostsConfigurationDataProvider - */ + #[DataProvider('hostnamesNotMatchingTrustedHostsConfigurationDataProvider')] + #[Test] public function processThrowsExceptionForNotAllowedHostnameValues(string $httpHost, string $hostNamePattern): void { $serverParams = $_SERVER; @@ -228,10 +222,8 @@ final class VerifyHostHeaderTest extends UnitTestCase $subject->process($request, $requestHandlerMock); } - /** - * @test - * @dataProvider hostnamesNotMatchingTrustedHostsConfigurationDataProvider - */ + #[DataProvider('hostnamesNotMatchingTrustedHostsConfigurationDataProvider')] + #[Test] public function processAllowsAllHostnameValuesIfHostPatternIsSetToAllowAll(string $httpHost): void { $serverParams = $_SERVER; diff --git a/typo3/sysext/core/Tests/Unit/Migrations/TcaMigrationTest.php b/typo3/sysext/core/Tests/Unit/Migrations/TcaMigrationTest.php index 54b8f3c92aed..afae6f624d96 100644 --- a/typo3/sysext/core/Tests/Unit/Migrations/TcaMigrationTest.php +++ b/typo3/sysext/core/Tests/Unit/Migrations/TcaMigrationTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Migrations; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Migrations\TcaMigration; use TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaMigrationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function missingTypeThrowsException(): void { $input = [ @@ -53,9 +53,7 @@ final class TcaMigrationTest extends UnitTestCase $subject->migrate($input); } - /** - * @test - */ + #[Test] public function migrateReturnsGivenArrayUnchangedIfNoMigrationNeeded(): void { $input = $expected = [ @@ -83,9 +81,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function migrateAddsMissingColumnsConfig(): void { $input = [ @@ -138,9 +134,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function ctrlSelIconFieldPathIsRemoved(): void { $input = [ @@ -176,9 +170,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function ctrlSetToDefaultOnCopyIsRemoved(): void { $input = [ @@ -410,19 +402,15 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider ctrlIntegrityColumnsAreAvailableDataProvider - */ + #[DataProvider('ctrlIntegrityColumnsAreAvailableDataProvider')] + #[Test] public function ctrlIntegrityColumnsAreAvailable(array $tca, array $expectation): void { $subject = new TcaMigration(); self::assertSame($expectation, $subject->migrate($tca)); } - /** - * @test - */ + #[Test] public function removeEnableMultiSelectFilterTextfieldConfigurationIsRemoved(): void { $input = [ @@ -473,9 +461,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function removeExcludeFieldForTransOrigPointerFieldIsRemoved(): void { $input = [ @@ -555,9 +541,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function removeShowRecordFieldListFieldIsRemoved(): void { $input = [ @@ -588,9 +572,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function ctrlShadowColumnsForMovePlaceholdersIsRemoved(): void { $input = [ @@ -623,9 +605,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function ctrlShadowColumnsForMoveAndPlaceholdersIsRemoved(): void { $input = [ @@ -659,9 +639,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function languageFieldsAreMigratedToTcaTypeLanguage(): void { $input = [ @@ -820,9 +798,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function showRemovedLocalizationRecordsRemoved(): void { $input = [ @@ -903,9 +879,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function fileFolderConfigurationIsMigrated(): void { $input = [ @@ -1054,9 +1028,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function levelLinksPositionIsMigrated(): void { $input = [ @@ -1167,9 +1139,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertEquals($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function rootUidIsMigratedToStartingPositions(): void { $input = [ @@ -1321,10 +1291,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider internalTypeFolderMigratedToTypeDataProvider - * @test - */ + #[DataProvider('internalTypeFolderMigratedToTypeDataProvider')] + #[Test] public function internalTypeFolderMigratedToType(array $input, array $expected): void { $subject = new TcaMigration(); @@ -1441,10 +1409,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider requiredFlagIsMigratedDataProvider - * @test - */ + #[DataProvider('requiredFlagIsMigratedDataProvider')] + #[Test] public function requiredFlagIsMigrated(array $input, array $expected): void { $subject = new TcaMigration(); @@ -1562,11 +1528,11 @@ final class TcaMigrationTest extends UnitTestCase } /** - * @dataProvider evalNullMigratedToNullableOptionDataProvider - * @test * @param array<string, mixed> $input * @param array<string, mixed> $expected */ + #[DataProvider('evalNullMigratedToNullableOptionDataProvider')] + #[Test] public function evalNullMigratedToNullableOption(array $input, array $expected): void { $subject = new TcaMigration(); @@ -1666,10 +1632,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider evalEmailMigratedToTypeDataProvider - * @test - */ + #[DataProvider('evalEmailMigratedToTypeDataProvider')] + #[Test] public function evalEmailMigratedToType(array $input, array $expected): void { $subject = new TcaMigration(); @@ -1736,10 +1700,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider typeNoneColsMigratedToSizeDataProvider - * @test - */ + #[DataProvider('typeNoneColsMigratedToSizeDataProvider')] + #[Test] public function typeNoneColsMigratedToSize(array $tca, array $expected): void { $subject = new TcaMigration(); @@ -1976,10 +1938,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider renderTypeInputLinkMigratedToTypeLinkDataProvider - * @test - */ + #[DataProvider('renderTypeInputLinkMigratedToTypeLinkDataProvider')] + #[Test] public function renderTypeInputLinkMigratedToTypeLink(array $input, array $expected): void { $subject = new TcaMigration(); @@ -2097,10 +2057,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider evalPasswordSaltedPasswordMigratedToTypePasswordDataProvider - * @test - */ + #[DataProvider('evalPasswordSaltedPasswordMigratedToTypePasswordDataProvider')] + #[Test] public function evalPasswordSaltedPasswordMigratedToTypePassword(array $input, array $expected): void { $subject = new TcaMigration(); @@ -2383,19 +2341,15 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider renderTypeInputDateTimeMigratedToTypeDatetimeDataProvider - * @test - */ + #[DataProvider('renderTypeInputDateTimeMigratedToTypeDatetimeDataProvider')] + #[Test] public function renderTypeInputDateTimeMigratedToTypeDatetime(array $input, array $expected): void { $subject = new TcaMigration(); self::assertSame($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function authModeEnforceIsRemoved(): void { $input = [ @@ -2444,9 +2398,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertSame($expected, (new TcaMigration())->migrate($input)); } - /** - * @test - */ + #[Test] public function authModeValuesAreEnforced(): void { $input = [ @@ -2793,10 +2745,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider selectIndividualAllowDenyMigratedToNewPositionDataProvider - * @test - */ + #[DataProvider('selectIndividualAllowDenyMigratedToNewPositionDataProvider')] + #[Test] public function selectIndividualAllowDenyMigratedToNewPosition(array $input, array $expected): void { $subject = new TcaMigration(); @@ -2876,10 +2826,8 @@ final class TcaMigrationTest extends UnitTestCase ]; } - /** - * @dataProvider renderTypeColorpickerToTypeColorDataProvider - * @test - */ + #[DataProvider('renderTypeColorpickerToTypeColorDataProvider')] + #[Test] public function renderTypeColorpickerToTypeColor(array $input, array $expected): void { $subject = new TcaMigration(); @@ -3047,11 +2995,11 @@ final class TcaMigrationTest extends UnitTestCase } /** - * @dataProvider typeTextWithEvalIntOrDouble2MigratedToTypeNumberDataProvider - * @test * @param array<string, mixed> $input * @param array<string, mixed> $expected */ + #[DataProvider('typeTextWithEvalIntOrDouble2MigratedToTypeNumberDataProvider')] + #[Test] public function typeTextWithEvalIntOrDouble2MigratedToTypeNumber(array $input, array $expected): void { $subject = new TcaMigration(); @@ -3098,20 +3046,18 @@ final class TcaMigrationTest extends UnitTestCase } /** - * @dataProvider propertyAlwaysDescriptionIsRemovedDataProvider - * @test * @param array<string, mixed> $input * @param array<string, mixed> $expected */ + #[DataProvider('propertyAlwaysDescriptionIsRemovedDataProvider')] + #[Test] public function propertyAlwaysDescriptionIsRemoved(array $input, array $expected): void { $subject = new TcaMigration(); self::assertSame($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function ctrlCruserIdIsRemoved(): void { $input = [ @@ -3413,12 +3359,12 @@ final class TcaMigrationTest extends UnitTestCase } /** - * @dataProvider falHandlingInTypeInlineIsMigratedToTypeFileDataProvider - * @test * @param array<string, mixed> $input * @param array<string, mixed> $expected * @param string $expectedMessagePart */ + #[DataProvider('falHandlingInTypeInlineIsMigratedToTypeFileDataProvider')] + #[Test] public function falHandlingInTypeInlineIsMigratedToTypeFile(array $input, array $expected, $expectedMessagePart = ''): void { $subject = new TcaMigration(); @@ -3435,9 +3381,7 @@ final class TcaMigrationTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function falRelatedElementBrowserOptionsAreRemovedFromTypeGroup(): void { $input = [ @@ -3470,9 +3414,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertSame($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function falRelatedOptionsAreRemovedFromTypeInline(): void { $input = [ @@ -3508,9 +3450,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertSame($expected, $subject->migrate($input)); } - /** - * @test - */ + #[Test] public function passContentIsRemovedFromTypeNone(): void { $input = [ @@ -3551,9 +3491,7 @@ final class TcaMigrationTest extends UnitTestCase self::assertSame($expected, (new TcaMigration())->migrate($input)); } - /** - * @test - */ + #[Test] public function itemsAreMigratedToAssociatedArray(): void { $input = [ diff --git a/typo3/sysext/core/Tests/Unit/Package/AbstractServiceProviderTest.php b/typo3/sysext/core/Tests/Unit/Package/AbstractServiceProviderTest.php index 2d2e53cdaeef..273ab4059456 100644 --- a/typo3/sysext/core/Tests/Unit/Package/AbstractServiceProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/Package/AbstractServiceProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Package; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; @@ -31,9 +32,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractServiceProviderTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function configureMiddlewaresReturnsMergedMiddlewares(): void { $containerMock = $this->createMock(ContainerInterface::class); @@ -55,9 +54,7 @@ final class AbstractServiceProviderTest extends UnitTestCase self::assertEquals($expected, $middlewares); } - /** - * @test - */ + #[Test] public function configureMiddlewaresReturnsMergedMiddlewaresWithPseudoServiceProvider(): void { $containerMock = $this->createMock(ContainerInterface::class); @@ -84,9 +81,7 @@ final class AbstractServiceProviderTest extends UnitTestCase self::assertEquals($expected, $middlewares); } - /** - * @test - */ + #[Test] public function configureMiddlewaresReturnsMergedMiddlewaresWithOverrides(): void { $containerMock = $this->createMock(ContainerInterface::class); @@ -114,9 +109,7 @@ final class AbstractServiceProviderTest extends UnitTestCase self::assertEquals($expected, $middlewares); } - /** - * @test - */ + #[Test] public function configureMiddlewaresReturnsMergedMiddlewaresWithReplacements(): void { $containerMock = $this->createMock(ContainerInterface::class); @@ -143,9 +136,7 @@ final class AbstractServiceProviderTest extends UnitTestCase self::assertEquals($expected, $middlewares); } - /** - * @test - */ + #[Test] public function newReturnsClassInstance(): void { $newClosure = $this->getClosureForNew(); @@ -153,9 +144,7 @@ final class AbstractServiceProviderTest extends UnitTestCase self::assertInstanceOf(\stdClass::class, $instance); } - /** - * @test - */ + #[Test] public function newInjectsLogger(): void { $containerMock = $this->createMock(ContainerInterface::class); diff --git a/typo3/sysext/core/Tests/Unit/Package/MetaDataTest.php b/typo3/sysext/core/Tests/Unit/Package/MetaDataTest.php index 54e06e7ac771..a93da444f106 100644 --- a/typo3/sysext/core/Tests/Unit/Package/MetaDataTest.php +++ b/typo3/sysext/core/Tests/Unit/Package/MetaDataTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Package; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Package\MetaData; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -49,10 +51,8 @@ final class MetaDataTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider typeIsCorrectlyResolvedDataProvider - */ + #[DataProvider('typeIsCorrectlyResolvedDataProvider')] + #[Test] public function typeIsCorrectlyResolved(?string $type, bool $isExtension, bool $isFramework): void { $metaData = new MetaData('foo'); diff --git a/typo3/sysext/core/Tests/Unit/Package/PackageManagerTest.php b/typo3/sysext/core/Tests/Unit/Package/PackageManagerTest.php index 7b7f4885ed26..47c2af3a894d 100644 --- a/typo3/sysext/core/Tests/Unit/Package/PackageManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/Package/PackageManagerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Package; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Cache\Backend\SimpleFileBackend; use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend; @@ -107,9 +109,9 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws UnknownPackageException */ + #[Test] public function getPackageReturnsTheSpecifiedPackage(): void { $this->createPackage('TYPO3.MyPackage'); @@ -119,9 +121,9 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws UnknownPackageException */ + #[Test] public function getPackageThrowsExceptionOnUnknownPackage(): void { $this->expectException(UnknownPackageException::class); @@ -130,9 +132,7 @@ final class PackageManagerTest extends UnitTestCase $this->packageManager->getPackage('PrettyUnlikelyThatThisPackageExists'); } - /** - * @test - */ + #[Test] public function scanAvailablePackagesTraversesThePackagesDirectoryAndRegistersPackagesItFinds(): void { $expectedPackageKeys = [ @@ -161,9 +161,7 @@ final class PackageManagerTest extends UnitTestCase self::assertEquals(sort($expectedPackageKeys), sort($actualPackageKeys)); } - /** - * @test - */ + #[Test] public function scanAvailablePackagesKeepsExistingPackageConfiguration(): void { $expectedPackageKeys = [ @@ -206,9 +204,7 @@ final class PackageManagerTest extends UnitTestCase self::assertEquals('Application/' . $packageKey . '/', $packageStates['packages'][$packageKey]['packagePath']); } - /** - * @test - */ + #[Test] public function extractPackageKeyFromPackagePathFindsPackageKey(): void { $package = $this->createPackage('typo3/my-package'); @@ -219,9 +215,9 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws UnknownPackagePathException */ + #[Test] public function extractPackageKeyFromPackagePathThrowsExceptionOnNonPackagePaths(): void { $this->expectException(UnknownPackageException::class); @@ -231,9 +227,9 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws UnknownPackageException */ + #[Test] public function extractPackageKeyFromPackagePathThrowsExceptionOnInvalidPackagePaths(): void { $this->expectException(UnknownPackagePathException::class); @@ -242,9 +238,7 @@ final class PackageManagerTest extends UnitTestCase $this->packageManager->extractPackageKeyFromPackagePath('EXT:typo3/my-package/path/to/file'); } - /** - * @test - */ + #[Test] public function packageStatesConfigurationContainsRelativePaths(): void { $packageKeys = [ @@ -294,10 +288,8 @@ final class PackageManagerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider packageKeysAndPaths - */ + #[DataProvider('packageKeysAndPaths')] + #[Test] public function createPackageCreatesPackageFolderAndReturnsPackage($packageKey, $expectedPackagePath): void { $actualPackage = $this->createPackage($packageKey); @@ -310,11 +302,11 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws ProtectedPackageKeyException * @throws UnknownPackageException * @throws PackageStatesFileNotWritableException */ + #[Test] public function activatePackageAndDeactivatePackageActivateAndDeactivateTheGivenPackage(): void { $packageKey = 'Acme.YetAnotherTestPackage'; @@ -331,11 +323,11 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws PackageStatesFileNotWritableException * @throws ProtectedPackageKeyException * @throws UnknownPackageException */ + #[Test] public function deactivatePackageThrowsAnExceptionIfPackageIsProtected(): void { $this->expectException(ProtectedPackageKeyException::class); @@ -348,11 +340,11 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws ProtectedPackageKeyException * @throws UnknownPackageException * @throws Exception */ + #[Test] public function deletePackageThrowsErrorIfPackageIsNotAvailable(): void { $this->expectException(UnknownPackageException::class); @@ -363,12 +355,12 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws InvalidPackageStateException * @throws ProtectedPackageKeyException * @throws UnknownPackageException * @throws Exception */ + #[Test] public function deletePackageThrowsAnExceptionIfPackageIsProtected(): void { $this->expectException(ProtectedPackageKeyException::class); @@ -380,12 +372,12 @@ final class PackageManagerTest extends UnitTestCase } /** - * @test * @throws InvalidPackageStateException * @throws ProtectedPackageKeyException * @throws UnknownPackageException * @throws Exception */ + #[Test] public function deletePackageRemovesPackageFromAvailableAndActivePackagesAndDeletesThePackageDirectory(): void { $this->createPackage('Acme.YetAnotherTestPackage'); @@ -582,10 +574,8 @@ final class PackageManagerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildDependencyGraphBuildsCorrectGraphDataProvider - */ + #[DataProvider('buildDependencyGraphBuildsCorrectGraphDataProvider')] + #[Test] public function buildDependencyGraphBuildsCorrectGraph(array $unsortedPackageStatesConfiguration, array $frameworkPackageKeys, array $expectedGraph): void { $packageManager = $this->getAccessibleMock(PackageManager::class, ['findFrameworkPackages'], [new DependencyOrderingService()]); @@ -706,10 +696,8 @@ final class PackageManagerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider packageSortingDataProvider - */ + #[DataProvider('packageSortingDataProvider')] + #[Test] public function sortPackageStatesConfigurationByDependencyMakesSureThatDependantPackagesAreStandingBeforeAPackageInTheInternalPackagesAndPackagesConfigurationArrays( array $unsortedPackageStatesConfiguration, array $frameworkPackageKeys, @@ -723,9 +711,7 @@ final class PackageManagerTest extends UnitTestCase self::assertEquals($expectedSortedPackageKeys, $sortedPackageKeys, 'The package states configurations have not been ordered according to their dependencies!'); } - /** - * @test - */ + #[Test] public function sortPackageStatesConfigurationByDependencyThrowsExceptionWhenCycleDetected(): void { $unsortedPackageStatesConfiguration = [ diff --git a/typo3/sysext/core/Tests/Unit/Package/PackageTest.php b/typo3/sysext/core/Tests/Unit/Package/PackageTest.php index d3ca8884f271..821e4237a23b 100644 --- a/typo3/sysext/core/Tests/Unit/Package/PackageTest.php +++ b/typo3/sysext/core/Tests/Unit/Package/PackageTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Package; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Package\Exception\InvalidPackageKeyException; use TYPO3\CMS\Core\Package\Exception\InvalidPackagePathException; @@ -40,9 +42,7 @@ final class PackageTest extends UnitTestCase $this->testFilesToDelete[] = $this->testRoot; } - /** - * @test - */ + #[Test] public function constructThrowsPackageDoesNotExistException(): void { $this->expectException(InvalidPackagePathException::class); @@ -64,10 +64,8 @@ final class PackageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validPackageKeys - */ + #[DataProvider('validPackageKeys')] + #[Test] public function constructAcceptsValidPackageKeys($packageKey): void { $packagePath = $this->testRoot . str_replace('\\', '/', $packageKey) . '/'; @@ -90,10 +88,8 @@ final class PackageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidPackageKeys - */ + #[DataProvider('invalidPackageKeys')] + #[Test] public function constructRejectsInvalidPackageKeys($packageKey): void { $this->expectException(InvalidPackageKeyException::class); @@ -106,9 +102,7 @@ final class PackageTest extends UnitTestCase new Package($packageManagerMock, $packageKey, $packagePath); } - /** - * @test - */ + #[Test] public function aPackageCanBeFlaggedAsProtected(): void { $packagePath = $this->testRoot . 'Application/Vendor/Dummy/'; diff --git a/typo3/sysext/core/Tests/Unit/Page/AssetCollectorTest.php b/typo3/sysext/core/Tests/Unit/Page/AssetCollectorTest.php index c413b217576d..3a6938469bb6 100644 --- a/typo3/sysext/core/Tests/Unit/Page/AssetCollectorTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/AssetCollectorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Page\AssetCollector; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -32,10 +34,8 @@ final class AssetCollectorTest extends UnitTestCase $this->assetCollector = GeneralUtility::makeInstance(AssetCollector::class); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::filesDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'filesDataProvider')] + #[Test] public function styleSheets(array $files, array $expectedResult): void { foreach ($files as $file) { @@ -63,10 +63,8 @@ final class AssetCollectorTest extends UnitTestCase self::assertSame([], $this->assetCollector->getMedia()); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::filesDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'filesDataProvider')] + #[Test] public function javaScript(array $files, array $expectedResult): void { foreach ($files as $file) { @@ -94,10 +92,8 @@ final class AssetCollectorTest extends UnitTestCase self::assertSame([], $this->assetCollector->getMedia()); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::inlineDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'inlineDataProvider')] + #[Test] public function inlineJavaScript(array $sources, array $expectedResult): void { foreach ($sources as $source) { @@ -125,10 +121,8 @@ final class AssetCollectorTest extends UnitTestCase self::assertSame([], $this->assetCollector->getMedia()); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::inlineDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'inlineDataProvider')] + #[Test] public function inlineStyles(array $sources, array $expectedResult): void { foreach ($sources as $source) { @@ -156,10 +150,8 @@ final class AssetCollectorTest extends UnitTestCase self::assertSame([], $this->assetCollector->getMedia()); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::mediaDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'mediaDataProvider')] + #[Test] public function media(array $images, array $expectedResult): void { foreach ($images as $image) { diff --git a/typo3/sysext/core/Tests/Unit/Page/AssetRendererTest.php b/typo3/sysext/core/Tests/Unit/Page/AssetRendererTest.php index 0661badab378..b108d7153f39 100644 --- a/typo3/sysext/core/Tests/Unit/Page/AssetRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/AssetRendererTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\DataProviderExternal; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Page\AssetCollector; use TYPO3\CMS\Core\Page\AssetRenderer; @@ -40,10 +42,8 @@ final class AssetRendererTest extends UnitTestCase ); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::filesDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'filesDataProvider')] + #[Test] public function styleSheets(array $files, array $expectedResult, array $expectedMarkup): void { $assetCollector = GeneralUtility::makeInstance(AssetCollector::class); @@ -55,10 +55,8 @@ final class AssetRendererTest extends UnitTestCase self::assertSame($expectedMarkup['css_prio'], $this->assetRenderer->renderStyleSheets(true)); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::filesDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'filesDataProvider')] + #[Test] public function javaScript(array $files, array $expectedResult, array $expectedMarkup): void { $assetCollector = GeneralUtility::makeInstance(AssetCollector::class); @@ -70,10 +68,8 @@ final class AssetRendererTest extends UnitTestCase self::assertSame($expectedMarkup['js_prio'], $this->assetRenderer->renderJavaScript(true)); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::inlineDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'inlineDataProvider')] + #[Test] public function inlineJavaScript(array $sources, array $expectedResult, array $expectedMarkup): void { $assetCollector = GeneralUtility::makeInstance(AssetCollector::class); @@ -85,10 +81,8 @@ final class AssetRendererTest extends UnitTestCase self::assertSame($expectedMarkup['js_prio'], $this->assetRenderer->renderInlineJavaScript(true)); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::inlineDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'inlineDataProvider')] + #[Test] public function inlineStyleSheets(array $sources, array $expectedResult, array $expectedMarkup): void { $assetCollector = GeneralUtility::makeInstance(AssetCollector::class); @@ -100,10 +94,8 @@ final class AssetRendererTest extends UnitTestCase self::assertSame($expectedMarkup['css_prio'], $this->assetRenderer->renderInlineStyleSheets(true)); } - /** - * @test - * @dataProvider \TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::renderMethodsAndEventsDataProvider - */ + #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'renderMethodsAndEventsDataProvider')] + #[Test] public function beforeRenderingEvent( string $renderMethodName, bool $isInline, diff --git a/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php b/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php index 211d58cce5af..c80ca41f3507 100644 --- a/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Package\MetaData; use TYPO3\CMS\Core\Package\PackageInterface; @@ -62,9 +63,7 @@ final class ImportMapTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function emptyOutputIfNoModuleIsLoaded(): void { $this->packages = ['core']; @@ -75,9 +74,7 @@ final class ImportMapTest extends UnitTestCase self::assertSame('', $output); } - /** - * @test - */ + #[Test] public function emptyOutputIfNoModuleIsDefined(): void { $this->packages = ['package1']; @@ -90,9 +87,7 @@ final class ImportMapTest extends UnitTestCase self::assertNull($url); } - /** - * @test - */ + #[Test] public function resolveImport(): void { $this->packages = ['core']; @@ -103,9 +98,7 @@ final class ImportMapTest extends UnitTestCase self::assertStringStartsWith('Fixtures/ImportMap/core/Resources/Public/JavaScript/Contrib/lit/index.js?bust=', $url); } - /** - * @test - */ + #[Test] public function resolveAndImplicitlyIncludeModuleConfiguration(): void { $this->packages = ['core']; @@ -120,9 +113,7 @@ final class ImportMapTest extends UnitTestCase ExtensionManagementUtility::setPackageManager($this->createMock(PackageManager::class)); } - /** - * @test - */ + #[Test] public function renderIncludedImportConfiguration(): void { $this->packages = ['core']; @@ -135,9 +126,7 @@ final class ImportMapTest extends UnitTestCase self::assertStringContainsString('"@typo3/core/Module1.js":"/Fixtures/ImportMap/core/Resources/Public/JavaScript/Module1.js?bust=', $output); } - /** - * @test - */ + #[Test] public function composesTwoImportMaps(): void { $this->packages = ['core', 'package2']; @@ -151,9 +140,7 @@ final class ImportMapTest extends UnitTestCase ExtensionManagementUtility::setPackageManager($this->createMock(PackageManager::class)); } - /** - * @test - */ + #[Test] public function handlesImportMapOverwrites(): void { $this->packages = ['package2', 'package3']; @@ -171,9 +158,7 @@ final class ImportMapTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function dependenciesAreLoaded(): void { $this->packages = ['core', 'package2']; @@ -184,9 +169,7 @@ final class ImportMapTest extends UnitTestCase self::assertStringContainsString('@typo3/core/', $output); } - /** - * @test - */ + #[Test] public function unusedConfigurationsAreOmitted(): void { $this->packages = ['core', 'package2', 'package4']; @@ -202,9 +185,7 @@ final class ImportMapTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function includeAllImportsIsRespected(): void { $this->packages = ['core', 'package2', 'package4']; diff --git a/typo3/sysext/core/Tests/Unit/Page/JavaScriptModuleInstructionTest.php b/typo3/sysext/core/Tests/Unit/Page/JavaScriptModuleInstructionTest.php index 5d81399ee2ac..6a3dab05b8a0 100644 --- a/typo3/sysext/core/Tests/Unit/Page/JavaScriptModuleInstructionTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/JavaScriptModuleInstructionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Page\JavaScriptModuleInstruction; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -33,10 +35,8 @@ final class JavaScriptModuleInstructionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider flagsAreAssignedDataProvider - */ + #[DataProvider('flagsAreAssignedDataProvider')] + #[Test] public function flagsAreAssigned(int $expectation, int $flags, int ...$additionalFlags): void { $subject = new JavaScriptModuleInstruction('Test', $flags); diff --git a/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php b/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php index e41ad703b56a..adc012106f11 100644 --- a/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Page\ImportMap; use TYPO3\CMS\Core\Page\ImportMapFactory; use TYPO3\CMS\Core\Page\PageRenderer; @@ -43,9 +45,7 @@ final class PageRendererTest extends UnitTestCase GeneralUtility::setSingletonInstance(ImportMapFactory::class, $importMapFactoryMock); } - /** - * @test - */ + #[Test] public function renderMethodCallsResetInAnyCase(): void { $pageRenderer = $this->getMockBuilder(PageRenderer::class) @@ -57,9 +57,7 @@ final class PageRendererTest extends UnitTestCase $pageRenderer->render(); } - /** - * @test - */ + #[Test] public function addBodyContentAddsContent(): void { $subject = $this->getAccessibleMock(PageRenderer::class, null, [], '', false); @@ -73,9 +71,7 @@ final class PageRendererTest extends UnitTestCase self::assertEquals($expectedReturnValue, $out); } - /** - * @test - */ + #[Test] public function addInlineLanguageLabelFileSetsInlineLanguageLabelFiles(): void { $subject = $this->getAccessibleMock(PageRenderer::class, null, [], '', false); @@ -95,9 +91,7 @@ final class PageRendererTest extends UnitTestCase self::assertSame($expectedInlineLanguageLabelFile, array_pop($actualResult)); } - /** - * @test - */ + #[Test] public function addInlineLanguageLabelFileSetsTwoDifferentInlineLanguageLabelFiles(): void { $subject = $this->getAccessibleMock(PageRenderer::class, null, [], '', false); @@ -126,9 +120,7 @@ final class PageRendererTest extends UnitTestCase self::assertSame($expectedInlineLanguageLabelFile1, array_pop($actualResult)); } - /** - * @test - */ + #[Test] public function addInlineLanguageLabelFileDoesNotSetSameLanguageFileTwice(): void { $subject = $this->getAccessibleMock(PageRenderer::class, null, [], '', false); @@ -141,9 +133,7 @@ final class PageRendererTest extends UnitTestCase self::assertCount(1, $subject->getInlineLanguageLabelFiles()); } - /** - * @test - */ + #[Test] public function includeLanguageFileForInlineDoesNotAddToInlineLanguageLabelsIfFileCouldNotBeRead(): void { $subject = $this->getAccessibleMock(PageRenderer::class, ['readLLfile'], [], '', false); @@ -200,10 +190,8 @@ final class PageRendererTest extends UnitTestCase ]; } - /** - * @dataProvider includeLanguageFileForInlineAddsProcessesLabelsToInlineLanguageLabelsProvider - * @test - */ + #[DataProvider('includeLanguageFileForInlineAddsProcessesLabelsToInlineLanguageLabelsProvider')] + #[Test] public function includeLanguageFileForInlineAddsProcessesLabelsToInlineLanguageLabels(array $llFileContent, string $selectionPrefix, string $stripFromSelectionName, array $expectation): void { $subject = $this->getAccessibleMock(PageRenderer::class, ['readLLfile'], [], '', false); @@ -215,9 +203,7 @@ final class PageRendererTest extends UnitTestCase self::assertEquals($expectation, $subject->_get('inlineLanguageLabels')); } - /** - * @test - */ + #[Test] public function getAddedMetaTag(): void { $subject = $this->getMockBuilder(PageRenderer::class) @@ -234,9 +220,7 @@ final class PageRendererTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function overrideMetaTag(): void { $subject = $this->getMockBuilder(PageRenderer::class) @@ -254,9 +238,7 @@ final class PageRendererTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function unsetAddedMetaTag(): void { $subject = $this->getMockBuilder(PageRenderer::class) @@ -270,9 +252,7 @@ final class PageRendererTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function parseLanguageLabelsForJavaScriptReturnsEmptyStringIfEmpty(): void { $subject = $this->getAccessibleMock(PageRenderer::class, null, [], '', false); @@ -282,9 +262,7 @@ final class PageRendererTest extends UnitTestCase self::assertEmpty($actual); } - /** - * @test - */ + #[Test] public function parseLanguageLabelsForJavaScriptReturnsFlatArray(): void { $subject = $this->getAccessibleMock(PageRenderer::class, null, [], '', false); diff --git a/typo3/sysext/core/Tests/Unit/Pagination/ArrayPaginatorTest.php b/typo3/sysext/core/Tests/Unit/Pagination/ArrayPaginatorTest.php index 284a818ceb1b..afdf402b085b 100644 --- a/typo3/sysext/core/Tests/Unit/Pagination/ArrayPaginatorTest.php +++ b/typo3/sysext/core/Tests/Unit/Pagination/ArrayPaginatorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Pagination; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Pagination\ArrayPaginator; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -32,17 +33,14 @@ final class ArrayPaginatorTest extends UnitTestCase /** * A short integration test to check that the fixtures are as expected - * - * @test */ + #[Test] public function integration(): void { self::assertCount(14, $this->fixture); } - /** - * @test - */ + #[Test] public function checkPaginatorWithDefaultConfiguration(): void { $paginator = new ArrayPaginator($this->fixture); @@ -53,9 +51,7 @@ final class ArrayPaginatorTest extends UnitTestCase self::assertCount(10, $paginator->getPaginatedItems()); } - /** - * @test - */ + #[Test] public function paginatorRespectsItemsPerPageConfiguration(): void { $paginator = new ArrayPaginator( @@ -70,9 +66,7 @@ final class ArrayPaginatorTest extends UnitTestCase self::assertCount(3, $paginator->getPaginatedItems()); } - /** - * @test - */ + #[Test] public function paginatorRespectsItemsPerPageConfigurationAndCurrentPage(): void { $paginator = new ArrayPaginator( @@ -87,9 +81,7 @@ final class ArrayPaginatorTest extends UnitTestCase self::assertCount(3, $paginator->getPaginatedItems()); } - /** - * @test - */ + #[Test] public function paginatorProperlyCalculatesLastPage(): void { $paginator = new ArrayPaginator( @@ -104,9 +96,7 @@ final class ArrayPaginatorTest extends UnitTestCase self::assertCount(2, $paginator->getPaginatedItems()); } - /** - * @test - */ + #[Test] public function withCurrentPageNumberThrowsInvalidArgumentExceptionIfCurrentPageIsLowerThanOne(): void { $this->expectExceptionCode(1573047338); @@ -119,9 +109,7 @@ final class ArrayPaginatorTest extends UnitTestCase $paginator->withCurrentPageNumber(0); } - /** - * @test - */ + #[Test] public function paginatorSetsCurrentPageToLastPageIfCurrentPageExceedsMaximum(): void { $paginator = new ArrayPaginator( @@ -135,9 +123,7 @@ final class ArrayPaginatorTest extends UnitTestCase self::assertCount(4, $paginator->getPaginatedItems()); } - /** - * @test - */ + #[Test] public function paginatorProperlyCalculatesOnlyOnePage(): void { $paginator = new ArrayPaginator( diff --git a/typo3/sysext/core/Tests/Unit/Pagination/SimplePaginationTest.php b/typo3/sysext/core/Tests/Unit/Pagination/SimplePaginationTest.php index 6fb605f87303..cc353bc97acc 100644 --- a/typo3/sysext/core/Tests/Unit/Pagination/SimplePaginationTest.php +++ b/typo3/sysext/core/Tests/Unit/Pagination/SimplePaginationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Pagination; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Pagination\ArrayPaginator; use TYPO3\CMS\Core\Pagination\SimplePagination; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -36,9 +37,7 @@ final class SimplePaginationTest extends UnitTestCase $this->paginator = new ArrayPaginator(range(1, 14, 1)); } - /** - * @test - */ + #[Test] public function checkSimplePaginationWithAPaginatorWithDefaultSettings(): void { $pagination = new SimplePagination($this->paginator); @@ -52,9 +51,7 @@ final class SimplePaginationTest extends UnitTestCase self::assertSame([1, 2], $pagination->getAllPageNumbers()); } - /** - * @test - */ + #[Test] public function checkSimplePaginationWithAnIncreasedCurrentPageNumber(): void { $paginator = $this->paginator @@ -72,9 +69,7 @@ final class SimplePaginationTest extends UnitTestCase self::assertSame([1, 2], $pagination->getAllPageNumbers()); } - /** - * @test - */ + #[Test] public function checkSimplePaginationWithAnIncreasedCurrentPageNumberAndItemsPerPage(): void { $paginator = $this->paginator @@ -92,9 +87,7 @@ final class SimplePaginationTest extends UnitTestCase self::assertSame([1, 2, 3, 4, 5], $pagination->getAllPageNumbers()); } - /** - * @test - */ + #[Test] public function checkPaginationWithAPaginatorThatOnlyHasOnePage(): void { $paginator = $this->paginator @@ -111,9 +104,7 @@ final class SimplePaginationTest extends UnitTestCase self::assertSame([1], $pagination->getAllPageNumbers()); } - /** - * @test - */ + #[Test] public function checkPaginatorWithOutOfBoundsCurrentPage(): void { $paginator = $this->paginator diff --git a/typo3/sysext/core/Tests/Unit/Pagination/SlidingWindowPaginationTest.php b/typo3/sysext/core/Tests/Unit/Pagination/SlidingWindowPaginationTest.php index db6d893dad2b..e9383ca793d8 100644 --- a/typo3/sysext/core/Tests/Unit/Pagination/SlidingWindowPaginationTest.php +++ b/typo3/sysext/core/Tests/Unit/Pagination/SlidingWindowPaginationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Pagination; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Pagination\ArrayPaginator; use TYPO3\CMS\Core\Pagination\SlidingWindowPagination; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +26,7 @@ final class SlidingWindowPaginationTest extends UnitTestCase { protected $paginator = []; - /** - * @test - */ + #[Test] public function checkSlidingWindowPaginationWithAPaginatorWithDefaultSettings(): void { $pagination = new SlidingWindowPagination($this->paginator, 5); @@ -46,9 +45,7 @@ final class SlidingWindowPaginationTest extends UnitTestCase self::assertSame(5, $pagination->getMaximumNumberOfLinks()); } - /** - * @test - */ + #[Test] public function checkSlidingWindowPaginationWithAnIncreasedCurrentPageNumber(): void { $paginator = $this->paginator->withCurrentPageNumber(2); @@ -68,9 +65,7 @@ final class SlidingWindowPaginationTest extends UnitTestCase self::assertSame(5, $pagination->getMaximumNumberOfLinks()); } - /** - * @test - */ + #[Test] public function checkSlidingWindowPaginationWithAnIncreasedCurrentPageNumberAndItemsPerPage(): void { $paginator = $this->paginator @@ -92,9 +87,7 @@ final class SlidingWindowPaginationTest extends UnitTestCase self::assertSame(5, $pagination->getMaximumNumberOfLinks()); } - /** - * @test - */ + #[Test] public function checkPaginationWithAPaginatorThatOnlyHasOnePage(): void { $paginator = $this->paginator->withItemsPerPage(50); @@ -114,9 +107,7 @@ final class SlidingWindowPaginationTest extends UnitTestCase self::assertSame(5, $pagination->getMaximumNumberOfLinks()); } - /** - * @test - */ + #[Test] public function checkPaginatorWithOutOfBoundsCurrentPage(): void { $paginator = $this->paginator diff --git a/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/CorePasswordValidatorTest.php b/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/CorePasswordValidatorTest.php index 0bd38bc17114..cbdd54c927ec 100644 --- a/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/CorePasswordValidatorTest.php +++ b/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/CorePasswordValidatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\PasswordPolicy\Validator; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\PasswordPolicy\Validator\CorePasswordValidator; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -91,10 +93,8 @@ final class CorePasswordValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validatorReturnsExpectedResultsDataProvider - */ + #[DataProvider('validatorReturnsExpectedResultsDataProvider')] + #[Test] public function validatorReturnsExpectedResults($options, $password, $expected) { $validator = new CorePasswordValidator($options); diff --git a/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/Dto/ContextDataTest.php b/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/Dto/ContextDataTest.php index 44173273a264..5633fe5bb8ae 100644 --- a/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/Dto/ContextDataTest.php +++ b/typo3/sysext/core/Tests/Unit/PasswordPolicy/Validator/Dto/ContextDataTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\PasswordPolicy\Validator\Dto; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\PasswordPolicy\Validator\Dto\ContextData; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ContextDataTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function contextDataContainsExpectedDefaults(): void { $subject = new ContextData(); @@ -37,9 +36,7 @@ final class ContextDataTest extends UnitTestCase self::assertEquals('', $subject->getNewUserFullName()); } - /** - * @test - */ + #[Test] public function contextDataPropertiesSetInConstructor(): void { $subject = new ContextData( @@ -59,9 +56,7 @@ final class ContextDataTest extends UnitTestCase self::assertEquals('fullname', $subject->getNewUserFullName()); } - /** - * @test - */ + #[Test] public function getDataReturnsExpectedDataForContextDataSetInConstructor(): void { $subject = new ContextData(newUserFullName: 'Firstname Lastname'); @@ -69,9 +64,7 @@ final class ContextDataTest extends UnitTestCase self::assertEquals('Firstname Lastname', $subject->getData('newUserFullName')); } - /** - * @test - */ + #[Test] public function setDataSetsData(): void { $subject = new ContextData(); diff --git a/typo3/sysext/core/Tests/Unit/Preparations/TcaPreparationTest.php b/typo3/sysext/core/Tests/Unit/Preparations/TcaPreparationTest.php index b53733bfeec4..c1f2d4f1bb5c 100644 --- a/typo3/sysext/core/Tests/Unit/Preparations/TcaPreparationTest.php +++ b/typo3/sysext/core/Tests/Unit/Preparations/TcaPreparationTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Preparations; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Preparations\TcaPreparation; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TcaPreparationTest extends UnitTestCase { - /** - * @test - * @dataProvider configureCategoryRelationsDataProvider - */ + #[DataProvider('configureCategoryRelationsDataProvider')] + #[Test] public function configureCategoryRelations(array $input, array $expected): void { self::assertEquals($expected, (new TcaPreparation())->prepare($input)); @@ -240,10 +240,8 @@ final class TcaPreparationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider configureCategoryRelationsThrowsExceptionOnInvalidMaxitemsDataProvider - */ + #[DataProvider('configureCategoryRelationsThrowsExceptionOnInvalidMaxitemsDataProvider')] + #[Test] public function configureCategoryRelationsThrowsExceptionOnInvalidMaxitems(array $input, int $exceptionCode): void { $this->expectExceptionCode($exceptionCode); @@ -318,9 +316,7 @@ final class TcaPreparationTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function configureCategoryRelationsThrowsExceptionOnInvalidRelationship(): void { $this->expectExceptionCode(1627898896); @@ -339,9 +335,7 @@ final class TcaPreparationTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function prepareFileExtensionsReplacesPlaceholders(): void { $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] = 'jpg,png'; @@ -352,9 +346,7 @@ final class TcaPreparationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function prepareFileExtensionsRemovesDuplicates(): void { $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] = 'jpg,png'; diff --git a/typo3/sysext/core/Tests/Unit/RegistryTest.php b/typo3/sysext/core/Tests/Unit/RegistryTest.php index b29214edd91b..baa4d48fc7a1 100644 --- a/typo3/sysext/core/Tests/Unit/RegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/RegistryTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Registry; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getThrowsExceptionForInvalidNamespacesUsingNoNamespace(): void { $this->expectException(\InvalidArgumentException::class); @@ -32,9 +31,7 @@ final class RegistryTest extends UnitTestCase (new Registry())->get('', 'someKey'); } - /** - * @test - */ + #[Test] public function getThrowsExceptionForInvalidNamespacesUsingTooShortNamespace(): void { $this->expectException(\InvalidArgumentException::class); @@ -42,9 +39,7 @@ final class RegistryTest extends UnitTestCase (new Registry())->get('t', 'someKey'); } - /** - * @test - */ + #[Test] public function setThrowsAnExceptionOnEmptyNamespace(): void { $this->expectException(\InvalidArgumentException::class); @@ -52,9 +47,7 @@ final class RegistryTest extends UnitTestCase (new Registry())->set('', 'someKey', 'someValue'); } - /** - * @test - */ + #[Test] public function setThrowsAnExceptionOnWrongNamespace(): void { $this->expectException(\InvalidArgumentException::class); @@ -62,9 +55,7 @@ final class RegistryTest extends UnitTestCase (new Registry())->set('t', 'someKey', 'someValue'); } - /** - * @test - */ + #[Test] public function removeThrowsAnExceptionOnWrongNamespace(): void { $this->expectException(\InvalidArgumentException::class); @@ -72,9 +63,7 @@ final class RegistryTest extends UnitTestCase (new Registry())->remove('t', 'someKey'); } - /** - * @test - */ + #[Test] public function removeAllByNamespaceThrowsAnExceptionOnWrongNamespace(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php b/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php index c2e499cf1423..5d4fb359f2a1 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FolderInterface; use TYPO3\CMS\Core\Resource\ResourceStorage; @@ -28,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class AbstractFileTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getParentFolderGetsParentFolderFromStorage(): void { $parentIdentifier = '/parent/'; @@ -59,9 +58,8 @@ final class AbstractFileTest extends UnitTestCase * type in a field "mimetype", while the file object and the database table use mime_type. * The test is placed in the test case for AbstractFile because the broken functionality resides there, though * it is only triggered when constructing a File instance with an index record. - * - * @test */ + #[Test] public function storageIsNotAskedForMimeTypeForPersistedRecord(): void { $mockedStorage = $this->getMockBuilder(ResourceStorage::class)->disableOriginalConstructor()->getMock(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php index 46deb0860e98..3efeb7f0ddbe 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Collection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\Collection\FileCollectionRegistry; use TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures\OtherTestingFileCollection; use TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures\TestingFileCollection; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FileCollectionRegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function registeredFileCollectionClassesCanBeRetrieved(): void { $className = TestingFileCollection::class; @@ -37,9 +36,7 @@ final class FileCollectionRegistryTest extends UnitTestCase self::assertEquals($className, $returnedClassName); } - /** - * @test - */ + #[Test] public function registerFileCollectionClassThrowsExceptionIfClassDoesNotExist(): void { $this->expectException(\InvalidArgumentException::class); @@ -48,9 +45,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $subject->registerFileCollectionClass(StringUtility::getUniqueId('class_'), substr(StringUtility::getUniqueId('type_'), 0, 30)); } - /** - * @test - */ + #[Test] public function registerFileCollectionClassThrowsExceptionIfTypeIsTooLong(): void { $this->expectException(\InvalidArgumentException::class); @@ -61,9 +56,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $subject->registerFileCollectionClass($className, $type); } - /** - * @test - */ + #[Test] public function registerFileCollectionClassThrowsExceptionIfTypeIsAlreadyRegistered(): void { $this->expectException(\InvalidArgumentException::class); @@ -75,9 +68,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $subject->registerFileCollectionClass($className2, 'foobar'); } - /** - * @test - */ + #[Test] public function registerFileCollectionClassOverridesExistingRegisteredFileCollectionClass(): void { $className = TestingFileCollection::class; @@ -87,9 +78,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $subject->registerFileCollectionClass($className2, 'foobar', true); } - /** - * @test - */ + #[Test] public function getFileCollectionClassThrowsExceptionIfClassIsNotRegistered(): void { $this->expectException(\InvalidArgumentException::class); @@ -98,9 +87,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $subject->getFileCollectionClass(StringUtility::getUniqueId()); } - /** - * @test - */ + #[Test] public function getFileCollectionClassAcceptsClassNameIfClassIsRegistered(): void { $className = TestingFileCollection::class; @@ -109,9 +96,7 @@ final class FileCollectionRegistryTest extends UnitTestCase self::assertEquals($className, $subject->getFileCollectionClass('foobar')); } - /** - * @test - */ + #[Test] public function fileCollectionRegistryIsInitializedWithPreconfiguredFileCollections(): void { $className = TestingFileCollection::class; @@ -123,9 +108,7 @@ final class FileCollectionRegistryTest extends UnitTestCase self::assertEquals($className, $subject->getFileCollectionClass($type)); } - /** - * @test - */ + #[Test] public function fileCollectionExistsReturnsTrueForAllExistingFileCollections(): void { $className = TestingFileCollection::class; @@ -138,9 +121,7 @@ final class FileCollectionRegistryTest extends UnitTestCase self::assertFalse($subject->fileCollectionTypeExists('bar')); } - /** - * @test - */ + #[Test] public function fileCollectionExistsReturnsFalseIfFileCollectionDoesNotExist(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['registeredFileCollections'] = []; @@ -148,9 +129,7 @@ final class FileCollectionRegistryTest extends UnitTestCase self::assertFalse($subject->fileCollectionTypeExists(StringUtility::getUniqueId('name_'))); } - /** - * @test - */ + #[Test] public function addNewTypeToTCA(): void { // Create a TCA fixture for sys_file_collection diff --git a/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php b/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php index f4125bb46218..a7cd77159c8c 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Driver; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Resource\Driver\Fixtures\TestingDriver; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractDriverTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isCaseSensitiveFileSystemReturnsTrueIfNothingIsConfigured(): void { $subject = new TestingDriver(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractHierarchicalFilesystemDriverTest.php b/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractHierarchicalFilesystemDriverTest.php index 9efb766bedbc..54e252f53a13 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractHierarchicalFilesystemDriverTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractHierarchicalFilesystemDriverTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Driver; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Resource\Driver\Fixtures\TestingHierarchicalFilesystemDriver; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -60,10 +62,8 @@ final class AbstractHierarchicalFilesystemDriverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canonicalizeAndCheckFileIdentifierCanonicalizesPathDataProvider - */ + #[DataProvider('canonicalizeAndCheckFileIdentifierCanonicalizesPathDataProvider')] + #[Test] public function canonicalizeAndCheckFileIdentifierCanonicalizesPath(string $expectedPath, string $fileIdentifier): void { $subject = new TestingHierarchicalFilesystemDriver(); @@ -104,10 +104,8 @@ final class AbstractHierarchicalFilesystemDriverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canonicalizeAndCheckFolderIdentifierCanonicalizesFolderIdentifierDataProvider - */ + #[DataProvider('canonicalizeAndCheckFolderIdentifierCanonicalizesFolderIdentifierDataProvider')] + #[Test] public function canonicalizeAndCheckFolderIdentifierCanonicalizesFolderIdentifier(string $expectedPath, string $identifier): void { $subject = new TestingHierarchicalFilesystemDriver(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php index 582b4c43fd65..bb56b798ee9e 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Driver; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\Driver\DriverInterface; use TYPO3\CMS\Core\Resource\Driver\DriverRegistry; use TYPO3\CMS\Core\Tests\Unit\Resource\Driver\Fixtures\TestingDriver; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DriverRegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function registeredDriverClassesCanBeRetrieved(): void { $className = get_class($this->createMock(DriverInterface::class)); @@ -37,9 +36,7 @@ final class DriverRegistryTest extends UnitTestCase self::assertEquals($className, $returnedClassName); } - /** - * @test - */ + #[Test] public function registerDriverClassThrowsExceptionIfClassDoesNotExist(): void { $this->expectException(\InvalidArgumentException::class); @@ -48,9 +45,7 @@ final class DriverRegistryTest extends UnitTestCase $subject->registerDriverClass(StringUtility::getUniqueId('class_')); } - /** - * @test - */ + #[Test] public function registerDriverClassThrowsExceptionIfShortnameIsAlreadyTakenByAnotherDriverClass(): void { $this->expectException(\InvalidArgumentException::class); @@ -62,9 +57,7 @@ final class DriverRegistryTest extends UnitTestCase $subject->registerDriverClass($className2, 'foobar'); } - /** - * @test - */ + #[Test] public function getDriverClassThrowsExceptionIfClassIsNotRegistered(): void { $this->expectException(\InvalidArgumentException::class); @@ -73,9 +66,7 @@ final class DriverRegistryTest extends UnitTestCase $subject->getDriverClass(StringUtility::getUniqueId('class_')); } - /** - * @test - */ + #[Test] public function getDriverClassAcceptsClassNameIfClassIsRegistered(): void { $className = get_class($this->createMock(DriverInterface::class)); @@ -84,9 +75,7 @@ final class DriverRegistryTest extends UnitTestCase self::assertEquals($className, $subject->getDriverClass($className)); } - /** - * @test - */ + #[Test] public function driverRegistryIsInitializedWithPreconfiguredDrivers(): void { $className = get_class($this->createMock(DriverInterface::class)); @@ -100,9 +89,7 @@ final class DriverRegistryTest extends UnitTestCase self::assertEquals($className, $subject->getDriverClass($shortName)); } - /** - * @test - */ + #[Test] public function driverExistsReturnsTrueForAllExistingDrivers(): void { $className = get_class($this->createMock(DriverInterface::class)); @@ -117,9 +104,7 @@ final class DriverRegistryTest extends UnitTestCase self::assertFalse($subject->driverExists(StringUtility::getUniqueId('class'))); } - /** - * @test - */ + #[Test] public function driverExistsReturnsFalseIfDriverDoesNotExist(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['registeredDrivers'] = []; diff --git a/typo3/sysext/core/Tests/Unit/Resource/FileReferenceTest.php b/typo3/sysext/core/Tests/Unit/Resource/FileReferenceTest.php index 4045c1f356ec..994437b07126 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/FileReferenceTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/FileReferenceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FileReference; @@ -65,10 +67,8 @@ final class FileReferenceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider propertiesDataProvider - */ + #[DataProvider('propertiesDataProvider')] + #[Test] public function getPropertiesReturnsMergedPropertiesAndRespectsNullValues(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void { $fixture = $this->prepareFixture($fileReferenceProperties, $originalFileProperties); @@ -76,10 +76,8 @@ final class FileReferenceTest extends UnitTestCase self::assertSame($expectedMergedProperties, $actual); } - /** - * @test - * @dataProvider propertiesDataProvider - */ + #[DataProvider('propertiesDataProvider')] + #[Test] public function hasPropertyReturnsTrueForAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void { $fixture = $this->prepareFixture($fileReferenceProperties, $originalFileProperties); @@ -88,10 +86,8 @@ final class FileReferenceTest extends UnitTestCase } } - /** - * @test - * @dataProvider propertiesDataProvider - */ + #[DataProvider('propertiesDataProvider')] + #[Test] public function getPropertyReturnsAllMergedPropertyKeys(array $fileReferenceProperties, array $originalFileProperties, array $expectedMergedProperties): void { $fixture = $this->prepareFixture($fileReferenceProperties, $originalFileProperties); @@ -100,10 +96,8 @@ final class FileReferenceTest extends UnitTestCase } } - /** - * @test - * @dataProvider propertiesDataProvider - */ + #[DataProvider('propertiesDataProvider')] + #[Test] public function getPropertyThrowsExceptionForNotAvailableProperty(array $fileReferenceProperties, array $originalFileProperties): void { $this->expectException(\InvalidArgumentException::class); @@ -113,10 +107,8 @@ final class FileReferenceTest extends UnitTestCase $fixture->getProperty(StringUtility::getUniqueId('nothingHere')); } - /** - * @test - * @dataProvider propertiesDataProvider - */ + #[DataProvider('propertiesDataProvider')] + #[Test] public function getPropertyDoesNotThrowExceptionForPropertyOnlyAvailableInOriginalFile( array $fileReferenceProperties, array $originalFileProperties @@ -125,10 +117,8 @@ final class FileReferenceTest extends UnitTestCase self::assertSame($originalFileProperties['file_only_property'], $fixture->getProperty('file_only_property')); } - /** - * @test - * @dataProvider propertiesDataProvider - */ + #[DataProvider('propertiesDataProvider')] + #[Test] public function getReferencePropertyThrowsExceptionForPropertyOnlyAvailableInOriginalFile( array $fileReferenceProperties, array $originalFileProperties @@ -140,27 +130,21 @@ final class FileReferenceTest extends UnitTestCase $fixture->getReferenceProperty('file_only_property'); } - /** - * @test - */ + #[Test] public function getTitleReturnsEmptyStringWhenPropertyValueIsNull(): void { $fixture = $this->prepareFixture(['title' => null], []); self::assertSame('', $fixture->getTitle()); } - /** - * @test - */ + #[Test] public function getAlternativeReturnsEmptyStringWhenPropertyValueIsNull(): void { $fixture = $this->prepareFixture(['alternative' => null], []); self::assertSame('', $fixture->getAlternative()); } - /** - * @test - */ + #[Test] public function getDescriptionReturnsEmptyStringWhenPropertyValueIsNull(): void { $fixture = $this->prepareFixture(['description' => null], []); diff --git a/typo3/sysext/core/Tests/Unit/Resource/FileTest.php b/typo3/sysext/core/Tests/Unit/Resource/FileTest.php index 400c58a74eb0..63ac0e335594 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/FileTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/FileTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\Index\MetaDataRepository; @@ -56,9 +58,7 @@ final class FileTest extends UnitTestCase return $fixture; } - /** - * @test - */ + #[Test] public function commonPropertiesAreAvailableWithOwnGetters(): void { $properties = [ @@ -74,18 +74,15 @@ final class FileTest extends UnitTestCase /** * Tests if a file is seen as indexed if the record has a uid - * - * @test */ + #[Test] public function fileIndexStatusIsTrueIfUidIsSet(): void { $fixture = new File(['uid' => 1], $this->storageMock); self::assertTrue($fixture->isIndexed()); } - /** - * @test - */ + #[Test] public function updatePropertiesUpdatesFileProperties(): void { $identifier = '/' . StringUtility::getUniqueId('identifier_'); @@ -94,9 +91,7 @@ final class FileTest extends UnitTestCase self::assertEquals($identifier, $fixture->getIdentifier()); } - /** - * @test - */ + #[Test] public function updatePropertiesLeavesPropertiesUntouchedIfNotSetInNewProperties(): void { $fixture = new File(['uid' => 1, 'foo' => 'asdf', 'identifier' => '/test'], $this->storageMock); @@ -105,9 +100,7 @@ final class FileTest extends UnitTestCase self::assertEquals('/test', $fixture->getProperty('identifier')); } - /** - * @test - */ + #[Test] public function updatePropertiesDiscardsUidIfAlreadySet(): void { $fixture = new File(['uid' => 1, 'identifier' => '/test'], $this->storageMock); @@ -115,9 +108,7 @@ final class FileTest extends UnitTestCase self::assertEquals(1, $fixture->getUid()); } - /** - * @test - */ + #[Test] public function updatePropertiesRecordsNamesOfChangedProperties(): void { $fixture = new File(['uid' => 1, 'foo' => 'asdf', 'baz' => 'fdsw', 'identifier' => '/test'], $this->storageMock); @@ -125,9 +116,7 @@ final class FileTest extends UnitTestCase self::assertEquals(['foo', 'baz'], $fixture->getUpdatedProperties()); } - /** - * @test - */ + #[Test] public function updatePropertiesDoesNotRecordPropertyNameIfSameValueIsProvided(): void { $fixture = new File(['uid' => 1, 'foo' => 'asdf', 'identifier' => '/test'], $this->storageMock); @@ -135,9 +124,7 @@ final class FileTest extends UnitTestCase self::assertEmpty($fixture->getUpdatedProperties()); } - /** - * @test - */ + #[Test] public function updatePropertiesMarksPropertyAsChangedOnlyOnce(): void { $fixture = new File(['uid' => 1, 'foo' => 'asdf', 'baz' => 'fdsw', 'identifier' => '/test'], $this->storageMock); @@ -146,9 +133,7 @@ final class FileTest extends UnitTestCase self::assertEquals(['foo', 'baz'], $fixture->getUpdatedProperties()); } - /** - * @test - */ + #[Test] public function updatePropertiesReloadsStorageObjectIfStorageChanges(): void { $fileProperties = [ @@ -171,9 +156,7 @@ final class FileTest extends UnitTestCase self::assertSame($mockedNewStorage, $subject->getStorage()); } - /** - * @test - */ + #[Test] public function copyToCallsCopyOperationOnTargetFolderStorage(): void { $targetStorage = $this->createMock(ResourceStorage::class); @@ -184,9 +167,7 @@ final class FileTest extends UnitTestCase $fixture->copyTo($targetFolder); } - /** - * @test - */ + #[Test] public function moveToCallsMoveOperationOnTargetFolderStorage(): void { $targetStorage = $this->createMock(ResourceStorage::class); @@ -208,10 +189,8 @@ final class FileTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider filenameExtensionDataProvider - */ + #[DataProvider('filenameExtensionDataProvider')] + #[Test] public function getNameWithoutExtensionReturnsCorrectName($originalFilename, $expectedBasename): void { $fixture = new File( @@ -224,10 +203,8 @@ final class FileTest extends UnitTestCase self::assertSame($expectedBasename, $fixture->getNameWithoutExtension()); } - /** - * @test - * @dataProvider filenameExtensionDataProvider - */ + #[DataProvider('filenameExtensionDataProvider')] + #[Test] public function getExtensionReturnsCorrectExtension($originalFilename, $expectedBasename, $expectedExtension): void { $fixture = new File([ @@ -237,18 +214,14 @@ final class FileTest extends UnitTestCase self::assertSame($expectedExtension, $fixture->getExtension()); } - /** - * @test - */ + #[Test] public function hasPropertyReturnsTrueFilePropertyExists(): void { $fixture = new File(['testproperty' => 'testvalue'], $this->storageMock); self::assertTrue($fixture->hasProperty('testproperty')); } - /** - * @test - */ + #[Test] public function hasPropertyReturnsTrueIfMetadataPropertyExists(): void { $fixture = $this->getMockBuilder(File::class) @@ -268,9 +241,7 @@ final class FileTest extends UnitTestCase self::assertSame('testvalue', $fixture->getProperty('testproperty')); } - /** - * @test - */ + #[Test] public function getPropertiesContainsUidOfSysFileMetadata(): void { $fileData = [ diff --git a/typo3/sysext/core/Tests/Unit/Resource/Filter/FileNameFilterTest.php b/typo3/sysext/core/Tests/Unit/Resource/Filter/FileNameFilterTest.php index aef49fcbacb5..c6ed59c99134 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Filter/FileNameFilterTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Filter/FileNameFilterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Filter; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\Driver\DriverInterface; use TYPO3\CMS\Core\Resource\Filter\FileNameFilter; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -53,10 +55,10 @@ final class FileNameFilterTest extends UnitTestCase } /** - * @test - * @dataProvider getItemsAndPathsWithoutHiddenFilesAndFolders_dataProvider * @param bool|int $expected */ + #[DataProvider('getItemsAndPathsWithoutHiddenFilesAndFolders_dataProvider')] + #[Test] public function filterHiddenFilesAndFoldersFiltersHiddenFilesAndFolders(string $itemName, string $itemIdentifier, $expected): void { FileNameFilter::setShowHiddenFilesAndFolders(false); @@ -74,10 +76,10 @@ final class FileNameFilterTest extends UnitTestCase } /** - * @test - * @dataProvider getItemsAndPathsWithHiddenFilesAndFolders_dataProvider * @param bool|int $expected */ + #[DataProvider('getItemsAndPathsWithHiddenFilesAndFolders_dataProvider')] + #[Test] public function filterHiddenFilesAndFoldersAllowsHiddenFilesAndFolders(string $itemName, string $itemIdentifier, $expected): void { $driverMock = $this->createMock(DriverInterface::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/FolderTest.php b/typo3/sysext/core/Tests/Unit/Resource/FolderTest.php index 36676b8c5262..bc0f843824a1 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/FolderTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/FolderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\Resource\ResourceStorage; @@ -36,9 +37,7 @@ final class FolderTest extends UnitTestCase return new Folder($mockedStorage, $path, $name); } - /** - * @test - */ + #[Test] public function constructorArgumentsAreAvailableAtRuntime(): void { $path = StringUtility::getUniqueId('path_'); @@ -50,9 +49,7 @@ final class FolderTest extends UnitTestCase self::assertSame($name, $fixture->getName()); } - /** - * @test - */ + #[Test] public function propertiesCanBeUpdated(): void { $fixture = $this->createFolderFixture('/somePath', 'someName'); @@ -61,9 +58,7 @@ final class FolderTest extends UnitTestCase self::assertSame('/someOtherPath', $fixture->getIdentifier()); } - /** - * @test - */ + #[Test] public function propertiesAreNotUpdatedIfNotSetInInput(): void { $fixture = $this->createFolderFixture('/somePath/someName/', 'someName'); @@ -71,9 +66,7 @@ final class FolderTest extends UnitTestCase self::assertSame('someName', $fixture->getName()); } - /** - * @test - */ + #[Test] public function getFilesReturnsArrayWithFilenamesAsKeys(): void { $mockedStorage = $this->createMock(ResourceStorage::class); @@ -94,9 +87,7 @@ final class FolderTest extends UnitTestCase self::assertSame(['somefile.png', 'somefile.jpg'], array_keys($fileList)); } - /** - * @test - */ + #[Test] public function getFilesHandsOverRecursiveFALSEifNotExplicitlySet(): void { $mockedStorage = $this->createMock(ResourceStorage::class); @@ -110,9 +101,7 @@ final class FolderTest extends UnitTestCase $fixture->getFiles(); } - /** - * @test - */ + #[Test] public function getFilesHandsOverRecursiveTRUEifSet(): void { $mockedStorage = $this->createMock(ResourceStorage::class); @@ -126,9 +115,7 @@ final class FolderTest extends UnitTestCase $fixture->getFiles(0, 0, Folder::FILTER_MODE_USE_OWN_AND_STORAGE_FILTERS, true); } - /** - * @test - */ + #[Test] public function getSubfolderCallsFactoryWithCorrectArguments(): void { $mockedStorage = $this->createMock(ResourceStorage::class); @@ -153,9 +140,7 @@ final class FolderTest extends UnitTestCase self::assertEquals($subfolderFixture, $folderFixture->getSubfolder('someSubfolder')); } - /** - * @test - */ + #[Test] public function getParentFolderGetsParentFolderFromStorage(): void { $parentIdentifier = '/parent/'; diff --git a/typo3/sysext/core/Tests/Unit/Resource/Index/ExtractorRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Index/ExtractorRegistryTest.php index 3d1ade1edd08..ab26b5d8d214 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Index/ExtractorRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Index/ExtractorRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Index; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\Index\ExtractorInterface; use TYPO3\CMS\Core\Resource\Index\ExtractorRegistry; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ExtractorRegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function registeredExtractorClassCanBeRetrieved(): void { $extractorClass = 'a9f4d5e4ebb4b03547a2a6094e1170ac'; @@ -43,9 +42,7 @@ final class ExtractorRegistryTest extends UnitTestCase self::assertContains($extractorObject, $extractorRegistry->getExtractors()); } - /** - * @test - */ + #[Test] public function registerExtractorClassThrowsExceptionIfClassDoesNotExist(): void { $this->expectException(\InvalidArgumentException::class); @@ -56,9 +53,7 @@ final class ExtractorRegistryTest extends UnitTestCase $extractorRegistry->registerExtractionService($className); } - /** - * @test - */ + #[Test] public function registerExtractorClassThrowsExceptionIfClassDoesNotImplementRightInterface(): void { $this->expectException(\InvalidArgumentException::class); @@ -69,9 +64,7 @@ final class ExtractorRegistryTest extends UnitTestCase $extractorRegistry->registerExtractionService($className); } - /** - * @test - */ + #[Test] public function registerExtractorClassWithHighestPriorityIsFirstInResult(): void { $extractorClass1 = 'db76010e5c24658c35ea1605cce2391d'; @@ -110,9 +103,7 @@ final class ExtractorRegistryTest extends UnitTestCase self::assertInstanceOf($extractorClass1, $extractorInstances[2]); } - /** - * @test - */ + #[Test] public function registeredExtractorClassWithSamePriorityAreAllReturned(): void { $extractorClass1 = 'b70551b2b2db62b6b15a9bbfcbd50614'; @@ -141,9 +132,7 @@ final class ExtractorRegistryTest extends UnitTestCase self::assertContains($extractorObject2, $extractorInstances); } - /** - * @test - */ + #[Test] public function registeredExtractorsCanBeFilteredByDriverTypeButNoTyeREstrictionIsTreatedAsCompatible(): void { $extractorClass1 = 'b70551b2b2db62b6b15a9bbfcbd50614'; @@ -174,9 +163,7 @@ final class ExtractorRegistryTest extends UnitTestCase self::assertContains($extractorObject2, $extractorInstances); } - /** - * @test - */ + #[Test] public function registeredExtractorsCanBeFilteredByDriverType(): void { $extractorClass1 = 'b70551b2b2db62b6b15a9bbfcbd50614'; diff --git a/typo3/sysext/core/Tests/Unit/Resource/Index/IndexerTest.php b/typo3/sysext/core/Tests/Unit/Resource/Index/IndexerTest.php index 3400eb8d8f70..af5a19c3895f 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Index/IndexerTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Index/IndexerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Index; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Index\FileIndexRepository; use TYPO3\CMS\Core\Resource\Index\Indexer; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class IndexerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function extractMetaDataCallsSubsequentMethodsWithCorrectArguments(): void { $mockStorage = $this->createMock(ResourceStorage::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/MetaDataAspectTest.php b/typo3/sysext/core/Tests/Unit/Resource/MetaDataAspectTest.php index 573628cf3cb5..26083383f077 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/MetaDataAspectTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/MetaDataAspectTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Database\Connection; @@ -50,9 +52,7 @@ final class MetaDataAspectTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function knownMetaDataIsAdded(): void { $metaData = [ @@ -64,9 +64,7 @@ final class MetaDataAspectTest extends UnitTestCase self::assertSame($metaData, $file->getMetaData()->get()); } - /** - * @test - */ + #[Test] public function manuallyAddedMetaDataIsMerged(): void { $metaData = [ @@ -89,9 +87,7 @@ final class MetaDataAspectTest extends UnitTestCase self::assertSame($expected, $file->getMetaData()->get()); } - /** - * @test - */ + #[Test] public function metaDataGetsRemoved(): void { $metaData = ['foo' => 'bar']; @@ -109,9 +105,7 @@ final class MetaDataAspectTest extends UnitTestCase self::assertEmpty($metaDataAspectMock->get()); } - /** - * @test - */ + #[Test] public function positiveUidOfFileIsExpectedToLoadMetaData(): void { $this->expectException(InvalidUidException::class); @@ -121,9 +115,7 @@ final class MetaDataAspectTest extends UnitTestCase $file->getMetaData()->get(); } - /** - * @test - */ + #[Test] public function newMetaDataIsCreated(): void { $GLOBALS['EXEC_TIME'] = 1534530781; @@ -166,9 +158,7 @@ final class MetaDataAspectTest extends UnitTestCase self::assertSame($expected, $file->getMetaData()->get()); } - /** - * @test - */ + #[Test] public function existingMetaDataGetsUpdated(): void { $metaData = ['uid' => 12, 'foo' => 'bar']; @@ -244,10 +234,8 @@ final class MetaDataAspectTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider propertyDataProvider - */ + #[DataProvider('propertyDataProvider')] + #[Test] public function propertyIsFetchedProperly(array $metaData, array $has, array $get): void { $file = new File([], $this->storageMock, $metaData); diff --git a/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Event/AfterVideoPreviewFetchedEventTest.php b/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Event/AfterVideoPreviewFetchedEventTest.php index 750cf83f8b4b..4749bfe9fd95 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Event/AfterVideoPreviewFetchedEventTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Event/AfterVideoPreviewFetchedEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\OnlineMedia\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\OnlineMedia\Event\AfterVideoPreviewFetchedEvent; use TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\YouTubeHelper; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AfterVideoPreviewFetchedEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $onlineMediaId = '2004'; diff --git a/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Helpers/VimeoHelperTest.php b/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Helpers/VimeoHelperTest.php index 649b479cd430..97f218db4e2f 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Helpers/VimeoHelperTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/OnlineMedia/Helpers/VimeoHelperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\OnlineMedia\Helpers; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\VimeoHelper; @@ -39,10 +41,8 @@ final class VimeoHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider transformUrlDataProvider - */ + #[DataProvider('transformUrlDataProvider')] + #[Test] public function transformUrlToFileReturnsExpectedResult(?string $url, ?string $videoId, bool $expectsMock): void { $mockedFolder = $this->createMock(Folder::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/ProcessedFileTest.php b/typo3/sysext/core/Tests/Unit/Resource/ProcessedFileTest.php index c012b21b724a..7685e1f42cae 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/ProcessedFileTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/ProcessedFileTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\Exception; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\File; @@ -84,18 +85,14 @@ final class ProcessedFileTest extends UnitTestCase return new ProcessedFile($originalFile, 'dummy', [], $dbRow ?: $this->databaseRow); } - /** - * @test - */ + #[Test] public function propertiesOfProcessedFileAreSetFromDatabaseRow(): void { $processedFileObject = $this->getProcessedFileFixture(); self::assertSame($this->databaseRow, $processedFileObject->getProperties()); } - /** - * @test - */ + #[Test] public function deletingProcessedFileRemovesFile(): void { $this->storageMock->expects(self::once())->method('deleteFile'); @@ -105,9 +102,7 @@ final class ProcessedFileTest extends UnitTestCase $processedFile->delete(true); } - /** - * @test - */ + #[Test] public function deletingProcessedFileThatUsesOriginalFileDoesNotRemoveFile(): void { $this->storageMock->expects(self::never())->method('deleteFile'); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Processing/LocalPreviewHelperTest.php b/typo3/sysext/core/Tests/Unit/Resource/Processing/LocalPreviewHelperTest.php index bb2a230c1d21..6370c775abaa 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Processing/LocalPreviewHelperTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Processing/LocalPreviewHelperTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Processing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Processing\LocalPreviewHelper; use TYPO3\CMS\Core\Resource\Processing\TaskInterface; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class LocalPreviewHelperTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function processProvidesDefaultSizeIfNotConfigured(): void { $file = $this->createMock(File::class); @@ -55,9 +54,7 @@ final class LocalPreviewHelperTest extends UnitTestCase $localPreviewHelper->process($task); } - /** - * @test - */ + #[Test] public function processDoesNotScaleUpImages(): void { $file = $this->createMock(File::class); @@ -78,9 +75,7 @@ final class LocalPreviewHelperTest extends UnitTestCase self::assertNull($localPreviewHelper->process($task)); } - /** - * @test - */ + #[Test] public function processGeneratesPreviewEvenIfSourceFileHasNoSize(): void { $file = $this->createMock(File::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Processing/ProcessorRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Processing/ProcessorRegistryTest.php index 34e789d0c44a..b841c109facb 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Processing/ProcessorRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Processing/ProcessorRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Processing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\Processing\AbstractTask; use TYPO3\CMS\Core\Resource\Processing\LocalImageProcessor; use TYPO3\CMS\Core\Resource\Processing\ProcessorRegistry; @@ -26,9 +27,7 @@ final class ProcessorRegistryTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function getProcessorWhenOnlyOneIsRegistered(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors'] = [ @@ -46,9 +45,7 @@ final class ProcessorRegistryTest extends UnitTestCase self::assertInstanceOf(LocalImageProcessor::class, $processor); } - /** - * @test - */ + #[Test] public function getProcessorWhenNoneIsRegistered(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors'] = []; @@ -59,9 +56,7 @@ final class ProcessorRegistryTest extends UnitTestCase $subject->getProcessorByTask($taskMock); } - /** - * @test - */ + #[Test] public function getProcessorWhenSameProcessorIsRegisteredTwice(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors'] = [ diff --git a/typo3/sysext/core/Tests/Unit/Resource/RelativeCssPathFixerTest.php b/typo3/sysext/core/Tests/Unit/Resource/RelativeCssPathFixerTest.php index 501c71710238..8423c3bbcc20 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/RelativeCssPathFixerTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/RelativeCssPathFixerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\RelativeCssPathFixer; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -69,10 +71,8 @@ final class RelativeCssPathFixerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider fixRelativeUrlPathsDataProvider - */ + #[DataProvider('fixRelativeUrlPathsDataProvider')] + #[Test] public function fixRelativeUrlPaths(string $css, string $newDir, string $expected): void { $subject = new RelativeCssPathFixer(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Rendering/AudioTagRendererTest.php b/typo3/sysext/core/Tests/Unit/Resource/Rendering/AudioTagRendererTest.php index b66a9d428a97..7d2457284ffd 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Rendering/AudioTagRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Rendering/AudioTagRendererTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Rendering; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Rendering\AudioTagRenderer; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class AudioTagRendererTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getPriorityReturnsCorrectValue(): void { $audioTagRenderer = new AudioTagRenderer(); @@ -36,9 +36,7 @@ final class AudioTagRendererTest extends UnitTestCase self::assertSame(1, $audioTagRenderer->getPriority()); } - /** - * @test - */ + #[Test] public function canRenderReturnsTrueOnCorrectFile(): void { $audioTagRenderer = new AudioTagRenderer(); @@ -55,9 +53,7 @@ final class AudioTagRendererTest extends UnitTestCase self::assertTrue($audioTagRenderer->canRender($fileResourceMock3)); } - /** - * @test - */ + #[Test] public function canRenderReturnsFalseOnCorrectFile(): void { $audioTagRenderer = new AudioTagRenderer(); @@ -118,10 +114,8 @@ final class AudioTagRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider renderArgumentsDataProvider - */ + #[DataProvider('renderArgumentsDataProvider')] + #[Test] public function renderOutputIsCorrect(string $url, array $arguments, string $expected): void { $audioTagRenderer = new AudioTagRenderer(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Rendering/RendererRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Rendering/RendererRegistryTest.php index 434600f9d8b4..95a4d581cba3 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Rendering/RendererRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Rendering/RendererRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Rendering; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Rendering\AudioTagRenderer; @@ -46,9 +47,7 @@ final class RendererRegistryTest extends UnitTestCase return $rendererRegistry; } - /** - * @test - */ + #[Test] public function registeredFileRenderClassCanBeRetrieved(): void { $rendererClass = StringUtility::getUniqueId('myRenderer'); @@ -62,9 +61,7 @@ final class RendererRegistryTest extends UnitTestCase self::assertContains($rendererObject, $rendererRegistry->getRendererInstances()); } - /** - * @test - */ + #[Test] public function registerRendererClassThrowsExceptionIfClassDoesNotExist(): void { $this->expectException(\InvalidArgumentException::class); @@ -74,9 +71,7 @@ final class RendererRegistryTest extends UnitTestCase $rendererRegistry->registerRendererClass(StringUtility::getUniqueId()); } - /** - * @test - */ + #[Test] public function registerRendererClassThrowsExceptionIfClassDoesNotImplementRightInterface(): void { $this->expectException(\InvalidArgumentException::class); @@ -87,9 +82,7 @@ final class RendererRegistryTest extends UnitTestCase $rendererRegistry->registerRendererClass($className); } - /** - * @test - */ + #[Test] public function registerRendererClassWithHighestPriorityIsFirstInResult(): void { $rendererClass1 = StringUtility::getUniqueId('myRenderer1'); @@ -127,9 +120,7 @@ final class RendererRegistryTest extends UnitTestCase self::assertInstanceOf($rendererClass1, $rendererInstances[2]); } - /** - * @test - */ + #[Test] public function registeredFileRendererClassWithSamePriorityAreAllReturned(): void { $rendererClass1 = StringUtility::getUniqueId('myRenderer1'); @@ -158,9 +149,7 @@ final class RendererRegistryTest extends UnitTestCase self::assertContains($rendererObject2, $rendererInstances); } - /** - * @test - */ + #[Test] public function getRendererReturnsCorrectInstance(): void { $rendererClass1 = StringUtility::getUniqueId('myVideoRenderer'); @@ -197,9 +186,7 @@ final class RendererRegistryTest extends UnitTestCase self::assertInstanceOf($rendererClass1, $renderer); } - /** - * @test - */ + #[Test] public function getRendererReturnsCorrectInstance2(): void { $this->resetSingletonInstances = true; diff --git a/typo3/sysext/core/Tests/Unit/Resource/Rendering/VideoTagRendererTest.php b/typo3/sysext/core/Tests/Unit/Resource/Rendering/VideoTagRendererTest.php index 67a63d13b14c..e5ed01252e8c 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Rendering/VideoTagRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Rendering/VideoTagRendererTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Rendering; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Rendering\VideoTagRenderer; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class VideoTagRendererTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getPriorityReturnsCorrectValue(): void { $VideoTagRenderer = new VideoTagRenderer(); @@ -36,9 +36,7 @@ final class VideoTagRendererTest extends UnitTestCase self::assertSame(1, $VideoTagRenderer->getPriority()); } - /** - * @test - */ + #[Test] public function canRenderReturnsTrueOnCorrectFile(): void { $VideoTagRenderer = new VideoTagRenderer(); @@ -58,9 +56,7 @@ final class VideoTagRendererTest extends UnitTestCase self::assertTrue($VideoTagRenderer->canRender($fileResourceMock4)); } - /** - * @test - */ + #[Test] public function canRenderReturnsFalseOnCorrectFile(): void { $VideoTagRenderer = new VideoTagRenderer(); @@ -153,10 +149,8 @@ final class VideoTagRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider renderArgumentsDataProvider - */ + #[DataProvider('renderArgumentsDataProvider')] + #[Test] public function renderOutputIsCorrect(string $url, array $arguments, string $expected): void { $VideoTagRenderer = new VideoTagRenderer(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php b/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php index 709785eed6a7..c7a4bc2741c3 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Rendering/VimeoRendererTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Rendering; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FileReference; @@ -43,17 +44,13 @@ final class VimeoRendererTest extends UnitTestCase $this->subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper); } - /** - * @test - */ + #[Test] public function getPriorityReturnsCorrectValue(): void { self::assertSame(1, $this->subject->getPriority()); } - /** - * @test - */ + #[Test] public function canRenderReturnsTrueOnCorrectFile(): void { $fileResourceMock1 = $this->createMock(File::class); @@ -67,9 +64,7 @@ final class VimeoRendererTest extends UnitTestCase self::assertTrue($this->subject->canRender($fileResourceMock2)); } - /** - * @test - */ + #[Test] public function canRenderReturnsFalseOnCorrectFile(): void { $fileResourceMock = $this->createMock(File::class); @@ -78,9 +73,7 @@ final class VimeoRendererTest extends UnitTestCase self::assertFalse($this->subject->canRender($fileResourceMock)); } - /** - * @test - */ + #[Test] public function renderOutputIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -91,9 +84,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithLoopIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -104,9 +95,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAutoplayIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -117,9 +106,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAutoplayFromReferenceIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -134,9 +121,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAutoplayAndWithoutControlsIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -147,9 +132,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAdditionalAttributes(): void { $fileResourceMock = $this->createMock(File::class); @@ -160,9 +143,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithDataAttributesForCustomization(): void { $fileResourceMock = $this->createMock(File::class); @@ -173,9 +154,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithCombinationOfDataAndAdditionalAttributes(): void { $fileResourceMock = $this->createMock(File::class); @@ -186,9 +165,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithCustomAllowIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -199,9 +176,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithCustomAllowAndAutoplayIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -212,9 +187,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithPrivateVimeoCodeIsCorrect(): void { $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']); @@ -232,9 +205,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputIsEscaped(): void { $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']); @@ -252,9 +223,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithApiIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -265,9 +234,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithEnabledNoCookieIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -278,9 +245,7 @@ final class VimeoRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithDisabledNoCookieIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Rendering/YouTubeRendererTest.php b/typo3/sysext/core/Tests/Unit/Resource/Rendering/YouTubeRendererTest.php index 453c3a429f1f..15041ba470da 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Rendering/YouTubeRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Rendering/YouTubeRendererTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Rendering; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FileReference; @@ -44,17 +46,13 @@ final class YouTubeRendererTest extends UnitTestCase $this->subject->method('getOnlineMediaHelper')->willReturn($youTubeHelper); } - /** - * @test - */ + #[Test] public function getPriorityReturnsCorrectValue(): void { self::assertSame(1, $this->subject->getPriority()); } - /** - * @test - */ + #[Test] public function canRenderReturnsTrueOnCorrectFile(): void { $fileResourceMock1 = $this->createMock(File::class); @@ -68,9 +66,7 @@ final class YouTubeRendererTest extends UnitTestCase self::assertTrue($this->subject->canRender($fileResourceMock2)); } - /** - * @test - */ + #[Test] public function canRenderReturnsFalseOnCorrectFile(): void { $fileResourceMock = $this->createMock(File::class); @@ -79,9 +75,7 @@ final class YouTubeRendererTest extends UnitTestCase self::assertFalse($this->subject->canRender($fileResourceMock)); } - /** - * @test - */ + #[Test] public function renderOutputWithLoopIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -92,9 +86,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAutoplayIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -105,9 +97,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAutoplayFromFileReferenceIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -122,9 +112,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAutoplayAndWithoutControlsIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -205,10 +193,8 @@ final class YouTubeRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider renderOutputWithControlsDataProvider - */ + #[DataProvider('renderOutputWithControlsDataProvider')] + #[Test] public function renderOutputWithDefaultControlsIsCorrect($expected, $options): void { $fileResourceMock = $this->createMock(File::class); @@ -219,9 +205,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithRelatedVideosTurnedOffIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -232,9 +216,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithAdditionalAttributes(): void { $fileResourceMock = $this->createMock(File::class); @@ -245,9 +227,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithDataAttributesForCustomization(): void { $fileResourceMock = $this->createMock(File::class); @@ -258,9 +238,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithCombinationOfDataAndAdditionalAttributes(): void { $fileResourceMock = $this->createMock(File::class); @@ -271,9 +249,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithDisabledNoCookieIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -284,9 +260,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithModestbrandingIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -297,9 +271,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithCustomAllowIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -310,9 +282,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputWithCustomAllowAndAutoplayIsCorrect(): void { $fileResourceMock = $this->createMock(File::class); @@ -323,9 +293,7 @@ final class YouTubeRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function renderOutputIsEscaped(): void { $youtubeHelper = $this->getAccessibleMock(YouTubeHelper::class, ['getOnlineMediaId'], ['youtube']); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php index b13465377923..628477b6333c 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Repository; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\ConnectionPool; @@ -45,9 +46,7 @@ final class AbstractRepositoryTest extends UnitTestCase return $queryBuilderMock; } - /** - * @test - */ + #[Test] public function findByUidFailsIfUidIsString(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/ResourceCompressorTest.php b/typo3/sysext/core/Tests/Unit/Resource/ResourceCompressorTest.php index 88ab6b19ab73..ce9b3ccb2331 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/ResourceCompressorTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/ResourceCompressorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\ResourceCompressor; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -62,10 +64,8 @@ final class ResourceCompressorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cssFixStatementsDataProvider - */ + #[DataProvider('cssFixStatementsDataProvider')] + #[Test] public function cssFixStatementsMovesStatementsToTopIfNeeded(string $input, string $expected): void { $subject = $this->getAccessibleMock(ResourceCompressor::class, ['compressCssFile', 'compressJsFile', 'createMergedCssFile', 'createMergedJsFile', 'getFilenameFromMainDir', 'checkBaseDirectory']); @@ -75,9 +75,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertEquals($expected, $resultWithReadableLinefeed); } - /** - * @test - */ + #[Test] public function compressedCssFileIsFlaggedToNotCompressAgain(): void { $fileName = 'fooFile.css'; @@ -101,9 +99,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertFalse($result[$compressedFileName]['compress']); } - /** - * @test - */ + #[Test] public function compressedJsFileIsFlaggedToNotCompressAgain(): void { $fileName = 'fooFile.js'; @@ -127,9 +123,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertFalse($result[$compressedFileName]['compress']); } - /** - * @test - */ + #[Test] public function concatenatedCssFileIsFlaggedToNotConcatenateAgain(): void { $fileName = 'fooFile.css'; @@ -153,9 +147,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertTrue($result[$concatenatedFileName]['excludeFromConcatenation']); } - /** - * @test - */ + #[Test] public function concatenatedCssFilesAreSeparatedByMediaType(): void { $allFileName = 'allFile.css'; @@ -197,9 +189,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertEquals('screen', $result['merged_' . $screenFileName1]['media']); } - /** - * @test - */ + #[Test] public function concatenatedCssFilesObeyForceOnTopOption(): void { $screen1FileName = 'screen1File.css'; @@ -233,9 +223,7 @@ final class ResourceCompressorTest extends UnitTestCase $subject->concatenateCssFiles($testFileFixture); } - /** - * @test - */ + #[Test] public function concatenatedCssFilesObeyExcludeFromConcatenation(): void { $screen1FileName = 'screen1File.css'; @@ -274,9 +262,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertEquals('screen', $result['merged_screen']['media']); } - /** - * @test - */ + #[Test] public function concatenateJsFileIsFlaggedToNotConcatenateAgain(): void { $fileName = 'fooFile.js'; @@ -406,10 +392,8 @@ final class ResourceCompressorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider concatenateJsFileAsyncDataProvider - */ + #[DataProvider('concatenateJsFileAsyncDataProvider')] + #[Test] public function concatenateJsFileAddsAsyncPropertyIfAllFilesAreAsync(array $input, bool $expected): void { $concatenatedFileName = 'merged_foo.js'; @@ -445,10 +429,8 @@ final class ResourceCompressorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calcStatementsDataProvider - */ + #[DataProvider('calcStatementsDataProvider')] + #[Test] public function calcFunctionMustRetainWhitespaces(string $input, string $expected): void { $subject = $this->getAccessibleMock(ResourceCompressor::class, ['compressCssFile', 'compressJsFile', 'createMergedCssFile', 'createMergedJsFile', 'getFilenameFromMainDir', 'checkBaseDirectory']); @@ -457,9 +439,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertSame($expected, trim($result)); } - /** - * @test - */ + #[Test] public function nomoduleJavascriptIsNotConcatenated(): void { $fileName = 'fooFile.js'; @@ -479,9 +459,7 @@ final class ResourceCompressorTest extends UnitTestCase self::assertTrue($result[$fileName]['nomodule']); } - /** - * @test - */ + #[Test] public function deferJavascriptIsNotConcatenated(): void { $fileName = 'fooFile.js'; diff --git a/typo3/sysext/core/Tests/Unit/Resource/ResourceFactoryTest.php b/typo3/sysext/core/Tests/Unit/Resource/ResourceFactoryTest.php index cc06b65b88c6..696fa8171454 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/ResourceFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/ResourceFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -55,9 +56,7 @@ final class ResourceFactoryTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function createFolderCreatesObjectWithCorrectArguments(): void { $mockedMount = $this->createMock(ResourceStorage::class); @@ -72,10 +71,7 @@ final class ResourceFactoryTest extends UnitTestCase /*********************************** * File Handling ***********************************/ - - /** - * @test - */ + #[Test] public function retrieveFileOrFolderObjectCallsGetFolderObjectFromCombinedIdentifierWithRelativePath(): void { $subject = $this->getAccessibleMock( @@ -92,9 +88,7 @@ final class ResourceFactoryTest extends UnitTestCase $subject->retrieveFileOrFolderObject('typo3'); } - /** - * @test - */ + #[Test] public function retrieveFileOrFolderObjectCallsGetFolderObjectFromCombinedIdentifierWithAbsolutePath(): void { $subject = $this->getAccessibleMock( @@ -111,9 +105,7 @@ final class ResourceFactoryTest extends UnitTestCase $subject->retrieveFileOrFolderObject(Environment::getPublicPath() . '/typo3'); } - /** - * @test - */ + #[Test] public function retrieveFileOrFolderObjectReturnsFileIfPathIsGiven(): void { $this->subject = $this->getAccessibleMock(ResourceFactory::class, ['getFileObjectFromCombinedIdentifier'], [], '', false); @@ -127,9 +119,7 @@ final class ResourceFactoryTest extends UnitTestCase $this->subject->retrieveFileOrFolderObject($filename); } - /** - * @test - */ + #[Test] public function retrieveFileOrFolderObjectReturnsFileFromPublicFolderWhenProjectRootIsNotPublic(): void { Environment::initialize( @@ -157,9 +147,7 @@ final class ResourceFactoryTest extends UnitTestCase $this->subject->retrieveFileOrFolderObject($filename); } - /** - * @test - */ + #[Test] public function retrieveFileOrFolderObjectReturnsFileFromPublicExtensionResourceWhenExtensionIsNotPublic(): void { Environment::initialize( @@ -181,9 +169,7 @@ final class ResourceFactoryTest extends UnitTestCase $this->subject->retrieveFileOrFolderObject('EXT:core/Resources/Public/Icons/Extension.svg'); } - /** - * @test - */ + #[Test] public function retrieveFileOrFolderObjectThrowsExceptionFromPrivateExtensionResourceWhenExtensionIsNotPublic(): void { Environment::initialize( diff --git a/typo3/sysext/core/Tests/Unit/Resource/Security/FileNameValidatorTest.php b/typo3/sysext/core/Tests/Unit/Resource/Security/FileNameValidatorTest.php index 2a7b156ab34c..58e7a1573936 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Security/FileNameValidatorTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Security/FileNameValidatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Security; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Core\Resource\Security\FileNameValidator; use TYPO3\CMS\Core\Utility\StringUtility; @@ -35,10 +37,9 @@ final class FileNameValidatorTest extends TestCase /** * Tests whether validator detects files with nul character without file deny pattern. - * - * @test - * @dataProvider deniedFilesWithoutDenyPatternDataProvider */ + #[DataProvider('deniedFilesWithoutDenyPatternDataProvider')] + #[Test] public function verifyNulCharacterFilesAgainstPatternWithoutFileDenyPattern(string $deniedFile): void { $subject = new FileNameValidator(''); @@ -113,10 +114,9 @@ final class FileNameValidatorTest extends TestCase /** * Tests whether the basic FILE_DENY_PATTERN detects denied files. - * - * @test - * @dataProvider deniedFilesWithDefaultDenyPatternDataProvider */ + #[DataProvider('deniedFilesWithDefaultDenyPatternDataProvider')] + #[Test] public function isValidDetectsNotAllowedFiles(string $deniedFile): void { $subject = new FileNameValidator(); @@ -132,10 +132,8 @@ final class FileNameValidatorTest extends TestCase ]; } - /** - * @test - * @dataProvider insecureFilesDataProvider - */ + #[DataProvider('insecureFilesDataProvider')] + #[Test] public function isValidAcceptsNotAllowedFilesDueToInsecureSetting(string $fileName): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['fileDenyPattern'] = '\\.phc$'; @@ -158,19 +156,16 @@ final class FileNameValidatorTest extends TestCase /** * Tests whether the basic file deny pattern accepts allowed files. - * - * @test - * @dataProvider allowedFilesDataProvider */ + #[DataProvider('allowedFilesDataProvider')] + #[Test] public function isValidAcceptAllowedFiles(string $allowedFile): void { $subject = new FileNameValidator(); self::assertTrue($subject->isValid($allowedFile)); } - /** - * @test - */ + #[Test] public function isCustomDenyPatternConfigured(): void { $subject = new FileNameValidator('nothing-really'); @@ -185,9 +180,7 @@ final class FileNameValidatorTest extends TestCase self::assertFalse($subject->customFileDenyPatternConfigured()); } - /** - * @test - */ + #[Test] public function customFileDenyPatternFindsMissingImportantParts(): void { $subject = new FileNameValidator('\\.php$|.php8$'); @@ -213,10 +206,9 @@ final class FileNameValidatorTest extends TestCase /** * Tests whether an accordant PHP extension is denied. - * - * @test - * @dataProvider phpExtensionDataProvider */ + #[DataProvider('phpExtensionDataProvider')] + #[Test] public function defaultFileDenyPatternMatchesPhpExtension(string $fileName): void { self::assertGreaterThan(0, preg_match('/' . FileNameValidator::DEFAULT_FILE_DENY_PATTERN . '/', $fileName), $fileName); @@ -224,10 +216,9 @@ final class FileNameValidatorTest extends TestCase /** * Tests whether an accordant PHP extension is denied. - * - * @test - * @dataProvider phpExtensionDataProvider */ + #[DataProvider('phpExtensionDataProvider')] + #[Test] public function invalidPhpExtensionIsDetected(string $fileName): void { $subject = new FileNameValidator(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Service/ConfigurationServiceTest.php b/typo3/sysext/core/Tests/Unit/Resource/Service/ConfigurationServiceTest.php index 96d4a07f2c22..92f92ea941ad 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Service/ConfigurationServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Service/ConfigurationServiceTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Service; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\ProcessedFile; use TYPO3\CMS\Core\Resource\Service\ConfigurationService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConfigurationServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function serializeSubstitutesFileObject(): void { $fileMock = $this->createMock(ProcessedFile::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Service/ExtractorServiceTest.php b/typo3/sysext/core/Tests/Unit/Resource/Service/ExtractorServiceTest.php index 95a25853861c..ebfadc1dd4c7 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Service/ExtractorServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Service/ExtractorServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Index\ExtractorInterface; use TYPO3\CMS\Core\Resource\Index\ExtractorRegistry; @@ -26,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ExtractorServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isFileTypeSupportedByExtractorReturnsFalseForFileTypeTextAndExtractorLimitedToFileTypeImage(): void { $fileMock = $this->createMock(File::class); @@ -48,9 +48,7 @@ final class ExtractorServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function isFileTypeSupportedByExtractorReturnsTrueForFileTypeImageAndExtractorLimitedToFileTypeImage(): void { $fileMock = $this->createMock(File::class); @@ -70,9 +68,7 @@ final class ExtractorServiceTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function isFileTypeSupportedByExtractorReturnsTrueForFileTypeTextAndExtractorHasNoFileTypeLimitation(): void { $fileMock = $this->createMock(File::class); @@ -92,9 +88,7 @@ final class ExtractorServiceTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function extractMetaDataComposesDataByAvailableExtractors(): void { $storageMock = $this->createMock(ResourceStorage::class); @@ -207,10 +201,8 @@ final class ExtractorServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider extractMetaDataComposesDataByAvailableExtractorsWithDifferentPrioritiesDataProvider - */ + #[DataProvider('extractMetaDataComposesDataByAvailableExtractorsWithDifferentPrioritiesDataProvider')] + #[Test] public function extractMetaDataComposesDataByAvailableExtractorsWithDifferentPriorities( int $extractorOneDataPriority, int $extractorOneExecutionPriority, diff --git a/typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php b/typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php index fe1173231d49..c6ae2d299246 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\Resource\Driver\DriverInterface; use TYPO3\CMS\Core\Resource\Driver\DriverRegistry; @@ -26,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class StorageRepositoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getDriverObjectAcceptsDriverClassName(): void { $mockedDriver = $this->createMock(DriverInterface::class); @@ -94,10 +94,8 @@ final class StorageRepositoryTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider storageDetectionDataProvider - */ + #[DataProvider('storageDetectionDataProvider')] + #[Test] public function findBestMatchingStorageByLocalPathReturnsDefaultStorageIfNoMatchIsFound(array $storageConfiguration, string $path, int $expectedStorageId): void { $subject = new StorageRepository( diff --git a/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/PlainTextExtractorTest.php b/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/PlainTextExtractorTest.php index 86faf6e4e3d8..da956524eefb 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/PlainTextExtractorTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/PlainTextExtractorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\TextExtraction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\TextExtraction\PlainTextExtractor; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class PlainTextExtractorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function canExtractTextReturnsTrueForPlainTextFiles(): void { $plainTextExtractor = new PlainTextExtractor(); @@ -39,9 +38,7 @@ final class PlainTextExtractorTest extends UnitTestCase self::assertTrue($plainTextExtractor->canExtractText($fileResourceMock)); } - /** - * @test - */ + #[Test] public function canExtractTextReturnsFalseForNonPlainTextFiles(): void { $plainTextExtractor = new PlainTextExtractor(); diff --git a/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/TextExtractorRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/TextExtractorRegistryTest.php index ee9ddd705cf5..e6e42a83eed7 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/TextExtractorRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/TextExtraction/TextExtractorRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\TextExtraction; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\TextExtraction\TextExtractorInterface; use TYPO3\CMS\Core\Resource\TextExtraction\TextExtractorRegistry; @@ -46,9 +47,7 @@ final class TextExtractorRegistryTest extends UnitTestCase return $textExtractorRegistry; } - /** - * @test - */ + #[Test] public function registeredTextExtractorClassCanBeRetrieved(): void { $textExtractorClass = StringUtility::getUniqueId('myTextExtractor'); @@ -62,9 +61,7 @@ final class TextExtractorRegistryTest extends UnitTestCase self::assertContains($textExtractorInstance, $textExtractorRegistry->getTextExtractorInstances()); } - /** - * @test - */ + #[Test] public function registerTextExtractorThrowsExceptionIfClassDoesNotExist(): void { $this->expectException(\InvalidArgumentException::class); @@ -74,9 +71,7 @@ final class TextExtractorRegistryTest extends UnitTestCase $textExtractorRegistry->registerTextExtractor(StringUtility::getUniqueId()); } - /** - * @test - */ + #[Test] public function registerTextExtractorThrowsExceptionIfClassDoesNotImplementRightInterface(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Utility/FileExtensionFilterTest.php b/typo3/sysext/core/Tests/Unit/Resource/Utility/FileExtensionFilterTest.php index 39f51ba05f24..eb040356fc22 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Utility/FileExtensionFilterTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Utility/FileExtensionFilterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\DataHandling\DataHandler; use TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -27,9 +29,7 @@ final class FileExtensionFilterTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function areInlineChildrenFilteredWithInvalidParameters(): void { $dataHandlerMock = $this->createMock(DataHandler::class); @@ -61,10 +61,8 @@ final class FileExtensionFilterTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider extensionFilterIgnoresCaseInAllowedExtensionCheckDataProvider - */ + #[DataProvider('extensionFilterIgnoresCaseInAllowedExtensionCheckDataProvider')] + #[Test] public function extensionFilterIgnoresCaseInAllowedExtensionCheck( string $fileExtension, string $allowedExtensions, diff --git a/typo3/sysext/core/Tests/Unit/Routing/Aspect/AspectFactoryTest.php b/typo3/sysext/core/Tests/Unit/Routing/Aspect/AspectFactoryTest.php index f917f24728a6..240865fb34f1 100644 --- a/typo3/sysext/core/Tests/Unit/Routing/Aspect/AspectFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Routing/Aspect/AspectFactoryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Routing\Aspect; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Routing\Aspect\AspectFactory; use TYPO3\CMS\Core\Routing\Aspect\AspectInterface; @@ -36,9 +38,7 @@ final class AspectFactoryTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function createAspectsThrowsExceptionOnMissingType(): void { $contextMock = $this->createMock(Context::class); @@ -52,9 +52,7 @@ final class AspectFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function createAspectsThrowsExceptionOnUnregisteredType(): void { $contextMock = $this->createMock(Context::class); @@ -130,10 +128,9 @@ final class AspectFactoryTest extends UnitTestCase /** * @param string[] $expectation - * - * @test - * @dataProvider aspectsDataProvider */ + #[DataProvider('aspectsDataProvider')] + #[Test] public function aspectsAreCreatedAndSorted(array $settings, array $expectation): void { $contextMock = $this->createMock(Context::class); diff --git a/typo3/sysext/core/Tests/Unit/Routing/Enhancer/VariableProcessorTest.php b/typo3/sysext/core/Tests/Unit/Routing/Enhancer/VariableProcessorTest.php index 3c17b33eab85..ed86ece4be61 100644 --- a/typo3/sysext/core/Tests/Unit/Routing/Enhancer/VariableProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Routing/Enhancer/VariableProcessorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Routing\Enhancer; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Routing\Enhancer\VariableProcessor; use TYPO3\CMS\Core\Routing\Enhancer\VariableProcessorCache; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -122,10 +124,8 @@ final class VariableProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider routePathDataProvider - */ + #[DataProvider('routePathDataProvider')] + #[Test] public function isRoutePathProcessed(?string $namespace, array $arguments, string $inflatedRoutePath, string $deflatedRoutePath): void { $subject = new VariableProcessor(new VariableProcessorCache()); @@ -161,10 +161,8 @@ final class VariableProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider parametersDataProvider - */ + #[DataProvider('parametersDataProvider')] + #[Test] public function parametersAreProcessed(array $arguments, array $deflatedParameters): void { $subject = new VariableProcessor(new VariableProcessorCache()); @@ -237,10 +235,8 @@ final class VariableProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider namespaceParametersDataProvider - */ + #[DataProvider('namespaceParametersDataProvider')] + #[Test] public function namespaceParametersAreProcessed(string $namespace, array $arguments, array $deflatedParameters): void { $subject = new VariableProcessor(new VariableProcessorCache()); @@ -325,10 +321,8 @@ final class VariableProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider keysDataProvider - */ + #[DataProvider('keysDataProvider')] + #[Test] public function keysAreDeflated(?string $namespace, array $arguments, array $deflatedKeys): void { $subject = new VariableProcessor(new VariableProcessorCache()); @@ -343,10 +337,8 @@ final class VariableProcessorTest extends UnitTestCase ); } - /** - * @test - * @dataProvider specialKeysDataProvider - */ + #[DataProvider('specialKeysDataProvider')] + #[Test] public function specialKeysAreNotInflatedWithoutBeingDeflated(?string $namespace, array $arguments, array $deflatedKeys): void { $this->expectException(\OutOfRangeException::class); diff --git a/typo3/sysext/core/Tests/Unit/Routing/PageRouterTest.php b/typo3/sysext/core/Tests/Unit/Routing/PageRouterTest.php index 85c63359d3a7..f3f4b9a5464c 100644 --- a/typo3/sysext/core/Tests/Unit/Routing/PageRouterTest.php +++ b/typo3/sysext/core/Tests/Unit/Routing/PageRouterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Routing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Routing\BackendEntryPointResolver; use TYPO3\CMS\Core\Routing\PageArguments; @@ -40,9 +41,7 @@ final class PageRouterTest extends UnitTestCase parent::setUp(); // TODO: Change the autogenerated stub } - /** - * @test - */ + #[Test] public function matchRequestThrowsExceptionIfNoPreviousResultGiven(): void { $this->expectException(RouteNotFoundException::class); @@ -53,9 +52,7 @@ final class PageRouterTest extends UnitTestCase $subject->matchRequest($request); } - /** - * @test - */ + #[Test] public function properSiteConfigurationFindsRoute(): void { $incomingUrl = 'https://king.com/lotus-flower/en/mr-magpie/bloom'; @@ -86,8 +83,8 @@ final class PageRouterTest extends UnitTestCase /** * Let's see if the slug is "/blabla" and the base does not have a trailing slash ("/en") - * @test */ + #[Test] public function properSiteConfigurationWithoutTrailingSlashFindsRoute(): void { $incomingUrl = 'https://king.com/lotus-flower/en/mr-magpie/bloom'; diff --git a/typo3/sysext/core/Tests/Unit/Routing/RouteSorterTest.php b/typo3/sysext/core/Tests/Unit/Routing/RouteSorterTest.php index 2973573c4c06..80f9bac8b0d7 100644 --- a/typo3/sysext/core/Tests/Unit/Routing/RouteSorterTest.php +++ b/typo3/sysext/core/Tests/Unit/Routing/RouteSorterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Routing; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Routing\Route; use TYPO3\CMS\Core\Routing\RouteSorter; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -238,10 +240,9 @@ final class RouteSorterTest extends UnitTestCase * @param Route[] $givenRoutes * @param array<string, string> $givenParameters * @param string[] $expectation - * - * @test - * @dataProvider routesAreSortedForGenerationDataProvider */ + #[DataProvider('routesAreSortedForGenerationDataProvider')] + #[Test] public function routesAreSortedForGeneration(array $givenRoutes, array $givenParameters, array $expectation): void { $sorter = (new RouteSorter()) diff --git a/typo3/sysext/core/Tests/Unit/Routing/SiteMatcherTest.php b/typo3/sysext/core/Tests/Unit/Routing/SiteMatcherTest.php index 8508473e7c6f..27bbe9c63a08 100644 --- a/typo3/sysext/core/Tests/Unit/Routing/SiteMatcherTest.php +++ b/typo3/sysext/core/Tests/Unit/Routing/SiteMatcherTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Routing; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Configuration\Features; use TYPO3\CMS\Core\Configuration\SiteConfiguration; @@ -31,9 +33,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SiteMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function fullUrlMatchesSpecificLanguageWithSubdomainsAndDomainSuffixes(): void { $site = new Site('main', 1, [ @@ -124,8 +124,8 @@ final class SiteMatcherTest extends UnitTestCase /** * Contains a FQDN as base for the site - * @test */ + #[Test] public function fullUrlMatchesSpecificLanguageWithSubdomainsAndPathSuffixes(): void { $site = new Site('main', 1, [ @@ -215,10 +215,8 @@ final class SiteMatcherTest extends UnitTestCase yield ['https://example.org/daother', '1-main', 'en-US']; } - /** - * @test - * @dataProvider bestMatchingUrlIsUsedDataProvider - */ + #[DataProvider('bestMatchingUrlIsUsedDataProvider')] + #[Test] public function bestMatchingUrlIsUsed(string $requestUri, string $expectedSite, string $expectedLocale): void { $mainSite = new Site('1-main', 31, [ diff --git a/typo3/sysext/core/Tests/Unit/Schema/Struct/SelectItemTest.php b/typo3/sysext/core/Tests/Unit/Schema/Struct/SelectItemTest.php index e464f9fb6669..31a441744dc4 100644 --- a/typo3/sysext/core/Tests/Unit/Schema/Struct/SelectItemTest.php +++ b/typo3/sysext/core/Tests/Unit/Schema/Struct/SelectItemTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Schema\Struct; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Schema\Struct\SelectItem; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -61,10 +63,8 @@ final class SelectItemTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider selectionItemCanBeConstructedFromTcaItemDataProvider - */ + #[DataProvider('selectionItemCanBeConstructedFromTcaItemDataProvider')] + #[Test] public function selectionItemCanBeConstructedFromTcaItem(array $item, string $type, array $expected): void { $selectionItem = SelectItem::fromTcaItemArray($item, $type); @@ -72,9 +72,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame($expected, $selectionItem->toArray()); } - /** - * @test - */ + #[Test] public function dividerValueCanBeIdentified(): void { $item = ['label' => 'foo', 'value' => '--div--']; @@ -96,10 +94,8 @@ final class SelectItemTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider notSetValuesCanBeIdentifiedDataProvider - */ + #[DataProvider('notSetValuesCanBeIdentifiedDataProvider')] + #[Test] public function notSetValuesCanBeIdentified(array $item, array $expected): void { $selectionItem = SelectItem::fromTcaItemArray($item); @@ -109,9 +105,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame($expected['description'], $selectionItem->hasDescription()); } - /** - * @test - */ + #[Test] public function canBeAccessedAsAnArray(): void { $selectionItem = new SelectItem( @@ -130,9 +124,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame('my description', $selectionItem['description']); } - /** - * @test - */ + #[Test] public function canBeAccessedAsAnArrayWithLegacyIndexedKeys(): void { $selectionItem = new SelectItem( @@ -151,9 +143,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame('my description', $selectionItem[4]); } - /** - * @test - */ + #[Test] public function canBeManipulatedLikeAnArray(): void { $selectionItem = new SelectItem( @@ -175,9 +165,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame('my description', $selectionItem->getDescription()); } - /** - * @test - */ + #[Test] public function canBeManipulatedLikeAnArrayWithLegacyIndexedKeys(): void { $selectionItem = new SelectItem( @@ -199,9 +187,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame('my description', $selectionItem->getDescription()); } - /** - * @test - */ + #[Test] public function valuesCanBeUnsetWithUnsetFunction(): void { $selectionItem = new SelectItem( @@ -222,9 +208,7 @@ final class SelectItemTest extends UnitTestCase self::assertNull($selectionItem->getDescription()); } - /** - * @test - */ + #[Test] public function valuesCanBeUnsetWithUnsetFunctionWithLegacyIndexedKeys(): void { $selectionItem = new SelectItem( @@ -245,9 +229,7 @@ final class SelectItemTest extends UnitTestCase self::assertNull($selectionItem->getDescription()); } - /** - * @test - */ + #[Test] public function arrayOffsetsCanBeTestedWithIssetFunction(): void { $selectionItem = new SelectItem( @@ -263,9 +245,7 @@ final class SelectItemTest extends UnitTestCase self::assertFalse(isset($selectionItem['description'])); } - /** - * @test - */ + #[Test] public function arrayOffsetsCanBeTestedWithIssetFunctionWithLegacyIndexedKeys(): void { $selectionItem = new SelectItem( @@ -281,9 +261,7 @@ final class SelectItemTest extends UnitTestCase self::assertFalse(isset($selectionItem[4])); } - /** - * @test - */ + #[Test] public function canSetCustomValueInArrayLikeFashion(): void { $selectionItem = new SelectItem( @@ -298,9 +276,7 @@ final class SelectItemTest extends UnitTestCase self::assertSame('customValue', $selectionItem['custom']); } - /** - * @test - */ + #[Test] public function canUnsetCustomValueInArrayLikeFashion(): void { $selectionItem = new SelectItem( diff --git a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ConsumableNonceTest.php b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ConsumableNonceTest.php index f74522388239..e5ba5dc7ea50 100644 --- a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ConsumableNonceTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ConsumableNonceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security\ContentSecurityPolicy; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\ConsumableNonce; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -29,10 +31,8 @@ final class ConsumableNonceTest extends UnitTestCase yield 'consumed twice' => [2]; } - /** - * @test - * @dataProvider consumptionIsRecognizedDataProvider - */ + #[DataProvider('consumptionIsRecognizedDataProvider')] + #[Test] public function consumptionIsRecognized(int $consumption): void { $subject = new ConsumableNonce(); @@ -42,9 +42,7 @@ final class ConsumableNonceTest extends UnitTestCase self::assertCount($consumption, $subject); } - /** - * @test - */ + #[Test] public function usesExistingValue(): void { $value = str_repeat('a', 40); diff --git a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/Reporting/ReportTest.php b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/Reporting/ReportTest.php index 3d2bc27428cb..17696f605a6f 100644 --- a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/Reporting/ReportTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/Reporting/ReportTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security\ContentSecurityPolicy\Reporting; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Uid\UuidV4; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Reporting\Report; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ReportTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function effectiveDirectiveIsTakenFromViolatedDirective(): void { $report = Report::fromArray([ @@ -40,9 +39,7 @@ final class ReportTest extends UnitTestCase self::assertSame('script-src', $report->details['effective-directive']); } - /** - * @test - */ + #[Test] public function toArrayUsesNativeDetailKeys(): void { $details = [ @@ -58,9 +55,7 @@ final class ReportTest extends UnitTestCase self::assertSame($details, json_decode($report->toArray()['details'], true)); } - /** - * @test - */ + #[Test] public function jsonEncodeUsesCamelCasedDetailKeys(): void { $details = [ diff --git a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ScopeTest.php b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ScopeTest.php index 5eab7f36399d..c24585c6116d 100644 --- a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ScopeTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/ScopeTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security\ContentSecurityPolicy; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ApplicationType; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Scope; use TYPO3\CMS\Core\Site\Entity\NullSite; @@ -32,27 +34,21 @@ final class ScopeTest extends UnitTestCase Scope::reset(); } - /** - * @test - */ + #[Test] public function backendSingletonIsCreated(): void { $scope = Scope::backend(); self::assertSame($scope, Scope::backend()); } - /** - * @test - */ + #[Test] public function frontendSingletonIsCreated(): void { $scope = Scope::frontend(); self::assertSame($scope, Scope::frontend()); } - /** - * @test - */ + #[Test] public function frontendSiteIsCreated(): void { $site = new Site('my-site', 1, []); @@ -66,27 +62,21 @@ final class ScopeTest extends UnitTestCase yield [new NullSite()]; } - /** - * @test - * @dataProvider frontendSingletonIsUsedForInvalidSiteDataProvider - */ + #[DataProvider('frontendSingletonIsUsedForInvalidSiteDataProvider')] + #[Test] public function frontendSingletonIsUsedForInvalidSite(?SiteInterface $site): void { self::assertSame(Scope::frontend(), Scope::frontendSite($site)); } - /** - * @test - */ + #[Test] public function frontendSiteIdentifierSingletonIsCreated(): void { $scope = Scope::frontendSiteIdentifier('my-site'); self::assertSame($scope, Scope::frontendSiteIdentifier('my-site')); } - /** - * @test - */ + #[Test] public function scopeIsCreatedFromString(): void { self::assertSame( diff --git a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/SourceCollectionTest.php b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/SourceCollectionTest.php index 13df4aad1bbb..3d765dc5ae50 100644 --- a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/SourceCollectionTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/SourceCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security\ContentSecurityPolicy; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\SourceCollection; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\SourceScheme; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\UriValue; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SourceCollectionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function canExtend(): void { $subject = new SourceCollection(); @@ -39,9 +38,7 @@ final class SourceCollectionTest extends UnitTestCase self::assertSame([$schemeItem, $firstUriItem], $subject->sources); } - /** - * @test - */ + #[Test] public function canReduce(): void { $subject = new SourceCollection(); diff --git a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/UriValueTest.php b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/UriValueTest.php index a9382743fbd0..cf7a8b716635 100644 --- a/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/UriValueTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/ContentSecurityPolicy/UriValueTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security\ContentSecurityPolicy; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\UriValue; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -48,10 +50,8 @@ final class UriValueTest extends UnitTestCase yield ['*.typo3.org?key=value', '/%2A.typo3.org?key=value']; } - /** - * @test - * @dataProvider uriIsParsedAndSerializedDataProvider - */ + #[DataProvider('uriIsParsedAndSerializedDataProvider')] + #[Test] public function uriIsParsedAndSerialized(string $value, string $expectation = null): void { $uri = new UriValue($value); @@ -68,10 +68,8 @@ final class UriValueTest extends UnitTestCase yield ['*.example.com', '*.example.com', true]; } - /** - * @test - * @dataProvider urisAreEqualDataProvider - */ + #[DataProvider('urisAreEqualDataProvider')] + #[Test] public function urisAreEqual(string $a, string $b, bool $expectation): void { self::assertSame($expectation, (new UriValue($a))->equals(new UriValue($b))); @@ -99,10 +97,8 @@ final class UriValueTest extends UnitTestCase yield ['*.example.com', '*', false]; } - /** - * @test - * @dataProvider uriIsCoveredDataProvider - */ + #[DataProvider('uriIsCoveredDataProvider')] + #[Test] public function uriIsCovered(string $a, string $b, bool $expectation): void { self::assertSame($expectation, (new UriValue($a))->covers(new UriValue($b))); diff --git a/typo3/sysext/core/Tests/Unit/Security/NoncePoolTest.php b/typo3/sysext/core/Tests/Unit/Security/NoncePoolTest.php index cb98690fdea4..c0741dd07133 100644 --- a/typo3/sysext/core/Tests/Unit/Security/NoncePoolTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/NoncePoolTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Security\Nonce; use TYPO3\CMS\Core\Security\NoncePool; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class NoncePoolTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function instantiationReflectsState(): void { $items = self::createItems(); @@ -39,9 +39,7 @@ final class NoncePoolTest extends UnitTestCase self::assertSame([], $pool->getEmittableNonces()); } - /** - * @test - */ + #[Test] public function itemsAreMerged(): void { $itemsA = self::createItems(); @@ -61,9 +59,7 @@ final class NoncePoolTest extends UnitTestCase self::assertSame([], $poolA->getEmittableNonces()); } - /** - * @test - */ + #[Test] public function provideSigningSecretDoesNotUseReceivedNonce(): void { $items = self::createItems(); @@ -98,10 +94,8 @@ final class NoncePoolTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider itemsArePurgedDataProvider - */ + #[DataProvider('itemsArePurgedDataProvider')] + #[Test] public function itemsArePurged(array $options, array $items, array $validItems, array $revocableNames): void { $pool = (new NoncePool($items, $options))->purge(); diff --git a/typo3/sysext/core/Tests/Unit/Security/NonceTest.php b/typo3/sysext/core/Tests/Unit/Security/NonceTest.php index dffe56eb6122..523b31874f6d 100644 --- a/typo3/sysext/core/Tests/Unit/Security/NonceTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/NonceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Security\Nonce; use TYPO3\CMS\Core\Security\NonceException; use TYPO3\CMS\Core\Utility\StringUtility; @@ -32,10 +34,8 @@ final class NonceTest extends UnitTestCase yield [60, 60]; } - /** - * @test - * @dataProvider nonceIsCreatedDataProvider - */ + #[DataProvider('nonceIsCreatedDataProvider')] + #[Test] public function isCreated(int $length, int $expectedLength): void { $nonce = Nonce::create($length); @@ -43,9 +43,7 @@ final class NonceTest extends UnitTestCase self::assertSame($nonce->b64, StringUtility::base64urlEncode($nonce->binary)); } - /** - * @test - */ + #[Test] public function isCreatedWithProperties(): void { $binary = random_bytes(40); @@ -55,9 +53,7 @@ final class NonceTest extends UnitTestCase self::assertEquals($time, $nonce->time); } - /** - * @test - */ + #[Test] public function isEncodedAndDecoded(): void { $nonce = Nonce::create(); @@ -65,9 +61,7 @@ final class NonceTest extends UnitTestCase self::assertEquals($recodedNonce, $nonce); } - /** - * @test - */ + #[Test] public function invalidJwtThrowsException(): void { $this->expectException(NonceException::class); diff --git a/typo3/sysext/core/Tests/Unit/Security/RequestTokenTest.php b/typo3/sysext/core/Tests/Unit/Security/RequestTokenTest.php index 79aa82c36001..f0c0e6c4f1b5 100644 --- a/typo3/sysext/core/Tests/Unit/Security/RequestTokenTest.php +++ b/typo3/sysext/core/Tests/Unit/Security/RequestTokenTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Security; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Security\Nonce; use TYPO3\CMS\Core\Security\NoncePool; use TYPO3\CMS\Core\Security\RequestToken; @@ -27,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RequestTokenTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isCreated(): void { $scope = $this->createRandomString(); @@ -40,9 +40,7 @@ final class RequestTokenTest extends UnitTestCase self::assertSame([], $token->params); } - /** - * @test - */ + #[Test] public function isCreatedWithProperties(): void { $scope = $this->createRandomString(); @@ -54,9 +52,7 @@ final class RequestTokenTest extends UnitTestCase self::assertSame($params, $token->params); } - /** - * @test - */ + #[Test] public function paramsAreOverriddenInNewInstance(): void { $scope = $this->createRandomString(); @@ -67,9 +63,7 @@ final class RequestTokenTest extends UnitTestCase self::assertSame($params, $modifiedToken->params); } - /** - * @test - */ + #[Test] public function paramsAreMergedInNewInstance(): void { $scope = $this->createRandomString(); @@ -89,10 +83,8 @@ final class RequestTokenTest extends UnitTestCase yield 'secret to be resolved' => [$nonce, new SigningSecretResolver(['nonce' => $pool])]; } - /** - * @test - * @dataProvider isEncodedAndDecodedDataProvider - */ + #[DataProvider('isEncodedAndDecodedDataProvider')] + #[Test] public function isEncodedAndDecoded(Nonce $nonce, SigningSecretInterface|SigningSecretResolver $secret): void { $scope = $this->createRandomString(); @@ -121,10 +113,8 @@ final class RequestTokenTest extends UnitTestCase yield 'use resolver (bogus)' => ['no.jwt.value', new SigningSecretResolver(['nonce' => $pool]), 1664202134]; } - /** - * @test - * @dataProvider invalidJwtThrowsExceptionDataProvider - */ + #[DataProvider('invalidJwtThrowsExceptionDataProvider')] + #[Test] public function invalidJwtThrowsException(string $jwt, SigningSecretInterface|SigningSecretResolver $secret, int $exceptionCode): void { $this->expectException(RequestTokenException::class); diff --git a/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlParserTest.php b/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlParserTest.php index 460f8ce513b1..3d90e2b6e15a 100644 --- a/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlParserTest.php +++ b/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlParserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Serializer; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Exception; use TYPO3\CMS\Core\Serializer\Typo3XmlParser; use TYPO3\CMS\Core\Serializer\Typo3XmlParserOptions; @@ -44,10 +46,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeReturnsStringOrArrayDataProvider - */ + #[DataProvider('decodeReturnsStringOrArrayDataProvider')] + #[Test] public function decodeReturnsStringOrArray(string $data, mixed $expected): void { $xmlDecoder = new Typo3XmlParser(); @@ -73,10 +73,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeHandlesCommentsDataProvider - */ + #[DataProvider('decodeHandlesCommentsDataProvider')] + #[Test] public function decodeHandlesComments(array $config, array $expected): void { $xmlDecoder = new Typo3XmlParser(); @@ -87,9 +85,7 @@ final class Typo3XmlParserTest extends UnitTestCase self::assertEquals($expected, $result); } - /** - * @test - */ + #[Test] public function decodeIgnoresNodeAttributes(): void { $xmlDecoder = new Typo3XmlParser(); @@ -156,10 +152,10 @@ final class Typo3XmlParserTest extends UnitTestCase } /** - * @test - * @dataProvider decodeHandlesWhitespacesDataProvider * @param string $input */ + #[DataProvider('decodeHandlesWhitespacesDataProvider')] + #[Test] public function decodeHandlesWhitespaces(string $input): void { $xmlDecoder = new Typo3XmlParser(); @@ -259,10 +255,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeHandlesTagNamespacesDataProvider - */ + #[DataProvider('decodeHandlesTagNamespacesDataProvider')] + #[Test] public function decodeHandlesTagNamespaces(string $input, array $expected, array $options = []): void { $xmlDecoder = new Typo3XmlParser(); @@ -314,10 +308,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeReturnsRootNodeNameDataProvider - */ + #[DataProvider('decodeReturnsRootNodeNameDataProvider')] + #[Test] public function decodeReturnsRootNodeName(string $input, string $rootNodeName): void { $xmlDecoder = new Typo3XmlParser(); @@ -335,10 +327,8 @@ final class Typo3XmlParserTest extends UnitTestCase ); } - /** - * @test - * @dataProvider decodeReturnsRootNodeNameDataProvider - */ + #[DataProvider('decodeReturnsRootNodeNameDataProvider')] + #[Test] public function decodeCanIncludeRootNode(string $input, string $rootNodeName, array $options = []): void { $xmlDecoder = new Typo3XmlParser(); @@ -399,10 +389,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeHandlesBigXmlContentDataProvider - */ + #[DataProvider('decodeHandlesBigXmlContentDataProvider')] + #[Test] public function decodeHandlesBigXmlContent(string $input, string $testValue): void { $xmlDecoder = new Typo3XmlParser(); @@ -499,10 +487,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeHandlesAttributeTypesDataProvider - */ + #[DataProvider('decodeHandlesAttributeTypesDataProvider')] + #[Test] public function decodeHandlesAttributeTypes(string $input, mixed $expected): void { $xmlDecoder = new Typo3XmlParser(); @@ -510,9 +496,7 @@ final class Typo3XmlParserTest extends UnitTestCase self::assertSame($expected, $result['index']['vDEF']); } - /** - * @test - */ + #[Test] public function decodeHandlesBase64Attribute(): void { $xmlDecoder = new Typo3XmlParser(); @@ -556,10 +540,8 @@ final class Typo3XmlParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodeThrowsExceptionOnXmlParsingErrorDataProvider - */ + #[DataProvider('decodeThrowsExceptionOnXmlParsingErrorDataProvider')] + #[Test] public function decodeThrowsExceptionOnXmlParsingError( string $data, array $config, @@ -571,9 +553,7 @@ final class Typo3XmlParserTest extends UnitTestCase $xmlDecoder->decode($data, new Typo3XmlSerializerOptions($config)); } - /** - * @test - */ + #[Test] public function encodeDecodePingPongSucceeds(): void { $input = [ @@ -640,9 +620,7 @@ final class Typo3XmlParserTest extends UnitTestCase self::assertEquals($input, $arrayEncodedDecoded); } - /** - * @test - */ + #[Test] public function encodeDecodePingPongFailsForEmptyArray(): void { self::markTestSkipped( diff --git a/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlSerializerTest.php b/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlSerializerTest.php index 7b47838f3b40..35d5844becdc 100644 --- a/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlSerializerTest.php +++ b/typo3/sysext/core/Tests/Unit/Serializer/Typo3XmlSerializerTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Serializer; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Serializer\Typo3XmlParserOptions; use TYPO3\CMS\Core\Serializer\Typo3XmlSerializer; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class Typo3XmlSerializerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function encodeReturnsRootNodeIfArrayIsEmpty(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -34,9 +34,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanPreventWrappingByRootNode(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -48,9 +46,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase ', $xml); } - /** - * @test - */ + #[Test] public function encodeSupportsInlineXml(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -61,9 +57,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase self::assertEquals('<phparray><node>value</node></phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeSupportsPrettyPrintWithTabIndentation(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -76,9 +70,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeSupportsPrettyPrintWith4SpacesIndentation(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -91,9 +83,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeEnsuresAlphaNumericCharactersAndMinusAndUnderscoreInNodeName(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -103,9 +93,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanPrependNamespaceToNodeName(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -118,9 +106,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanPrependNToNodeNameIfNodeNameIsNumber(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -134,9 +120,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanReplaceNodeNameAndAddAsIndexIfNodeNameIsNumber(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -156,9 +140,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanReplaceNodeNameAndAddAsIndexIfNodeNameIsString(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -178,9 +160,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanReplaceNodeNameAndAddAsIndexIfParentMatchesName(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -212,9 +192,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanReplaceNodeNameAndAddAsIndexIfParentAndNodeMatchNames(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -248,9 +226,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanReplaceNodeNameAndAddAsIndexIfParentMatchesNameAndNodeNameIsNumber(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -282,9 +258,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanReplaceNodeNameAndAddAsIndexIfGrandParentAndParentAndNodeMatchNames(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -320,9 +294,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanWrapStringWithCDATAIfStringContainsSpecialCharacters(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -342,9 +314,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeAddsTypeAttributeToNodeIfValueIsNotString(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -374,10 +344,8 @@ final class Typo3XmlSerializerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider encodeCanDisableAddingTypeAttributeToNodeExceptIfValueIsArrayDataProvider - */ + #[DataProvider('encodeCanDisableAddingTypeAttributeToNodeExceptIfValueIsArrayDataProvider')] + #[Test] public function encodeCanDisableAddingTypeAttributeToNodeExceptIfValueIsArray(mixed $disableTypeAttrib): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -405,9 +373,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeCanDisableAddingTypeAttributeToNode(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -435,9 +401,7 @@ final class Typo3XmlSerializerTest extends UnitTestCase </phparray>', $xml); } - /** - * @test - */ + #[Test] public function encodeAddsBase64AttributeAndEncodesWithBase64IfValueIsBinaryData(): void { $xmlEncoder = new Typo3XmlSerializer(); @@ -452,9 +416,7 @@ $contentBase64Encoded</binary> </phparray>", $xml); } - /** - * @test - */ + #[Test] public function encodeCanSetAlternativeOptionsPerNestingLevel(): void { $xmlEncoder = new Typo3XmlSerializer(); diff --git a/typo3/sysext/core/Tests/Unit/Service/DependencyOrderingServiceTest.php b/typo3/sysext/core/Tests/Unit/Service/DependencyOrderingServiceTest.php index 29b43f32ff6c..3dbc68ba4bce 100644 --- a/typo3/sysext/core/Tests/Unit/Service/DependencyOrderingServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Service/DependencyOrderingServiceTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Service\DependencyOrderingService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DependencyOrderingServiceTest extends UnitTestCase { - /** - * @test - * @dataProvider orderByDependenciesBuildsCorrectOrderDataProvider - */ + #[DataProvider('orderByDependenciesBuildsCorrectOrderDataProvider')] + #[Test] public function orderByDependenciesBuildsCorrectOrder(array $items, string $beforeKey, string $afterKey, array $expectedOrderedItems): void { $orderedItems = (new DependencyOrderingService())->orderByDependencies($items, $beforeKey, $afterKey); @@ -151,10 +151,10 @@ final class DependencyOrderingServiceTest extends UnitTestCase } /** - * @test - * @dataProvider prepareDependenciesBuildsFullIdentifierListDataProvider * @throws \InvalidArgumentException */ + #[DataProvider('prepareDependenciesBuildsFullIdentifierListDataProvider')] + #[Test] public function prepareDependenciesBuildsFullIdentifierList(array $dependencies, array $expectedDependencies): void { $dependencyOrderingService = $this->getAccessibleMock(DependencyOrderingService::class, null); @@ -203,10 +203,8 @@ final class DependencyOrderingServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildDependencyGraphBuildsValidGraphDataProvider - */ + #[DataProvider('buildDependencyGraphBuildsValidGraphDataProvider')] + #[Test] public function buildDependencyGraphBuildsValidGraph(array $dependencies, array $expectedGraph): void { $graph = (new DependencyOrderingService())->buildDependencyGraph($dependencies); @@ -570,10 +568,8 @@ final class DependencyOrderingServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calculateOrderResolvesCorrectOrderDataProvider - */ + #[DataProvider('calculateOrderResolvesCorrectOrderDataProvider')] + #[Test] public function calculateOrderResolvesCorrectOrder(array $graph, array $expectedList): void { $list = (new DependencyOrderingService())->calculateOrder($graph); @@ -623,9 +619,7 @@ final class DependencyOrderingServiceTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function calculateOrderDetectsCyclicGraph(): void { $this->expectException(\UnexpectedValueException::class); @@ -679,10 +673,8 @@ final class DependencyOrderingServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider findPathInGraphReturnsCorrectPathDataProvider - */ + #[DataProvider('findPathInGraphReturnsCorrectPathDataProvider')] + #[Test] public function findPathInGraphReturnsCorrectPath(array $graph, string $from, string $to, array $expected): void { $dependencyOrderingService = $this->getAccessibleMock(DependencyOrderingService::class, null); diff --git a/typo3/sysext/core/Tests/Unit/Service/FlexFormServiceTest.php b/typo3/sysext/core/Tests/Unit/Service/FlexFormServiceTest.php index ba3e0f5b8f79..fd50d3df9420 100644 --- a/typo3/sysext/core/Tests/Unit/Service/FlexFormServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Service/FlexFormServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Service\FlexFormService; @@ -27,9 +28,7 @@ final class FlexFormServiceTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function convertFlexFormContentToArrayResolvesComplexArrayStructure(): void { $input = '<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> diff --git a/typo3/sysext/core/Tests/Unit/Service/MarkerBasedTemplateServiceTest.php b/typo3/sysext/core/Tests/Unit/Service/MarkerBasedTemplateServiceTest.php index 700300ea0a8e..2ae9ad023d7b 100644 --- a/typo3/sysext/core/Tests/Unit/Service/MarkerBasedTemplateServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/Service/MarkerBasedTemplateServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Service\MarkerBasedTemplateService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -103,10 +105,8 @@ text ]; } - /** - * @test - * @dataProvider getSubpartDataProvider - */ + #[DataProvider('getSubpartDataProvider')] + #[Test] public function getSubpart(string $content, string $marker, string $expected): void { self::assertSame($expected, $this->templateService->getSubpart($content, $marker)); @@ -232,10 +232,10 @@ hello } /** - * @test * @param string|array $subpartContent - * @dataProvider substituteSubpartDataProvider */ + #[DataProvider('substituteSubpartDataProvider')] + #[Test] public function substituteSubpart( string $content, string $marker, @@ -326,14 +326,14 @@ hello } /** - * @test - * @dataProvider substituteMarkerArrayDataProvider * @param string $content The content stream, typically HTML template content. * @param array $markContentArray The array of key/value pairs being marker/content values used in the substitution. For each element in this array the function will substitute a marker in the content stream with the content. * @param string $wrap A wrap value - [part 1] | [part 2] - for the markers before substitution * @param bool $uppercase If set, all marker string substitution is done with upper-case markers. * @param bool $deleteUnused If set, all unused marker are deleted. */ + #[DataProvider('substituteMarkerArrayDataProvider')] + #[Test] public function substituteMarkerArray( string $content, array $markContentArray, @@ -370,12 +370,12 @@ hello } /** - * @dataProvider substituteMarkerDataProvider * @param string $content The content stream, typically HTML template content. * @param string $marker The marker string, typically on the form "###[the marker string]### * @param mixed $markContent The content to insert instead of the marker string found. * @param string $expected The expected result of the substitution */ + #[DataProvider('substituteMarkerDataProvider')] public function substituteMarker(string $content, string $marker, $markContent, string $expected): void { self::assertSame($expected, $this->templateService->substituteMarker($content, $marker, $markContent)); @@ -404,10 +404,8 @@ world ]; } - /** - * @test - * @dataProvider substituteSubpartArrayDataProvider - */ + #[DataProvider('substituteSubpartArrayDataProvider')] + #[Test] public function substituteSubpartArray(string $content, array $subpartsContent, string $expected): void { self::assertSame($expected, $this->templateService->substituteSubpartArray($content, $subpartsContent)); @@ -608,10 +606,8 @@ Value 2.2 ]; } - /** - * @test - * @dataProvider substituteMarkerAndSubpartArrayRecursiveResolvesMarkersAndSubpartsArrayDataProvider - */ + #[DataProvider('substituteMarkerAndSubpartArrayRecursiveResolvesMarkersAndSubpartsArrayDataProvider')] + #[Test] public function substituteMarkerAndSubpartArrayRecursiveResolvesMarkersAndSubpartsArray( string $template, array $markersAndSubparts, @@ -728,10 +724,8 @@ Value 2.2 ]; } - /** - * @test - * @dataProvider substituteMarkerArrayCachedReturnsExpectedContentDataProvider - */ + #[DataProvider('substituteMarkerArrayCachedReturnsExpectedContentDataProvider')] + #[Test] public function substituteMarkerArrayCachedReturnsExpectedContent( string $content, array $markContentArray, diff --git a/typo3/sysext/core/Tests/Unit/Session/Backend/DatabaseSessionBackendTest.php b/typo3/sysext/core/Tests/Unit/Session/Backend/DatabaseSessionBackendTest.php index fe5504a3892c..aaac31790091 100644 --- a/typo3/sysext/core/Tests/Unit/Session/Backend/DatabaseSessionBackendTest.php +++ b/typo3/sysext/core/Tests/Unit/Session/Backend/DatabaseSessionBackendTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Session\Backend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Session\Backend\DatabaseSessionBackend; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseSessionBackendTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validateConfigurationThrowsExceptionIfTableNameIsMissingInConfiguration(): void { $subject = new DatabaseSessionBackend(); diff --git a/typo3/sysext/core/Tests/Unit/Session/Backend/RedisSessionBackendTest.php b/typo3/sysext/core/Tests/Unit/Session/Backend/RedisSessionBackendTest.php index 3d677e176f80..4b246f1d4539 100644 --- a/typo3/sysext/core/Tests/Unit/Session/Backend/RedisSessionBackendTest.php +++ b/typo3/sysext/core/Tests/Unit/Session/Backend/RedisSessionBackendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Session\Backend; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Session\Backend\RedisSessionBackend; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -31,9 +32,7 @@ final class RedisSessionBackendTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; } - /** - * @test - */ + #[Test] public function databaseConfigurationMustBeInteger(): void { $this->expectException(\InvalidArgumentException::class); @@ -48,9 +47,7 @@ final class RedisSessionBackendTest extends UnitTestCase $subject->validateConfiguration(); } - /** - * @test - */ + #[Test] public function databaseConfigurationMustBeZeroOrGreater(): void { $subject = new RedisSessionBackend(); diff --git a/typo3/sysext/core/Tests/Unit/Session/SessionManagerTest.php b/typo3/sysext/core/Tests/Unit/Session/SessionManagerTest.php index 46e569857aa7..461ffc11e71c 100644 --- a/typo3/sysext/core/Tests/Unit/Session/SessionManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/Session/SessionManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Session; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Session\Backend\DatabaseSessionBackend; use TYPO3\CMS\Core\Session\Backend\SessionBackendInterface; use TYPO3\CMS\Core\Session\SessionManager; @@ -25,18 +26,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SessionManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getSessionBackendUsesDefaultBackendFromConfiguration(): void { $subject = new SessionManager(); self::assertInstanceOf(DatabaseSessionBackend::class, $subject->getSessionBackend('BE')); } - /** - * @test - */ + #[Test] public function getSessionBackendReturnsExpectedSessionBackendBasedOnConfiguration(): void { $backendMock = $this->createMock(SessionBackendInterface::class); @@ -52,9 +49,7 @@ final class SessionManagerTest extends UnitTestCase self::assertInstanceOf($backendClassName, $subject->getSessionBackend('myidentifier')); } - /** - * @test - */ + #[Test] public function getSessionBackendThrowsExceptionForMissingConfiguration(): void { $this->expectException(\InvalidArgumentException::class); @@ -64,9 +59,7 @@ final class SessionManagerTest extends UnitTestCase $subject->getSessionBackend('myNewidentifier'); } - /** - * @test - */ + #[Test] public function getSessionBackendThrowsExceptionIfBackendDoesNotImplementInterface(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/core/Tests/Unit/Session/UserSessionManagerTest.php b/typo3/sysext/core/Tests/Unit/Session/UserSessionManagerTest.php index 8650c9a0743a..4a795b6f99fb 100644 --- a/typo3/sysext/core/Tests/Unit/Session/UserSessionManagerTest.php +++ b/typo3/sysext/core/Tests/Unit/Session/UserSessionManagerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Session; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ServerRequestInterface; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Authentication\IpLocker; @@ -53,10 +55,8 @@ final class UserSessionManagerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider willExpireDataProvider - */ + #[DataProvider('willExpireDataProvider')] + #[Test] public function willExpireWillExpire(int $sessionLifetime, int $gracePeriod, bool $expectedResult): void { $sessionBackendMock = $this->createMock(SessionBackendInterface::class); @@ -86,9 +86,7 @@ final class UserSessionManagerTest extends UnitTestCase self::assertFalse($subject->hasExpired($newSession)); } - /** - * @test - */ + #[Test] public function createFromRequestOrAnonymousCreatesProperSessionObjectForValidSessionJwt(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = 'secret-encryption-key-test'; @@ -138,9 +136,7 @@ final class UserSessionManagerTest extends UnitTestCase self::assertNull($persistedSession->get('propertyC')); } - /** - * @test - */ + #[Test] public function createFromRequestOrAnonymousCreatesProperSessionObjectForInvalidSession(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = 'secret-encryption-key-test'; @@ -174,9 +170,7 @@ final class UserSessionManagerTest extends UnitTestCase self::assertTrue($anonymousSessionFromInvalidBackendRequest->isAnonymous()); } - /** - * @test - */ + #[Test] public function updateSessionWillSetLastUpdated(): void { $sessionBackendMock = $this->createMock(SessionBackendInterface::class); @@ -198,9 +192,7 @@ final class UserSessionManagerTest extends UnitTestCase self::assertSame(7654321, $session->getLastUpdated()); } - /** - * @test - */ + #[Test] public function fixateAnonymousSessionWillUpdateSessionObject(): void { $sessionBackendMock = $this->createMock(SessionBackendInterface::class); diff --git a/typo3/sysext/core/Tests/Unit/Session/UserSessionTest.php b/typo3/sysext/core/Tests/Unit/Session/UserSessionTest.php index ca178ca835e2..f380648c59a7 100644 --- a/typo3/sysext/core/Tests/Unit/Session/UserSessionTest.php +++ b/typo3/sysext/core/Tests/Unit/Session/UserSessionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Session; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\CookieScope; use TYPO3\CMS\Core\Security\JwtTrait; use TYPO3\CMS\Core\Session\UserSession; @@ -26,9 +27,7 @@ final class UserSessionTest extends UnitTestCase { use JwtTrait; - /** - * @test - */ + #[Test] public function createFromRecordTest(): void { $record = [ @@ -66,9 +65,7 @@ final class UserSessionTest extends UnitTestCase self::assertSame($record['ses_id'], UserSession::resolveIdentifierFromJwt($session->getJwt($scope), $scope) ?? ''); } - /** - * @test - */ + #[Test] public function createNonFixated(): void { $session = UserSession::createNonFixated('fdcba54321'); diff --git a/typo3/sysext/core/Tests/Unit/Site/Entity/SiteLanguageTest.php b/typo3/sysext/core/Tests/Unit/Site/Entity/SiteLanguageTest.php index fc45e9812029..d5a97a2b9d11 100644 --- a/typo3/sysext/core/Tests/Unit/Site/Entity/SiteLanguageTest.php +++ b/typo3/sysext/core/Tests/Unit/Site/Entity/SiteLanguageTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Site\Entity; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\Uri; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; @@ -60,10 +62,10 @@ final class SiteLanguageTest extends UnitTestCase } /** - * @dataProvider languageFallbackIdConversionDataProvider - * @test * @param string|array|null $input */ + #[DataProvider('languageFallbackIdConversionDataProvider')] + #[Test] public function languageFallbackIdConversion($input, array $expected): void { $configuration = [ @@ -75,9 +77,7 @@ final class SiteLanguageTest extends UnitTestCase self::assertSame($expected, $subject->getFallbackLanguageIds()); } - /** - * @test - */ + #[Test] public function toArrayReturnsProperOverlaidData(): void { $configuration = [ @@ -152,10 +152,8 @@ final class SiteLanguageTest extends UnitTestCase ]; } - /** - * @dataProvider typo3LanguageAndLocaleDataProvider - * @test - */ + #[DataProvider('typo3LanguageAndLocaleDataProvider')] + #[Test] public function typo3LanguageIsEitherSetOrProperlyDerivedFromLocale(string $locale, array $configuration, $expected): void { $language = new SiteLanguage(0, $locale, new Uri('/'), $configuration); diff --git a/typo3/sysext/core/Tests/Unit/Site/Entity/SiteTest.php b/typo3/sysext/core/Tests/Unit/Site/Entity/SiteTest.php index 0e0c9ccfbdac..7285c9be5b25 100644 --- a/typo3/sysext/core/Tests/Unit/Site/Entity/SiteTest.php +++ b/typo3/sysext/core/Tests/Unit/Site/Entity/SiteTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Site\Entity; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ResponseFactoryInterface; use Symfony\Component\DependencyInjection\Container; use TYPO3\CMS\Core\Cache\CacheManager; @@ -64,10 +66,8 @@ final class SiteTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getBaseReturnsProperUriDataProvider - */ + #[DataProvider('getBaseReturnsProperUriDataProvider')] + #[Test] public function getBaseReturnsProperUri($input, $expected): void { $subject = new Site('all-your-base-belongs-to-us', 13, [ @@ -122,10 +122,9 @@ final class SiteTest extends UnitTestCase /** * This test shows that the a base from a site language is properly "inheriting" the base * from a site if it isn't absolute. - * - * @test - * @dataProvider getBaseForSiteLanguageReturnsProperUriDataProvider */ + #[DataProvider('getBaseForSiteLanguageReturnsProperUriDataProvider')] + #[Test] public function getBaseForSiteLanguageReturnsProperUri($siteBase, $languageBase, $expected): void { $subject = new Site('all-of-base', 13, [ @@ -141,9 +140,7 @@ final class SiteTest extends UnitTestCase self::assertEquals(new Uri($expected), $subject->getLanguageById(0)->getBase()); } - /** - * @test - */ + #[Test] public function getErrorHandlerReturnsConfiguredErrorHandler(): void { $subject = new Site('aint-misbehaving', 13, [ @@ -205,9 +202,7 @@ final class SiteTest extends UnitTestCase self::assertInstanceOf(PageContentErrorHandler::class, $subject->getErrorHandler(125)); } - /** - * @test - */ + #[Test] public function getErrorHandlerThrowsExceptionOnInvalidErrorHandler(): void { $this->expectException(InvalidPageErrorHandlerException::class); @@ -226,9 +221,7 @@ final class SiteTest extends UnitTestCase $subject->getErrorHandler(404); } - /** - * @test - */ + #[Test] public function getErrorHandlerThrowsExceptionWhenNoErrorHandlerIsConfigured(): void { $this->expectException(PageErrorHandlerNotConfiguredException::class); @@ -238,9 +231,7 @@ final class SiteTest extends UnitTestCase $subject->getErrorHandler(404); } - /** - * @test - */ + #[Test] public function getErrorHandlerThrowsExceptionWhenNoErrorHandlerForStatusCodeIsConfigured(): void { $this->expectException(PageErrorHandlerNotConfiguredException::class); @@ -258,9 +249,7 @@ final class SiteTest extends UnitTestCase $subject->getErrorHandler(404); } - /** - * @test - */ + #[Test] public function getErrorHandlerUsesFallbackWhenNoErrorHandlerForStatusCodeIsConfigured(): void { $app = new class () extends Application { diff --git a/typo3/sysext/core/Tests/Unit/Text/TextCropperTest.php b/typo3/sysext/core/Tests/Unit/Text/TextCropperTest.php index 3faf22c8ba1a..cee32b0804fc 100644 --- a/typo3/sysext/core/Tests/Unit/Text/TextCropperTest.php +++ b/typo3/sysext/core/Tests/Unit/Text/TextCropperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Text; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Text\TextCropper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +32,7 @@ final class TextCropperTest extends UnitTestCase $this->subject = new TextCropper(); } - /** - * @test - */ + #[Test] public function cropIsMultibyteSafe(): void { $actual = $this->subject->crop( @@ -113,10 +113,8 @@ final class TextCropperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cropWorksDataProvicer - */ + #[DataProvider('cropWorksDataProvicer')] + #[Test] public function cropWorks(string $expected, string $content, int $numberOfChars, string $replacementForEllipsis, bool $cropToSpace): void { $this->handleCharset($content, $expected); diff --git a/typo3/sysext/core/Tests/Unit/TimeTracker/TimeTrackerTest.php b/typo3/sysext/core/Tests/Unit/TimeTracker/TimeTrackerTest.php index 4d34f197e536..e8db9dc567b0 100644 --- a/typo3/sysext/core/Tests/Unit/TimeTracker/TimeTrackerTest.php +++ b/typo3/sysext/core/Tests/Unit/TimeTracker/TimeTrackerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TimeTracker; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TimeTracker\TimeTracker; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class TimeTrackerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getParseTimeReturnsZeroOrOneIfNoValuesAreSet(): void { $parseTime = (new TimeTracker())->getParseTime(); diff --git a/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/DatabaseTreeDataProviderTest.php b/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/DatabaseTreeDataProviderTest.php index e657fbd58582..2940ed6235a3 100644 --- a/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/DatabaseTreeDataProviderTest.php +++ b/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/DatabaseTreeDataProviderTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Tree\TableConfiguration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\Tree\TreeNode; use TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DatabaseTreeDataProviderTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function loadTreeDataLevelMaximumSetToZeroWorks(): void { $subject = $this->getAccessibleMock(DatabaseTreeDataProvider::class, ['getRelatedRecords', 'getStartingPoints', 'getChildrenOf'], [], '', false); @@ -37,9 +36,7 @@ final class DatabaseTreeDataProviderTest extends UnitTestCase $subject->_call('loadTreeData'); } - /** - * @test - */ + #[Test] public function loadTreeDataLevelMaximumSetToOneWorks(): void { $subject = $this->getAccessibleMock(DatabaseTreeDataProvider::class, ['getRelatedRecords', 'getStartingPoints', 'getChildrenOf'], [], '', false); diff --git a/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/TreeDataProviderFactoryTest.php b/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/TreeDataProviderFactoryTest.php index 771cff47863f..e363bbdc3c01 100644 --- a/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/TreeDataProviderFactoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/TreeDataProviderFactoryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Tree\TableConfiguration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\Tests\Unit\Tree\TableConfiguration\Fixtures\TreeDataProviderFixture; @@ -82,10 +84,8 @@ final class TreeDataProviderFactoryTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidConfigurationDataProvider - */ + #[DataProvider('invalidConfigurationDataProvider')] + #[Test] public function factoryThrowsExceptionIfInvalidConfigurationIsGiven(array $tcaConfiguration, int $expectedExceptionCode): void { if (isset($tcaConfiguration['type']) && $tcaConfiguration['type'] !== 'folder' && is_array($tcaConfiguration['treeConfig'] ?? null)) { @@ -99,9 +99,7 @@ final class TreeDataProviderFactoryTest extends UnitTestCase TreeDataProviderFactory::getDataProvider($tcaConfiguration, 'foo', 'bar', ['uid' => 1]); } - /** - * @test - */ + #[Test] public function configuredDataProviderClassIsInstantiated(): void { $dataProviderMockClassName = TreeDataProviderFixture::class; @@ -116,9 +114,7 @@ final class TreeDataProviderFactoryTest extends UnitTestCase self::assertInstanceOf($dataProviderMockClassName, $dataProvider); } - /** - * @test - */ + #[Test] public function configuredDataProviderClassIsInstantiatedWithTcaConfigurationInConstructor(): void { $dataProviderMockClassName = TreeDataProviderWithConfigurationFixture::class; diff --git a/typo3/sysext/core/Tests/Unit/Type/BitSetTest.php b/typo3/sysext/core/Tests/Unit/Type/BitSetTest.php index 51b82cb0586a..5036d1e6e5bd 100644 --- a/typo3/sysext/core/Tests/Unit/Type/BitSetTest.php +++ b/typo3/sysext/core/Tests/Unit/Type/BitSetTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Type; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Type\BitSet; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class BitSetTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function defaultBitSetOnlyHasZeroByteSet(): void { $bitSet = new BitSet(); @@ -32,9 +31,7 @@ final class BitSetTest extends UnitTestCase self::assertFalse($bitSet->get(0b1)); } - /** - * @test - */ + #[Test] public function constructorSetsInternalSet(): void { $bitSet = new BitSet(0b1 | 0b100); @@ -43,9 +40,7 @@ final class BitSetTest extends UnitTestCase self::assertFalse($bitSet->get(0b10)); } - /** - * @test - */ + #[Test] public function setSetsBit(): void { $bitSet = new BitSet(0b101); @@ -57,9 +52,7 @@ final class BitSetTest extends UnitTestCase self::assertTrue($bitSet->get(0b10)); } - /** - * @test - */ + #[Test] public function setValueSetsBit(): void { $bitSet = new BitSet(); @@ -72,9 +65,7 @@ final class BitSetTest extends UnitTestCase self::assertFalse($bitSet->get(0b1)); } - /** - * @test - */ + #[Test] public function clearUnsetsBit(): void { $bitSet = new BitSet(0b111); @@ -84,9 +75,7 @@ final class BitSetTest extends UnitTestCase self::assertFalse($bitSet->get(0b10)); } - /** - * @test - */ + #[Test] public function andPerformsABinaryAnd(): void { $bitSet = new BitSet(0b101); @@ -97,9 +86,7 @@ final class BitSetTest extends UnitTestCase self::assertSame('0b101', $bitSet->__toString()); } - /** - * @test - */ + #[Test] public function orPerformsABinaryOr(): void { $bitSet = new BitSet(0b101); @@ -110,9 +97,7 @@ final class BitSetTest extends UnitTestCase self::assertSame('0b111', $bitSet->__toString()); } - /** - * @test - */ + #[Test] public function xorPerformsABinaryXor(): void { $bitSet = new BitSet(0b1001); @@ -123,9 +108,7 @@ final class BitSetTest extends UnitTestCase self::assertSame('0b11', $bitSet->__toString()); } - /** - * @test - */ + #[Test] public function andNotPerformsABinaryAndNot(): void { $bitSet = new BitSet(0b111); @@ -136,18 +119,14 @@ final class BitSetTest extends UnitTestCase self::assertSame('0b10', $bitSet->__toString()); } - /** - * @test - */ + #[Test] public function __toIntReturnsIntegerRepresentationOfBitSet(): void { $bitSet = new BitSet(0b010); self::assertSame(2, $bitSet->__toInt()); } - /** - * @test - */ + #[Test] public function __toStringReturnsBinaryStringRepresentationOfBitSet(): void { $bitSet = new BitSet(13); diff --git a/typo3/sysext/core/Tests/Unit/Type/EnumerationTest.php b/typo3/sysext/core/Tests/Unit/Type/EnumerationTest.php index 8d7e9182562b..a1b52f1fd376 100644 --- a/typo3/sysext/core/Tests/Unit/Type/EnumerationTest.php +++ b/typo3/sysext/core/Tests/Unit/Type/EnumerationTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Type; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Type\Fixture\Enumeration\CompleteEnumeration; use TYPO3\CMS\Core\Tests\Unit\Type\Fixture\Enumeration\DuplicateConstantValueEnumeration; use TYPO3\CMS\Core\Tests\Unit\Type\Fixture\Enumeration\InvalidConstantEnumeration; @@ -28,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class EnumerationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfNoConstantsAreDefined(): void { $this->expectException(InvalidEnumerationValueException::class); @@ -39,9 +39,7 @@ final class EnumerationTest extends UnitTestCase new MissingConstantsEnumeration(); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfInvalidValueIsRequested(): void { $this->expectException(InvalidEnumerationValueException::class); @@ -50,9 +48,7 @@ final class EnumerationTest extends UnitTestCase new CompleteEnumeration('bar'); } - /** - * @test - */ + #[Test] public function loadValuesThrowsExceptionIfGivenValueIsNotAvailableInEnumeration(): void { $this->expectException(InvalidEnumerationValueException::class); @@ -61,9 +57,7 @@ final class EnumerationTest extends UnitTestCase new MissingConstantsEnumeration(2); } - /** - * @test - */ + #[Test] public function loadValuesThrowsExceptionIfDisallowedTypeIsDefinedAsConstant(): void { $this->expectException(InvalidEnumerationDefinitionException::class); @@ -72,9 +66,7 @@ final class EnumerationTest extends UnitTestCase new InvalidConstantEnumeration(1); } - /** - * @test - */ + #[Test] public function loadValuesThrowsExceptionIfNoDefaultConstantIsDefinedAndNoValueIsGiven(): void { $this->expectException(InvalidEnumerationValueException::class); @@ -83,9 +75,7 @@ final class EnumerationTest extends UnitTestCase new MissingDefaultEnumeration(); } - /** - * @test - */ + #[Test] public function loadValuesThrowsExceptionIfValueIsDefinedMultipleTimes(): void { $this->expectException(InvalidEnumerationDefinitionException::class); @@ -123,10 +113,8 @@ final class EnumerationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider looseEnumerationValues - */ + #[DataProvider('looseEnumerationValues')] + #[Test] public function doesTypeLooseComparison(string|int $testValue, string|int $expectedValue): void { $value = new CompleteEnumeration($testValue); @@ -134,9 +122,7 @@ final class EnumerationTest extends UnitTestCase self::assertEquals((string)$expectedValue, (string)$value); } - /** - * @test - */ + #[Test] public function getConstantsReturnsArrayOfPossibleValuesWithoutDefault(): void { $expected = [ @@ -148,9 +134,7 @@ final class EnumerationTest extends UnitTestCase self::assertEquals($expected, CompleteEnumeration::getConstants()); } - /** - * @test - */ + #[Test] public function getConstantsReturnsArrayOfPossibleValuesWithDefaultIfRequested(): void { $expected = [ @@ -163,9 +147,7 @@ final class EnumerationTest extends UnitTestCase self::assertEquals($expected, CompleteEnumeration::getConstants(true)); } - /** - * @test - */ + #[Test] public function getConstantsCanBeCalledOnInstances(): void { $enumeration = new CompleteEnumeration(); @@ -178,27 +160,21 @@ final class EnumerationTest extends UnitTestCase self::assertEquals($expected, $enumeration::getConstants()); } - /** - * @test - */ + #[Test] public function toStringReturnsValueAsString(): void { $enumeration = new CompleteEnumeration(); self::assertSame('1', $enumeration->__toString()); } - /** - * @test - */ + #[Test] public function castReturnsObjectOfEnumerationTypeIfSimpleValueIsGiven(): void { $enumeration = CompleteEnumeration::cast(1); self::assertInstanceOf(CompleteEnumeration::class, $enumeration); } - /** - * @test - */ + #[Test] public function castReturnsObjectOfCalledEnumerationTypeIfCalledWithValueOfDifferentType(): void { $initialEnumeration = new MissingDefaultEnumeration(1); @@ -206,9 +182,7 @@ final class EnumerationTest extends UnitTestCase self::assertInstanceOf(CompleteEnumeration::class, $enumeration); } - /** - * @test - */ + #[Test] public function castReturnsGivenObjectIfCalledWithValueOfSameType(): void { $initialEnumeration = new CompleteEnumeration(1); @@ -216,9 +190,7 @@ final class EnumerationTest extends UnitTestCase self::assertSame($initialEnumeration, $enumeration); } - /** - * @test - */ + #[Test] public function castCastsStringToEnumerationWithCorrespondingValue(): void { $value = new CompleteEnumeration(CompleteEnumeration::STRING_VALUE); @@ -226,9 +198,7 @@ final class EnumerationTest extends UnitTestCase self::assertSame(CompleteEnumeration::STRING_VALUE, (string)$value); } - /** - * @test - */ + #[Test] public function castCastsIntegerToEnumerationWithCorrespondingValue(): void { $value = new CompleteEnumeration(CompleteEnumeration::INTEGER_VALUE); @@ -236,27 +206,21 @@ final class EnumerationTest extends UnitTestCase self::assertSame((int)(string)CompleteEnumeration::INTEGER_VALUE, (int)(string)$value); } - /** - * @test - */ + #[Test] public function equalsReturnsTrueIfIntegerIsGivenThatEqualsEnumerationsIntegerValue(): void { $enumeration = new CompleteEnumeration(1); self::assertTrue($enumeration->equals(1)); } - /** - * @test - */ + #[Test] public function equalsReturnsTrueIfStringIsGivenThatEqualsEnumerationsIntegerValue(): void { $enumeration = new CompleteEnumeration(1); self::assertTrue($enumeration->equals('1')); } - /** - * @test - */ + #[Test] public function equalsReturnsTrueIfEqualEnumerationIsGiven(): void { $enumerationFoo = new CompleteEnumeration(1); @@ -264,9 +228,7 @@ final class EnumerationTest extends UnitTestCase self::assertTrue($enumerationFoo->equals($enumerationBar)); } - /** - * @test - */ + #[Test] public function equalsReturnsTrueIfDifferentEnumerationWithSameValueIsGiven(): void { $enumerationFoo = new CompleteEnumeration(1); @@ -274,9 +236,7 @@ final class EnumerationTest extends UnitTestCase self::assertTrue($enumerationFoo->equals($enumerationBar)); } - /** - * @test - */ + #[Test] public function equalsReturnsFalseIfDifferentEnumerationWithDifferentValueIsGiven(): void { $enumerationFoo = new CompleteEnumeration('foo'); @@ -284,9 +244,7 @@ final class EnumerationTest extends UnitTestCase self::assertFalse($enumerationFoo->equals($enumerationBar)); } - /** - * @test - */ + #[Test] public function equalsReturnsFalseIfEnumerationOfSameTypeWithDifferentValueIsGiven(): void { $enumerationFoo = new CompleteEnumeration(1); @@ -294,36 +252,28 @@ final class EnumerationTest extends UnitTestCase self::assertFalse($enumerationFoo->equals($enumerationBar)); } - /** - * @test - */ + #[Test] public function getNameProvidesNameForAvailableConstant(): void { $result = CompleteEnumeration::getName(CompleteEnumeration::INTEGER_VALUE); self::assertSame('INTEGER_VALUE', $result); } - /** - * @test - */ + #[Test] public function getNameReturnsEmptyStringForNotAvailableConstant(): void { $result = CompleteEnumeration::getName(42); self::assertSame('', $result); } - /** - * @test - */ + #[Test] public function getHumanReadableNameProvidesNameForAvailableConstant(): void { $result = CompleteEnumeration::getHumanReadableName(CompleteEnumeration::INTEGER_VALUE); self::assertSame('Integer Value', $result); } - /** - * @test - */ + #[Test] public function getHumanReadableNameReturnsEmptyStringForNotAvailableConstant(): void { $result = CompleteEnumeration::getName(42); diff --git a/typo3/sysext/core/Tests/Unit/Type/File/ImageInfoTest.php b/typo3/sysext/core/Tests/Unit/Type/File/ImageInfoTest.php index 3b151124ffe4..c40e87461cc7 100644 --- a/typo3/sysext/core/Tests/Unit/Type/File/ImageInfoTest.php +++ b/typo3/sysext/core/Tests/Unit/Type/File/ImageInfoTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Type\File; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Imaging\GraphicalFunctions; @@ -27,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ImageInfoTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classImageInfoCanBeInstantiated(): void { $className = ImageInfo::class; @@ -37,9 +37,7 @@ final class ImageInfoTest extends UnitTestCase self::assertInstanceOf($className, $classInstance); } - /** - * @test - */ + #[Test] public function doesNotBreakOnFileWithInvalidEnding(): void { $this->resetSingletonInstances = true; @@ -93,10 +91,8 @@ final class ImageInfoTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider doesNotBreakOnImageInfoWithInvalidSvgDataProvider - */ + #[DataProvider('doesNotBreakOnImageInfoWithInvalidSvgDataProvider')] + #[Test] public function doesNotBreakOnImageInfoWithInvalidSvg(string $svg, int $width, int $height): void { $this->resetSingletonInstances = true; @@ -138,10 +134,8 @@ final class ImageInfoTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider canDetectImageSizesDataProvider - */ + #[DataProvider('canDetectImageSizesDataProvider')] + #[Test] public function canDetectImageSizes(string $file, int $width, int $height): void { $imageInfo = new ImageInfo(__DIR__ . '/../Fixture/' . $file); diff --git a/typo3/sysext/core/Tests/Unit/Type/MapTest.php b/typo3/sysext/core/Tests/Unit/Type/MapTest.php index 468a670f692d..72c96a908314 100644 --- a/typo3/sysext/core/Tests/Unit/Type/MapTest.php +++ b/typo3/sysext/core/Tests/Unit/Type/MapTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Type; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Type\Map; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MapTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function mapIsArrayAccessible(): void { $aKey = new \stdClass(); @@ -42,9 +41,7 @@ final class MapTest extends UnitTestCase self::assertSame($bValue, $map[$bKey]); } - /** - * @test - */ + #[Test] public function mapKeyCanBeUnset(): void { $aKey = new \stdClass(); @@ -62,9 +59,7 @@ final class MapTest extends UnitTestCase self::assertFalse(isset($map[$bKey])); } - /** - * @test - */ + #[Test] public function mapCanBeIterated(): void { $aKey = new \stdClass(); @@ -88,9 +83,7 @@ final class MapTest extends UnitTestCase self::assertSame($expectation, $entries); } - /** - * @test - */ + #[Test] public function mapIsCreatedFromEntries(): void { $aKey = new \stdClass(); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/AST/AstBuilderInterfaceTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/AST/AstBuilderInterfaceTest.php index c2929f7191df..11a42b36293d 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/AST/AstBuilderInterfaceTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/AST/AstBuilderInterfaceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\AST; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\TypoScript\AST\AstBuilder; use TYPO3\CMS\Core\TypoScript\AST\CommentAwareAstBuilder; @@ -1276,10 +1278,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildDataProvider - */ + #[DataProvider('buildDataProvider')] + #[Test] public function build(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1288,10 +1288,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildDataProvider - */ + #[DataProvider('buildDataProvider')] + #[Test] public function buildCreatesSameAstWhenUnserialized(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1300,10 +1298,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, unserialize(serialize($ast))); } - /** - * @test - * @dataProvider buildDataProvider - */ + #[DataProvider('buildDataProvider')] + #[Test] public function buildCommentAware(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1312,10 +1308,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildDataProvider - */ + #[DataProvider('buildDataProvider')] + #[Test] public function buildCompatArray(string $source, RootNode $_, array $expectedArray): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1324,10 +1318,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedArray, $ast->toArray()); } - /** - * @test - * @dataProvider buildDataProvider - */ + #[DataProvider('buildDataProvider')] + #[Test] public function buildCompatArrayCommentAware(string $source, RootNode $_, array $expectedArray): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1501,10 +1493,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildWithPreviousValueDataProvider - */ + #[DataProvider('buildWithPreviousValueDataProvider')] + #[Test] public function buildWithPreviousValue(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1513,10 +1503,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildWithPreviousValueDataProvider - */ + #[DataProvider('buildWithPreviousValueDataProvider')] + #[Test] public function buildWithPreviousValueCreatesSameAstWhenUnserialized(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1525,10 +1513,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, unserialize(serialize($ast))); } - /** - * @test - * @dataProvider buildWithPreviousValueDataProvider - */ + #[DataProvider('buildWithPreviousValueDataProvider')] + #[Test] public function buildWithPreviousValueCommentAware(string $source, RootNode $_, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1841,10 +1827,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildReferenceDataProvider - */ + #[DataProvider('buildReferenceDataProvider')] + #[Test] public function buildReference(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1853,10 +1837,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildReferenceDataProvider - */ + #[DataProvider('buildReferenceDataProvider')] + #[Test] public function buildReferenceCreatesSameAstWhenUnserialized(string $source, RootNode $expectedAst): void { $this->registerComparator(new IdentifierTokenWithoutLineAndColumnComparator()); @@ -1866,10 +1848,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, unserialize(serialize($ast))); } - /** - * @test - * @dataProvider buildReferenceDataProvider - */ + #[DataProvider('buildReferenceDataProvider')] + #[Test] public function buildReferenceCommentAware(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1878,10 +1858,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildReferenceDataProvider - */ + #[DataProvider('buildReferenceDataProvider')] + #[Test] public function buildReferenceArray(string $source, RootNode $_, array $expectedArray): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -1890,10 +1868,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedArray, $ast->toArray()); } - /** - * @test - * @dataProvider buildReferenceDataProvider - */ + #[DataProvider('buildReferenceDataProvider')] + #[Test] public function buildReferenceArrayCommentAware(string $source, RootNode $_, array $expectedArray): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -2023,10 +1999,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildConstantDataProvider - */ + #[DataProvider('buildConstantDataProvider')] + #[Test] public function buildConstant(string $source, array $constants, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -2035,10 +2009,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildConstantDataProvider - */ + #[DataProvider('buildConstantDataProvider')] + #[Test] public function buildConstantCreatesSameAstWhenUnserialized(string $source, array $constants, RootNode $expectedAst): void { $this->registerComparator(new AbstractNodeWithoutOriginalValueTokenStreamIdentifierComparator()); @@ -2048,10 +2020,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, unserialize(serialize($ast))); } - /** - * @test - * @dataProvider buildConstantDataProvider - */ + #[DataProvider('buildConstantDataProvider')] + #[Test] public function buildConstantCommentAware(string $source, array $constants, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -2060,10 +2030,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - * @dataProvider buildConstantDataProvider - */ + #[DataProvider('buildConstantDataProvider')] + #[Test] public function buildConstantCompatArray(string $source, array $constants, RootNode $_, array $expectedArray): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -2072,10 +2040,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedArray, $ast->toArray()); } - /** - * @test - * @dataProvider buildConstantDataProvider - */ + #[DataProvider('buildConstantDataProvider')] + #[Test] public function buildConstantCompatArrayCommentAware(string $source, array $constants, RootNode $_, array $expectedArray): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -2084,9 +2050,7 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedArray, $ast->toArray()); } - /** - * @test - */ + #[Test] public function buildExtendsGivenAst(): void { $fooNode = new ChildNode('foo'); @@ -2114,9 +2078,7 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedArray, $resultAst->toArray()); } - /** - * @test - */ + #[Test] public function buildExtendsGivenAstCommentAware(): void { $fooNode = new ChildNode('foo'); @@ -2157,10 +2119,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider functionSortListThrowsSortingNonNumericListNumericDataProvider - */ + #[DataProvider('functionSortListThrowsSortingNonNumericListNumericDataProvider')] + #[Test] public function functionSortListThrowsSortingNonNumericListNumeric(string $source): void { $this->expectException(\InvalidArgumentException::class); @@ -2170,10 +2130,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase (new AstBuilder($noopEventDispatcher))->build($tokens, new RootNode()); } - /** - * @test - * @dataProvider functionSortListThrowsSortingNonNumericListNumericDataProvider - */ + #[DataProvider('functionSortListThrowsSortingNonNumericListNumericDataProvider')] + #[Test] public function functionSortListThrowsSortingNonNumericListNumericCommentAware(string $source): void { $this->expectException(\InvalidArgumentException::class); @@ -2255,10 +2213,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider functionGetEnvDataProvider - */ + #[DataProvider('functionGetEnvDataProvider')] + #[Test] public function functionGetEnv(?string $envVarName, ?string $envVarValue, $source, RootNode $expectedAst): void { if ($envVarName) { @@ -2273,10 +2229,8 @@ final class AstBuilderInterfaceTest extends UnitTestCase } } - /** - * @test - * @dataProvider functionGetEnvDataProvider - */ + #[DataProvider('functionGetEnvDataProvider')] + #[Test] public function functionGetEnvCommentAware(?string $envVarName, ?string $envVarValue, $source, RootNode $expectedAst): void { if ($envVarName) { @@ -2380,20 +2334,16 @@ final class AstBuilderInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider flattenDataProvider - */ + #[DataProvider('flattenDataProvider')] + #[Test] public function flatten(string $typoscript, array $expected) { $ast = (new AstBuilder(new NoopEventDispatcher()))->build((new LosslessTokenizer())->tokenize($typoscript), new RootNode()); self::assertSame($expected, $ast->flatten()); } - /** - * @test - * @dataProvider flattenDataProvider - */ + #[DataProvider('flattenDataProvider')] + #[Test] public function flattenCommentAware(string $typoscript, array $expected) { $ast = (new CommentAwareAstBuilder(new NoopEventDispatcher()))->build((new LosslessTokenizer())->tokenize($typoscript), new RootNode()); @@ -2762,10 +2712,9 @@ final class AstBuilderInterfaceTest extends UnitTestCase /** * This is for CommentAwareAstBuilder only, AstBuilder ignores comments. - * - * @test - * @dataProvider buildWithCommentsDataProvider */ + #[DataProvider('buildWithCommentsDataProvider')] + #[Test] public function buildWithComments(string $source, RootNode $expectedAst): void { $noopEventDispatcher = new NoopEventDispatcher(); @@ -2774,9 +2723,7 @@ final class AstBuilderInterfaceTest extends UnitTestCase self::assertEquals($expectedAst, $ast); } - /** - * @test - */ + #[Test] public function buildWithCommentsSetsPreviousValue(): void { $source = "foo = fooValue1\n" . diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/AST/CurrentObjectPath/CurrentObjectPathTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/AST/CurrentObjectPath/CurrentObjectPathTest.php index a14070241118..be4adcbf179b 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/AST/CurrentObjectPath/CurrentObjectPathTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/AST/CurrentObjectPath/CurrentObjectPathTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\AST\CurrentObjectPath; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\AST\CurrentObjectPath\CurrentObjectPath; use TYPO3\CMS\Core\TypoScript\AST\Node\ChildNode; use TYPO3\CMS\Core\TypoScript\AST\Node\RootNode; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CurrentObjectPathTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getAllReturnsPathArray() { $firstNode = new ChildNode('foo'); @@ -36,9 +35,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame([$firstNode, $secondNode], $currentObjectPath->getAll()); } - /** - * @test - */ + #[Test] public function getPathAsStringReturnsPath() { $currentObjectPath = new CurrentObjectPath(new RootNode()); @@ -47,9 +44,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame('foo.bar', $currentObjectPath->getPathAsString()); } - /** - * @test - */ + #[Test] public function getPathAsStringReturnsQuotedPath() { $currentObjectPath = new CurrentObjectPath(new ChildNode('foo')); @@ -57,9 +52,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame('foo.bar\.baz', $currentObjectPath->getPathAsString()); } - /** - * @test - */ + #[Test] public function getPathAsStringReturnsPathWithZero() { $currentObjectPath = new CurrentObjectPath(new ChildNode('foo')); @@ -68,9 +61,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame('foo.0.bar', $currentObjectPath->getPathAsString()); } - /** - * @test - */ + #[Test] public function getPathAsStringThrowsWithNodeNameEmptyString() { $this->expectExceptionCode(\RuntimeException::class); @@ -80,9 +71,7 @@ final class CurrentObjectPathTest extends UnitTestCase $currentObjectPath->getPathAsString(); } - /** - * @test - */ + #[Test] public function getFirstReturnsFirstNode() { $firstNode = new ChildNode('foo'); @@ -94,9 +83,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame($firstNode, $currentObjectPath->getFirst()); } - /** - * @test - */ + #[Test] public function getLastReturnsLastNode() { $firstNode = new ChildNode('foo'); @@ -108,9 +95,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame($thirdNode, $currentObjectPath->getLast()); } - /** - * @test - */ + #[Test] public function getSecondLastReturnsSecondLastNode() { $firstNode = new ChildNode('foo'); @@ -122,9 +107,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame($secondNode, $currentObjectPath->getSecondLast()); } - /** - * @test - */ + #[Test] public function getSecondLastReturnsFirstIfThereIsOnlyOne() { $firstNode = new ChildNode('foo'); @@ -132,9 +115,7 @@ final class CurrentObjectPathTest extends UnitTestCase self::assertSame($firstNode, $currentObjectPath->getSecondLast()); } - /** - * @test - */ + #[Test] public function removeLastRemovesLastNode() { $firstNode = new ChildNode('foo'); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ChildNodeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ChildNodeTest.php index 8ac189d6da02..333edab79c50 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ChildNodeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ChildNodeTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\AST\Node; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\AST\Node\ChildNode; use TYPO3\CMS\Core\TypoScript\AST\Node\ReferenceChildNode; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ChildNodeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getIdentifierThrowsExceptionIfNotIdentifierHasBeenSet(): void { $this->expectException(\RuntimeException::class); @@ -33,9 +32,7 @@ final class ChildNodeTest extends UnitTestCase (new ChildNode('someName'))->getIdentifier(); } - /** - * @test - */ + #[Test] public function setIdentifierCreatesIdentifierString(): void { $node = new ChildNode('someName'); @@ -43,9 +40,7 @@ final class ChildNodeTest extends UnitTestCase self::assertIsString($node->getIdentifier()); } - /** - * @test - */ + #[Test] public function setIdentifierTriggersIdentifierCalculationForChild(): void { $node = new ChildNode('someName'); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ReferenceChildNodeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ReferenceChildNodeTest.php index ff99e3b60285..44e4db32a17c 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ReferenceChildNodeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/ReferenceChildNodeTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\AST\Node; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\AST\Node\ChildNode; use TYPO3\CMS\Core\TypoScript\AST\Node\ReferenceChildNode; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ReferenceChildNodeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getIdentifierThrowsExceptionIfNotIdentifierHasBeenSet(): void { $this->expectException(\RuntimeException::class); @@ -33,9 +32,7 @@ final class ReferenceChildNodeTest extends UnitTestCase (new ReferenceChildNode('someName'))->getIdentifier(); } - /** - * @test - */ + #[Test] public function setIdentifierCreatesIdentifierString(): void { $rootNode = new ReferenceChildNode('someName'); @@ -43,9 +40,7 @@ final class ReferenceChildNodeTest extends UnitTestCase self::assertIsString($rootNode->getIdentifier()); } - /** - * @test - */ + #[Test] public function setIdentifierTriggersIdentifierCalculationForChild(): void { $node = new ReferenceChildNode('someName'); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/RootNodeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/RootNodeTest.php index 560c75424842..ed747c4e095e 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/RootNodeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Node/RootNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\AST\Node; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\AST\Node\ChildNode; use TYPO3\CMS\Core\TypoScript\AST\Node\ReferenceChildNode; use TYPO3\CMS\Core\TypoScript\AST\Node\RootNode; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RootNodeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getIdentifierThrowsExceptionIfNotIdentifierHasBeenSet(): void { $this->expectException(\RuntimeException::class); @@ -34,9 +33,7 @@ final class RootNodeTest extends UnitTestCase (new RootNode())->getIdentifier(); } - /** - * @test - */ + #[Test] public function setIdentifierCreatesIdentifierString(): void { $rootNode = new RootNode(); @@ -44,9 +41,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame('5c638577a9858bb2', $rootNode->getIdentifier()); } - /** - * @test - */ + #[Test] public function setIdentifierTriggersIdentifierCalculationForChild(): void { $rootNode = new RootNode(); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Traverser/AstTraverserTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Traverser/AstTraverserTest.php index 486f64492ccf..8c1b3a670c26 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/AST/Traverser/AstTraverserTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/AST/Traverser/AstTraverserTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\AST\Traverser; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\AST\Node\RootNode; use TYPO3\CMS\Core\TypoScript\AST\Traverser\AstTraverser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AstTraverserTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function traverseThrowsExceptionWithVisitorNotImplementingInterface(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionElseIncludeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionElseIncludeTest.php index 92eca592fd47..b849018e46bc 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionElseIncludeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionElseIncludeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\IncludeTree\IncludeNode; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\ConditionElseInclude; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConditionElseIncludeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setConditionTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); @@ -34,9 +33,7 @@ final class ConditionElseIncludeTest extends UnitTestCase (new ConditionElseInclude())->setConditionToken(new Token(TokenType::T_BLANK, '')); } - /** - * @test - */ + #[Test] public function setOriginalConditionTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTest.php index 566dc6e3adbb..ef084e9d5539 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\IncludeTree\IncludeNode; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\ConditionInclude; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConditionIncludeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setConditionTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); @@ -34,9 +33,7 @@ final class ConditionIncludeTest extends UnitTestCase (new ConditionInclude())->setConditionToken(new Token(TokenType::T_BLANK, '')); } - /** - * @test - */ + #[Test] public function setOriginalConditionTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTyposcriptIncludeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTyposcriptIncludeTest.php index 475b6adda2b7..10cbda561712 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTyposcriptIncludeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/ConditionIncludeTyposcriptIncludeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\IncludeTree\IncludeNode; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\ConditionIncludeTyposcriptInclude; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConditionIncludeTyposcriptIncludeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setConditionTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); @@ -34,9 +33,7 @@ final class ConditionIncludeTyposcriptIncludeTest extends UnitTestCase (new ConditionIncludeTyposcriptInclude())->setConditionToken(new Token(TokenType::T_BLANK, '')); } - /** - * @test - */ + #[Test] public function setOriginalConditionTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/RootNodeTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/RootNodeTest.php index fda3be99d563..292137eb2f19 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/RootNodeTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/IncludeNode/RootNodeTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\IncludeTree\IncludeNode; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\RootInclude; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\StringInclude; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RootNodeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getIdentifierThrowsExceptionIfNotIdentifierHasBeenSet(): void { $this->expectException(\RuntimeException::class); @@ -33,9 +32,7 @@ final class RootNodeTest extends UnitTestCase (new RootInclude())->getIdentifier(); } - /** - * @test - */ + #[Test] public function setIdentifierCreatesIdentifierString(): void { $rootNode = new RootInclude(); @@ -43,9 +40,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame('5c638577a9858bb2', $rootNode->getIdentifier()); } - /** - * @test - */ + #[Test] public function setIdentifierTriggersIdentifierCalculationForChild(): void { $rootNode = new RootInclude(); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/ConditionVerdictAwareIncludeTreeTraverserTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/ConditionVerdictAwareIncludeTreeTraverserTest.php index bef5c91a0df9..8d59dfe71b39 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/ConditionVerdictAwareIncludeTreeTraverserTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/ConditionVerdictAwareIncludeTreeTraverserTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\IncludeTree\Traverser; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\RootInclude; use TYPO3\CMS\Core\TypoScript\IncludeTree\Traverser\ConditionVerdictAwareIncludeTreeTraverser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConditionVerdictAwareIncludeTreeTraverserTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function traverseThrowsExceptionWithVisitorNotImplementingInterface(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/IncludeTreeTraverserTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/IncludeTreeTraverserTest.php index ba7ae0fbd0b2..50aea3abeac6 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/IncludeTreeTraverserTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/IncludeTree/Traverser/IncludeTreeTraverserTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\IncludeTree\Traverser; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\RootInclude; use TYPO3\CMS\Core\TypoScript\IncludeTree\Traverser\IncludeTreeTraverser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IncludeTreeTraverserTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function traverseThrowsExceptionWithVisitorNotImplementingInterface(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ConditionLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ConditionLineTest.php index 27e3f88e672a..74f64bae4cef 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ConditionLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ConditionLineTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\ConditionLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConditionLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setValueTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierAssignmentLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierAssignmentLineTest.php index 8e3ade9dd639..83394c074af8 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierAssignmentLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierAssignmentLineTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\IdentifierAssignmentLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierAssignmentLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setIdentifierTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); @@ -33,9 +32,7 @@ final class IdentifierAssignmentLineTest extends UnitTestCase (new IdentifierAssignmentLine())->setIdentifierTokenStream(new IdentifierTokenStream()); } - /** - * @test - */ + #[Test] public function setValueTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierBlockOpenLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierBlockOpenLineTest.php index 9d154faf0f24..d0e9db98a9f2 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierBlockOpenLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierBlockOpenLineTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\IdentifierBlockOpenLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierBlockOpenLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setIdentifierTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierCopyLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierCopyLineTest.php index 29db4c1b8ce1..9e04fc4dbc1d 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierCopyLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierCopyLineTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\IdentifierCopyLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierCopyLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setIdentifierTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); @@ -33,9 +32,7 @@ final class IdentifierCopyLineTest extends UnitTestCase (new IdentifierCopyLine())->setIdentifierTokenStream(new IdentifierTokenStream()); } - /** - * @test - */ + #[Test] public function setValueTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierFunctionLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierFunctionLineTest.php index 8a30c16754ce..8c9e7cfdc76f 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierFunctionLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierFunctionLineTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\IdentifierFunctionLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierFunctionLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setIdentifierTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); @@ -35,9 +34,7 @@ final class IdentifierFunctionLineTest extends UnitTestCase (new IdentifierFunctionLine())->setIdentifierTokenStream(new IdentifierTokenStream()); } - /** - * @test - */ + #[Test] public function setFunctionNameTokenThrowsIfTokenIsNotOfTypeFunction(): void { $this->expectException(\LogicException::class); @@ -45,9 +42,7 @@ final class IdentifierFunctionLineTest extends UnitTestCase (new IdentifierFunctionLine())->setFunctionNameToken(new Token(TokenType::T_BLANK, '')); } - /** - * @test - */ + #[Test] public function setFunctionValueTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierReferenceLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierReferenceLineTest.php index 1ce800ec29fd..097b0092f7c9 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierReferenceLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierReferenceLineTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\IdentifierReferenceLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierReferenceLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setIdentifierTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); @@ -33,9 +32,7 @@ final class IdentifierReferenceLineTest extends UnitTestCase (new IdentifierReferenceLine())->setIdentifierTokenStream(new IdentifierTokenStream()); } - /** - * @test - */ + #[Test] public function setValueTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierUnsetLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierUnsetLineTest.php index 1509f4ab0bdb..01c14ac01c87 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierUnsetLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/IdentifierUnsetLineTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\IdentifierUnsetLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierUnsetLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setIdentifierTokenStreamThrowsIfStreamIsEmpty(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportLineTest.php index c7fec6a9c824..29c28d090777 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportLineTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\ImportLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ImportLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setFunctionValueTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportOldLineTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportOldLineTest.php index 6044fb84429d..8290362325ea 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportOldLineTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Line/ImportOldLineTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Line; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\ImportOldLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ImportOldLineTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setFunctionValueTokenThrowsIfTokenIsNotOfTypeValue(): void { $this->expectException(\LogicException::class); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/IdentifierTokenStreamTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/IdentifierTokenStreamTest.php index 041514c0766d..f844393df98a 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/IdentifierTokenStreamTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/IdentifierTokenStreamTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Token; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\IdentifierTokenStream; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class IdentifierTokenStreamTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function appendThrowsExceptionIfTokenIsNotOfTypeIdentifier(): void { $this->expectException(\LogicException::class); @@ -35,26 +34,20 @@ final class IdentifierTokenStreamTest extends UnitTestCase (new IdentifierTokenStream())->append($token); } - /** - * @test - */ + #[Test] public function canAppendIdentifierToken(): void { $token = new Token(TokenType::T_IDENTIFIER, '', 0, 0); (new IdentifierTokenStream())->append($token); } - /** - * @test - */ + #[Test] public function nonRelativeStreamIsNotRelative(): void { self::assertFalse((new IdentifierTokenStream())->isRelative()); } - /** - * @test - */ + #[Test] public function relativeStreamIsRelative(): void { $tokenStream = (new IdentifierTokenStream()); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenStreamTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenStreamTest.php index 640d7c38f970..e11e9f9f63e9 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenStreamTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenStreamTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Token; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenStream; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TokenStreamTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getNextReturnsToken(): void { $subject = new TokenStream(); @@ -35,9 +34,7 @@ final class TokenStreamTest extends UnitTestCase self::assertSame($subject->getNext(), $token); } - /** - * @test - */ + #[Test] public function getNextReturnsNullIfThereIsNoToken(): void { $subject = new TokenStream(); @@ -47,9 +44,7 @@ final class TokenStreamTest extends UnitTestCase self::assertNull($subject->getNext()); } - /** - * @test - */ + #[Test] public function peekNextReturnsTokenAndDoesNotRaisePointer(): void { $subject = new TokenStream(); @@ -62,9 +57,7 @@ final class TokenStreamTest extends UnitTestCase self::assertSame($subject->peekNext(), $newLineToken); } - /** - * @test - */ + #[Test] public function peekNextReturnsNullIfThereIsNoNextToken(): void { $subject = new TokenStream(); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenTest.php index 0858314e9ee8..b03343afd8e6 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/Token/TokenTest.php @@ -17,47 +17,38 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer\Token; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\Token; use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\TokenType; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TokenTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getTypeReturnsType(): void { self::assertSame(TokenType::T_VALUE, (new Token(TokenType::T_VALUE, '', 0, 0))->getType()); } - /** - * @test - */ + #[Test] public function getValueReturnsValue(): void { self::assertSame('foo', (new Token(TokenType::T_VALUE, 'foo', 0, 0))->getValue()); } - /** - * @test - */ + #[Test] public function getLineReturnsLine(): void { self::assertSame(42, (new Token(TokenType::T_VALUE, '', 42, 0))->getLine()); } - /** - * @test - */ + #[Test] public function getColumnReturnsColumn(): void { self::assertSame(42, (new Token(TokenType::T_VALUE, '', 0, 42))->getColumn()); } - /** - * @test - */ + #[Test] public function stringCastReturnsValue(): void { self::assertSame('foo', (string)(new Token(TokenType::T_VALUE, 'foo', 0, 0))); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/TokenizerInterfaceTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/TokenizerInterfaceTest.php index ffef55851e23..4e1a884af4c4 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/TokenizerInterfaceTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/Tokenizer/TokenizerInterfaceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript\Tokenizer; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\BlockCloseLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\CommentLine; use TYPO3\CMS\Core\TypoScript\Tokenizer\Line\ConditionElseLine; @@ -7998,30 +8000,24 @@ final class TokenizerInterfaceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider tokenizeStringDataProvider - */ + #[DataProvider('tokenizeStringDataProvider')] + #[Test] public function tokenize(string $source, LineStream $expected): void { $tokens = (new LosslessTokenizer())->tokenize($source); self::assertEquals($expected, $tokens); } - /** - * @test - * @dataProvider tokenizeStringDataProvider - */ + #[DataProvider('tokenizeStringDataProvider')] + #[Test] public function tokenizeLossy(string $source, LineStream $_, LineStream $expected): void { $tokens = (new LossyTokenizer())->tokenize($source); self::assertEquals($expected, $tokens); } - /** - * @test - * @dataProvider tokenizeStringDataProvider - */ + #[DataProvider('tokenizeStringDataProvider')] + #[Test] public function untokenize(string $source): void { $tokenizer = new LosslessTokenizer(); diff --git a/typo3/sysext/core/Tests/Unit/TypoScript/TypoScriptServiceTest.php b/typo3/sysext/core/Tests/Unit/TypoScript/TypoScriptServiceTest.php index 8793a68518c1..f3802ab1ab4c 100644 --- a/typo3/sysext/core/Tests/Unit/TypoScript/TypoScriptServiceTest.php +++ b/typo3/sysext/core/Tests/Unit/TypoScript/TypoScriptServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\TypoScript; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\TypoScript\TypoScriptService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -146,11 +148,11 @@ final class TypoScriptServiceTest extends UnitTestCase } /** - * @test - * @dataProvider convertTypoScriptArrayToPlainArrayTestdata * @param mixed $typoScriptSettings * @param mixed $expectedSettings */ + #[DataProvider('convertTypoScriptArrayToPlainArrayTestdata')] + #[Test] public function convertTypoScriptArrayToPlainArrayRemovesTrailingDotsWithChangedOrderInTheTypoScriptArray( $typoScriptSettings, $expectedSettings @@ -280,11 +282,11 @@ final class TypoScriptServiceTest extends UnitTestCase } /** - * @test - * @dataProvider convertPlainArrayToTypoScriptArrayTestdata * @param mixed $extbaseTS * @param mixed $classic */ + #[DataProvider('convertPlainArrayToTypoScriptArrayTestdata')] + #[Test] public function convertPlainArrayToTypoScriptArray($extbaseTS, $classic): void { $typoScriptService = new TypoScriptService(); @@ -401,10 +403,10 @@ final class TypoScriptServiceTest extends UnitTestCase } /** - * @test - * @dataProvider explodeConfigurationForOptionSplitProvider * @see https://docs.typo3.org/typo3cms/TyposcriptReference/ObjectsAndProperties/Index.html#objects-optionsplit */ + #[DataProvider('explodeConfigurationForOptionSplitProvider')] + #[Test] public function explodeConfigurationForOptionSplitTest($configuration, $splitCount, $expected): void { $serviceObject = new TypoScriptService(); diff --git a/typo3/sysext/core/Tests/Unit/Utility/ArrayUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/ArrayUtilityTest.php index 9e7dd5282469..cf9ddea1e563 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/ArrayUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/ArrayUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\ArrayUtilityFilterRecursiveCallbackFixture; use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\Exception\MissingArrayPathException; @@ -161,12 +163,12 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider filterByValueRecursive * @param array $needle * @param array $haystack * @param array $expectedResult */ + #[DataProvider('filterByValueRecursive')] + #[Test] public function filterByValueRecursiveCorrectlyFiltersArray($needle, $haystack, $expectedResult): void { self::assertEquals( @@ -175,9 +177,7 @@ final class ArrayUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function filterByValueRecursiveMatchesReferencesToSameObject(): void { $instance = new \stdClass(); @@ -187,9 +187,7 @@ final class ArrayUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function filterByValueRecursiveDoesNotMatchDifferentInstancesOfSameClass(): void { self::assertEquals( @@ -201,33 +199,25 @@ final class ArrayUtilityTest extends UnitTestCase /////////////////////// // Tests concerning isValidPath /////////////////////// - /** - * @test - */ + #[Test] public function isValidPathReturnsTrueIfPathExistsStringVersion(): void { self::assertTrue(ArrayUtility::isValidPath(['foo' => 'bar'], 'foo')); } - /** - * @test - */ + #[Test] public function isValidPathReturnsFalseIfPathDoesNotExistStringVersion(): void { self::assertFalse(ArrayUtility::isValidPath(['foo' => 'bar'], 'bar')); } - /** - * @test - */ + #[Test] public function isValidPathReturnsTrueIfPathExistsArrayVersion(): void { self::assertTrue(ArrayUtility::isValidPath(['foo' => 'bar'], ['foo'])); } - /** - * @test - */ + #[Test] public function isValidPathReturnsFalseIfPathDoesNotExistArrayVersion(): void { self::assertFalse(ArrayUtility::isValidPath(['foo' => 'bar'], ['bar'])); @@ -236,10 +226,7 @@ final class ArrayUtilityTest extends UnitTestCase /////////////////////// // Tests concerning getValueByPath /////////////////////// - - /** - * @test - */ + #[Test] public function getValueByPathThrowsExceptionIfPathIsEmpty(): void { $this->expectException(\RuntimeException::class); @@ -248,17 +235,13 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::getValueByPath([], ''); } - /** - * @test - */ + #[Test] public function getValueByPathReturnsFirstIndexIfPathIsZero(): void { self::assertSame('foo', ArrayUtility::getValueByPath(['foo'], '0')); } - /** - * @test - */ + #[Test] public function getValueByPathReturnsFirstIndexIfPathSegmentIsZero(): void { self::assertSame('bar', ArrayUtility::getValueByPath(['foo' => ['bar']], 'foo/0')); @@ -333,10 +316,10 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider getValueByPathInvalidPathDataProvider * @param string $path */ + #[DataProvider('getValueByPathInvalidPathDataProvider')] + #[Test] public function getValueByPathThrowsExceptionIfPathNotExists(array $array, $path): void { $this->expectException(\RuntimeException::class); @@ -344,10 +327,8 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::getValueByPath($array, $path); } - /** - * @test - * @dataProvider getValueByPathInvalidPathDataProvider - */ + #[DataProvider('getValueByPathInvalidPathDataProvider')] + #[Test] public function getValueByPathThrowsSpecificExceptionIfPathNotExists(array $array, string $path): void { $this->expectException(MissingArrayPathException::class); @@ -462,19 +443,17 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider getValueByPathValidDataProvider * @param string $path * @param mixed $expectedResult */ + #[DataProvider('getValueByPathValidDataProvider')] + #[Test] public function getValueByPathGetsCorrectValue(array $array, $path, $expectedResult): void { self::assertEquals($expectedResult, ArrayUtility::getValueByPath($array, $path)); } - /** - * @test - */ + #[Test] public function getValueByPathAcceptsDifferentDelimiter(): void { $input = [ @@ -497,9 +476,7 @@ final class ArrayUtilityTest extends UnitTestCase /////////////////////// // Tests concerning setValueByPath /////////////////////// - /** - * @test - */ + #[Test] public function setValueByPathThrowsExceptionIfPathIsEmpty(): void { $this->expectException(\RuntimeException::class); @@ -508,9 +485,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::setValueByPath([], '', null); } - /** - * @test - */ + #[Test] public function setValueByPathThrowsExceptionIfPathSegmentIsEmpty(): void { $this->expectException(\RuntimeException::class); @@ -519,17 +494,13 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::setValueByPath(['foo' => 'bar'], '/foo', 'value'); } - /** - * @test - */ + #[Test] public function setValueByPathCanUseZeroAsPathSegment(): void { self::assertSame(['foo' => ['value']], ArrayUtility::setValueByPath(['foo' => []], 'foo/0', 'value')); } - /** - * @test - */ + #[Test] public function setValueByPathCanUseZeroAsPath(): void { self::assertSame(['value', 'bar'], ArrayUtility::setValueByPath(['foo', 'bar'], '0', 'value')); @@ -747,12 +718,12 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider setValueByPathSetsCorrectValueDataProvider * @param string $path * @param string $value * @param array $expectedResult */ + #[DataProvider('setValueByPathSetsCorrectValueDataProvider')] + #[Test] public function setValueByPathSetsCorrectValue(array $array, $path, $value, $expectedResult): void { self::assertEquals( @@ -762,12 +733,9 @@ final class ArrayUtilityTest extends UnitTestCase } /********************** - /* Tests concerning removeByPath - ***********************/ - - /** - * @test - */ + /* Tests concerning removeByPath + ***********************/ + #[Test] public function removeByPathThrowsExceptionIfPathIsEmpty(): void { $this->expectException(\RuntimeException::class); @@ -776,9 +744,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::removeByPath([], ''); } - /** - * @test - */ + #[Test] public function removeByPathThrowsExceptionWithEmptyPathSegment(): void { $inputArray = [ @@ -793,9 +759,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::removeByPath($inputArray, 'foo//bar'); } - /** - * @test - */ + #[Test] public function removeByPathRemovesFirstIndexWithZeroAsPathSegment(): void { $inputArray = [ @@ -805,9 +769,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame(['foo' => []], ArrayUtility::removeByPath($inputArray, 'foo/0')); } - /** - * @test - */ + #[Test] public function removeByPathRemovesFirstIndexWithZeroAsPath(): void { $inputArray = ['bar']; @@ -815,9 +777,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame([], ArrayUtility::removeByPath($inputArray, '0')); } - /** - * @test - */ + #[Test] public function removeByPathThrowsExceptionIfPathDoesNotExistInArray(): void { $inputArray = [ @@ -832,9 +792,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::removeByPath($inputArray, 'foo/baz'); } - /** - * @test - */ + #[Test] public function removeByPathThrowsSpecificExceptionIfPathDoesNotExistInArray(): void { $inputArray = [ @@ -849,9 +807,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::removeByPath($inputArray, 'foo/baz'); } - /** - * @test - */ + #[Test] public function removeByPathAcceptsGivenDelimiter(): void { $inputArray = [ @@ -921,11 +877,11 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider removeByPathRemovesCorrectPathDataProvider * @param string $path * @param array $expectedResult */ + #[DataProvider('removeByPathRemovesCorrectPathDataProvider')] + #[Test] public function removeByPathRemovesCorrectPath(array $array, $path, $expectedResult): void { self::assertEquals( @@ -937,9 +893,7 @@ final class ArrayUtilityTest extends UnitTestCase /////////////////////// // Tests concerning sortByKeyRecursive /////////////////////// - /** - * @test - */ + #[Test] public function sortByKeyRecursiveCheckIfSortingIsCorrect(): void { $unsortedArray = [ @@ -1092,21 +1046,19 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider sortArraysByKeyCheckIfSortingIsCorrectDataProvider * @param string $key * @param bool $ascending * @param array $expectedResult */ + #[DataProvider('sortArraysByKeyCheckIfSortingIsCorrectDataProvider')] + #[Test] public function sortArraysByKeyCheckIfSortingIsCorrect(array $array, $key, $ascending, $expectedResult): void { $sortedArray = ArrayUtility::sortArraysByKey($array, $key, $ascending); self::assertSame($expectedResult, $sortedArray); } - /** - * @test - */ + #[Test] public function sortArraysByKeyThrowsExceptionForNonExistingKey(): void { $this->expectException(\RuntimeException::class); @@ -1118,9 +1070,7 @@ final class ArrayUtilityTest extends UnitTestCase /////////////////////// // Tests concerning arrayExport /////////////////////// - /** - * @test - */ + #[Test] public function arrayExportReturnsFormattedMultidimensionalArray(): void { $array = [ @@ -1157,9 +1107,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::arrayExport($array)); } - /** - * @test - */ + #[Test] public function arrayExportThrowsExceptionIfObjectShouldBeExported(): void { $array = [ @@ -1174,9 +1122,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::arrayExport($array); } - /** - * @test - */ + #[Test] public function arrayExportReturnsNumericArrayKeys(): void { $array = [ @@ -1193,9 +1139,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::arrayExport($array)); } - /** - * @test - */ + #[Test] public function arrayExportReturnsNoKeyIndexForConsecutiveCountedArrays(): void { $array = [ @@ -1212,9 +1156,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::arrayExport($array)); } - /** - * @test - */ + #[Test] public function arrayExportReturnsKeyIndexForNonConsecutiveCountedArrays(): void { $array = [ @@ -1351,10 +1293,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider flattenCalculatesExpectedResultDataProvider - */ + #[DataProvider('flattenCalculatesExpectedResultDataProvider')] + #[Test] public function flattenCalculatesExpectedResult(array $array, array $expected): void { self::assertEquals($expected, ArrayUtility::flatten($array)); @@ -1518,10 +1458,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider flattenPlainCalculatesExpectedResultDataProvider - */ + #[DataProvider('flattenPlainCalculatesExpectedResultDataProvider')] + #[Test] public function flattenPlainCalculatesExpectedResult(array $array, array $expected): void { self::assertEquals($expected, ArrayUtility::flattenPlain($array)); @@ -1635,10 +1573,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider flattenWithKeepDotsCalculatesExpectedResultDataProvider - */ + #[DataProvider('flattenWithKeepDotsCalculatesExpectedResultDataProvider')] + #[Test] public function flattenWithKeepDotsCalculatesExpectedResult(array $array, array $expected): void { self::assertEquals($expected, ArrayUtility::flatten($array, '', true)); @@ -1802,10 +1738,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider unflattenCalculatesExpectedResultDataProvider - */ + #[DataProvider('unflattenCalculatesExpectedResultDataProvider')] + #[Test] public function unflattenCalculatesExpectedResult(array $array, array $expected): void { self::assertEquals($expected, ArrayUtility::unflatten($array)); @@ -2005,10 +1939,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider intersectRecursiveCalculatesExpectedResultDataProvider - */ + #[DataProvider('intersectRecursiveCalculatesExpectedResultDataProvider')] + #[Test] public function intersectRecursiveCalculatesExpectedResult(array $source, array $mask, array $expected): void { self::assertSame($expected, ArrayUtility::intersectRecursive($source, $mask)); @@ -2134,10 +2066,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider renumberKeysToAvoidLeapsIfKeysAreAllNumericDataProvider - */ + #[DataProvider('renumberKeysToAvoidLeapsIfKeysAreAllNumericDataProvider')] + #[Test] public function renumberKeysToAvoidLeapsIfKeysAreAllNumericReturnsExpectedOrder(array $inputArray, array $expected): void { self::assertEquals($expected, ArrayUtility::renumberKeysToAvoidLeapsIfKeysAreAllNumeric($inputArray)); @@ -2379,8 +2309,6 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider mergeRecursiveWithOverruleCalculatesExpectedResultDataProvider * @param array $input1 Input 1 * @param array $input2 Input 2 * @param bool $addKeys TRUE if should add keys, else FALSE @@ -2388,6 +2316,8 @@ final class ArrayUtilityTest extends UnitTestCase * @param bool $enableUnsetFeature TRUE if should enable unset feature, else FALSE * @param array $expected expected array */ + #[DataProvider('mergeRecursiveWithOverruleCalculatesExpectedResultDataProvider')] + #[Test] public function mergeRecursiveWithOverruleCalculatesExpectedResult($input1, $input2, $addKeys, $includeEmptyValues, $enableUnsetFeature, $expected): void { ArrayUtility::mergeRecursiveWithOverrule($input1, $input2, $addKeys, $includeEmptyValues, $enableUnsetFeature); @@ -2397,9 +2327,7 @@ final class ArrayUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning removeArrayEntryByValue ////////////////////////////////// - /** - * @test - */ + #[Test] public function checkRemoveArrayEntryByValueRemovesEntriesFromOneDimensionalArray(): void { $inputArray = [ @@ -2417,9 +2345,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function checkRemoveArrayEntryByValueRemovesEntriesFromMultiDimensionalArray(): void { $inputArray = [ @@ -2438,9 +2364,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function checkRemoveArrayEntryByValueRemovesEntryWithEmptyString(): void { $inputArray = [ @@ -2461,12 +2385,12 @@ final class ArrayUtilityTest extends UnitTestCase // Tests concerning keepItemsInArray ////////////////////////////////// /** - * @test - * @dataProvider keepItemsInArrayWorksWithOneArgumentDataProvider * @param mixed $search The items which are allowed/kept in the array * @param array $array target array * @param array $expected expected array */ + #[DataProvider('keepItemsInArrayWorksWithOneArgumentDataProvider')] + #[Test] public function keepItemsInArrayWorksWithOneArgument($search, $array, $expected): void { self::assertEquals($expected, ArrayUtility::keepItemsInArray($array, $search)); @@ -2496,9 +2420,8 @@ final class ArrayUtilityTest extends UnitTestCase * Shows the example from the doc comment where * a function is used to reduce the sub arrays to one item which * is then used for the matching. - * - * @test */ + #[Test] public function keepItemsInArrayCanUseClosure(): void { $array = [ @@ -2521,9 +2444,7 @@ final class ArrayUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning remapArrayKeys ////////////////////////////////// - /** - * @test - */ + #[Test] public function remapArrayKeysExchangesKeysWithGivenMapping(): void { $array = [ @@ -2547,9 +2468,7 @@ final class ArrayUtilityTest extends UnitTestCase ////////////////////////////////////// // Tests concerning arrayDiffKeyRecursive ////////////////////////////////////// - /** - * @test - */ + #[Test] public function arrayDiffKeyRecursiveHandlesOneDimensionalArrays(): void { $array1 = [ @@ -2568,9 +2487,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function arrayDiffKeyRecursiveHandlesMultiDimensionalArrays(): void { $array1 = [ @@ -2605,9 +2522,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function arrayDiffKeyRecursiveHandlesMixedArrays(): void { $array1 = [ @@ -2631,9 +2546,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function arrayDiffKeyRecursiveReturnsEmptyIfEqual(): void { $array1 = [ @@ -2660,9 +2573,7 @@ final class ArrayUtilityTest extends UnitTestCase ////////////////////////////////////// // Tests concerning arrayDiffAssocRecursive ////////////////////////////////////// - /** - * @test - */ + #[Test] public function arrayDiffAssocRecursiveHandlesOneDimensionalArrays(): void { $array1 = [ @@ -2681,9 +2592,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function arrayDiffAssocRecursiveHandlesMultiDimensionalArrays(): void { $array1 = [ @@ -2719,9 +2628,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function arrayDiffAssocRecursiveHandlesMixedArrays(): void { $array1 = [ @@ -2746,9 +2653,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function arrayDiffAssocRecursiveReturnsEmptyIfEqual(): void { $array1 = [ @@ -2775,10 +2680,7 @@ final class ArrayUtilityTest extends UnitTestCase ////////////////////////////////////// // Tests concerning naturalKeySortRecursive ////////////////////////////////////// - - /** - * @test - */ + #[Test] public function naturalKeySortRecursiveSortsOneDimensionalArrayByNaturalOrder(): void { $testArray = [ @@ -2811,9 +2713,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertEquals($expectedResult, array_values($testArray)); } - /** - * @test - */ + #[Test] public function naturalKeySortRecursiveSortsMultiDimensionalArrayByNaturalOrder(): void { $testArray = [ @@ -2955,12 +2855,11 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider filterAndSortByNumericKeysWithAcceptAnyKey - * * @param array $input * @param array $expected */ + #[DataProvider('filterAndSortByNumericKeysWithAcceptAnyKey')] + #[Test] public function filterAndSortByNumericKeysBehavesCorrectlyForAcceptAnyKeysIsTrue($input, $expected): void { $result = ArrayUtility::filterAndSortByNumericKeys($input, true); @@ -3019,12 +2918,11 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider filterAndSortByNumericKeysWithoutAcceptAnyKey - * * @param array $input * @param array $expected */ + #[DataProvider('filterAndSortByNumericKeysWithoutAcceptAnyKey')] + #[Test] public function filterAndSortByNumericKeysBehavesCorrectlyForAcceptAnyKeysIsFalse($input, $expected): void { $result = ArrayUtility::filterAndSortByNumericKeys($input); @@ -3076,21 +2974,15 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * - * - * @dataProvider sortArrayWithIntegerKeysDataProvider - */ + #[DataProvider('sortArrayWithIntegerKeysDataProvider')] + #[Test] public function sortArrayWithIntegerKeysSortsNumericArrays(array $arrayToSort, array $expectedArray): void { $sortedArray = ArrayUtility::sortArrayWithIntegerKeys($arrayToSort); self::assertSame($sortedArray, $expectedArray); } - /** - * @test - */ + #[Test] public function assertAllArrayKeysAreValidThrowsExceptionOnNotAllowedArrayKeys(): void { $this->expectException(\InvalidArgumentException::class); @@ -3110,9 +3002,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::assertAllArrayKeysAreValid($arrayToTest, $allowedArrayKeys); } - /** - * @test - */ + #[Test] public function assertAllArrayKeysAreValidReturnsNullOnAllowedArrayKeys(): void { $arrayToTest = [ @@ -3130,9 +3020,7 @@ final class ArrayUtilityTest extends UnitTestCase ArrayUtility::assertAllArrayKeysAreValid($arrayToTest, $allowedArrayKeys); } - /** - * @test - */ + #[Test] public function sortArrayWithIntegerKeysRecursiveExpectSorting(): void { $input = [ @@ -3160,9 +3048,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::sortArrayWithIntegerKeysRecursive($input)); } - /** - * @test - */ + #[Test] public function sortArrayWithIntegerKeysRecursiveExpectNoSorting(): void { $input = [ @@ -3182,9 +3068,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::sortArrayWithIntegerKeysRecursive($input)); } - /** - * @test - */ + #[Test] public function reIndexNumericArrayKeysRecursiveExpectReindexing(): void { $input = [ @@ -3212,9 +3096,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::reIndexNumericArrayKeysRecursive($input)); } - /** - * @test - */ + #[Test] public function reIndexNumericArrayKeysRecursiveExpectNoReindexing(): void { $input = [ @@ -3242,9 +3124,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::reIndexNumericArrayKeysRecursive($input)); } - /** - * @test - */ + #[Test] public function removeNullValuesRecursiveExpectRemoval(): void { $input = [ @@ -3265,9 +3145,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::removeNullValuesRecursive($input)); } - /** - * @test - */ + #[Test] public function stripTagsFromValuesRecursiveExpectRemoval(): void { $input = [ @@ -3289,9 +3167,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::stripTagsFromValuesRecursive($input)); } - /** - * @test - */ + #[Test] public function stripTagsFromValuesRecursiveExpectNoTypeCast(): void { $testObject = new \stdClass(); @@ -3325,9 +3201,7 @@ final class ArrayUtilityTest extends UnitTestCase self::assertSame($expected, ArrayUtility::stripTagsFromValuesRecursive($input)); } - /** - * @test - */ + #[Test] public function convertBooleanStringsToBooleanRecursiveExpectConverting(): void { $input = [ @@ -3411,10 +3285,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider filterRecursiveFiltersFalseElementsDataProvider - */ + #[DataProvider('filterRecursiveFiltersFalseElementsDataProvider')] + #[Test] public function filterRecursiveFiltersFalseElements(array $input, array $expectedResult): void { // If no callback is supplied, all entries of array equal to FALSE (see converting to boolean) will be removed. @@ -3488,10 +3360,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider filterRecursiveCallbackFiltersEmptyElementsWithoutIntegerZeroByCallbackDataProvider - */ + #[DataProvider('filterRecursiveCallbackFiltersEmptyElementsWithoutIntegerZeroByCallbackDataProvider')] + #[Test] public function filterRecursiveCallbackFiltersEmptyElementsWithoutIntegerByCallback(array $input, array $expectedResult): void { // callback filters empty strings, array and null but keeps zero integers @@ -3563,12 +3433,12 @@ final class ArrayUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider filterRecursiveSupportsCallableCallbackDataProvider * @see https://forge.typo3.org/issues/84485 * * @param 0|ARRAY_FILTER_USE_KEY|ARRAY_FILTER_USE_BOTH $mode */ + #[DataProvider('filterRecursiveSupportsCallableCallbackDataProvider')] + #[Test] public function filterRecursiveSupportsCallableCallback(array $input, array $expectedResult, callable $callback, int $mode = 0): void { $result = ArrayUtility::filterRecursive($input, $callback, $mode); @@ -3607,10 +3477,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isAssociativeCorrectlyFindsStringKeysDataProvider - */ + #[DataProvider('isAssociativeCorrectlyFindsStringKeysDataProvider')] + #[Test] public function isAssociativeCorrectlyFindsStringKeys(array $array, bool $expectedResult): void { $result = ArrayUtility::isAssociative($array); @@ -3692,10 +3560,8 @@ final class ArrayUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider replaceAndAppendScalarValuesRecursiveCorrectlyMergesArraysDataProvider - */ + #[DataProvider('replaceAndAppendScalarValuesRecursiveCorrectlyMergesArraysDataProvider')] + #[Test] public function replaceAndAppendScalarValuesRecursiveCorrectlyMergesArrays(array $array1, array $array2, array $expectedResult): void { $result = ArrayUtility::replaceAndAppendScalarValuesRecursive($array1, $array2); diff --git a/typo3/sysext/core/Tests/Unit/Utility/ClassNamingUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/ClassNamingUtilityTest.php index 8b362a27b2b4..cbef331e4b98 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/ClassNamingUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/ClassNamingUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\ClassNamingUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -63,20 +65,16 @@ final class ClassNamingUtilityTest extends UnitTestCase ]; } - /** - * @dataProvider repositoryAndModelClassNames - * @test - */ + #[DataProvider('repositoryAndModelClassNames')] + #[Test] public function translateModelNameToRepositoryName(string $expectedRepositoryName, string $modelName): void { $translatedRepositoryName = ClassNamingUtility::translateModelNameToRepositoryName($modelName); self::assertSame($expectedRepositoryName, $translatedRepositoryName); } - /** - * @dataProvider repositoryAndModelClassNames - * @test - */ + #[DataProvider('repositoryAndModelClassNames')] + #[Test] public function translateRepositoryNameToModelName(string $repositoryName, string $expectedModelName): void { $translatedModelName = ClassNamingUtility::translateRepositoryNameToModelName($repositoryName); @@ -137,11 +135,8 @@ final class ClassNamingUtilityTest extends UnitTestCase ]; } - /** - * @dataProvider controllerObjectNamesAndMatches - * - * @test - */ + #[DataProvider('controllerObjectNamesAndMatches')] + #[Test] public function explodeObjectControllerName(string $controllerObjectName, array $expectedMatches): void { $actualMatches = ClassNamingUtility::explodeObjectControllerName($controllerObjectName); diff --git a/typo3/sysext/core/Tests/Unit/Utility/CommandUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/CommandUtilityTest.php index be8d6c840362..442f42240f84 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/CommandUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/CommandUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\CommandUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -72,12 +74,12 @@ final class CommandUtilityTest extends UnitTestCase } /** - * @dataProvider getConfiguredAppsDataProvider * @param array $globalsBinSetup * @param array $expected - * @test * @todo When specifying parameter types test bench errors occur */ + #[DataProvider('getConfiguredAppsDataProvider')] + #[Test] public function getConfiguredApps($globalsBinSetup, $expected): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['binSetup'] = $globalsBinSetup; @@ -189,10 +191,9 @@ final class CommandUtilityTest extends UnitTestCase /** * Tests if the commands are exploded and unquoted correctly - * - * @dataProvider unQuoteFilenameUnquotesCorrectlyDataProvider - * @test */ + #[DataProvider('unQuoteFilenameUnquotesCorrectlyDataProvider')] + #[Test] public function unQuoteFilenameUnquotesCorrectly(string $source, array $expectedQuoted): void { $commandUtilityMock = $this->getAccessibleMock(CommandUtility::class, null); @@ -204,9 +205,8 @@ final class CommandUtilityTest extends UnitTestCase * Test to ensure that, the error isn't happening * Error: Typed static property TYPO3\CMS\Core\Utility\CommandUtility::$paths must not be * accessed before initialization - * - * @test */ + #[Test] public function getCommandWithPhpReturnsPathToPhpExecutable(): void { $commandUtilityMock = $this->getAccessibleMock(CommandUtility::class, null); diff --git a/typo3/sysext/core/Tests/Unit/Utility/CsvUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/CsvUtilityTest.php index 8d82b2628ac9..56698d7f8874 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/CsvUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/CsvUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\CsvUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -85,10 +87,8 @@ final class CsvUtilityTest extends UnitTestCase ]; } - /** - * @dataProvider csvToArrayDataProvider - * @test - */ + #[DataProvider('csvToArrayDataProvider')] + #[Test] public function csvToArraySplitsAsExpected(string $input, string $fieldDelimiter, string $fieldEnclosure, int $maximumColumns, array $expectedResult): void { self::assertEquals($expectedResult, CsvUtility::csvToArray($input, $fieldDelimiter, $fieldEnclosure, $maximumColumns)); @@ -156,10 +156,8 @@ final class CsvUtilityTest extends UnitTestCase ]; } - /** - * @dataProvider csvValuesDataProvider - * @test - */ + #[DataProvider('csvValuesDataProvider')] + #[Test] public function csvValuesReturnsExpectedResult(array $row, string $delimiter, string $quote, string $expectedResult, int $flag): void { self::assertEquals($expectedResult, CsvUtility::csvValues($row, $delimiter, $quote, $flag)); diff --git a/typo3/sysext/core/Tests/Unit/Utility/DebugUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/DebugUtilityTest.php index c749f866acc7..82cb7033ee24 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/DebugUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/DebugUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\DebugUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -32,9 +34,7 @@ final class DebugUtilityTest extends UnitTestCase DebugUtility::useAnsiColor(true); } - /** - * @test - */ + #[Test] public function debugNotEncodesHtmlInputIfPlainText(): void { DebugUtility::usePlainTextOutput(true); @@ -51,9 +51,7 @@ final class DebugUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function debugEncodesHtmlInputIfNoPlainText(): void { DebugUtility::usePlainTextOutput(false); @@ -106,10 +104,10 @@ final class DebugUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider convertVariableToStringReturnsVariableContentDataProvider * @param mixed $variable */ + #[DataProvider('convertVariableToStringReturnsVariableContentDataProvider')] + #[Test] public function convertVariableToStringReturnsVariableContent($variable, string $expected): void { self::assertSame($expected, DebugUtility::convertVariableToString($variable)); diff --git a/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php index 63904fd05de5..fcd83907686a 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Cache\CacheManager; @@ -89,9 +91,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning isLoaded /////////////////////////////// - /** - * @test - */ + #[Test] public function isLoadedReturnsFalseIfExtensionIsNotLoaded(): void { self::assertFalse(ExtensionManagementUtility::isLoaded(StringUtility::getUniqueId('foobar'))); @@ -100,9 +100,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning extPath /////////////////////////////// - /** - * @test - */ + #[Test] public function extPathThrowsExceptionIfExtensionIsNotLoaded(): void { $this->expectException(\BadFunctionCallException::class); @@ -121,9 +119,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::extPath($packageName); } - /** - * @test - */ + #[Test] public function extPathAppendsScriptNameToPath(): void { $package = $this->getMockBuilder(Package::class) @@ -205,10 +201,8 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider extensionKeyDataProvider - */ + #[DataProvider('extensionKeyDataProvider')] + #[Test] public function getClassNamePrefixForExtensionKey(string $extensionName, string $expectedPrefix): void { self::assertSame($expectedPrefix, ExtensionManagementUtility::getCN($extensionName)); @@ -220,9 +214,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to all TCA types and duplicate fields are considered. * - * @test * @see ExtensionManagementUtility::addToAllTCAtypes() */ + #[Test] public function canAddFieldsToAllTCATypesBeforeExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -237,9 +231,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to all TCA types and duplicate fields are considered. * - * @test * @see ExtensionManagementUtility::addToAllTCAtypes() */ + #[Test] public function canAddFieldsToAllTCATypesAfterExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -254,9 +248,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to all TCA types and duplicate fields are considered. * - * @test * @see ExtensionManagementUtility::addToAllTCAtypes() */ + #[Test] public function canAddFieldsToAllTCATypesRespectsPalettes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -270,9 +264,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to all TCA types and fields in pallets are respected. * - * @test * @see ExtensionManagementUtility::addToAllTCAtypes() */ + #[Test] public function canAddFieldsToAllTCATypesRespectsPositionFieldInPalette(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -285,9 +279,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to a TCA type before existing ones * - * @test * @see ExtensionManagementUtility::addToAllTCAtypes() */ + #[Test] public function canAddFieldsToTCATypeBeforeExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -302,9 +296,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to a TCA type after existing ones * - * @test * @see ExtensionManagementUtility::addToAllTCAtypes() */ + #[Test] public function canAddFieldsToTCATypeAfterExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -316,9 +310,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals('fieldA, fieldB, fieldC;labelC, --palette--;;paletteC, fieldC1, fieldD, fieldD1', $GLOBALS['TCA'][$table]['types']['typeB']['showitem']); } - /** - * @test - */ + #[Test] public function canAddFieldWithPartOfAlreadyExistingFieldname(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -331,9 +323,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Test whether replacing other TCA fields works as promised * - * @test * @see ExtensionManagementUtility::addFieldsToAllPalettesOfField() */ + #[Test] public function canAddFieldsToTCATypeAndReplaceExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -349,9 +341,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals('fieldZ, fieldX1, fieldY', $GLOBALS['TCA'][$table]['palettes']['paletteD']['showitem']); } - /** - * @test - */ + #[Test] public function addToAllTCAtypesReplacesExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -367,9 +357,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals('fieldX, --palette--;;foo, fieldX1, fieldY', $GLOBALS['TCA'][$table]['palettes']['paletteD']['showitem']); } - /** - * @test - */ + #[Test] public function addToAllTCAtypesAddsToPaletteIdentifier(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -379,9 +367,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals('fieldA, fieldB, fieldC;labelC, --palette--;;paletteC, fieldX, --palette--;;newpalette, fieldC1, fieldD, fieldD1', $GLOBALS['TCA'][$table]['types']['typeB']['showitem']); } - /** - * @test - */ + #[Test] public function addToAllTCAtypesAddsBeforeDiv(): void { $showitemDiv = '--div--;LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:foobar'; @@ -397,9 +383,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to a palette before existing elements. * - * @test * @see ExtensionManagementUtility::addFieldsToPalette() */ + #[Test] public function canAddFieldsToPaletteBeforeExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -411,9 +397,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to a palette after existing elements. * - * @test * @see ExtensionManagementUtility::addFieldsToPalette() */ + #[Test] public function canAddFieldsToPaletteAfterExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -425,9 +411,9 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /** * Tests whether fields can be added to a palette after a not existing elements. * - * @test * @see ExtensionManagementUtility::addFieldsToPalette() */ + #[Test] public function canAddFieldsToPaletteAfterNotExistingOnes(): void { $table = StringUtility::getUniqueId('tx_coretest_table'); @@ -457,10 +443,8 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider removeDuplicatesForInsertionRemovesDuplicatesDataProvider - */ + #[DataProvider('removeDuplicatesForInsertionRemovesDuplicatesDataProvider')] + #[Test] public function removeDuplicatesForInsertionRemovesDuplicates(string $insertionList, string $list, string $expected): void { $result = ExtensionManagementUtilityAccessibleProxy::removeDuplicatesForInsertion($insertionList, $list); @@ -470,10 +454,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /////////////////////////////////////////////////// // Tests concerning addFieldsToAllPalettesOfField /////////////////////////////////////////////////// - - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldDoesNotAddAnythingIfFieldIsNotRegisteredInColumns(): void { $GLOBALS['TCA'] = [ @@ -499,9 +480,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsFieldsToPaletteAndSuppressesDuplicates(): void { $GLOBALS['TCA'] = [ @@ -546,9 +525,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldDoesNotAddAFieldThatIsPartOfPaletteAlready(): void { $GLOBALS['TCA'] = [ @@ -593,9 +570,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsFieldsToMultiplePalettes(): void { $GLOBALS['TCA'] = [ @@ -652,9 +627,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsMultipleFields(): void { $GLOBALS['TCA'] = [ @@ -699,9 +672,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsBeforeExistingIfRequested(): void { $GLOBALS['TCA'] = [ @@ -747,9 +718,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsFieldsAtEndIfBeforeRequestedDoesNotExist(): void { $GLOBALS['TCA'] = [ @@ -795,9 +764,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsAfterExistingIfRequested(): void { $GLOBALS['TCA'] = [ @@ -843,9 +810,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsFieldsAtEndIfAfterRequestedDoesNotExist(): void { $GLOBALS['TCA'] = [ @@ -891,9 +856,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsNewPaletteIfFieldHasNoPaletteYet(): void { $GLOBALS['TCA'] = [ @@ -933,9 +896,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expected, $GLOBALS['TCA']); } - /** - * @test - */ + #[Test] public function addFieldsToAllPalettesOfFieldAddsNewPaletteIfFieldHasNoPaletteYetAndKeepsExistingLabel(): void { $GLOBALS['TCA'] = [ @@ -978,7 +939,6 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /////////////////////////////////////////////////// // Tests concerning executePositionedStringInsertion /////////////////////////////////////////////////// - /** * Data provider for executePositionedStringInsertionTrimsCorrectCharacters */ @@ -1012,10 +972,8 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider executePositionedStringInsertionTrimsCorrectCharactersDataProvider - */ + #[DataProvider('executePositionedStringInsertionTrimsCorrectCharactersDataProvider')] + #[Test] public function executePositionedStringInsertionTrimsCorrectCharacters(string $string, string $expectedResult): void { $extensionManagementUtility = $this->getAccessibleMock(ExtensionManagementUtility::class, null); @@ -1026,10 +984,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning addTcaSelectItem ///////////////////////////////////////// - - /** - * @test - */ + #[Test] public function addTcaSelectItemThrowsExceptionIfRelativePositionIsNotOneOfValidKeywords(): void { $this->expectException(\InvalidArgumentException::class); @@ -1038,9 +993,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::addTcaSelectItem('foo', 'bar', [], 'foo', 'not allowed keyword'); } - /** - * @test - */ + #[Test] public function addTcaSelectItemThrowsExceptionIfFieldIsNotFoundInTca(): void { $this->expectException(\RuntimeException::class); @@ -1112,10 +1065,8 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addTcaSelectItemDataProvider - */ + #[DataProvider('addTcaSelectItemDataProvider')] + #[Test] public function addTcaSelectItemInsertsItemAtSpecifiedPosition(string $relativeToField, string $relativePosition, array $expectedResultArray): void { $GLOBALS['TCA'] = [ @@ -1140,9 +1091,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning loadExtLocalconf ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function loadExtLocalconfDoesNotReadFromCacheIfCachingIsDenied(): void { $mockCacheManager = $this->getMockBuilder(CacheManager::class) @@ -1155,9 +1104,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::loadExtLocalconf(false); } - /** - * @test - */ + #[Test] public function loadExtLocalconfRequiresCacheFileIfExistsAndCachingIsAllowed(): void { $mockCache = $this->getMockBuilder(PhpFrontend::class) @@ -1178,9 +1125,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning loadSingleExtLocalconfFiles ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function loadSingleExtLocalconfFilesRequiresExtLocalconfFileRegisteredInGlobalTypo3LoadedExt(): void { $this->expectException(\RuntimeException::class); @@ -1197,9 +1142,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning createExtLocalconfCacheEntry ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function createExtLocalconfCacheEntryWritesCacheEntryWithContentOfLoadedExtensionExtLocalconf(): void { $extensionName = StringUtility::getUniqueId('foo'); @@ -1219,9 +1162,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtilityAccessibleProxy::createExtLocalconfCacheEntry($mockCache); } - /** - * @test - */ + #[Test] public function createExtLocalconfCacheEntryWritesCacheEntryWithExtensionContentOnlyIfExtLocalconfExists(): void { $extensionName = StringUtility::getUniqueId('foo'); @@ -1240,9 +1181,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtilityAccessibleProxy::createExtLocalconfCacheEntry($mockCache); } - /** - * @test - */ + #[Test] public function createExtLocalconfCacheEntryWritesCacheEntryWithNoTags(): void { $mockCache = $this->getMockBuilder(PhpFrontend::class) @@ -1259,9 +1198,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning getExtLocalconfCacheIdentifier ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function getExtLocalconfCacheIdentifierCreatesSha1WithFourtyCharactersAndPrefix(): void { $prefix = 'ext_localconf_'; @@ -1274,10 +1211,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning loadBaseTca ///////////////////////////////////////// - - /** - * @test - */ + #[Test] public function loadBaseTcaDoesNotReadFromCacheIfCachingIsDenied(): void { $mockCacheManager = $this->getMockBuilder(CacheManager::class) @@ -1288,9 +1222,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtilityAccessibleProxy::loadBaseTca(false); } - /** - * @test - */ + #[Test] public function loadBaseTcaRequiresCacheFileIfExistsAndCachingIsAllowed(): void { $mockCache = $this->getMockBuilder(PhpFrontend::class) @@ -1302,9 +1234,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtilityAccessibleProxy::loadBaseTca(true, $mockCache); } - /** - * @test - */ + #[Test] public function loadBaseTcaCreatesCacheFileWithContentOfAnExtensionsConfigurationTcaPhpFile(): void { $extensionName = StringUtility::getUniqueId('test_baseTca_'); @@ -1340,9 +1270,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::loadBaseTca(true); } - /** - * @test - */ + #[Test] public function loadBaseTcaWritesCacheEntryWithNoTags(): void { $mockCache = $this->getMockBuilder(PhpFrontend::class) @@ -1363,10 +1291,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning getBaseTcaCacheIdentifier ///////////////////////////////////////// - - /** - * @test - */ + #[Test] public function getBaseTcaCacheIdentifierCreatesSha1WithFourtyCharactersAndPrefix(): void { $prefix = 'tca_base_'; @@ -1379,9 +1304,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning loadExtTables ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function loadExtTablesDoesNotReadFromCacheIfCachingIsDenied(): void { $mockCacheManager = $this->getMockBuilder(CacheManager::class) @@ -1394,9 +1317,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::loadExtLocalconf(false); } - /** - * @test - */ + #[Test] public function loadExtTablesRequiresCacheFileIfExistsAndCachingIsAllowed(): void { $mockCache = $this->getMockBuilder(PhpFrontend::class) @@ -1420,9 +1341,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning createExtTablesCacheEntry ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function createExtTablesCacheEntryWritesCacheEntryWithContentOfLoadedExtensionExtTables(): void { $extensionName = StringUtility::getUniqueId('foo'); @@ -1442,9 +1361,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtilityAccessibleProxy::createExtTablesCacheEntry($mockCache); } - /** - * @test - */ + #[Test] public function createExtTablesCacheEntryWritesCacheEntryWithExtensionContentOnlyIfExtTablesExists(): void { $extensionName = StringUtility::getUniqueId('foo'); @@ -1462,9 +1379,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtilityAccessibleProxy::createExtTablesCacheEntry($mockCache); } - /** - * @test - */ + #[Test] public function createExtTablesCacheEntryWritesCacheEntryWithNoTags(): void { $mockCache = $this->getMockBuilder(PhpFrontend::class) @@ -1482,9 +1397,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning getExtTablesCacheIdentifier ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function getExtTablesCacheIdentifierCreatesSha1WithFourtyCharactersAndPrefix(): void { $prefix = 'ext_tables_'; @@ -1497,11 +1410,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning getExtensionVersion ///////////////////////////////////////// - - /** - * @test - * @throws \TYPO3\CMS\Core\Package\Exception - */ + #[Test] public function getExtensionVersionForEmptyExtensionKeyThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -1510,9 +1419,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::getExtensionVersion(''); } - /** - * @test - */ + #[Test] public function getExtensionVersionForNotLoadedExtensionReturnsEmptyString(): void { $uniqueSuffix = StringUtility::getUniqueId('test'); @@ -1520,9 +1427,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals('', ExtensionManagementUtility::getExtensionVersion($extensionKey)); } - /** - * @test - */ + #[Test] public function getExtensionVersionForLoadedExtensionReturnsExtensionVersion(): void { $uniqueSuffix = StringUtility::getUniqueId('test'); @@ -1545,9 +1450,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning loadExtension ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function loadExtensionThrowsExceptionIfExtensionIsLoaded(): void { $this->expectException(\RuntimeException::class); @@ -1562,9 +1465,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ///////////////////////////////////////// // Tests concerning unloadExtension ///////////////////////////////////////// - /** - * @test - */ + #[Test] public function unloadExtensionThrowsExceptionIfExtensionIsNotLoaded(): void { $this->expectException(\RuntimeException::class); @@ -1583,9 +1484,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ExtensionManagementUtility::unloadExtension($packageName); } - /** - * @test - */ + #[Test] public function unloadExtensionCallsPackageManagerToDeactivatePackage(): void { $packageName = StringUtility::getUniqueId('foo'); @@ -1606,10 +1505,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning addPlugin /////////////////////////////// - - /** - * @test - */ + #[Test] public function addPluginSetsTcaCorrectlyForGivenExtKeyAsParameter(): void { $extKey = 'indexed_search'; @@ -1627,9 +1523,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expectedTCA, $GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items']); } - /** - * @test - */ + #[Test] public function addPluginSetsCorrectItemGroupsEntry(): void { $extKey = 'indexed_search'; @@ -1661,9 +1555,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function addPluginAsContentTypeAddsIconAndDefaultItem(): void { $extKey = 'felogin'; @@ -1685,9 +1577,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($GLOBALS['TCA']['tt_content']['types']['header'], $GLOBALS['TCA']['tt_content']['types']['felogin']); } - /** - * @test - */ + #[Test] public function addPluginAsContentTypeAddsIconAndDefaultItemWithSelectItem(): void { $extKey = 'felogin'; @@ -1805,10 +1695,8 @@ final class ExtensionManagementUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider addTcaSelectItemGroupAddsGroupDataProvider - */ + #[DataProvider('addTcaSelectItemGroupAddsGroupDataProvider')] + #[Test] public function addTcaSelectItemGroupAddsGroup(string $groupId, string $groupLabel, ?string $position, ?array $existingGroups, array $expectedGroups): void { $GLOBALS['TCA']['tt_content']['columns']['CType']['config'] = []; @@ -1819,9 +1707,7 @@ final class ExtensionManagementUtilityTest extends UnitTestCase self::assertEquals($expectedGroups, $GLOBALS['TCA']['tt_content']['columns']['CType']['config']['itemGroups']); } - /** - * @test - */ + #[Test] public function addServiceDoesNotFailIfValueIsNotSet(): void { ExtensionManagementUtility::addService( diff --git a/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php index f511dd452e06..03e7a5848e6b 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/GeneralUtilityTest.php @@ -17,11 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\LoggerInterface; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; +use TYPO3\CMS\Core\Exception; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Package\Package; use TYPO3\CMS\Core\Package\PackageManager; @@ -111,10 +114,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cmpIPv4DataProviderMatching - */ + #[DataProvider('cmpIPv4DataProviderMatching')] + #[Test] public function cmpIPv4ReturnsTrueForMatchingAddress($ip, $list): void { self::assertTrue(GeneralUtility::cmpIPv4($ip, $list)); @@ -137,10 +138,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cmpIPv4DataProviderNotMatching - */ + #[DataProvider('cmpIPv4DataProviderNotMatching')] + #[Test] public function cmpIPv4ReturnsFalseForNotMatchingAddress($ip, $list): void { self::assertFalse(GeneralUtility::cmpIPv4($ip, $list)); @@ -170,10 +169,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cmpIPv6DataProviderMatching - */ + #[DataProvider('cmpIPv6DataProviderMatching')] + #[Test] public function cmpIPv6ReturnsTrueForMatchingAddress($ip, $list): void { self::assertTrue(GeneralUtility::cmpIPv6($ip, $list)); @@ -198,10 +195,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cmpIPv6DataProviderNotMatching - */ + #[DataProvider('cmpIPv6DataProviderNotMatching')] + #[Test] public function cmpIPv6ReturnsFalseForNotMatchingAddress($ip, $list): void { self::assertFalse(GeneralUtility::cmpIPv6($ip, $list)); @@ -227,10 +222,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider normalizeCompressIPv6DataProviderCorrect - */ + #[DataProvider('normalizeCompressIPv6DataProviderCorrect')] + #[Test] public function normalizeIPv6CorrectlyNormalizesAddresses($compressed, $normalized): void { self::assertEquals($normalized, GeneralUtility::normalizeIPv6($compressed)); @@ -254,10 +247,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validIpDataProvider - */ + #[DataProvider('validIpDataProvider')] + #[Test] public function validIpReturnsTrueForValidIp($ip): void { self::assertTrue(GeneralUtility::validIP($ip)); @@ -281,10 +272,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidIpDataProvider - */ + #[DataProvider('invalidIpDataProvider')] + #[Test] public function validIpReturnsFalseForInvalidIp($ip): void { self::assertFalse(GeneralUtility::validIP($ip)); @@ -314,10 +303,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cmpFqdnValidDataProvider - */ + #[DataProvider('cmpFqdnValidDataProvider')] + #[Test] public function cmpFqdnReturnsTrue($baseHost, $list): void { self::assertTrue(GeneralUtility::cmpFQDN($baseHost, $list)); @@ -336,10 +323,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider cmpFqdnInvalidDataProvider - */ + #[DataProvider('cmpFqdnInvalidDataProvider')] + #[Test] public function cmpFqdnReturnsFalse($baseHost, $list): void { self::assertFalse(GeneralUtility::cmpFQDN($baseHost, $list)); @@ -348,10 +333,8 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning inList /////////////////////////////// - /** - * @test - * @dataProvider inListForItemContainedReturnsTrueDataProvider - */ + #[DataProvider('inListForItemContainedReturnsTrueDataProvider')] + #[Test] public function inListForItemContainedReturnsTrue(string $haystack): void { self::assertTrue(GeneralUtility::inList($haystack, 'findme')); @@ -370,10 +353,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider inListForItemNotContainedReturnsFalseDataProvider - */ + #[DataProvider('inListForItemNotContainedReturnsFalseDataProvider')] + #[Test] public function inListForItemNotContainedReturnsFalse(string $haystack): void { self::assertFalse(GeneralUtility::inList($haystack, 'findme')); @@ -394,10 +375,8 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning expandList /////////////////////////////// - /** - * @test - * @dataProvider expandListExpandsIntegerRangesDataProvider - */ + #[DataProvider('expandListExpandsIntegerRangesDataProvider')] + #[Test] public function expandListExpandsIntegerRanges(string $list, string $expectation): void { self::assertSame($expectation, GeneralUtility::expandList($list)); @@ -421,9 +400,7 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function expandListExpandsForTwoThousandElementsExpandsOnlyToThousandElementsMaximum(): void { $list = GeneralUtility::expandList('1-2000'); @@ -433,10 +410,8 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning formatSize /////////////////////////////// - /** - * @test - * @dataProvider formatSizeDataProvider - */ + #[DataProvider('formatSizeDataProvider')] + #[Test] public function formatSizeTranslatesBytesToHigherOrderRepresentation($size, $labels, $base, $expected): void { self::assertEquals($expected, GeneralUtility::formatSize($size, $labels, $base)); @@ -510,10 +485,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider splitCalcDataProvider - */ + #[DataProvider('splitCalcDataProvider')] + #[Test] public function splitCalcCorrectlySplitsExpression(array $expected, string $expression): void { self::assertSame($expected, GeneralUtility::splitCalc($expression, '+-*/')); @@ -557,10 +530,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validEmailValidDataProvider - */ + #[DataProvider('validEmailValidDataProvider')] + #[Test] public function validEmailReturnsTrueForValidMailAddress($address): void { self::assertTrue(GeneralUtility::validEmail($address)); @@ -615,10 +586,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validEmailInvalidDataProvider - */ + #[DataProvider('validEmailInvalidDataProvider')] + #[Test] public function validEmailReturnsFalseForInvalidMailAddress($address): void { self::assertFalse(GeneralUtility::validEmail($address)); @@ -654,10 +623,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider intExplodeDataProvider - */ + #[DataProvider('intExplodeDataProvider')] + #[Test] public function intExplodeReturnsExplodedArray(string $input, bool $removeEmpty, array $expected): void { self::assertSame($expected, GeneralUtility::intExplode(',', $input, $removeEmpty)); @@ -680,18 +647,14 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider implodeArrayForUrlDataProvider - */ + #[DataProvider('implodeArrayForUrlDataProvider')] + #[Test] public function implodeArrayForUrlBuildsValidParameterString($name, $input, $expected): void { self::assertSame($expected, GeneralUtility::implodeArrayForUrl($name, $input)); } - /** - * @test - */ + #[Test] public function implodeArrayForUrlCanSkipEmptyParameters(): void { $input = ['one' => '√', '']; @@ -699,9 +662,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($expected, GeneralUtility::implodeArrayForUrl('foo', $input, '', true)); } - /** - * @test - */ + #[Test] public function implodeArrayForUrlCanUrlEncodeKeyNames(): void { $input = ['one' => '√', '']; @@ -722,10 +683,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider explodeUrl2ArrayTransformsParameterStringToFlatArrayDataProvider - */ + #[DataProvider('explodeUrl2ArrayTransformsParameterStringToFlatArrayDataProvider')] + #[Test] public function explodeUrl2ArrayTransformsParameterStringToFlatArray(string $input, array $expected): void { self::assertEquals($expected, GeneralUtility::explodeUrl2Array($input)); @@ -797,19 +756,15 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider revExplodeDataProvider - */ + #[DataProvider('revExplodeDataProvider')] + #[Test] public function revExplodeCorrectlyExplodesStringForGivenPartsCount($delimiter, $testString, $count, $expectedArray): void { $actualArray = GeneralUtility::revExplode($delimiter, $testString, $count); self::assertEquals($expectedArray, $actualArray); } - /** - * @test - */ + #[Test] public function revExplodeRespectsLimitThreeWhenExploding(): void { $testString = 'even:more:of:my:words:here'; @@ -821,10 +776,8 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning trimExplode ////////////////////////////////// - /** - * @test - * @dataProvider trimExplodeReturnsCorrectResultDataProvider - */ + #[DataProvider('trimExplodeReturnsCorrectResultDataProvider')] + #[Test] public function trimExplodeReturnsCorrectResult(string $delimiter, string $testString, bool $removeEmpty, int $limit, array $expectedResult): void { self::assertSame($expectedResult, GeneralUtility::trimExplode($delimiter, $testString, $removeEmpty, $limit)); @@ -1063,10 +1016,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getBytesFromSizeMeasurementDataProvider - */ + #[DataProvider('getBytesFromSizeMeasurementDataProvider')] + #[Test] public function getBytesFromSizeMeasurementCalculatesCorrectByteValue($expected, $byteString): void { self::assertEquals($expected, GeneralUtility::getBytesFromSizeMeasurement($byteString)); @@ -1075,17 +1026,13 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning getIndpEnv ////////////////////////////////// - /** - * @test - */ + #[Test] public function getIndpEnvTypo3SitePathReturnNonEmptyString(): void { self::assertTrue(strlen(GeneralUtility::getIndpEnv('TYPO3_SITE_PATH')) >= 1); } - /** - * @test - */ + #[Test] public function getIndpEnvTypo3SitePathReturnsStringEndingWithSlash(): void { $result = GeneralUtility::getIndpEnv('TYPO3_SITE_PATH'); @@ -1106,20 +1053,16 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider hostnameAndPortDataProvider - */ + #[DataProvider('hostnameAndPortDataProvider')] + #[Test] public function getIndpEnvTypo3HostOnlyParsesHostnamesAndIpAddresses($httpHost, $expectedIp): void { $_SERVER['HTTP_HOST'] = $httpHost; self::assertEquals($expectedIp, GeneralUtility::getIndpEnv('TYPO3_HOST_ONLY')); } - /** - * @test - * @dataProvider hostnameAndPortDataProvider - */ + #[DataProvider('hostnameAndPortDataProvider')] + #[Test] public function getIndpEnvTypo3PortParsesHostnamesAndIpAddresses($httpHost, $dummy, $expectedPort): void { $_SERVER['HTTP_HOST'] = $httpHost; @@ -1142,10 +1085,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider underscoredToUpperCamelCaseDataProvider - */ + #[DataProvider('underscoredToUpperCamelCaseDataProvider')] + #[Test] public function underscoredToUpperCamelCase($expected, $inputString): void { self::assertEquals($expected, GeneralUtility::underscoredToUpperCamelCase($inputString)); @@ -1167,10 +1108,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider underscoredToLowerCamelCaseDataProvider - */ + #[DataProvider('underscoredToLowerCamelCaseDataProvider')] + #[Test] public function underscoredToLowerCamelCase($expected, $inputString): void { self::assertEquals($expected, GeneralUtility::underscoredToLowerCamelCase($inputString)); @@ -1194,10 +1133,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider camelCaseToLowerCaseUnderscoredDataProvider - */ + #[DataProvider('camelCaseToLowerCaseUnderscoredDataProvider')] + #[Test] public function camelCaseToLowerCaseUnderscored($expected, $inputString): void { self::assertEquals($expected, GeneralUtility::camelCaseToLowerCaseUnderscored($inputString)); @@ -1236,10 +1173,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validUrlValidResourceDataProvider - */ + #[DataProvider('validUrlValidResourceDataProvider')] + #[Test] public function validURLReturnsTrueForValidResource($url): void { self::assertTrue(GeneralUtility::isValidUrl($url)); @@ -1271,10 +1206,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isValidUrlInvalidResourceDataProvider - */ + #[DataProvider('isValidUrlInvalidResourceDataProvider')] + #[Test] public function validURLReturnsFalseForInvalidResource($url): void { self::assertFalse(GeneralUtility::isValidUrl($url)); @@ -1283,10 +1216,7 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning isOnCurrentHost ////////////////////////////////// - - /** - * @test - */ + #[Test] public function isOnCurrentHostReturnsTrueWithCurrentHost(): void { $testUrl = GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'); @@ -1310,11 +1240,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * - * @dataProvider checkisOnCurrentHostInvalidHostsDataProvider - */ + #[DataProvider('checkisOnCurrentHostInvalidHostsDataProvider')] + #[Test] public function isOnCurrentHostWithNotCurrentHostReturnsFalse(string $hostCandidate): void { self::assertFalse(GeneralUtility::isOnCurrentHost($hostCandidate)); @@ -1341,10 +1268,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sanitizeLocalUrlValidPathsDataProvider - */ + #[DataProvider('sanitizeLocalUrlValidPathsDataProvider')] + #[Test] public function sanitizeLocalUrlAcceptsNotEncodedValidPaths(string $path): void { Environment::initialize( @@ -1362,10 +1287,8 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals($path, GeneralUtility::sanitizeLocalUrl($path)); } - /** - * @test - * @dataProvider sanitizeLocalUrlValidPathsDataProvider - */ + #[DataProvider('sanitizeLocalUrlValidPathsDataProvider')] + #[Test] public function sanitizeLocalUrlAcceptsEncodedValidPaths(string $path): void { Environment::initialize( @@ -1414,10 +1337,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sanitizeLocalUrlValidUrlsDataProvider - */ + #[DataProvider('sanitizeLocalUrlValidUrlsDataProvider')] + #[Test] public function sanitizeLocalUrlAcceptsNotEncodedValidUrls(string $url, string $host, string $subDirectory): void { Environment::initialize( @@ -1437,10 +1358,8 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals($url, GeneralUtility::sanitizeLocalUrl($url)); } - /** - * @test - * @dataProvider sanitizeLocalUrlValidUrlsDataProvider - */ + #[DataProvider('sanitizeLocalUrlValidUrlsDataProvider')] + #[Test] public function sanitizeLocalUrlAcceptsEncodedValidUrls(string $url, string $host, string $subDirectory): void { Environment::initialize( @@ -1479,10 +1398,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sanitizeLocalUrlInvalidDataProvider - */ + #[DataProvider('sanitizeLocalUrlInvalidDataProvider')] + #[Test] public function sanitizeLocalUrlDeniesPlainInvalidUrlsInBackendContext(string $url): void { Environment::initialize( @@ -1501,10 +1418,8 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('', GeneralUtility::sanitizeLocalUrl($url)); } - /** - * @test - * @dataProvider sanitizeLocalUrlInvalidDataProvider - */ + #[DataProvider('sanitizeLocalUrlInvalidDataProvider')] + #[Test] public function sanitizeLocalUrlDeniesPlainInvalidUrlsInFrontendContext(string $url): void { Environment::initialize( @@ -1523,10 +1438,8 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('', GeneralUtility::sanitizeLocalUrl($url)); } - /** - * @test - * @dataProvider sanitizeLocalUrlInvalidDataProvider - */ + #[DataProvider('sanitizeLocalUrlInvalidDataProvider')] + #[Test] public function sanitizeLocalUrlDeniesEncodedInvalidUrls($url): void { self::assertEquals('', GeneralUtility::sanitizeLocalUrl(rawurlencode($url))); @@ -1535,10 +1448,7 @@ final class GeneralUtilityTest extends UnitTestCase //////////////////////////////////////// // Tests concerning unlink_tempfile //////////////////////////////////////// - - /** - * @test - */ + #[Test] public function unlink_tempfileRemovesValidFileInTypo3temp(): void { $fixtureFile = __DIR__ . '/Fixtures/clear.gif'; @@ -1549,9 +1459,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFalse($fileExists); } - /** - * @test - */ + #[Test] public function unlink_tempfileRemovesHiddenFile(): void { $fixtureFile = __DIR__ . '/Fixtures/clear.gif'; @@ -1562,9 +1470,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFalse($fileExists); } - /** - * @test - */ + #[Test] public function unlink_tempfileReturnsTrueIfFileWasRemoved(): void { $fixtureFile = __DIR__ . '/Fixtures/clear.gif'; @@ -1574,18 +1480,14 @@ final class GeneralUtilityTest extends UnitTestCase self::assertTrue($returnValue); } - /** - * @test - */ + #[Test] public function unlink_tempfileReturnsNullIfFileDoesNotExist(): void { $returnValue = GeneralUtility::unlink_tempfile(Environment::getVarPath() . '/tests/' . StringUtility::getUniqueId('i_do_not_exist')); self::assertNull($returnValue); } - /** - * @test - */ + #[Test] public function unlink_tempfileReturnsNullIfFileIsNowWithinTypo3temp(): void { $returnValue = GeneralUtility::unlink_tempfile('/tmp/typo3-unit-test-unlink_tempfile'); @@ -1595,10 +1497,7 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////////// // Tests concerning tempnam ////////////////////////////////////// - - /** - * @test - */ + #[Test] public function tempnamReturnsPathStartingWithGivenPrefix(): void { $filePath = GeneralUtility::tempnam('foo'); @@ -1607,9 +1506,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertStringStartsWith('foo', $fileName); } - /** - * @test - */ + #[Test] public function tempnamReturnsPathWithoutBackslashes(): void { $filePath = GeneralUtility::tempnam('foo'); @@ -1617,9 +1514,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertStringNotContainsString('\\', $filePath); } - /** - * @test - */ + #[Test] public function tempnamReturnsAbsolutePathInVarPath(): void { $filePath = GeneralUtility::tempnam('foo'); @@ -1630,9 +1525,7 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////////// // Tests concerning removeDotsFromTS ////////////////////////////////////// - /** - * @test - */ + #[Test] public function removeDotsFromTypoScriptSucceedsWithDottedArray(): void { $typoScript = [ @@ -1688,18 +1581,14 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider implodeAttributesDataProvider - */ + #[DataProvider('implodeAttributesDataProvider')] + #[Test] public function implodeAttributesEscapesProperly(array $input, bool $xhtmlSafe, bool $keepEmptyValues, string $expected): void { self::assertSame($expected, GeneralUtility::implodeAttributes($input, $xhtmlSafe, $keepEmptyValues)); } - /** - * @test - */ + #[Test] public function removeDotsFromTypoScriptOverridesSubArray(): void { $typoScript = [ @@ -1724,9 +1613,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals($expectedResult, GeneralUtility::removeDotsFromTS($typoScript)); } - /** - * @test - */ + #[Test] public function removeDotsFromTypoScriptOverridesWithScalar(): void { $typoScript = [ @@ -1752,18 +1639,14 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////////// // Tests concerning get_dirs ////////////////////////////////////// - /** - * @test - */ + #[Test] public function getDirsReturnsArrayOfDirectoriesFromGivenDirectory(): void { $directories = GeneralUtility::get_dirs(Environment::getLegacyConfigPath() . '/'); self::assertIsArray($directories); } - /** - * @test - */ + #[Test] public function getDirsReturnsStringErrorOnPathFailure(): void { $path = 'foo'; @@ -1775,9 +1658,7 @@ final class GeneralUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning hmac ////////////////////////////////// - /** - * @test - */ + #[Test] public function hmacReturnsHashOfProperLength(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; @@ -1786,9 +1667,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals(strlen($hmac), 40); } - /** - * @test - */ + #[Test] public function hmacReturnsEqualHashesForEqualInput(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; @@ -1797,9 +1676,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals(GeneralUtility::hmac($msg0), GeneralUtility::hmac($msg1)); } - /** - * @test - */ + #[Test] public function hmacReturnsNoEqualHashesForNonEqualInput(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; @@ -1860,10 +1737,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider quoteJsValueDataProvider - */ + #[DataProvider('quoteJsValueDataProvider')] + #[Test] public function quoteJsValueTest(string $input, string $expected): void { self::assertSame('\'' . $expected . '\'', GeneralUtility::quoteJSvalue($input)); @@ -1892,10 +1767,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider jsonEncodeForHtmlAttributeTestDataProvider - */ + #[DataProvider('jsonEncodeForHtmlAttributeTestDataProvider')] + #[Test] public function jsonEncodeForHtmlAttributeTest($value, bool $useHtmlEntities, string $expectation): void { self::assertSame($expectation, GeneralUtility::jsonEncodeForHtmlAttribute($value, $useHtmlEntities)); @@ -1916,10 +1789,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider jsonEncodeForJavaScriptTestDataProvider - */ + #[DataProvider('jsonEncodeForJavaScriptTestDataProvider')] + #[Test] public function jsonEncodeForJavaScriptTest($value, string $expectation): void { self::assertSame($expectation, GeneralUtility::jsonEncodeForJavaScript($value)); @@ -1933,18 +1804,14 @@ final class GeneralUtilityTest extends UnitTestCase yield 'HTML markup' => ['url(</style>)', 'url(</style>)']; } - /** - * @test - * @dataProvider sanitizeCssVariableValueDataProvider - */ + #[DataProvider('sanitizeCssVariableValueDataProvider')] + #[Test] public function sanitizeCssVariableValue(string $value, string $expectation): void { self::assertSame($expectation, GeneralUtility::sanitizeCssVariableValue($value)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsPermissionsToFile(): void { if (Environment::isWindows()) { @@ -1962,9 +1829,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0660', substr(decoct(fileperms($filename)), 2)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsPermissionsToHiddenFile(): void { if (Environment::isWindows()) { @@ -1982,9 +1847,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0660', substr(decoct(fileperms($filename)), 2)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsPermissionsToDirectory(): void { if (Environment::isWindows()) { @@ -2002,9 +1865,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0770', substr(decoct(fileperms($directory)), 1)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsPermissionsToDirectoryWithTrailingSlash(): void { if (Environment::isWindows()) { @@ -2023,9 +1884,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0770', substr(decoct(fileperms($directory)), 1)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsPermissionsToHiddenDirectory(): void { if (Environment::isWindows()) { @@ -2044,9 +1903,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0770', substr(decoct(fileperms($directory)), 1)); } - /** - * @test - */ + #[Test] public function fixPermissionsCorrectlySetsPermissionsRecursive(): void { if (Environment::isWindows()) { @@ -2095,9 +1952,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0660', $resultBarFile2Permissions); } - /** - * @test - */ + #[Test] public function fixPermissionsDoesNotSetPermissionsToNotAllowedPath(): void { if (Environment::isWindows()) { @@ -2111,9 +1966,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFalse($fixPermissionsResult); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsPermissionsWithRelativeFileReference(): void { if (Environment::isWindows()) { @@ -2131,9 +1984,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0660', substr(decoct(fileperms(Environment::getPublicPath() . '/' . $filename)), 2)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsDefaultPermissionsToFile(): void { if (Environment::isWindows()) { @@ -2149,9 +2000,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('0644', substr(decoct(fileperms($filename)), 2)); } - /** - * @test - */ + #[Test] public function fixPermissionsSetsDefaultPermissionsToDirectory(): void { if (Environment::isWindows()) { @@ -2170,9 +2019,7 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning mkdir /////////////////////////////// - /** - * @test - */ + #[Test] public function mkdirCreatesDirectory(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -2182,9 +2029,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertDirectoryExists($directory); } - /** - * @test - */ + #[Test] public function mkdirCreatesHiddenDirectory(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('.test_'); @@ -2194,9 +2039,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertDirectoryExists($directory); } - /** - * @test - */ + #[Test] public function mkdirCreatesDirectoryWithTrailingSlash(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_') . '/'; @@ -2206,9 +2049,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertDirectoryExists($directory); } - /** - * @test - */ + #[Test] public function mkdirSetsPermissionsOfCreatedDirectory(): void { if (Environment::isWindows()) { @@ -2227,7 +2068,6 @@ final class GeneralUtilityTest extends UnitTestCase ///////////////////////////////////////////// // Tests concerning writeFileToTypo3tempDir() ///////////////////////////////////////////// - /** * when adding entries here, make sure to register any files or directories that might get created as third array item * they will be cleaned up after test run. @@ -2273,12 +2113,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidFilePathForTypo3tempDirDataProvider - * - * * @param non-empty-string $pathToCleanUp - */ + #[DataProvider('invalidFilePathForTypo3tempDirDataProvider')] + #[Test] public function writeFileToTypo3tempDirFailsWithInvalidPath(string $invalidFilePath, string $expectedResult, string $pathToCleanUp): void { if ($pathToCleanUp !== '') { @@ -2319,11 +2155,11 @@ final class GeneralUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider validFilePathForTypo3tempDirDataProvider * @param non-empty-string $filePath * @param non-empty-string $pathToCleanUp */ + #[DataProvider('validFilePathForTypo3tempDirDataProvider')] + #[Test] public function writeFileToTypo3tempDirWorksWithValidPath(string $filePath, string $pathToCleanUp): void { if ($pathToCleanUp !== '') { @@ -2342,9 +2178,7 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning mkdir_deep /////////////////////////////// - /** - * @test - */ + #[Test] public function mkdirDeepCreatesDirectory(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('test_'); @@ -2352,9 +2186,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertDirectoryExists($directory); } - /** - * @test - */ + #[Test] public function mkdirDeepCreatesSubdirectoriesRecursive(): void { $directory = $this->getTestDirectory() . '/typo3temp/var/tests/' . StringUtility::getUniqueId('test_'); @@ -2374,10 +2206,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider mkdirDeepCreatesDirectoryWithAndWithoutDoubleSlashesDataProvider - */ + #[DataProvider('mkdirDeepCreatesDirectoryWithAndWithoutDoubleSlashesDataProvider')] + #[Test] public function mkdirDeepCreatesDirectoryWithDoubleSlashes($directoryToCreate): void { $testRoot = Environment::getVarPath() . '/public/'; @@ -2387,9 +2217,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertDirectoryExists($directory); } - /** - * @test - */ + #[Test] public function mkdirDeepFixesPermissionsOfCreatedDirectory(): void { if (Environment::isWindows()) { @@ -2405,9 +2233,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('777', substr(decoct(fileperms(Environment::getVarPath() . '/tests/' . $directory)), -3, 3)); } - /** - * @test - */ + #[Test] public function mkdirDeepFixesPermissionsOnNewParentDirectory(): void { if (Environment::isWindows()) { @@ -2424,9 +2250,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('777', substr(decoct(fileperms(Environment::getVarPath() . '/tests/' . $directory)), -3, 3)); } - /** - * @test - */ + #[Test] public function mkdirDeepDoesNotChangePermissionsOfExistingSubDirectories(): void { if (Environment::isWindows()) { @@ -2442,9 +2266,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals(742, (int)substr(decoct(fileperms($baseDirectory . $existingDirectory)), 2)); } - /** - * @test - */ + #[Test] public function mkdirDeepThrowsExceptionIfDirectoryCreationFails(): void { $this->expectException(\RuntimeException::class); @@ -2453,9 +2275,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::mkdir_deep('http://localhost'); } - /** - * @test - */ + #[Test] public function mkdirDeepThrowsExceptionIfBaseDirectoryIsNotOfTypeString(): void { $this->expectException(\InvalidArgumentException::class); @@ -2468,10 +2288,7 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning rmdir /////////////////////////////// - - /** - * @test - */ + #[Test] public function rmdirRemovesFile(): void { $testRoot = Environment::getVarPath() . '/tests/'; @@ -2483,9 +2300,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFileDoesNotExist($file); } - /** - * @test - */ + #[Test] public function rmdirReturnTrueIfFileWasRemoved(): void { $file = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('file_'); @@ -2493,18 +2308,14 @@ final class GeneralUtilityTest extends UnitTestCase self::assertTrue(GeneralUtility::rmdir($file)); } - /** - * @test - */ + #[Test] public function rmdirReturnFalseIfNoFileWasRemoved(): void { $file = Environment::getVarPath() . '/tests/' . StringUtility::getUniqueId('file_'); self::assertFalse(GeneralUtility::rmdir($file)); } - /** - * @test - */ + #[Test] public function rmdirRemovesDirectory(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('directory_'); @@ -2513,9 +2324,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFileDoesNotExist($directory); } - /** - * @test - */ + #[Test] public function rmdirRemovesDirectoryWithTrailingSlash(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('directory_') . '/'; @@ -2524,9 +2333,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFileDoesNotExist($directory); } - /** - * @test - */ + #[Test] public function rmdirDoesNotRemoveDirectoryWithFilesAndReturnsFalseIfRecursiveDeletionIsOff(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('directory_') . '/'; @@ -2539,9 +2346,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFalse($return); } - /** - * @test - */ + #[Test] public function rmdirRemovesDirectoriesRecursiveAndReturnsTrue(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('directory_') . '/'; @@ -2553,9 +2358,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertTrue($return); } - /** - * @test - */ + #[Test] public function rmdirRemovesLinkToDirectory(): void { $existingDirectory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('notExists_') . '/'; @@ -2566,9 +2369,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFalse(is_link($symlinkName)); } - /** - * @test - */ + #[Test] public function rmdirRemovesDeadLinkToDirectory(): void { $notExistingDirectory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('notExists_') . '/'; @@ -2581,9 +2382,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFalse(is_link($symlinkName)); } - /** - * @test - */ + #[Test] public function rmdirRemovesDeadLinkToFile(): void { $testDirectory = $this->getTestDirectory() . '/'; @@ -2599,7 +2398,6 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////////// // Tests concerning getFilesInDir /////////////////////////////////// - /** * Helper method to create test directory. * @@ -2628,9 +2426,7 @@ final class GeneralUtilityTest extends UnitTestCase return $path; } - /** - * @test - */ + #[Test] public function getFilesInDirFindsRegularFile(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2638,9 +2434,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertContains('testA.txt', $files); } - /** - * @test - */ + #[Test] public function getFilesInDirFindsHiddenFile(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2648,9 +2442,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertContains('.secret.txt', $files); } - /** - * @test - */ + #[Test] public function getFilesInDirOnlyFindWithMatchingExtension(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2680,10 +2472,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @dataProvider fileExtensionDataProvider - * @test - */ + #[DataProvider('fileExtensionDataProvider')] + #[Test] public function getFilesInDirByExtensionFindsFiles($fileExtensions): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2694,9 +2484,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertContains('test.css', $files); } - /** - * @test - */ + #[Test] public function getFilesInDirByExtensionDoesNotFindFilesWithOtherExtensions(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2706,9 +2494,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertNotContains('test.css', $files); } - /** - * @test - */ + #[Test] public function getFilesInDirExcludesFilesMatchingPattern(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2717,9 +2503,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertNotContains('excludeMe.txt', $files); } - /** - * @test - */ + #[Test] public function getFilesInDirCanPrependPath(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2729,9 +2513,7 @@ final class GeneralUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getFilesInDirDoesSortAlphabeticallyByDefault(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2741,9 +2523,7 @@ final class GeneralUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getFilesInDirReturnsArrayWithMd5OfElementAndPathAsArrayKey(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2753,9 +2533,7 @@ final class GeneralUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getFilesInDirDoesNotFindDirectories(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2768,9 +2546,8 @@ final class GeneralUtilityTest extends UnitTestCase /** * Dotfiles; current directory: '.' and parent directory: '..' must not be * present. - * - * @test */ + #[Test] public function getFilesInDirDoesNotFindDotfiles(): void { $path = $this->getFilesInDirCreateTestDirectory(); @@ -2782,9 +2559,7 @@ final class GeneralUtilityTest extends UnitTestCase /////////////////////////////// // Tests concerning split_fileref /////////////////////////////// - /** - * @test - */ + #[Test] public function splitFileRefReturnsFileTypeNotForFolders(): void { $directoryName = StringUtility::getUniqueId('test_') . '.com'; @@ -2804,9 +2579,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertArrayNotHasKey('realFileext', $fileInfo); } - /** - * @test - */ + #[Test] public function splitFileRefReturnsFileTypeForFilesWithoutPathSite(): void { $testFile = 'fileadmin/media/someFile.png'; @@ -2839,11 +2612,11 @@ final class GeneralUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider dirnameDataProvider * @param string $input the input for dirname * @param string $expectedValue the expected return value expected from dirname */ + #[DataProvider('dirnameDataProvider')] + #[Test] public function dirnameWithDataProvider(string $input, string $expectedValue): void { self::assertEquals($expectedValue, GeneralUtility::dirname($input)); @@ -2890,11 +2663,11 @@ final class GeneralUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider resolveBackPathDataProvider * @param string $input the input for resolveBackPath * @param string $expectedValue Expected return value from resolveBackPath */ + #[DataProvider('resolveBackPathDataProvider')] + #[Test] public function resolveBackPathWithDataProvider(string $input, string $expectedValue): void { self::assertEquals($expectedValue, GeneralUtility::resolveBackPath($input)); @@ -2903,9 +2676,7 @@ final class GeneralUtilityTest extends UnitTestCase ///////////////////////////////////////////////////////////////////////////////////// // Tests concerning makeInstance, setSingletonInstance, addInstance, purgeInstances ///////////////////////////////////////////////////////////////////////////////////// - /** - * @test - */ + #[Test] public function makeInstanceWithEmptyClassNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -2915,9 +2686,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::makeInstance(''); } - /** - * @test - */ + #[Test] public function makeInstanceWithBeginningSlashInClassNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -2926,17 +2695,13 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::makeInstance('\\TYPO3\\CMS\\Backend\\Controller\\BackendController'); } - /** - * @test - */ + #[Test] public function makeInstanceReturnsClassInstance(): void { self::assertInstanceOf(\stdClass::class, GeneralUtility::makeInstance(\stdClass::class)); } - /** - * @test - */ + #[Test] public function makeInstancePassesParametersToConstructor(): void { $instance = GeneralUtility::makeInstance(TwoParametersConstructorFixture::class, 'one parameter', 'another parameter'); @@ -2944,9 +2709,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('another parameter', $instance->constructorParameter2, 'The second constructor parameter has not been set.'); } - /** - * @test - */ + #[Test] public function makeInstanceInstanciatesConfiguredImplementation(): void { GeneralUtility::flushInternalRuntimeCaches(); @@ -2954,9 +2717,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertInstanceOf(ReplacementClassFixture::class, GeneralUtility::makeInstance(OriginalClassFixture::class)); } - /** - * @test - */ + #[Test] public function makeInstanceResolvesConfiguredImplementationsRecursively(): void { GeneralUtility::flushInternalRuntimeCaches(); @@ -2965,27 +2726,21 @@ final class GeneralUtilityTest extends UnitTestCase self::assertInstanceOf(OtherReplacementClassFixture::class, GeneralUtility::makeInstance(OriginalClassFixture::class)); } - /** - * @test - */ + #[Test] public function makeInstanceCalledTwoTimesForNonSingletonClassReturnsDifferentInstances(): void { $className = \stdClass::class; self::assertNotSame(GeneralUtility::makeInstance($className), GeneralUtility::makeInstance($className)); } - /** - * @test - */ + #[Test] public function makeInstanceCalledTwoTimesForSingletonClassReturnsSameInstance(): void { $className = get_class($this->createMock(SingletonInterface::class)); self::assertSame(GeneralUtility::makeInstance($className), GeneralUtility::makeInstance($className)); } - /** - * @test - */ + #[Test] public function makeInstanceCalledTwoTimesForSingletonClassWithPurgeInstancesInbetweenReturnsDifferentInstances(): void { $className = get_class($this->createMock(SingletonInterface::class)); @@ -2994,18 +2749,14 @@ final class GeneralUtilityTest extends UnitTestCase self::assertNotSame($instance, GeneralUtility::makeInstance($className)); } - /** - * @test - */ + #[Test] public function makeInstanceInjectsLogger(): void { $instance = GeneralUtility::makeInstance(GeneralUtilityMakeInstanceInjectLoggerFixture::class); self::assertInstanceOf(LoggerInterface::class, $instance->getLogger()); } - /** - * @test - */ + #[Test] public function setSingletonInstanceForEmptyClassNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -3016,9 +2767,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::setSingletonInstance('', $instance); } - /** - * @test - */ + #[Test] public function setSingletonInstanceForClassThatIsNoSubclassOfProvidedClassThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -3031,9 +2780,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::setSingletonInstance($singletonClassName, $instance); } - /** - * @test - */ + #[Test] public function setSingletonInstanceMakesMakeInstanceReturnThatInstance(): void { $instance = $this->createMock(SingletonInterface::class); @@ -3042,9 +2789,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($instance, GeneralUtility::makeInstance($singletonClassName)); } - /** - * @test - */ + #[Test] public function setSingletonInstanceCalledTwoTimesMakesMakeInstanceReturnLastSetInstance(): void { $instance1 = $this->createMock(SingletonInterface::class); @@ -3055,9 +2800,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($instance2, GeneralUtility::makeInstance($singletonClassName)); } - /** - * @test - */ + #[Test] public function getSingletonInstancesContainsPreviouslySetSingletonInstance(): void { $instance = $this->createMock(SingletonInterface::class); @@ -3068,9 +2811,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($registeredSingletonInstances[$instanceClassName], $instance); } - /** - * @test - */ + #[Test] public function setSingletonInstanceReturnsFinalClassNameWithOverriddenClass(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][SingletonClassFixture::class]['className'] = ExtendedSingletonClassFixture::class; @@ -3082,9 +2823,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals(ExtendedSingletonClassFixture::class, get_class($anotherInstance)); } - /** - * @test - */ + #[Test] public function resetSingletonInstancesResetsPreviouslySetInstance(): void { $instance = $this->createMock(SingletonInterface::class); @@ -3095,9 +2834,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertArrayNotHasKey($instanceClassName, $registeredSingletonInstances); } - /** - * @test - */ + #[Test] public function resetSingletonInstancesSetsGivenInstance(): void { $instance = $this->createMock(SingletonInterface::class); @@ -3110,9 +2847,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($registeredSingletonInstances[$instanceClassName], $instance); } - /** - * @test - */ + #[Test] public function addInstanceForEmptyClassNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -3122,9 +2857,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::addInstance('', new \stdClass()); } - /** - * @test - */ + #[Test] public function addInstanceForClassThatIsNoSubclassOfProvidedClassThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -3137,9 +2870,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::addInstance($singletonClassName, $instance); } - /** - * @test - */ + #[Test] public function addInstanceWithSingletonInstanceThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -3149,9 +2880,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::addInstance(get_class($instance), $instance); } - /** - * @test - */ + #[Test] public function addInstanceMakesMakeInstanceReturnThatInstance(): void { $instance = $this->createMock(\stdClass::class); @@ -3160,9 +2889,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($instance, GeneralUtility::makeInstance($className)); } - /** - * @test - */ + #[Test] public function makeInstanceCalledTwoTimesAfterAddInstanceReturnTwoDifferentInstances(): void { $instance = $this->createMock(\stdClass::class); @@ -3171,9 +2898,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertNotSame(GeneralUtility::makeInstance($className), GeneralUtility::makeInstance($className)); } - /** - * @test - */ + #[Test] public function addInstanceCalledTwoTimesMakesMakeInstanceReturnBothInstancesInAddingOrder(): void { $instance1 = $this->createMock(\stdClass::class); @@ -3185,9 +2910,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($instance2, GeneralUtility::makeInstance($className), 'The second returned instance does not match the second added instance.'); } - /** - * @test - */ + #[Test] public function purgeInstancesDropsAddedInstance(): void { $instance = $this->createMock(\stdClass::class); @@ -3231,10 +2954,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getFileAbsFileNameDataProvider - */ + #[DataProvider('getFileAbsFileNameDataProvider')] + #[Test] public function getFileAbsFileNameReturnsCorrectValues(string $path, string $expected): void { // build the dummy package "foo" for use in ExtensionManagementUtility::extPath('foo'); @@ -3299,10 +3020,9 @@ final class GeneralUtilityTest extends UnitTestCase /** * Tests whether invalid characters are detected. - * - * @dataProvider validPathStrInvalidCharactersDataProvider - * @test */ + #[DataProvider('validPathStrInvalidCharactersDataProvider')] + #[Test] public function validPathStrDetectsInvalidCharacters(string $path): void { self::assertFalse(GeneralUtility::validPathStr($path)); @@ -3323,10 +3043,9 @@ final class GeneralUtilityTest extends UnitTestCase /** * Tests whether Unicode characters are recognized as valid file name characters. - * - * @dataProvider validPathStrDataProvider - * @test */ + #[DataProvider('validPathStrDataProvider')] + #[Test] public function validPathStrWorksWithUnicodeFileNames($path): void { self::assertTrue(GeneralUtility::validPathStr($path)); @@ -3335,10 +3054,7 @@ final class GeneralUtilityTest extends UnitTestCase ///////////////////////////////////////////////////////////////////////////////////// // Tests concerning copyDirectory ///////////////////////////////////////////////////////////////////////////////////// - - /** - * @test - */ + #[Test] public function copyDirectoryCopiesFilesAndDirectoriesWithRelativePaths(): void { $sourceDirectory = 'typo3temp/var/tests/' . StringUtility::getUniqueId('test_') . '/'; @@ -3360,9 +3076,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertFileExists($absoluteTargetDirectory . 'foo/file'); } - /** - * @test - */ + #[Test] public function copyDirectoryCopiesFilesAndDirectoriesWithAbsolutePaths(): void { $sourceDirectory = 'typo3temp/var/tests/' . StringUtility::getUniqueId('test_') . '/'; @@ -3396,10 +3110,10 @@ final class GeneralUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider callUserFunctionInvalidParameterDataProvider * @param non-empty-string $functionName */ + #[DataProvider('callUserFunctionInvalidParameterDataProvider')] + #[Test] public function callUserFunctionWillThrowExceptionForInvalidParameters(string $functionName, int $expectedException): void { $this->expectException(\InvalidArgumentException::class); @@ -3408,9 +3122,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::callUserFunction($functionName, $inputData, $this); } - /** - * @test - */ + #[Test] public function callUserFunctionCanCallClosure(): void { $inputData = ['foo' => 'bar']; @@ -3423,9 +3135,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('Worked fine', $result); } - /** - * @test - */ + #[Test] public function callUserFunctionCanCallMethod(): void { $inputData = ['foo' => 'bar']; @@ -3433,9 +3143,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('Worked fine', $result); } - /** - * @test - */ + #[Test] public function callUserFunctionTrimsSpaces(): void { $inputData = ['foo' => 'bar']; @@ -3443,9 +3151,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('Worked fine', $result); } - /** - * @test - */ + #[Test] public function callUserFunctionAcceptsClosures(): void { $inputData = ['foo' => 'bar']; @@ -3456,9 +3162,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertEquals('Worked fine', GeneralUtility::callUserFunction($closure, $inputData, $this)); } - /** - * @test - */ + #[Test] public function getAllFilesAndFoldersInPathReturnsArrayWithMd5Keys(): void { $directory = $this->getTestDirectory() . '/' . StringUtility::getUniqueId('directory_'); @@ -3477,9 +3181,8 @@ final class GeneralUtilityTest extends UnitTestCase /** * If the element is not empty, its contents might be treated as "something" (instead of "nothing") * e.g. by Fluid view helpers, which is why we want to avoid that. - * - * @test */ + #[Test] public function array2xmlConvertsEmptyArraysToElementWithoutContent(): void { $input = [ @@ -3493,9 +3196,7 @@ final class GeneralUtilityTest extends UnitTestCase </phparray>', $output); } - /** - * @test - */ + #[Test] public function xml2arrayUsesCache(): void { $cacheMock = $this->createMock(FrontendInterface::class); @@ -3564,10 +3265,8 @@ final class GeneralUtilityTest extends UnitTestCase return $data; } - /** - * @test - * @dataProvider xml2arrayProcessHandlesWhitespacesDataProvider - */ + #[DataProvider('xml2arrayProcessHandlesWhitespacesDataProvider')] + #[Test] public function xml2arrayProcessHandlesWhitespaces(string $input): void { $expected = [ @@ -3619,10 +3318,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider xml2arrayProcessHandlesTagNamespacesDataProvider - */ + #[DataProvider('xml2arrayProcessHandlesTagNamespacesDataProvider')] + #[Test] public function xml2arrayProcessHandlesTagNamespaces(string $input): void { $expected = [ @@ -3677,10 +3374,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider xml2arrayProcessHandlesDocumentTagDataProvider - */ + #[DataProvider('xml2arrayProcessHandlesDocumentTagDataProvider')] + #[Test] public function xml2arrayProcessHandlesDocumentTag(string $input, string $docTag): void { $expected = [ @@ -3725,10 +3420,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider xml2ArrayProcessHandlesBigXmlContentDataProvider - */ + #[DataProvider('xml2ArrayProcessHandlesBigXmlContentDataProvider')] + #[Test] public function xml2ArrayProcessHandlesBigXmlContent(string $input, string $testValue): void { $expected = [ @@ -3816,10 +3509,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider xml2ArrayProcessHandlesAttributeTypesDataProvider - */ + #[DataProvider('xml2ArrayProcessHandlesAttributeTypesDataProvider')] + #[Test] public function xml2ArrayProcessHandlesAttributeTypes(string $input, mixed $expected): void { $result = GeneralUtility::xml2arrayProcess($input); @@ -3858,10 +3549,10 @@ final class GeneralUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider locationHeaderUrlDataProvider - * @throws \TYPO3\CMS\Core\Exception + * @throws Exception */ + #[DataProvider('locationHeaderUrlDataProvider')] + #[Test] public function locationHeaderUrl(string $path, string $host, string $expected): void { Environment::initialize( @@ -3881,9 +3572,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertSame($expected, $result); } - /** - * @test - */ + #[Test] public function createVersionNumberedFilenameDoesNotResolveBackpathForAbsolutePath(): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename'] = true; @@ -3900,9 +3589,7 @@ final class GeneralUtilityTest extends UnitTestCase self::assertMatchesRegularExpression('/^.*\/tests\/' . $uniqueFilename . '\.[0-9]+\.css/', $versionedFilename); } - /** - * @test - */ + #[Test] public function createVersionNumberedFilenameKeepsInvalidAbsolutePathInFrontendAndAddsQueryString(): void { Environment::initialize( @@ -3938,9 +3625,7 @@ final class GeneralUtilityTest extends UnitTestCase GeneralUtility::rmdir($testFileDirectory, true); } - /** - * @test - */ + #[Test] public function getMaxUploadFileSizeReturnsPositiveInt(): void { $result = GeneralUtility::getMaxUploadFileSize(); diff --git a/typo3/sysext/core/Tests/Unit/Utility/HttpUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/HttpUtilityTest.php index 7dffb1c92516..dae3774ad3b1 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/HttpUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/HttpUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\HttpUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,10 +27,8 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class HttpUtilityTest extends UnitTestCase { - /** - * @dataProvider isUrlBuiltCorrectlyDataProvider - * @test - */ + #[DataProvider('isUrlBuiltCorrectlyDataProvider')] + #[Test] public function isUrlBuiltCorrectly(array $urlParts, string $expected): void { $url = HttpUtility::buildUrl($urlParts); @@ -76,10 +76,8 @@ final class HttpUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider queryStringDataProvider - */ + #[DataProvider('queryStringDataProvider')] + #[Test] public function buildQueryStringBuildsValidParameterString(string $name, array $input, string $expected): void { if ($name === '') { @@ -89,9 +87,7 @@ final class HttpUtilityTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function buildQueryStringCanSkipEmptyParameters(): void { $input = ['one' => '√', '']; @@ -99,9 +95,7 @@ final class HttpUtilityTest extends UnitTestCase self::assertSame($expected, HttpUtility::buildQueryString(['foo' => $input], '', true)); } - /** - * @test - */ + #[Test] public function buildQueryStringCanUrlEncodeKeyNames(): void { $input = ['one' => '√', '']; @@ -109,9 +103,7 @@ final class HttpUtilityTest extends UnitTestCase self::assertSame($expected, HttpUtility::buildQueryString(['foo' => $input])); } - /** - * @test - */ + #[Test] public function buildQueryStringCanUrlEncodeKeyNamesMultidimensional(): void { $input = ['one' => ['two' => ['three' => '√']], '']; @@ -119,9 +111,7 @@ final class HttpUtilityTest extends UnitTestCase self::assertSame($expected, HttpUtility::buildQueryString(['foo' => $input])); } - /** - * @test - */ + #[Test] public function buildQueryStringSkipsLeadingCharacterOnEmptyParameters(): void { $input = []; @@ -129,9 +119,7 @@ final class HttpUtilityTest extends UnitTestCase self::assertSame($expected, HttpUtility::buildQueryString($input, '?', true)); } - /** - * @test - */ + #[Test] public function buildQueryStringSkipsLeadingCharacterOnCleanedEmptyParameters(): void { $input = ['one' => '']; diff --git a/typo3/sysext/core/Tests/Unit/Utility/IpAnonymizationUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/IpAnonymizationUtilityTest.php index 594efb2583be..4baa2c21e57d 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/IpAnonymizationUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/IpAnonymizationUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\IpAnonymizationUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -48,10 +50,10 @@ final class IpAnonymizationUtilityTest extends UnitTestCase } /** - * @test - * @dataProvider anonymizeIpReturnsCorrectValueDataProvider * @param int|null $mask */ + #[DataProvider('anonymizeIpReturnsCorrectValueDataProvider')] + #[Test] public function anonymizeIpReturnsCorrectValue(string $address, int $mask = null, string $expected): void { // set the default if $mask is null @@ -59,9 +61,7 @@ final class IpAnonymizationUtilityTest extends UnitTestCase self::assertEquals($expected, IpAnonymizationUtility::anonymizeIp($address, $mask)); } - /** - * @test - */ + #[Test] public function wrongMaskForAnonymizeIpThrowsException(): void { $this->expectException(\UnexpectedValueException::class); diff --git a/typo3/sysext/core/Tests/Unit/Utility/MailUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/MailUtilityTest.php index d2af33d33034..b21bc0adb908 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/MailUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/MailUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\MailUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -24,17 +26,13 @@ final class MailUtilityTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function breakLinesForEmailReturnsEmptyStringIfEmptyStringIsGiven(): void { self::assertEmpty(MailUtility::breakLinesForEmail('')); } - /** - * @test - */ + #[Test] public function breakLinesForEmailReturnsOneLineIfCharWithIsNotExceeded(): void { $newlineChar = LF; @@ -44,9 +42,7 @@ final class MailUtilityTest extends UnitTestCase self::assertCount(1, explode($newlineChar, $returnString)); } - /** - * @test - */ + #[Test] public function breakLinesForEmailBreaksTextIfCharWithIsExceeded(): void { $newlineChar = LF; @@ -56,9 +52,7 @@ final class MailUtilityTest extends UnitTestCase self::assertCount(2, explode($newlineChar, $returnString)); } - /** - * @test - */ + #[Test] public function breakLinesForEmailBreaksTextWithNoSpaceFoundBeforeLimit(): void { $newlineChar = LF; @@ -69,9 +63,7 @@ final class MailUtilityTest extends UnitTestCase self::assertEquals($returnString, 'abcdefghijklmnopqrst' . LF . 'uvwxyz' . LF . '123456'); } - /** - * @test - */ + #[Test] public function breakLinesForEmailBreaksTextIfLineIsLongerThanTheLineWidth(): void { $str = 'Mein Link auf eine News (Link: http://zzzzzzzzzzzzz.xxxxxxxxx.de/index.php?id=10&tx_ttnews%5Btt_news%5D=1&cHash=66f5af320da29b7ae1cda49047ca7358)'; @@ -104,10 +96,8 @@ final class MailUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider parseAddressesProvider - */ + #[DataProvider('parseAddressesProvider')] + #[Test] public function parseAddressesTest(string $source, array $addressList): void { $returnArray = MailUtility::parseAddresses($source); @@ -136,10 +126,8 @@ final class MailUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider replyToProvider - */ + #[DataProvider('replyToProvider')] + #[Test] public function getSystemReplyToTest(array $configuration, array $expectedReplyTo): void { $GLOBALS['TYPO3_CONF_VARS']['MAIL'] = $configuration; diff --git a/typo3/sysext/core/Tests/Unit/Utility/MathUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/MathUtilityTest.php index f2fb696985be..fe058a2af517 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/MathUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/MathUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\MathUtilityTestClassWithStringRepresentationFixture; use TYPO3\CMS\Core\Utility\MathUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -42,18 +44,14 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider forceIntegerInRangeForcesIntegerIntoDefaultBoundariesDataProvider - */ + #[DataProvider('forceIntegerInRangeForcesIntegerIntoDefaultBoundariesDataProvider')] + #[Test] public function forceIntegerInRangeForcesIntegerIntoDefaultBoundaries($expected, $value): void { self::assertEquals($expected, MathUtility::forceIntegerInRange($value, 0)); } - /** - * @test - */ + #[Test] public function forceIntegerInRangeSetsDefaultValueIfZeroValueIsGiven(): void { self::assertEquals(42, MathUtility::forceIntegerInRange('', 0, 2000000000, 42)); @@ -62,17 +60,13 @@ final class MathUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning convertToPositiveInteger ////////////////////////////////// - /** - * @test - */ + #[Test] public function convertToPositiveIntegerReturnsZeroForNegativeValues(): void { self::assertEquals(0, MathUtility::convertToPositiveInteger(-123)); } - /** - * @test - */ + #[Test] public function convertToPositiveIntegerReturnsTheInputValueForPositiveValues(): void { self::assertEquals(123, MathUtility::convertToPositiveInteger(123)); @@ -99,10 +93,8 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider functionCanBeInterpretedAsIntegerValidDataProvider - */ + #[DataProvider('functionCanBeInterpretedAsIntegerValidDataProvider')] + #[Test] public function canBeInterpretedAsIntegerReturnsTrue($int): void { self::assertTrue(MathUtility::canBeInterpretedAsInteger($int)); @@ -148,10 +140,8 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider functionCanBeInterpretedAsIntegerInvalidDataProvider - */ + #[DataProvider('functionCanBeInterpretedAsIntegerInvalidDataProvider')] + #[Test] public function canBeInterpretedAsIntegerReturnsFalse($int): void { self::assertFalse(MathUtility::canBeInterpretedAsInteger($int)); @@ -179,10 +169,8 @@ final class MathUtilityTest extends UnitTestCase return array_merge($intTestcases, $floatTestcases); } - /** - * @test - * @dataProvider functionCanBeInterpretedAsFloatValidDataProvider - */ + #[DataProvider('functionCanBeInterpretedAsFloatValidDataProvider')] + #[Test] public function canBeInterpretedAsFloatReturnsTrue($val): void { self::assertTrue(MathUtility::canBeInterpretedAsFloat($val)); @@ -224,10 +212,8 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider functionCanBeInterpretedAsFloatInvalidDataProvider - */ + #[DataProvider('functionCanBeInterpretedAsFloatInvalidDataProvider')] + #[Test] public function canBeInterpretedAsFloatReturnsFalse($int): void { self::assertFalse(MathUtility::canBeInterpretedAsFloat($int)); @@ -260,10 +246,8 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calculateWithPriorityToAdditionAndSubtractionDataProvider - */ + #[DataProvider('calculateWithPriorityToAdditionAndSubtractionDataProvider')] + #[Test] public function calculateWithPriorityToAdditionAndSubtractionCorrectlyCalculatesExpression($expected, $expression): void { self::assertEquals($expected, MathUtility::calculateWithPriorityToAdditionAndSubtraction($expression)); @@ -288,10 +272,8 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calculateWithParenthesesDataProvider - */ + #[DataProvider('calculateWithParenthesesDataProvider')] + #[Test] public function calculateWithParenthesesCorrectlyCalculatesExpression($expected, $expression): void { self::assertEquals($expected, MathUtility::calculateWithParentheses($expression)); @@ -300,33 +282,25 @@ final class MathUtilityTest extends UnitTestCase ////////////////////////////////// // Tests concerning isIntegerInRange ////////////////////////////////// - /** - * @test - */ + #[Test] public function isIntegerInRangeIncludesLowerBoundary(): void { self::assertTrue(MathUtility::isIntegerInRange(1, 1, 2)); } - /** - * @test - */ + #[Test] public function isIntegerInRangeIncludesUpperBoundary(): void { self::assertTrue(MathUtility::isIntegerInRange(2, 1, 2)); } - /** - * @test - */ + #[Test] public function isIntegerInRangeAcceptsValueInRange(): void { self::assertTrue(MathUtility::isIntegerInRange(10, 1, 100)); } - /** - * @test - */ + #[Test] public function isIntegerInRangeRejectsValueOutsideOfRange(): void { self::assertFalse(MathUtility::isIntegerInRange(10, 1, 2)); @@ -348,10 +322,8 @@ final class MathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isIntegerInRangeRejectsOtherDataTypesDataProvider - */ + #[DataProvider('isIntegerInRangeRejectsOtherDataTypesDataProvider')] + #[Test] public function isIntegerInRangeRejectsOtherDataTypes($inputValue): void { self::assertFalse(MathUtility::isIntegerInRange($inputValue, 0, 10)); diff --git a/typo3/sysext/core/Tests/Unit/Utility/PathUtilityPublicPathsTest.php b/typo3/sysext/core/Tests/Unit/Utility/PathUtilityPublicPathsTest.php index 71f6a1231e09..9a5d3acd3544 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/PathUtilityPublicPathsTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/PathUtilityPublicPathsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Resource\Exception\InvalidFileException; use TYPO3\CMS\Core\Utility\PathUtility; @@ -81,9 +83,7 @@ final class PathUtilityPublicPathsTest extends UnitTestCase self::simulateWebRequest(Environment::getPublicPath(), $subDirectory); } - /** - * @test - */ + #[Test] public function tryingToResolveNonExtensionResourcesThrowsException(): void { $this->expectException(InvalidFileException::class); @@ -91,9 +91,7 @@ final class PathUtilityPublicPathsTest extends UnitTestCase PathUtility::getPublicResourceWebPath('typo3/sysext/core/Resources/Public/Icons/Extension.svg'); } - /** - * @test - */ + #[Test] public function tryingToResolvePrivateResourcesFromComposerPackagesThrowsException(): void { self::simulateWebRequestInComposerMode(); @@ -135,9 +133,9 @@ final class PathUtilityPublicPathsTest extends UnitTestCase /** * @throws InvalidFileException - * @dataProvider getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider - * @test */ + #[DataProvider('getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider')] + #[Test] public function getPublicResourceWebPathResolvesUrlsCorrectly(string $pathReference, string $expectedUrl, callable $setup): void { $setup(); diff --git a/typo3/sysext/core/Tests/Unit/Utility/PathUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/PathUtilityTest.php index 5e977c4b650f..0f887d631fbe 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/PathUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/PathUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Utility\PathUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,9 +32,9 @@ final class PathUtilityTest extends UnitTestCase /** * @param string $expected - * @dataProvider isCommonPrefixResolvedCorrectlyDataProvider - * @test */ + #[DataProvider('isCommonPrefixResolvedCorrectlyDataProvider')] + #[Test] public function isCommonPrefixResolvedCorrectly(array $paths, $expected): void { $commonPrefix = PathUtility::getCommonPrefix($paths); @@ -135,9 +137,9 @@ final class PathUtilityTest extends UnitTestCase * @param string $source * @param string $target * @param string $expected - * @dataProvider isRelativePathResolvedCorrectlyDataProvider - * @test */ + #[DataProvider('isRelativePathResolvedCorrectlyDataProvider')] + #[Test] public function isRelativePathResolvedCorrectly($source, $target, $expected): void { $relativePath = PathUtility::getRelativePath($source, $target); @@ -184,9 +186,9 @@ final class PathUtilityTest extends UnitTestCase * @param string $path * @param string $separator * @param string $expected - * @dataProvider isTrailingSeparatorSanitizedCorrectlyDataProvider - * @test */ + #[DataProvider('isTrailingSeparatorSanitizedCorrectlyDataProvider')] + #[Test] public function isTrailingSeparatorSanitizedCorrectly($path, $separator, $expected): void { $sanitizedPath = PathUtility::sanitizeTrailingSeparator($path, $separator); @@ -241,10 +243,8 @@ final class PathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getAbsolutePathOfRelativeReferencedFileOrPathResolvesFileCorrectlyDataProvider - */ + #[DataProvider('getAbsolutePathOfRelativeReferencedFileOrPathResolvesFileCorrectlyDataProvider')] + #[Test] public function getAbsolutePathOfRelativeReferencedFileOrPathResolvesFileCorrectly(string $baseFileName, string $includeFileName, string $expectedFileName): void { $resolvedFilename = PathUtility::getAbsolutePathOfRelativeReferencedFileOrPath($baseFileName, $includeFileName); @@ -354,10 +354,8 @@ final class PathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getCanonicalPathCorrectlyCleansPathDataProvider - */ + #[DataProvider('getCanonicalPathCorrectlyCleansPathDataProvider')] + #[Test] public function getCanonicalPathCorrectlyCleansPath(string $inputName, string $expectedResult): void { // Ensure Environment runs as Windows test @@ -405,10 +403,8 @@ final class PathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider dirnameDuringBootstrapCorrectlyFetchesParentDataProvider - */ + #[DataProvider('dirnameDuringBootstrapCorrectlyFetchesParentDataProvider')] + #[Test] public function dirnameDuringBootstrapCorrectlyFetchesParent(string $inputPath, string $expectedResult): void { self::assertSame( @@ -442,10 +438,8 @@ final class PathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider basenameDuringBootstrapCorrectlyFetchesBasenameDataProvider - */ + #[DataProvider('basenameDuringBootstrapCorrectlyFetchesBasenameDataProvider')] + #[Test] public function basenameDuringBootstrapCorrectlyFetchesBasename(string $inputPath, string $expectedResult): void { self::assertSame( @@ -510,10 +504,8 @@ final class PathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isAbsolutePathRespectsAllOperatingSystemsPathDataProvider - */ + #[DataProvider('isAbsolutePathRespectsAllOperatingSystemsPathDataProvider')] + #[Test] public function isAbsolutePathRespectsAllOperatingSystems(string $inputPath, bool $isWindows, bool $expectedResult): void { if ($isWindows) { @@ -552,10 +544,8 @@ final class PathUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider hasProtocolAndSchemeDataProvider - */ + #[DataProvider('hasProtocolAndSchemeDataProvider')] + #[Test] public function hasProtocolAndScheme(string $url, bool $result): void { self::assertSame($result, PathUtility::hasProtocolAndScheme($url)); @@ -588,10 +578,8 @@ final class PathUtilityTest extends UnitTestCase yield [['/var/shared/'], '/var', false]; } - /** - * @test - * @dataProvider allowedAdditionalPathsAreEvaluatedDataProvider - */ + #[DataProvider('allowedAdditionalPathsAreEvaluatedDataProvider')] + #[Test] public function allowedAdditionalPathsAreEvaluated(mixed $lockRootPath, string $path, bool $expectation): void { $GLOBALS['TYPO3_CONF_VARS']['BE']['lockRootPath'] = $lockRootPath; diff --git a/typo3/sysext/core/Tests/Unit/Utility/PermutationUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/PermutationUtilityTest.php index 830f53344148..28ab742361c5 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/PermutationUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/PermutationUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\StringValue; use TYPO3\CMS\Core\Utility\PermutationUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -101,10 +103,9 @@ final class PermutationUtilityTest extends UnitTestCase /** * @param array|int $expectation - * - * @test - * @dataProvider meltStringItemsDataProvider */ + #[DataProvider('meltStringItemsDataProvider')] + #[Test] public function meltStringItemsIsExecuted(array $payload, $expectation): void { if (is_int($expectation)) { @@ -184,10 +185,9 @@ final class PermutationUtilityTest extends UnitTestCase /** * @param array|int $expectation - * - * @test - * @dataProvider meltArrayItemsDataProvider */ + #[DataProvider('meltArrayItemsDataProvider')] + #[Test] public function meltArrayItemsIsExecuted(array $payload, $expectation): void { if (is_int($expectation)) { diff --git a/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php index 279222776a02..f09e01bb333d 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; @@ -70,36 +71,28 @@ final class RootlineUtilityTest extends UnitTestCase self::assertSame($subsetCandidate, array_intersect_assoc($subsetCandidate, $superset)); } - /** - * @test - */ + #[Test] public function isMountedPageWithoutMountPointsReturnsFalse(): void { $this->subject->__construct(1, '', new Context()); self::assertFalse($this->subject->isMountedPage()); } - /** - * @test - */ + #[Test] public function isMountedPageWithMatchingMountPointParameterReturnsTrue(): void { $this->subject->__construct(1, '1-99', new Context()); self::assertTrue($this->subject->isMountedPage()); } - /** - * @test - */ + #[Test] public function isMountedPageWithNonMatchingMountPointParameterReturnsFalse(): void { $this->subject->__construct(1, '99-99', new Context()); self::assertFalse($this->subject->isMountedPage()); } - /** - * @test - */ + #[Test] public function processMountedPageWithNonMountedPageThrowsException(): void { $this->expectException(\RuntimeException::class); @@ -113,9 +106,7 @@ final class RootlineUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function processMountedPageWithMountedPageNotThrowsException(): void { $this->subject->__construct(1, '1-99', new Context()); @@ -126,9 +117,7 @@ final class RootlineUtilityTest extends UnitTestCase )); } - /** - * @test - */ + #[Test] public function processMountedPageWithMountedPageAddsMountedFromParameter(): void { $this->subject->__construct(1, '1-99', new Context()); @@ -141,9 +130,7 @@ final class RootlineUtilityTest extends UnitTestCase self::assertSame(1, $result['_MOUNTED_FROM']); } - /** - * @test - */ + #[Test] public function processMountedPageWithMountedPageAddsMountPointParameterToReturnValue(): void { $this->subject->__construct(1, '1-99', new Context()); @@ -156,9 +143,7 @@ final class RootlineUtilityTest extends UnitTestCase self::assertSame('1-99', $result['_MP_PARAM']); } - /** - * @test - */ + #[Test] public function processMountedPageForMountPageIsOverlayAddsMountOLParameter(): void { $this->subject->__construct(1, '1-99', new Context()); @@ -171,9 +156,7 @@ final class RootlineUtilityTest extends UnitTestCase self::assertTrue($result['_MOUNT_OL']); } - /** - * @test - */ + #[Test] public function processMountedPageForMountPageIsOverlayAddsDataInformationAboutMountPage(): void { $this->subject->__construct(1, '1-99', new Context()); @@ -189,9 +172,7 @@ final class RootlineUtilityTest extends UnitTestCase self::assertSame(['uid' => 99, 'pid' => 5, 'title' => 'TestCase'], $result['_MOUNT_PAGE']); } - /** - * @test - */ + #[Test] public function processMountedPageForMountPageWithoutOverlayReplacesMountedPageWithMountPage(): void { $mountPointPageData = [ @@ -205,9 +186,7 @@ final class RootlineUtilityTest extends UnitTestCase $this->assertIsSubset($mountPointPageData, $result); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsGroupFieldAsLocal(): void { self::assertFalse($this->subject->_call('columnHasRelationToResolve', [ @@ -215,9 +194,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsGroupFieldWithMMAsRemote2(): void { self::assertTrue($this->subject->_call('columnHasRelationToResolve', [ @@ -228,9 +205,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsInlineFieldAsLocal(): void { self::assertFalse($this->subject->_call('columnHasRelationToResolve', [ @@ -240,9 +215,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsInlineFieldWithForeignKeyAsRemote(): void { self::assertTrue($this->subject->_call('columnHasRelationToResolve', [ @@ -253,9 +226,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsInlineFieldWithFMMAsRemote(): void { self::assertTrue($this->subject->_call('columnHasRelationToResolve', [ @@ -266,9 +237,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsSelectFieldAsLocal(): void { self::assertFalse($this->subject->_call('columnHasRelationToResolve', [ @@ -278,9 +247,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function columnHasRelationToResolveDetectsSelectFieldWithMMAsRemote(): void { self::assertTrue($this->subject->_call('columnHasRelationToResolve', [ @@ -291,9 +258,7 @@ final class RootlineUtilityTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function getCacheIdentifierContainsAllContextParameters(): void { $this->subject->method('resolvePageId')->willReturn(42); @@ -312,9 +277,7 @@ final class RootlineUtilityTest extends UnitTestCase self::assertSame('42_47-11_8_0_0_1', $this->subject->getCacheIdentifier()); } - /** - * @test - */ + #[Test] public function getCacheIdentifierReturnsValidIdentifierWithCommasInMountPointParameter(): void { $this->subject->method('resolvePageId')->willReturn(42); diff --git a/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentCollectionTest.php b/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentCollectionTest.php index f9df1919513d..bd8efc8b2c2d 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentCollectionTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentCollectionTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility\String; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\String\StringFragment; use TYPO3\CMS\Core\Utility\String\StringFragmentCollection; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class StringFragmentCollectionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function collectionReflectsFragments(): void { $a = StringFragment::raw('aa'); @@ -64,10 +64,9 @@ final class StringFragmentCollectionTest extends UnitTestCase * @param list<StringFragment> $first * @param list<StringFragment> $second * @param list<StringFragment> $expectations - * - * @test - * @dataProvider differencesAreResolvedDataProvider */ + #[DataProvider('differencesAreResolvedDataProvider')] + #[Test] public function differencesAreResolved(array $first, array $second, array $expectations): void { $firstCollection = new StringFragmentCollection(...$first); @@ -103,10 +102,9 @@ final class StringFragmentCollectionTest extends UnitTestCase * @param list<StringFragment> $first * @param list<StringFragment> $second * @param list<StringFragment> $expectations - * - * @test - * @dataProvider intersectionsAreResolvedDataProvider */ + #[DataProvider('intersectionsAreResolvedDataProvider')] + #[Test] public function intersectionsAreResolved(array $first, array $second, array $expectations): void { $firstCollection = new StringFragmentCollection(...$first); diff --git a/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentSplitterTest.php b/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentSplitterTest.php index c54f148de3b0..c9a06d9f0506 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentSplitterTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/String/StringFragmentSplitterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility\String; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\String\StringFragment; use TYPO3\CMS\Core\Utility\String\StringFragmentPattern; use TYPO3\CMS\Core\Utility\String\StringFragmentSplitter; @@ -78,10 +80,9 @@ final class StringFragmentSplitterTest extends UnitTestCase /** * @param list<StringFragmentPattern> $patterns * @param list<StringFragment> $expectations - * - * @test - * @dataProvider stringIsSplitDataProvider */ + #[DataProvider('stringIsSplitDataProvider')] + #[Test] public function stringIsSplit(string $value, array $patterns, int $flags, ?array $expectations): void { $splitter = new StringFragmentSplitter(...$patterns); diff --git a/typo3/sysext/core/Tests/Unit/Utility/StringUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/StringUtilityTest.php index 9eaeedf7d793..ea1ec3a33d88 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/StringUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/StringUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ApplicationType; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -35,10 +37,8 @@ final class StringUtilityTest extends UnitTestCase yield 'bool' => [true]; } - /** - * @test - * @dataProvider stringCastableValuesDataProvider - */ + #[DataProvider('stringCastableValuesDataProvider')] + #[Test] public function castWithStringCastableReturnsValueCastToString(mixed $value): void { $expected = (string)$value; @@ -62,10 +62,8 @@ final class StringUtilityTest extends UnitTestCase yield 'NaN' => [acos(2)]; } - /** - * @test - * @dataProvider nonStringCastableValuesDataProvider - */ + #[DataProvider('nonStringCastableValuesDataProvider')] + #[Test] public function castWithWithNonStringCastableReturnsDefault(mixed $value): void { $default = 'default'; @@ -73,10 +71,8 @@ final class StringUtilityTest extends UnitTestCase self::assertSame($default, StringUtility::cast($value, $default)); } - /** - * @test - * @dataProvider nonStringCastableValuesDataProvider - */ + #[DataProvider('nonStringCastableValuesDataProvider')] + #[Test] public function castWithWithNonStringCastableAndNoDefaultProvidedReturnsNull(mixed $value): void { self::assertNull(StringUtility::cast($value)); @@ -101,10 +97,8 @@ final class StringUtilityTest extends UnitTestCase yield 'NaN' => [acos(2)]; } - /** - * @test - * @dataProvider nonStringValueToFilterDataProvider - */ + #[DataProvider('nonStringValueToFilterDataProvider')] + #[Test] public function filterForNonStringValueAndDefaultProvidedReturnsDefault(mixed $value): void { $default = 'default'; @@ -112,10 +106,8 @@ final class StringUtilityTest extends UnitTestCase self::assertSame($default, StringUtility::filter($value, $default)); } - /** - * @test - * @dataProvider nonStringValueToFilterDataProvider - */ + #[DataProvider('nonStringValueToFilterDataProvider')] + #[Test] public function filterForNonStringValueAndNoDefaultProvidedReturnsNull(mixed $value): void { self::assertNull(StringUtility::filter($value)); @@ -129,36 +121,28 @@ final class StringUtilityTest extends UnitTestCase yield 'empty string' => ['']; yield 'non-empty string' => ['value']; } - /** - * @test - * @dataProvider stringValueToFilterDataProvider - */ + #[DataProvider('stringValueToFilterDataProvider')] + #[Test] public function filterForStringValuesReturnsProvidedValue(string $value): void { self::assertSame($value, StringUtility::filter($value, 'some default')); } - /** - * @test - */ + #[Test] public function getUniqueIdReturnsIdWithPrefix(): void { $id = StringUtility::getUniqueId('NEW'); self::assertEquals('NEW', substr($id, 0, 3)); } - /** - * @test - */ + #[Test] public function getUniqueIdReturnsIdWithoutDot(): void { self::assertStringNotContainsString('.', StringUtility::getUniqueId()); } - /** - * @test - * @dataProvider escapeCssSelectorDataProvider - */ + #[DataProvider('escapeCssSelectorDataProvider')] + #[Test] public function escapeCssSelector(string $selector, string $expectedValue): void { self::assertEquals($expectedValue, StringUtility::escapeCssSelector($selector)); @@ -175,10 +159,8 @@ final class StringUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider removeByteOrderMarkDataProvider - */ + #[DataProvider('removeByteOrderMarkDataProvider')] + #[Test] public function removeByteOrderMark(string $input, string $expectedValue): void { // assertContains is necessary as one test contains non-string characters @@ -199,10 +181,8 @@ final class StringUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider searchStringWildcardDataProvider - */ + #[DataProvider('searchStringWildcardDataProvider')] + #[Test] public function searchStringWildcard(string $haystack, string $needle, bool $result): void { self::assertSame($result, StringUtility::searchStringWildcard($haystack, $needle)); @@ -265,10 +245,8 @@ final class StringUtilityTest extends UnitTestCase yield 'List with multiple consecutive commas' => ['one,,two', 'one,two']; } - /** - * @test - * @dataProvider uniqueListUnifiesCommaSeparatedListDataProvider - */ + #[DataProvider('uniqueListUnifiesCommaSeparatedListDataProvider')] + #[Test] public function uniqueListUnifiesCommaSeparatedList(string $initialList, string $unifiedList): void { self::assertSame($unifiedList, StringUtility::uniqueList($initialList)); @@ -297,10 +275,9 @@ final class StringUtilityTest extends UnitTestCase /** * Tests that StringUtility::multibyteStringPad() returns the same value as \str_pad() * for ASCII strings. - * - * @test - * @dataProvider multibyteStringPadReturnsSameValueAsStrPadForAsciiStringsDataProvider */ + #[DataProvider('multibyteStringPadReturnsSameValueAsStrPadForAsciiStringsDataProvider')] + #[Test] public function multibyteStringPadReturnsSameValueAsStrPadForAsciiStrings(string $string, int $length, string $pad_string, int $pad_type): void { self::assertEquals( @@ -326,10 +303,8 @@ final class StringUtilityTest extends UnitTestCase yield 'Pad both to 8 with string with even length and 2 character padding with MB char' => ['äöähüäöä', 'hü', 8, 'äö', STR_PAD_BOTH]; } - /** - * @test - * @dataProvider multibyteStringPadReturnsCorrectResultsMultibyteDataProvider - */ + #[DataProvider('multibyteStringPadReturnsCorrectResultsMultibyteDataProvider')] + #[Test] public function multibyteStringPadReturnsCorrectResultsMultibyte(string $expectedResult, string $string, int $length, string $pad_string, int $pad_type): void { self::assertEquals( @@ -349,10 +324,8 @@ final class StringUtilityTest extends UnitTestCase yield [random_bytes(33)]; } - /** - * @test - * @dataProvider base64urlRoundTripWorksDataProvider - */ + #[DataProvider('base64urlRoundTripWorksDataProvider')] + #[Test] public function base64urlRoundTripWorks(string $rawValue): void { $encoded = StringUtility::base64urlEncode($rawValue); @@ -371,19 +344,15 @@ final class StringUtilityTest extends UnitTestCase yield ['aaaa', 'YWFhYQ']; } - /** - * @test - * @dataProvider base64urlDataProvider - */ + #[DataProvider('base64urlDataProvider')] + #[Test] public function base64urlEncodeWorks(string $rawValue, string $encodedValue): void { self::assertSame($encodedValue, StringUtility::base64urlEncode($rawValue)); } - /** - * @test - * @dataProvider base64urlDataProvider - */ + #[DataProvider('base64urlDataProvider')] + #[Test] public function base64urlDecodeWorks(string $rawValue, string $encodedValue): void { self::assertSame($rawValue, StringUtility::base64urlDecode($encodedValue)); @@ -406,10 +375,8 @@ final class StringUtilityTest extends UnitTestCase yield ["Y\tW\tE", 'aa']; } - /** - * @test - * @dataProvider base64urlStrictDataProvider - */ + #[DataProvider('base64urlStrictDataProvider')] + #[Test] public function base64urlStrictDecodeWorks(string $encodedValue, string|bool $expectation): void { self::assertSame($expectation, StringUtility::base64urlDecode($encodedValue, true)); @@ -456,10 +423,8 @@ final class StringUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider explodeEscapedDataProvider - */ + #[DataProvider('explodeEscapedDataProvider')] + #[Test] public function explodeEscapedWorks(string $escaped, array $unescapedExploded): void { self::assertSame($unescapedExploded, StringUtility::explodeEscaped('.', $escaped)); diff --git a/typo3/sysext/core/Tests/Unit/Utility/VersionNumberUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/VersionNumberUtilityTest.php index 0684d0c3edba..ca298ed858ba 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/VersionNumberUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/VersionNumberUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\Unit\Utility\Fixtures\VersionNumberUtilityFixture; use TYPO3\CMS\Core\Utility\VersionNumberUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -59,10 +61,9 @@ final class VersionNumberUtilityTest extends UnitTestCase /** * Check whether getNumericTypo3Version handles all kinds of valid * version strings - * - * @dataProvider getNumericTypo3VersionNumberDataProvider - * @test */ + #[DataProvider('getNumericTypo3VersionNumberDataProvider')] + #[Test] public function getNumericTypo3VersionNumber(string $currentVersion, string $expectedVersion): void { VersionNumberUtilityFixture::$versionNumber = $currentVersion; @@ -99,10 +100,8 @@ final class VersionNumberUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider convertVersionsStringToVersionNumbersForcesVersionNumberInRangeDataProvider - */ + #[DataProvider('convertVersionsStringToVersionNumbersForcesVersionNumberInRangeDataProvider')] + #[Test] public function convertVersionsStringToVersionNumbersForcesVersionNumberInRange(string $versionString, array $expectedResult): void { $versions = VersionNumberUtility::convertVersionsStringToVersionNumbers($versionString); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicMethodDeprecationTraitTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicMethodDeprecationTraitTest.php index 07582c6c7825..23bb67d37bec 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicMethodDeprecationTraitTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicMethodDeprecationTraitTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Compatibility; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Tests\UnitDeprecated\Compatibility\Fixtures\PublicMethodDeprecationTraitTextFixture; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PublicMethodDeprecationTraitTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function publicMethodCanBeCalled(): void { $this->expectException(\RuntimeException::class); @@ -32,27 +31,21 @@ final class PublicMethodDeprecationTraitTest extends UnitTestCase (new PublicMethodDeprecationTraitTextFixture())->standardPublicMethod(); } - /** - * @test - */ + #[Test] public function protectedMethodNotHandledByTraitThrowsError(): void { $this->expectException(\Error::class); (new PublicMethodDeprecationTraitTextFixture())->standardProtectedMethod(); } - /** - * @test - */ + #[Test] public function notExistingMethodThrowsError(): void { $this->expectException(\Error::class); (new PublicMethodDeprecationTraitTextFixture())->doesNotExist(); } - /** - * @test - */ + #[Test] public function methodMadeProtectedCanBeCalled(): void { $this->expectException(\RuntimeException::class); @@ -60,17 +53,13 @@ final class PublicMethodDeprecationTraitTest extends UnitTestCase (new PublicMethodDeprecationTraitTextFixture())->methodMadeProtected(); } - /** - * @test - */ + #[Test] public function methodMadeProtectedReturnsValue(): void { self::assertEquals('foo', (new PublicMethodDeprecationTraitTextFixture())->methodMadeProtectedWithReturn()); } - /** - * @test - */ + #[Test] public function methodMadeProtectedCanBeCalledWithArguments(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicPropertyDeprecationTraitTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicPropertyDeprecationTraitTest.php index 4c1f2de6538a..97b54b9a960e 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicPropertyDeprecationTraitTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Compatibility/PublicPropertyDeprecationTraitTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Compatibility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -77,18 +79,14 @@ final class PublicPropertyDeprecationTraitTest extends UnitTestCase ]; } - /** - * @dataProvider issetDataProvider - * @test - */ + #[DataProvider('issetDataProvider')] + #[Test] public function issetWorksAsExpected(bool $expected, string $property): void { self::assertSame($expected, isset($this->fixture->$property)); } - /** - * @test - */ + #[Test] public function unknownPropertyCanBeHandledAsUsual(): void { // Uses __isset() @@ -105,9 +103,7 @@ final class PublicPropertyDeprecationTraitTest extends UnitTestCase self::assertFalse(isset($this->fixture->unknownProperty)); } - /** - * @test - */ + #[Test] public function publicPropertyCanBeHandledAsUsual(): void { self::assertFalse(isset($this->fixture->unsetPublicProperty)); @@ -118,9 +114,7 @@ final class PublicPropertyDeprecationTraitTest extends UnitTestCase self::assertFalse(isset($this->fixture->unsetPublicProperty)); } - /** - * @test - */ + #[Test] public function taggedPropertyCanBeHandledLikePublicProperty(): void { self::assertFalse(isset($this->fixture->unsetTaggedProperty)); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/FlexForm/FlexFormToolsTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/FlexForm/FlexFormToolsTest.php index 9ff6b6615223..106309729c74 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/FlexForm/FlexFormToolsTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/FlexForm/FlexFormToolsTest.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Configuration\FlexForm; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -56,10 +58,8 @@ final class FlexFormToolsTest extends UnitTestCase ]; } - /** - * @dataProvider tceFormsRemovedInMigrationDataProvider - * @test - */ + #[DataProvider('tceFormsRemovedInMigrationDataProvider')] + #[Test] public function tceFormsRemovedInMigration(array $dataStructure, array $expected): void { $eventDispatcher = new class () implements EventDispatcherInterface { diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Loader/PageTsConfigLoaderTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Loader/PageTsConfigLoaderTest.php index 74fad1e1a25a..7d4b6a8dbdbc 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Loader/PageTsConfigLoaderTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Loader/PageTsConfigLoaderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Configuration\Loader; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Configuration\Event\ModifyLoadedPageTsConfigEvent; use TYPO3\CMS\Core\Configuration\Loader\PageTsConfigLoader; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PageTsConfigLoaderTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function alwaysLoadDefaultSettings(): void { $expected = [ @@ -45,9 +44,7 @@ final class PageTsConfigLoaderTest extends UnitTestCase self::assertSame($expectedString, $result); } - /** - * @test - */ + #[Test] public function loadDefaultSettingsAtTheBeginningAndKeepEmptyEntriesExpectUidZero(): void { $expected = [ @@ -64,9 +61,7 @@ final class PageTsConfigLoaderTest extends UnitTestCase self::assertSame($expected, $result); } - /** - * @test - */ + #[Test] public function loadExternalInclusionsCorrectlyAndKeepLoadingOrder(): void { $expected = [ @@ -83,9 +78,7 @@ final class PageTsConfigLoaderTest extends UnitTestCase self::assertSame($expected, $result); } - /** - * @test - */ + #[Test] public function invalidExternalFileIsNotLoaded(): void { $expected = [ diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Parser/PageTsConfigParserTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Parser/PageTsConfigParserTest.php index 3993a0e2cac5..acb6d5410114 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Parser/PageTsConfigParserTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/Parser/PageTsConfigParserTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Configuration\Parser; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Cache\Backend\TransientMemoryBackend; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; @@ -30,9 +31,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PageTsConfigParserTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function invalidCacheAlwaysExecutesMatcher(): void { $input = 'mod.web_layout = disabled'; @@ -53,9 +52,7 @@ final class PageTsConfigParserTest extends UnitTestCase self::assertEquals($expectedParsedTsConfig, $parsedTsConfig); } - /** - * @test - */ + #[Test] public function cachedHitOnlyExecutesMatcher(): void { $cachedSection = 'mod.web_layout = disabled'; @@ -83,9 +80,7 @@ final class PageTsConfigParserTest extends UnitTestCase self::assertEquals($expectedParsedTsConfig, $parsedTsConfig); } - /** - * @test - */ + #[Test] public function parseReplacesSiteSettings(): void { $input = 'mod.web_layout = {$numberedThings.1}' . "\n" . @@ -132,9 +127,7 @@ final class PageTsConfigParserTest extends UnitTestCase self::assertEquals($expectedParsedTsConfig, $parsedTsConfig); } - /** - * @test - */ + #[Test] public function parseReplacesSiteSettingsWithMultipleSitesAndCache(): void { $input = 'mod.web_layout = {$numberedThings.1}'; diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php index ef769856a7ae..73b9e6f5170c 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcherTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Configuration\TypoScript\ConditionMatching; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Backend\Configuration\TypoScript\ConditionMatching\ConditionMatcher; use TYPO3\CMS\Core\Cache\CacheManager; @@ -109,10 +111,8 @@ final class AbstractConditionMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider requestFunctionDataProvider - */ + #[DataProvider('requestFunctionDataProvider')] + #[Test] public function checkConditionMatcherForRequestFunction(string $expression, bool $expected): void { $request = (new ServerRequest()) @@ -142,10 +142,8 @@ final class AbstractConditionMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider datesFunctionDataProvider - */ + #[DataProvider('datesFunctionDataProvider')] + #[Test] public function checkConditionMatcherForDateFunction(string $format, int $expressionValue, bool $expected): void { $GLOBALS['SIM_EXEC_TIME'] = gmmktime(11, 4, 0, 1, 17, 1945); @@ -157,9 +155,7 @@ final class AbstractConditionMatcherTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function checkConditionMatcherForFeatureFunction(): void { $featureName = 'test.testFeature'; @@ -212,10 +208,8 @@ final class AbstractConditionMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchingApplicationContextConditionsDataProvider - */ + #[DataProvider('matchingApplicationContextConditionsDataProvider')] + #[Test] public function evaluateConditionCommonReturnsTrueForMatchingContexts($matchingContextCondition): void { Environment::initialize( @@ -253,10 +247,8 @@ final class AbstractConditionMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider notMatchingApplicationContextConditionsDataProvider - */ + #[DataProvider('notMatchingApplicationContextConditionsDataProvider')] + #[Test] public function evaluateConditionCommonReturnsNullForNotMatchingApplicationContexts($notMatchingApplicationContextCondition): void { Environment::initialize( @@ -330,10 +322,8 @@ final class AbstractConditionMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider evaluateConditionCommonDevIpMaskDataProvider - */ + #[DataProvider('evaluateConditionCommonDevIpMaskDataProvider')] + #[Test] public function evaluateConditionCommonEvaluatesIpAddressesCorrectly($devIpMask, $actualIp, $expectedResult): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = $devIpMask; @@ -357,9 +347,7 @@ final class AbstractConditionMatcherTest extends UnitTestCase self::assertSame($expectedResult, $result); } - /** - * @test - */ + #[Test] public function typoScriptElseConditionIsNotEvaluatedAndAlwaysReturnsFalse(): void { $this->initConditionMatcher(); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/BackendWorkspaceRestrictionTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/BackendWorkspaceRestrictionTest.php index 97b896cb308a..c86d58976aff 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/BackendWorkspaceRestrictionTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/BackendWorkspaceRestrictionTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\BackendWorkspaceRestriction; use TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction\AbstractRestrictionTestCase; final class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase { - /** - * @test - */ + #[Test] public function buildExpressionAddsLiveWorkspaceWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -35,9 +34,7 @@ final class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."t3ver_wsid" = 0) OR ("aTable"."t3ver_state" <= 0))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsNonLiveWorkspaceWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -48,9 +45,7 @@ final class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."t3ver_wsid" = 42) OR ("aTable"."t3ver_state" <= 0))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsLiveWorkspaceLimitedWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ @@ -61,9 +56,7 @@ final class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."t3ver_wsid" = 0) AND ("aTable"."t3ver_oid" = 0))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsNonLiveWorkspaceLimitedWhereClause(): void { $GLOBALS['TCA']['aTable']['ctrl'] = [ diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/FrontendWorkspaceRestrictionTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/FrontendWorkspaceRestrictionTest.php index 321bbccce572..af9a2f1ee6e6 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/FrontendWorkspaceRestrictionTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Database/Query/Restriction/FrontendWorkspaceRestrictionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Database\Query\Restriction; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Query\Restriction\FrontendWorkspaceRestriction; use TYPO3\CMS\Core\Tests\Unit\Database\Query\Restriction\AbstractRestrictionTestCase; @@ -24,9 +25,7 @@ final class FrontendWorkspaceRestrictionTest extends AbstractRestrictionTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function buildExpressionAddsLiveWorkspaceWhereClause(): void { $GLOBALS['TCA'] = [ @@ -42,9 +41,7 @@ final class FrontendWorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(("aTable"."t3ver_state" <= 0) AND ("aTable"."t3ver_oid" = 0))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsNonLiveWorkspaceWhereClause(): void { $GLOBALS['TCA'] = [ @@ -60,9 +57,7 @@ final class FrontendWorkspaceRestrictionTest extends AbstractRestrictionTestCase self::assertSame('(((("aTable"."t3ver_wsid" = 0) OR ("aTable"."t3ver_wsid" = 42))) AND ("aTable"."t3ver_oid" = 0))', (string)$expression); } - /** - * @test - */ + #[Test] public function buildExpressionAddsNonLiveWorkspaceExclusiveWhereClause(): void { $GLOBALS['TCA'] = [ diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Domain/Repository/PageRepositoryTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Domain/Repository/PageRepositoryTest.php index 11a3fc81c366..5d4f51e64e33 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Domain/Repository/PageRepositoryTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Domain/Repository/PageRepositoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Domain\Repository; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; @@ -63,9 +64,7 @@ final class PageRepositoryTest extends UnitTestCase /////////////////////////////// // Tests concerning getExtURL /////////////////////////////// - /** - * @test - */ + #[Test] public function getExtUrlForDokType3UsesTheSameValue(): void { self::assertEquals('http://www.example.com', $this->pageSelectObject->getExtURL([ @@ -74,9 +73,7 @@ final class PageRepositoryTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function getExtUrlForDokType3PrependsSiteUrl(): void { $request = (new ServerRequest('https://foo.de', 'GET')) @@ -91,9 +88,7 @@ final class PageRepositoryTest extends UnitTestCase unset($GLOBALS['TYPO3_REQUEST']); } - /** - * @test - */ + #[Test] public function getExtUrlForDokType3AssumesAbsoluteUrl(): void { self::assertEquals('/hello/world/', $this->pageSelectObject->getExtURL([ @@ -102,9 +97,7 @@ final class PageRepositoryTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function getExtUrlForDokType3UsesEmailAsSameValue(): void { self::assertEquals('mailto:mail@typo3-test.com', $this->pageSelectObject->getExtURL([ @@ -113,9 +106,7 @@ final class PageRepositoryTest extends UnitTestCase ])); } - /** - * @test - */ + #[Test] public function getExtUrlForDokType3UsesValidEmailWithoutProtocolAsEmail(): void { self::assertEquals('mailto:mail@typo3-test.com', $this->pageSelectObject->getExtURL([ diff --git a/typo3/sysext/core/Tests/UnitDeprecated/FormProtection/FormProtectionFactoryTest.php b/typo3/sysext/core/Tests/UnitDeprecated/FormProtection/FormProtectionFactoryTest.php index c87306a86a5c..8ac94151a271 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/FormProtection/FormProtectionFactoryTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/FormProtection/FormProtectionFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\FormProtection; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Cache\Backend\TransientMemoryBackend; @@ -65,9 +66,7 @@ final class FormProtectionFactoryTest extends UnitTestCase ///////////////////////// // Tests concerning get ///////////////////////// - /** - * @test - */ + #[Test] public function getForNotExistingClassThrowsException(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); @@ -77,9 +76,7 @@ final class FormProtectionFactoryTest extends UnitTestCase FormProtectionFactory::get('noSuchClass'); } - /** - * @test - */ + #[Test] public function getForClassThatIsNoFormProtectionSubclassThrowsException(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); @@ -89,9 +86,7 @@ final class FormProtectionFactoryTest extends UnitTestCase FormProtectionFactory::get(\stdClass::class); } - /** - * @test - */ + #[Test] public function getForTypeBackEndWithExistingBackEndReturnsBackEndFormProtection(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); @@ -107,9 +102,7 @@ final class FormProtectionFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getForTypeBackEndCalledTwoTimesReturnsTheSameInstance(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); @@ -127,9 +120,7 @@ final class FormProtectionFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getForTypeInstallToolReturnsInstallToolFormProtection(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); @@ -139,9 +130,7 @@ final class FormProtectionFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getForTypeInstallToolCalledTwoTimesReturnsTheSameInstance(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); @@ -152,9 +141,7 @@ final class FormProtectionFactoryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getForTypesInstallToolAndDisabledReturnsDifferentInstances(): void { GeneralUtility::addInstance(FormProtectionFactory::class, $this->subject); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Resource/Utility/FileExtensionFilterTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Resource/Utility/FileExtensionFilterTest.php index 0d34511a54e0..7eb0ce30e922 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Resource/Utility/FileExtensionFilterTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Resource/Utility/FileExtensionFilterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Resource\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\DataHandling\DataHandler; use TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -50,9 +52,9 @@ final class FileExtensionFilterTest extends UnitTestCase * @param array|string $allowed * @param array|string $disallowed * @param array|string $values - * @test - * @dataProvider invalidInlineChildrenFilterParametersDataProvider */ + #[DataProvider('invalidInlineChildrenFilterParametersDataProvider')] + #[Test] public function areInlineChildrenFilteredWithInvalidParameters($allowed, $disallowed, $values): void { $parameters = [ diff --git a/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/Parser/TypoScriptParserTest.php b/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/Parser/TypoScriptParserTest.php index c2db2b2fde5e..614681076532 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/Parser/TypoScriptParserTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/Parser/TypoScriptParserTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\TypoScript\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Backend\Configuration\TypoScript\ConditionMatching\ConditionMatcher; use TYPO3\CMS\Core\Cache\CacheManager; @@ -228,10 +230,8 @@ final class TypoScriptParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider executeValueModifierDataProvider - */ + #[DataProvider('executeValueModifierDataProvider')] + #[Test] public function executeValueModifierReturnsModifiedResult( string $modifierName, string $currentValue, @@ -289,10 +289,8 @@ final class TypoScriptParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider executeGetEnvModifierDataProvider - */ + #[DataProvider('executeGetEnvModifierDataProvider')] + #[Test] public function executeGetEnvModifierReturnsModifiedResult( array $environmentVariables, ?string $currentValue, @@ -335,10 +333,8 @@ final class TypoScriptParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider executeValueModifierInvalidDataProvider - */ + #[DataProvider('executeValueModifierInvalidDataProvider')] + #[Test] public function executeValueModifierThrowsException( string $modifierName, string $currentValue, @@ -349,9 +345,7 @@ final class TypoScriptParserTest extends UnitTestCase $this->typoScriptParser->_call('executeValueModifier', $modifierName, $modifierArgument, $currentValue); } - /** - * @test - */ + #[Test] public function invalidCharactersInObjectNamesAreReported(): void { $timeTrackerMock = $this->createMock(TimeTracker::class); @@ -372,10 +366,8 @@ final class TypoScriptParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidConditionsDataProvider - */ + #[DataProvider('invalidConditionsDataProvider')] + #[Test] public function invalidConditionsAreReported(string $condition, bool $isValid): void { $timeTrackerMock = $this->createMock(TimeTracker::class); @@ -388,9 +380,7 @@ final class TypoScriptParserTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function emptyConditionIsReported(): void { $timeTrackerMock = $this->createMock(TimeTracker::class); @@ -411,10 +401,8 @@ final class TypoScriptParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider doubleSlashCommentsDataProvider - */ + #[DataProvider('doubleSlashCommentsDataProvider')] + #[Test] public function doubleSlashCommentsAreValid(string $typoScript): void { $this->typoScriptParser->parse($typoScript); @@ -439,10 +427,8 @@ final class TypoScriptParserTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider includeFileDataProvider - */ + #[DataProvider('includeFileDataProvider')] + #[Test] public function includeFilesWithConditions(string $typoScript): void { // This test triggers a BackendUtility::BEgetRootLine() down below, we need to suppress the cache call @@ -661,10 +647,8 @@ test.TYPO3Forever.TypoScript = 1 ]; } - /** - * @test - * @dataProvider importFilesDataProvider - */ + #[DataProvider('importFilesDataProvider')] + #[Test] public function importFiles(string $typoScript, string $expected): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = 'secret-encryption-key-test'; @@ -673,10 +657,8 @@ test.TYPO3Forever.TypoScript = 1 self::assertEquals($expected, $resolvedIncludeLines); } - /** - * @dataProvider typoScriptIsParsedToArrayDataProvider - * @test - */ + #[DataProvider('typoScriptIsParsedToArrayDataProvider')] + #[Test] public function typoScriptIsParsedToArray(string $typoScript, array $expected): void { $this->typoScriptParser->parse($typoScript); @@ -1117,9 +1099,7 @@ test.TYPO3Forever.TypoScript = 1 ]; } - /** - * @test - */ + #[Test] public function setValCanBeCalledWithArrayValueParameter(): void { $string = ''; @@ -1136,9 +1116,7 @@ test.TYPO3Forever.TypoScript = 1 $mock($typoScriptParser); } - /** - * @test - */ + #[Test] public function setValCanBeCalledWithStringValueParameter(): void { $string = ''; @@ -1155,10 +1133,8 @@ test.TYPO3Forever.TypoScript = 1 $mock($typoScriptParser); } - /** - * @test - * @dataProvider parseNextKeySegmentReturnsCorrectNextKeySegmentDataProvider - */ + #[DataProvider('parseNextKeySegmentReturnsCorrectNextKeySegmentDataProvider')] + #[Test] public function parseNextKeySegmentReturnsCorrectNextKeySegment( string $key, string $expectedKeySegment, @@ -1226,9 +1202,7 @@ test.TYPO3Forever.TypoScript = 1 ]; } - /** - * @test - */ + #[Test] public function typoScriptWithModifierReturningNullDoesNotCreateErrors(): void { $typoScript = ' diff --git a/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/TemplateServiceTest.php b/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/TemplateServiceTest.php index 39d97a4cee01..dc0bc6f47d81 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/TemplateServiceTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/TypoScript/TemplateServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\TypoScript; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Database\ConnectionPool; @@ -77,9 +78,7 @@ final class TemplateServiceTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function extensionStaticFilesAreNotProcessedIfNotExplicitlyRequested(): void { $queryBuilderMock = $this->createMock(QueryBuilder::class); @@ -96,9 +95,7 @@ final class TemplateServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function extensionStaticsAreProcessedIfExplicitlyRequested(): void { $queryBuilderMock = $this->createMock(QueryBuilder::class); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Utility/GeneralUtilityTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Utility/GeneralUtilityTest.php index 1bdf2cf428b1..576dcb6f8406 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Utility/GeneralUtilityTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Utility/GeneralUtilityTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class GeneralUtilityTest extends UnitTestCase { - /** - * @test - * @dataProvider gpMergedDataProvider - */ + #[DataProvider('gpMergedDataProvider')] + #[Test] public function gpMergedWillMergeArraysFromGetAndPost($get, $post, $expected): void { $_POST = $post; @@ -66,20 +66,16 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getAndPostDataProvider - */ + #[DataProvider('getAndPostDataProvider')] + #[Test] public function canRetrieveGlobalInputsThroughGet($key, $get, $expected): void { $_GET = $get; self::assertSame($expected, GeneralUtility::_GET($key)); } - /** - * @test - * @dataProvider getAndPostDataProvider - */ + #[DataProvider('getAndPostDataProvider')] + #[Test] public function canRetrieveGlobalInputsThroughPost($key, $post, $expected): void { $_POST = $post; @@ -104,10 +100,8 @@ final class GeneralUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider gpDataProvider - */ + #[DataProvider('gpDataProvider')] + #[Test] public function canRetrieveValueWithGP($key, $get, $post, $expected): void { $_GET = $get; diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Utility/PathUtilityPublicPathsTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Utility/PathUtilityPublicPathsTest.php index df8b34c8f427..d02e2caec604 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Utility/PathUtilityPublicPathsTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Utility/PathUtilityPublicPathsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Resource\Exception\InvalidFileException; use TYPO3\CMS\Core\Utility\PathUtility; @@ -89,9 +91,9 @@ final class PathUtilityPublicPathsTest extends UnitTestCase /** * @throws InvalidFileException - * @dataProvider getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider - * @test */ + #[DataProvider('getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider')] + #[Test] public function getPublicResourceWebPathResolvesUrlsCorrectly(string $pathReference, string $expectedUrl, callable $setup): void { $setup(); diff --git a/typo3/sysext/core/Tests/UnitDeprecated/Utility/ResourceUtilityTest.php b/typo3/sysext/core/Tests/UnitDeprecated/Utility/ResourceUtilityTest.php index 3ec11a76e72e..0ee3c1316b3f 100644 --- a/typo3/sysext/core/Tests/UnitDeprecated/Utility/ResourceUtilityTest.php +++ b/typo3/sysext/core/Tests/UnitDeprecated/Utility/ResourceUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\UnitDeprecated\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\ResourceUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -63,10 +65,8 @@ final class ResourceUtilityTest extends UnitTestCase ]; } - /** - * @dataProvider recursiveFileListSortingHelperTestDataProvider - * @test - */ + #[DataProvider('recursiveFileListSortingHelperTestDataProvider')] + #[Test] public function recursiveFileListSortingHelperCorrectlySorts(array $unsortedList, array $expectedList): void { $result = $unsortedList; diff --git a/typo3/sysext/dashboard/Tests/Unit/DashboardPresetRegistryTest.php b/typo3/sysext/dashboard/Tests/Unit/DashboardPresetRegistryTest.php index 919869e94069..346a53cfa72e 100644 --- a/typo3/sysext/dashboard/Tests/Unit/DashboardPresetRegistryTest.php +++ b/typo3/sysext/dashboard/Tests/Unit/DashboardPresetRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Dashboard\Tests\Unit; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Dashboard\DashboardPreset; use TYPO3\CMS\Dashboard\DashboardPresetRegistry; @@ -35,9 +36,7 @@ final class DashboardPresetRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function withoutRegisteredPresetsOnlyFallbackPresetsIsReturned(): void { $presets = $this->subject->getDashboardPresets(); @@ -47,9 +46,7 @@ final class DashboardPresetRegistryTest extends UnitTestCase self::assertInstanceOf(DashboardPreset::class, reset($presets)); } - /** - * @test - */ + #[Test] public function getWidgetsMethodReturnsDashboardPresetsObjects(): void { $dashboardPreset1 = new DashboardPreset('identifier1', 'title1', 'description1'); @@ -63,9 +60,7 @@ final class DashboardPresetRegistryTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function dashboardPresetsGetRegistered(): void { // If no dashboard preset is registered, it will return a fallback preset diff --git a/typo3/sysext/dashboard/Tests/Unit/DependencyInjection/DashboardWidgetPassTest.php b/typo3/sysext/dashboard/Tests/Unit/DependencyInjection/DashboardWidgetPassTest.php index acae44441c6e..0db4b7029fe8 100644 --- a/typo3/sysext/dashboard/Tests/Unit/DependencyInjection/DashboardWidgetPassTest.php +++ b/typo3/sysext/dashboard/Tests/Unit/DependencyInjection/DashboardWidgetPassTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Dashboard\Tests\Unit\DependencyInjection; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -41,9 +42,7 @@ final class DashboardWidgetPassTest extends UnitTestCase $this->widgetRegistryDefinition = $this->createMock(Definition::class); } - /** - * @test - */ + #[Test] public function doesNothingIfWidgetRegistryIsUnknown(): void { $this->container->method('hasDefinition')->with(WidgetRegistry::class)->willReturn(false); @@ -52,9 +51,7 @@ final class DashboardWidgetPassTest extends UnitTestCase $this->subject->process($this->container); } - /** - * @test - */ + #[Test] public function doesNothingIfNoWidgetsAreTagged(): void { $this->container->method('hasDefinition')->with(WidgetRegistry::class)->willReturn(true); @@ -65,9 +62,7 @@ final class DashboardWidgetPassTest extends UnitTestCase $this->subject->process($this->container); } - /** - * @test - */ + #[Test] public function makesWidgetPublic(): void { $this->container->method('hasDefinition')->with(WidgetRegistry::class)->willReturn(true); @@ -82,9 +77,7 @@ final class DashboardWidgetPassTest extends UnitTestCase $this->subject->process($this->container); } - /** - * @test - */ + #[Test] public function registersTaggedWidgetWithMinimumConfigurationInRegistry(): void { $this->container->method('hasDefinition')->with(WidgetRegistry::class)->willReturn(true); @@ -132,9 +125,7 @@ final class DashboardWidgetPassTest extends UnitTestCase $this->subject->process($this->container); } - /** - * @test - */ + #[Test] public function registersWidgetToMultipleGroupsByComma(): void { $this->container->method('hasDefinition')->with(WidgetRegistry::class)->willReturn(true); @@ -176,9 +167,7 @@ final class DashboardWidgetPassTest extends UnitTestCase $this->subject->process($this->container); } - /** - * @test - */ + #[Test] public function registersTaggedWidgetWithMaximumConfigurationInRegistry(): void { $this->container->method('hasDefinition')->with(WidgetRegistry::class)->willReturn(true); diff --git a/typo3/sysext/dashboard/Tests/Unit/WidgetGroupRegistryTest.php b/typo3/sysext/dashboard/Tests/Unit/WidgetGroupRegistryTest.php index f599dea70a14..f43c6f6f05b3 100644 --- a/typo3/sysext/dashboard/Tests/Unit/WidgetGroupRegistryTest.php +++ b/typo3/sysext/dashboard/Tests/Unit/WidgetGroupRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Dashboard\Tests\Unit; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Dashboard\WidgetGroup; use TYPO3\CMS\Dashboard\WidgetGroupRegistry; @@ -35,17 +36,13 @@ final class WidgetGroupRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function initiallyZeroWidgetGroupsAreRegistered(): void { self::assertCount(0, $this->subject->getWidgetGroups()); } - /** - * @test - */ + #[Test] public function getWidgetsMethodReturnsWidgetGroupObjects(): void { $widgetGroup1 = new WidgetGroup('identifier1', 'title1'); @@ -60,9 +57,7 @@ final class WidgetGroupRegistryTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function widgetGroupsGetRegistered(): void { self::assertCount(0, $this->subject->getWidgetGroups()); @@ -89,9 +84,7 @@ final class WidgetGroupRegistryTest extends UnitTestCase self::assertEquals(['identifier', 'identifier2'], array_keys($widgetGroups)); } - /** - * @test - */ + #[Test] public function alternativeRepositoryObjectReturnsSameResults(): void { $widgetGroup1 = new WidgetGroup('identifier1', 'title1'); diff --git a/typo3/sysext/extbase/Tests/Unit/Configuration/FrontendConfigurationManagerTest.php b/typo3/sysext/extbase/Tests/Unit/Configuration/FrontendConfigurationManagerTest.php index 7c1110ca1f9f..88dc3f0596d7 100644 --- a/typo3/sysext/extbase/Tests/Unit/Configuration/FrontendConfigurationManagerTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Configuration/FrontendConfigurationManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Domain\Repository\PageRepository; use TYPO3\CMS\Core\EventDispatcher\EventDispatcher; @@ -115,9 +116,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase $this->frontendConfigurationManager->_set('eventDispatcher', $this->createMock(EventDispatcher::class)); } - /** - * @test - */ + #[Test] public function setConfigurationResetsConfigurationCache(): void { $this->frontendConfigurationManager->_set('configurationCache', ['foo' => 'bar']); @@ -125,9 +124,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals([], $this->frontendConfigurationManager->_get('configurationCache')); } - /** - * @test - */ + #[Test] public function setConfigurationSetsExtensionAndPluginName(): void { $configuration = [ @@ -139,9 +136,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals('SomePluginName', $this->frontendConfigurationManager->_get('pluginName')); } - /** - * @test - */ + #[Test] public function setConfigurationConvertsTypoScriptArrayToPlainArray(): void { $configuration = [ @@ -159,9 +154,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $this->frontendConfigurationManager->_get('configuration')); } - /** - * @test - */ + #[Test] public function getConfigurationReturnsCachedResultOfCurrentPlugin(): void { $this->frontendConfigurationManager->_set('extensionName', 'CurrentExtensionName'); @@ -175,9 +168,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationReturnsCachedResultForGivenExtension(): void { $this->frontendConfigurationManager->_set('configurationCache', [ @@ -189,9 +180,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationRecursivelyMergesCurrentPluginConfigurationWithFrameworkConfiguration(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -239,9 +228,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationRecursivelyMergesPluginConfigurationOfSpecifiedPluginWithFrameworkConfiguration(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -287,9 +274,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationDoesNotOverrideConfigurationWithContextSpecificFrameworkConfigurationIfDifferentPluginIsSpecified(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -310,9 +295,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase $frontendConfigurationManager->getConfiguration('SomeExtensionName', 'SomePluginName'); } - /** - * @test - */ + #[Test] public function getConfigurationOverridesConfigurationWithContextSpecificFrameworkConfigurationIfNoPluginWasSpecified(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -342,9 +325,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($contextSpecificFrameworkConfiguration, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationOverridesConfigurationWithContextSpecificFrameworkConfigurationIfSpecifiedPluginIsTheCurrentPlugin(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -382,9 +363,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($contextSpecificFrameworkConfiguration, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationStoresResultInConfigurationCache(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -414,9 +393,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getConfigurationRetrievesStoragePidIncludingGivenStoragePidWithRecursiveSetForSingleStoragePid(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -444,9 +421,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase $frontendConfigurationManager->getConfiguration('SomeOtherExtensionName', 'SomeOtherCurrentPluginName'); } - /** - * @test - */ + #[Test] public function getConfigurationRetrievesStoragePidIncludingGivenStoragePidWithRecursiveSetForMultipleStoragePid(): void { $frontendConfigurationManager = $this->getAccessibleMock( @@ -474,17 +449,13 @@ final class FrontendConfigurationManagerTest extends UnitTestCase $frontendConfigurationManager->getConfiguration('SomeOtherExtensionName', 'SomeOtherCurrentPluginName'); } - /** - * @test - */ + #[Test] public function getContentObjectReturnsInstanceOfContentObjectRenderer(): void { self::assertInstanceOf(ContentObjectRenderer::class, $this->frontendConfigurationManager->getContentObject()); } - /** - * @test - */ + #[Test] public function getContentObjectTheCurrentContentObject(): void { $mockContentObject = $this->createMock(ContentObjectRenderer::class); @@ -492,9 +463,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertSame($this->frontendConfigurationManager->getContentObject(), $mockContentObject); } - /** - * @test - */ + #[Test] public function getTypoScriptSetupReturnsSetupFromRequest(): void { $frontendTypoScript = new FrontendTypoScript(new RootNode(), []); @@ -503,9 +472,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals(['foo' => 'bar'], $this->frontendConfigurationManager->_call('getTypoScriptSetup')); } - /** - * @test - */ + #[Test] public function getPluginConfigurationReturnsEmptyArrayIfNoPluginConfigurationWasFound(): void { $frontendTypoScript = new FrontendTypoScript(new RootNode(), []); @@ -520,9 +487,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getPluginConfigurationReturnsExtensionConfiguration(): void { $testSettings = [ @@ -553,9 +518,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getPluginConfigurationReturnsPluginConfiguration(): void { $testSettings = [ @@ -590,9 +553,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getPluginConfigurationRecursivelyMergesExtensionAndPluginConfiguration(): void { $testExtensionSettings = [ @@ -663,9 +624,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getControllerConfigurationReturnsEmptyArrayByDefault(): void { $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase'] = null; @@ -678,9 +637,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getControllerConfigurationReturnsConfigurationStoredInExtconf(): void { $controllerConfiguration = [ @@ -710,9 +667,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getContextSpecificFrameworkConfigurationCorrectlyCallsOverrideMethods(): void { $frameworkConfiguration = [ @@ -742,9 +697,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function mergeConfigurationIntoFrameworkConfigurationWorksAsExpected(): void { $configuration = [ @@ -765,9 +718,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideStoragePidIfStartingPointIsSetOverridesCorrectly(): void { $this->mockContentObject->data = ['pages' => '0', 'recursive' => 1]; @@ -785,9 +736,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideStoragePidIfStartingPointIsSetCorrectlyHandlesEmptyValuesFromPageRepository(): void { $this->mockContentObject->data = ['pages' => '0', 'recursive' => 1]; @@ -805,9 +754,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideConfigurationFromFlexFormChecksForDataIsString(): void { $flexFormService = $this->getMockBuilder(FlexFormService::class) @@ -829,9 +776,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideConfigurationFromFlexFormChecksForDataIsStringAndEmpty(): void { $flexFormService = $this->getMockBuilder(FlexFormService::class) @@ -849,9 +794,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideConfigurationFromFlexFormChecksForDataIsArray(): void { $flexFormService = $this->getMockBuilder(FlexFormService::class) @@ -869,9 +812,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideConfigurationFromFlexFormChecksForDataIsArrayAndEmpty(): void { $flexFormService = $this->getMockBuilder(FlexFormService::class) @@ -889,9 +830,7 @@ final class FrontendConfigurationManagerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function overrideConfigurationFromPluginOverridesCorrectly(): void { $frontendConfigurationManager = $this->getAccessibleMock( diff --git a/typo3/sysext/extbase/Tests/Unit/Domain/Model/CategoryTest.php b/typo3/sysext/extbase/Tests/Unit/Domain/Model/CategoryTest.php index 2fbc31ae60e7..4f8938404fd8 100644 --- a/typo3/sysext/extbase/Tests/Unit/Domain/Model/CategoryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Domain/Model/CategoryTest.php @@ -17,23 +17,20 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Domain\Model\Category; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CategoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getTitleInitiallyReturnsEmptyString(): void { $subject = new Category(); self::assertSame('', $subject->getTitle()); } - /** - * @test - */ + #[Test] public function setTitleSetsTitle(): void { $subject = new Category(); @@ -41,18 +38,14 @@ final class CategoryTest extends UnitTestCase self::assertSame('foo bar', $subject->getTitle()); } - /** - * @test - */ + #[Test] public function getDescriptionInitiallyReturnsEmptyString(): void { $subject = new Category(); self::assertSame('', $subject->getDescription()); } - /** - * @test - */ + #[Test] public function setDescriptionSetsDescription(): void { $subject = new Category(); @@ -60,18 +53,14 @@ final class CategoryTest extends UnitTestCase self::assertSame('foo bar', $subject->getDescription()); } - /** - * @test - */ + #[Test] public function getParentInitiallyReturnsNull(): void { $subject = new Category(); self::assertNull($subject->getParent()); } - /** - * @test - */ + #[Test] public function setParentSetsParent(): void { $parent = new Category(); diff --git a/typo3/sysext/extbase/Tests/Unit/DomainObject/AbstractEntityTest.php b/typo3/sysext/extbase/Tests/Unit/DomainObject/AbstractEntityTest.php index 5054a4a0c14b..82e549317db2 100644 --- a/typo3/sysext/extbase/Tests/Unit/DomainObject/AbstractEntityTest.php +++ b/typo3/sysext/extbase/Tests/Unit/DomainObject/AbstractEntityTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\DomainObject; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractEntityTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function objectIsNotDirtyAfterCallingMemorizeCleanStateWithSimpleProperties(): void { $domainObject = new class () extends AbstractEntity { @@ -36,9 +35,7 @@ final class AbstractEntityTest extends UnitTestCase self::assertFalse($domainObject->_isDirty()); } - /** - * @test - */ + #[Test] public function objectIsDirtyAfterCallingMemorizeCleanStateWithSimplePropertiesAndModifyingThePropertiesAfterwards(): void { $domainObject = new class () extends AbstractEntity { @@ -51,9 +48,7 @@ final class AbstractEntityTest extends UnitTestCase self::assertTrue($domainObject->_isDirty()); } - /** - * @test - */ + #[Test] public function objectIsNotDirtyAfterCallingMemorizeCleanStateWithObjectProperties(): void { $domainObject = new class () extends AbstractEntity { @@ -66,9 +61,7 @@ final class AbstractEntityTest extends UnitTestCase self::assertFalse($domainObject->_isDirty()); } - /** - * @test - */ + #[Test] public function objectIsNotDirtyAfterCallingMemorizeCleanStateWithOtherDomainObjectsAsProperties(): void { $domainObject = new class () extends AbstractEntity { diff --git a/typo3/sysext/extbase/Tests/Unit/Error/ErrorTest.php b/typo3/sysext/extbase/Tests/Unit/Error/ErrorTest.php index 27b50442a4a7..135391b2f3af 100644 --- a/typo3/sysext/extbase/Tests/Unit/Error/ErrorTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Error/ErrorTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Error; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Error; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ErrorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function theConstructorSetsTheErrorMessageCorrectly(): void { $errorMessage = 'The message'; @@ -32,9 +31,7 @@ final class ErrorTest extends UnitTestCase self::assertEquals($errorMessage, $error->getMessage()); } - /** - * @test - */ + #[Test] public function theConstructorSetsTheErrorCodeCorrectly(): void { $errorCode = 123456789; diff --git a/typo3/sysext/extbase/Tests/Unit/Error/MessageTest.php b/typo3/sysext/extbase/Tests/Unit/Error/MessageTest.php index 839ff8eebf7c..2cc5df6c9d45 100644 --- a/typo3/sysext/extbase/Tests/Unit/Error/MessageTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Error/MessageTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Error; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Message; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MessageTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function theConstructorSetsTheMessageMessageCorrectly(): void { $messageMessage = 'The message'; @@ -32,9 +31,7 @@ final class MessageTest extends UnitTestCase self::assertEquals($messageMessage, $error->getMessage()); } - /** - * @test - */ + #[Test] public function theConstructorSetsTheMessageCodeCorrectly(): void { $messageCode = 123456789; @@ -42,9 +39,7 @@ final class MessageTest extends UnitTestCase self::assertEquals($messageCode, $error->getCode()); } - /** - * @test - */ + #[Test] public function theConstructorSetsTheMessageArgumentsCorrectly(): void { $messageArguments = ['foo', 'bar']; @@ -52,9 +47,7 @@ final class MessageTest extends UnitTestCase self::assertEquals($messageArguments, $error->getArguments()); } - /** - * @test - */ + #[Test] public function theConstructorSetsTheMessageTitleCorrectly(): void { $messageTitle = 'Title'; @@ -62,27 +55,21 @@ final class MessageTest extends UnitTestCase self::assertEquals($messageTitle, $error->getTitle()); } - /** - * @test - */ + #[Test] public function renderRendersCorrectlyWithoutArguments(): void { $error = new Message('Message', 1); self::assertEquals('Message', $error->render()); } - /** - * @test - */ + #[Test] public function renderRendersCorrectlyWithArguments(): void { $error = new Message('Foo is %s and Bar is %s', 1, ['baz', 'qux']); self::assertEquals('Foo is baz and Bar is qux', $error->render()); } - /** - * @test - */ + #[Test] public function toStringCallsRender(): void { $error = new Message('Foo is %s and Bar is %s', 1, ['baz', 'qux']); diff --git a/typo3/sysext/extbase/Tests/Unit/Error/ResultTest.php b/typo3/sysext/extbase/Tests/Unit/Error/ResultTest.php index 4c48a699dbd7..30161efcf1e7 100644 --- a/typo3/sysext/extbase/Tests/Unit/Error/ResultTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Error/ResultTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Error; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Extbase\Error\Result; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -45,10 +47,8 @@ final class ResultTest extends UnitTestCase return $this->createMock('TYPO3\\CMS\\Extbase\\Error\\' . $type); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function addedMessagesShouldBeRetrievableAgain(string $dataTypeInSingular, string $dataTypeInPlural): void { $message = $this->getMockMessage($dataTypeInSingular); @@ -58,10 +58,8 @@ final class ResultTest extends UnitTestCase self::assertEquals([$message], $this->result->{$getterMethodName}()); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function getMessageShouldNotBeRecursive(string $dataTypeInSingular, string $dataTypeInPlural): void { $message = $this->getMockMessage($dataTypeInSingular); @@ -71,10 +69,8 @@ final class ResultTest extends UnitTestCase self::assertEquals([], $this->result->{$getterMethodName}()); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function getFirstMessageShouldReturnFirstMessage(string $dataTypeInSingular, string $dataTypeInPlural): void { $message1 = $this->getMockMessage($dataTypeInSingular); @@ -86,9 +82,7 @@ final class ResultTest extends UnitTestCase self::assertSame($message1, $this->result->{$getterMethodName}()); } - /** - * @test - */ + #[Test] public function forPropertyShouldReturnSubResult(): void { $container2 = $this->result->forProperty('foo.bar'); @@ -96,28 +90,22 @@ final class ResultTest extends UnitTestCase self::assertSame($container2, $this->result->forProperty('foo')->forProperty('bar')); } - /** - * @test - */ + #[Test] public function forPropertyWithEmptyStringShouldReturnSelf(): void { $container2 = $this->result->forProperty(''); self::assertSame($container2, $this->result); } - /** - * @test - */ + #[Test] public function forPropertyWithNullShouldReturnSelf(): void { $container2 = $this->result->forProperty(null); self::assertSame($container2, $this->result); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function hasMessagesShouldReturnTrueIfTopLevelObjectHasMessages(string $dataTypeInSingular, string $dataTypeInPlural): void { $message = $this->getMockMessage($dataTypeInSingular); @@ -127,10 +115,8 @@ final class ResultTest extends UnitTestCase self::assertTrue($this->result->{$methodName}()); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function hasMessagesShouldReturnTrueIfSubObjectHasErrors(string $dataTypeInSingular, string $dataTypeInPlural): void { $addMethodName = 'add' . $dataTypeInSingular; @@ -140,10 +126,8 @@ final class ResultTest extends UnitTestCase self::assertTrue($this->result->{$methodName}()); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function hasMessagesShouldReturnFalseIfSubObjectHasNoErrors(string $dataTypeInSingular, string $dataTypeInPlural): void { $methodName = 'has' . $dataTypeInPlural; @@ -152,10 +136,8 @@ final class ResultTest extends UnitTestCase self::assertFalse($this->result->{$methodName}()); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function getFlattenedMessagesShouldReturnAllSubMessages(string $dataTypeInSingular, string $dataTypeInPlural): void { $message1 = $this->getMockMessage($dataTypeInSingular); @@ -179,10 +161,8 @@ final class ResultTest extends UnitTestCase self::assertEquals($expected, $this->result->{$getMethodName}()); } - /** - * @test - * @dataProvider dataTypes - */ + #[DataProvider('dataTypes')] + #[Test] public function getFlattenedMessagesShouldNotContainEmptyResults(string $dataTypeInSingular, string $dataTypeInPlural): void { $message1 = $this->getMockMessage($dataTypeInSingular); @@ -198,9 +178,7 @@ final class ResultTest extends UnitTestCase self::assertEquals($expected, $this->result->{$getMethodName}()); } - /** - * @test - */ + #[Test] public function mergeShouldMergeTwoResults(): void { $notice1 = $this->getMockMessage('Notice'); @@ -231,9 +209,7 @@ final class ResultTest extends UnitTestCase self::assertSame([$error1, $error2], $this->result->forProperty('foo')->getErrors()); } - /** - * @test - */ + #[Test] public function getFirstReturnsFalseOnEmptyResult(): void { $subject = new Result(); diff --git a/typo3/sysext/extbase/Tests/Unit/Event/Configuration/BeforeFlexFormConfigurationOverrideEventTest.php b/typo3/sysext/extbase/Tests/Unit/Event/Configuration/BeforeFlexFormConfigurationOverrideEventTest.php index be3c604e5b89..9f1523aefdde 100644 --- a/typo3/sysext/extbase/Tests/Unit/Event/Configuration/BeforeFlexFormConfigurationOverrideEventTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Event/Configuration/BeforeFlexFormConfigurationOverrideEventTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Event\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Event\Configuration\BeforeFlexFormConfigurationOverrideEvent; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class BeforeFlexFormConfigurationOverrideEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function canAccessCurrentConfiguration(): void { $event = new BeforeFlexFormConfigurationOverrideEvent( @@ -38,9 +37,7 @@ final class BeforeFlexFormConfigurationOverrideEventTest extends UnitTestCase self::assertSame(['foo' => 'bar'], $event->getFlexFormConfiguration()); } - /** - * @test - */ + #[Test] public function canOverrideFlexFormConfiguration(): void { $event = new BeforeFlexFormConfigurationOverrideEvent( diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentTest.php index 5ceaf22f4c61..6baa79ed638c 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Mvc\Controller\Argument; use TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter; use TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface; @@ -34,9 +36,7 @@ final class ArgumentTest extends UnitTestCase $this->objectArgument = new Argument('someName', 'DateTime'); } - /** - * @test - */ + #[Test] public function constructingArgumentWithoutNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -44,9 +44,7 @@ final class ArgumentTest extends UnitTestCase new Argument('', 'Text'); } - /** - * @test - */ + #[Test] public function constructingArgumentWithInvalidNameThrowsException(): void { $this->expectException(\InvalidArgumentException::class); @@ -54,18 +52,14 @@ final class ArgumentTest extends UnitTestCase new Argument(new \ArrayObject(), 'Text'); } - /** - * @test - */ + #[Test] public function passingDataTypeToConstructorReallySetsTheDataType(): void { self::assertEquals('string', $this->simpleValueArgument->getDataType(), 'The specified data type has not been set correctly.'); self::assertEquals('someName', $this->simpleValueArgument->getName(), 'The specified name has not been set correctly.'); } - /** - * @test - */ + #[Test] public function setShortNameProvidesFluentInterface(): void { $returnedArgument = $this->simpleValueArgument->setShortName('x'); @@ -82,10 +76,10 @@ final class ArgumentTest extends UnitTestCase } /** - * @test - * @dataProvider invalidShortNames * @param string|int $invalidShortName */ + #[DataProvider('invalidShortNames')] + #[Test] public function shortNameShouldThrowExceptionIfInvalid($invalidShortName): void { $this->expectException(\InvalidArgumentException::class); @@ -93,18 +87,14 @@ final class ArgumentTest extends UnitTestCase $this->simpleValueArgument->setShortName($invalidShortName); } - /** - * @test - */ + #[Test] public function shortNameCanBeRetrievedAgain(): void { $this->simpleValueArgument->setShortName('x'); self::assertEquals('x', $this->simpleValueArgument->getShortName()); } - /** - * @test - */ + #[Test] public function setRequiredShouldProvideFluentInterfaceAndReallySetRequiredState(): void { $returnedArgument = $this->simpleValueArgument->setRequired(true); @@ -112,9 +102,7 @@ final class ArgumentTest extends UnitTestCase self::assertTrue($this->simpleValueArgument->isRequired()); } - /** - * @test - */ + #[Test] public function setDefaultValueShouldProvideFluentInterfaceAndReallySetDefaultValue(): void { $returnedArgument = $this->simpleValueArgument->setDefaultValue('default'); @@ -122,9 +110,7 @@ final class ArgumentTest extends UnitTestCase self::assertSame('default', $this->simpleValueArgument->getDefaultValue()); } - /** - * @test - */ + #[Test] public function setValidatorShouldProvideFluentInterfaceAndReallySetValidator(): void { $mockValidator = $this->createMock(ValidatorInterface::class); @@ -133,18 +119,14 @@ final class ArgumentTest extends UnitTestCase self::assertSame($mockValidator, $this->simpleValueArgument->getValidator()); } - /** - * @test - */ + #[Test] public function setValueProvidesFluentInterface(): void { $returnedArgument = $this->simpleValueArgument->setValue(null); self::assertSame($this->simpleValueArgument, $returnedArgument, 'The returned argument is not the original argument.'); } - /** - * @test - */ + #[Test] public function setValueUsesNullAsIs(): void { $this->simpleValueArgument = new Argument('dummy', 'string'); @@ -152,9 +134,7 @@ final class ArgumentTest extends UnitTestCase self::assertNull($this->simpleValueArgument->getValue()); } - /** - * @test - */ + #[Test] public function defaultPropertyMappingConfigurationDoesNotAllowCreationOrModificationOfObjects(): void { self::assertNull($this->simpleValueArgument->getPropertyMappingConfiguration()->getConfigurationValue(PersistentObjectConverter::class, PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED)); diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentsTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentsTest.php index 96b2e70ba371..9e0f9108affe 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentsTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/ArgumentsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Mvc\Controller\Argument; use TYPO3\CMS\Extbase\Mvc\Controller\Arguments; use TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ArgumentsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function argumentsObjectIsOfScopePrototype(): void { $arguments1 = new Arguments(); @@ -34,9 +33,7 @@ final class ArgumentsTest extends UnitTestCase self::assertNotSame($arguments1, $arguments2, 'The arguments object is not of scope prototype!'); } - /** - * @test - */ + #[Test] public function addingAnArgumentManuallyWorks(): void { $arguments = new Arguments(); @@ -45,9 +42,7 @@ final class ArgumentsTest extends UnitTestCase self::assertSame($newArgument, $arguments->getArgument('argumentName1234'), 'The added and retrieved argument is not the same.'); } - /** - * @test - */ + #[Test] public function addingAnArgumentReplacesArgumentWithSameName(): void { $arguments = new Arguments(); @@ -66,9 +61,7 @@ final class ArgumentsTest extends UnitTestCase self::assertSame($mockSecondArgument, $arguments->getArgument('argumentName1234'), 'The added and retrieved argument is not the same.'); } - /** - * @test - */ + #[Test] public function addNewArgumentProvidesFluentInterface(): void { $arguments = new Arguments(); @@ -76,9 +69,7 @@ final class ArgumentsTest extends UnitTestCase self::assertInstanceOf(Argument::class, $newArgument); } - /** - * @test - */ + #[Test] public function addingArgumentThroughArrayAccessWorks(): void { $mockArgument = $this->getMockBuilder(Argument::class) @@ -92,9 +83,7 @@ final class ArgumentsTest extends UnitTestCase self::assertSame($mockArgument, $arguments->getArgument('argumentName1234'), 'Added and retrieved arguments are not the same.'); } - /** - * @test - */ + #[Test] public function retrievingArgumentThroughArrayAccessWorks(): void { $mockArgument = $this->getMockBuilder(Argument::class) @@ -107,9 +96,7 @@ final class ArgumentsTest extends UnitTestCase self::assertSame($mockArgument, $arguments['argumentName1234'], 'Argument retrieved by array access is not the one we added.'); } - /** - * @test - */ + #[Test] public function getArgumentWithNonExistingArgumentNameThrowsException(): void { $arguments = new Arguments(); @@ -120,9 +107,7 @@ final class ArgumentsTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function issetReturnsCorrectResult(): void { $mockArgument = $this->getMockBuilder(Argument::class) @@ -136,9 +121,7 @@ final class ArgumentsTest extends UnitTestCase self::assertTrue(isset($arguments['argumentName1234']), 'isset() did not return TRUE.'); } - /** - * @test - */ + #[Test] public function getArgumentNamesReturnsNamesOfAddedArguments(): void { $mockArgument1 = $this->getMockBuilder(Argument::class) @@ -164,9 +147,7 @@ final class ArgumentsTest extends UnitTestCase self::assertEquals($expectedArgumentNames, $arguments->getArgumentNames(), 'Returned argument names were not as expected.'); } - /** - * @test - */ + #[Test] public function getArgumentShortNamesReturnsShortNamesOfAddedArguments(): void { $mockArgument1 = $this->getMockBuilder(Argument::class) @@ -195,9 +176,7 @@ final class ArgumentsTest extends UnitTestCase self::assertEquals($expectedShortNames, $arguments->getArgumentShortNames(), 'Returned argument short names were not as expected.'); } - /** - * @test - */ + #[Test] public function addNewArgumentCreatesAndAddsNewArgument(): void { $mockArgument = $this->getMockBuilder(Argument::class) @@ -212,9 +191,7 @@ final class ArgumentsTest extends UnitTestCase self::assertSame($addedArgument, $retrievedArgument, 'The added and the retrieved argument are not the same.'); } - /** - * @test - */ + #[Test] public function addNewArgumentAssumesTextDataTypeByDefault(): void { $mockArgument = $this->getMockBuilder(Argument::class) @@ -226,9 +203,7 @@ final class ArgumentsTest extends UnitTestCase $arguments->addNewArgument('dummyName'); } - /** - * @test - */ + #[Test] public function addNewArgumentCanAddArgumentsMarkedAsRequired(): void { $arguments = new Arguments(); @@ -236,9 +211,7 @@ final class ArgumentsTest extends UnitTestCase self::assertTrue($argument->isRequired()); } - /** - * @test - */ + #[Test] public function addNewArgumentCanAddArgumentsMarkedAsOptionalWithDefaultValues(): void { $arguments = new Arguments(); @@ -246,9 +219,7 @@ final class ArgumentsTest extends UnitTestCase self::assertFalse($argument->isRequired()); } - /** - * @test - */ + #[Test] public function callingInvalidMethodThrowsException(): void { $this->expectException(\LogicException::class); @@ -257,9 +228,7 @@ final class ArgumentsTest extends UnitTestCase $arguments->nonExistingMethod(); } - /** - * @test - */ + #[Test] public function removeAllClearsAllArguments(): void { $mockArgument1 = $this->getMockBuilder(Argument::class) diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/MvcPropertyMappingConfigurationServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/MvcPropertyMappingConfigurationServiceTest.php index 72c7383963a6..17ec979a7de8 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/MvcPropertyMappingConfigurationServiceTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/Controller/MvcPropertyMappingConfigurationServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Error\Http\BadRequestException; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Extbase\Mvc\Controller\Argument; @@ -120,10 +122,8 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider dataProviderForGenerateTrustedPropertiesToken - */ + #[DataProvider('dataProviderForGenerateTrustedPropertiesToken')] + #[Test] public function generateTrustedPropertiesTokenGeneratesTheCorrectHashesInNormalOperation($input, $expected): void { $requestHashService = $this->getMockBuilder(MvcPropertyMappingConfigurationService::class) @@ -133,10 +133,8 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $requestHashService->generateTrustedPropertiesToken($input); } - /** - * @test - * @dataProvider dataProviderForGenerateTrustedPropertiesTokenWithUnallowedValues - */ + #[DataProvider('dataProviderForGenerateTrustedPropertiesTokenWithUnallowedValues')] + #[Test] public function generateTrustedPropertiesTokenThrowsExceptionInWrongCases(array $input, int $expectExceptionCode): void { $this->expectException(InvalidArgumentForHashGenerationException::class); @@ -147,9 +145,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $requestHashService->generateTrustedPropertiesToken($input); } - /** - * @test - */ + #[Test] public function serializeAndHashFormFieldArrayWorks(): void { $formFieldArray = [ @@ -173,9 +169,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase self::assertEquals($expected, $actual); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationDoesNothingIfTrustedPropertiesAreNotSet(): void { $extbaseAttribute = (new ExtbaseRequestParameters())->setArgument('__trustedProperties', null); @@ -187,9 +181,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $requestHashService->initializePropertyMappingConfigurationFromRequest($extbaseRequest, $arguments); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationThrowsBadRequestExceptionOnInvalidHmac(): void { $this->expectException(BadRequestException::class); @@ -206,9 +198,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $requestHashService->initializePropertyMappingConfigurationFromRequest($extbaseRequest, $arguments); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationWithNonDecodableTrustedPropertiesThrowsException(): void { $hashService = new HashService(); @@ -228,9 +218,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $requestHashService->initializePropertyMappingConfigurationFromRequest($extbaseRequest, $arguments); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationWithOutdatedTrustedPropertiesThrowsException(): void { $hashService = new HashService(); @@ -250,9 +238,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $requestHashService->initializePropertyMappingConfigurationFromRequest($extbaseRequest, $arguments); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationReturnsEarlyIfNoTrustedPropertiesAreSet(): void { $trustedProperties = [ @@ -261,9 +247,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase $this->initializePropertyMappingConfiguration($trustedProperties); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationReturnsEarlyIfArgumentIsUnknown(): void { $trustedProperties = [ @@ -273,9 +257,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase self::assertFalse($arguments->hasArgument('nonExistingArgument')); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationSetsModificationAllowedIfIdentityPropertyIsSet(): void { $trustedProperties = [ @@ -297,9 +279,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase self::assertFalse($propertyMappingConfiguration->forProperty('nested')->shouldMap('someProperty'), 'Value is not FALSE at line ' . __LINE__); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationSetsCreationAllowedIfIdentityPropertyIsNotSet(): void { $trustedProperties = [ @@ -318,9 +298,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase self::assertFalse($propertyMappingConfiguration->forProperty('bar')->shouldMap('someProperty')); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationSetsAllowedFields(): void { $trustedProperties = [ @@ -334,9 +312,7 @@ final class MvcPropertyMappingConfigurationServiceTest extends UnitTestCase self::assertTrue($propertyMappingConfiguration->shouldMap('bar')); } - /** - * @test - */ + #[Test] public function initializePropertyMappingConfigurationSetsAllowedFieldsRecursively(): void { $trustedProperties = [ diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/RequestTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/RequestTest.php index 89e3b406d7b2..b62789d2af3d 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/RequestTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/RequestTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException; use TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RequestTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function aSingleArgumentCanBeSetWithWithArgumentAndRetrievedWithGetArgument(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -36,9 +36,7 @@ final class RequestTest extends UnitTestCase self::assertEquals('theValue', $request->getArgument('someArgumentName')); } - /** - * @test - */ + #[Test] public function withArgumentThrowsExceptionIfTheGivenArgumentNameIsAnEmptyString(): void { $this->expectException(InvalidArgumentNameException::class); @@ -48,9 +46,7 @@ final class RequestTest extends UnitTestCase $request->withArgument('', 'theValue'); } - /** - * @test - */ + #[Test] public function withArgumentsOverridesAllExistingArguments(): void { $arguments = ['key1' => 'value1', 'key2' => 'value2']; @@ -62,9 +58,7 @@ final class RequestTest extends UnitTestCase self::assertEquals($arguments, $actualResult); } - /** - * @test - */ + #[Test] public function withArgumentCanNotSetAtExtension(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -73,9 +67,7 @@ final class RequestTest extends UnitTestCase self::assertFalse($request->hasArgument('@extension')); } - /** - * @test - */ + #[Test] public function withArgumentCanNotSetAtController(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -84,9 +76,7 @@ final class RequestTest extends UnitTestCase self::assertFalse($request->hasArgument('@controller')); } - /** - * @test - */ + #[Test] public function withArgumentCanNotSetAtAction(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -95,9 +85,7 @@ final class RequestTest extends UnitTestCase self::assertFalse($request->hasArgument('@action')); } - /** - * @test - */ + #[Test] public function withArgumentCanNotSetAtFormat(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -106,9 +94,7 @@ final class RequestTest extends UnitTestCase self::assertFalse($request->hasArgument('@format')); } - /** - * @test - */ + #[Test] public function internalArgumentsIsNotReturnedAsNormalArgument(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -117,9 +103,7 @@ final class RequestTest extends UnitTestCase self::assertFalse($request->hasArgument('__referrer')); } - /** - * @test - */ + #[Test] public function multipleArgumentsCanBeSetWithWithArgumentsAndRetrievedWithGetArguments(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -133,9 +117,7 @@ final class RequestTest extends UnitTestCase self::assertEquals($arguments, $request->getArguments()); } - /** - * @test - */ + #[Test] public function hasArgumentTellsIfAnArgumentExists(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -145,9 +127,7 @@ final class RequestTest extends UnitTestCase self::assertFalse($request->hasArgument('notExistingArgument')); } - /** - * @test - */ + #[Test] public function theActionNameCanBeSetAndRetrieved(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -156,9 +136,7 @@ final class RequestTest extends UnitTestCase self::assertEquals('theAction', $request->getControllerActionName()); } - /** - * @test - */ + #[Test] public function theRepresentationFormatCanBeSetAndRetrieved(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -204,10 +182,8 @@ final class RequestTest extends UnitTestCase ]; } - /** - * @dataProvider controllerArgumentsAndExpectedObjectName - * @test - */ + #[DataProvider('controllerArgumentsAndExpectedObjectName')] + #[Test] public function withControllerObjectNameResolvesControllerObjectNameArgumentsCorrectly(array $controllerArguments, string $controllerObjectName): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/View/JsonViewTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/View/JsonViewTest.php index 59a7a34bb5e8..2ba2fa066c5f 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/View/JsonViewTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/View/JsonViewTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc\View; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\StringUtility; @@ -168,11 +170,11 @@ final class JsonViewTest extends UnitTestCase } /** - * @test * @param object|array $object * @param array|string $expected - * @dataProvider jsonViewTestData */ + #[DataProvider('jsonViewTestData')] + #[Test] public function transformValue($object, array $configuration, $expected, string $description): void { GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata')); @@ -340,11 +342,11 @@ final class JsonViewTest extends UnitTestCase } /** - * @test * @param object|array $object * @param array|string $expected - * @dataProvider jsonViewTestDataRecursive */ + #[DataProvider('jsonViewTestDataRecursive')] + #[Test] public function recursive($object, array $configuration, $expected, string $variableToRender, string $description): void { GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata')); @@ -387,10 +389,8 @@ final class JsonViewTest extends UnitTestCase return $output; } - /** - * @test - * @dataProvider objectIdentifierExposureTestData - */ + #[DataProvider('objectIdentifierExposureTestData')] + #[Test] public function transformValueWithObjectIdentifierExposure( object $object, array $configuration, @@ -441,10 +441,8 @@ final class JsonViewTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider exposeClassNameSettingsAndResults - */ + #[DataProvider('exposeClassNameSettingsAndResults')] + #[Test] public function viewExposesClassNameFullyIfConfiguredSo( ?int $exposeClassNameSetting, string $className, @@ -473,9 +471,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expected, $actual); } - /** - * @test - */ + #[Test] public function renderReturnsJsonRepresentationOfAssignedObject(): void { $object = new \stdClass(); @@ -487,9 +483,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderReturnsJsonRepresentationOfAssignedArray(): void { $array = ['foo' => 'Foo', 'bar' => 'Bar']; @@ -500,9 +494,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderReturnsJsonRepresentationOfAssignedSimpleValue(): void { $value = 'Foo'; @@ -513,9 +505,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderKeepsUtf8CharactersUnescaped(): void { $value = 'Gürkchen'; @@ -538,10 +528,8 @@ final class JsonViewTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider escapeCharacterDataProvider - */ + #[DataProvider('escapeCharacterDataProvider')] + #[Test] public function renderEscapesEscapeCharacters(string $character): void { $this->view->assign('value', $character); @@ -552,9 +540,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderReturnsNullIfNameOfAssignedVariableIsNotEqualToValue(): void { $value = 'Foo'; @@ -565,9 +551,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderOnlyRendersVariableWithTheNameValue(): void { $this->view @@ -579,9 +563,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function setVariablesToRenderOverridesValueToRender(): void { $value = 'Foo'; @@ -593,9 +575,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderRendersMultipleValuesIfTheyAreSpecifiedAsVariablesToRender(): void { $this->view @@ -609,9 +589,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderCanRenderMultipleComplexObjects(): void { $array = ['foo' => ['bar' => 'Baz']]; @@ -629,9 +607,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderCanRenderPlainArray(): void { $array = [['name' => 'Foo', 'secret' => true], ['name' => 'Bar', 'secret' => true]]; @@ -650,9 +626,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function renderCanRenderPlainArrayWithNumericKeys(): void { $array = [ @@ -677,9 +651,7 @@ final class JsonViewTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function descendAllKeepsArrayIndexes(): void { $array = [['name' => 'Foo', 'secret' => true], ['name' => 'Bar', 'secret' => true]]; diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderDefaultValuesTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderDefaultValuesTest.php index e779b0d74c04..2cf972f82b40 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderDefaultValuesTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderDefaultValuesTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -38,18 +39,14 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase ], ]; - /** - * @test - */ + #[Test] public function fromConfigurationThrowsExceptionIfConfigurationMissesExtensionName(): void { self::expectExceptionCode(1289843275); RequestBuilderDefaultValues::fromConfiguration([]); } - /** - * @test - */ + #[Test] public function fromConfigurationThrowsExceptionIfConfigurationMissesPluginName(): void { self::expectExceptionCode(1289843277); @@ -58,9 +55,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function fromConfigurationThrowsExceptionIfConfigurationMissesControllerConfigurations(): void { self::expectExceptionCode(1316104317); @@ -70,9 +65,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function fromConfigurationSetsExtensionName(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -80,9 +73,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame('news', $defaultValues->getExtensionName()); } - /** - * @test - */ + #[Test] public function fromConfigurationSetsPluginName(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -90,9 +81,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame('list', $defaultValues->getPluginName()); } - /** - * @test - */ + #[Test] public function fromConfigurationFallsBackToDefaultFormat(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -100,9 +89,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame('html', $defaultValues->getDefaultFormat()); } - /** - * @test - */ + #[Test] public function fromConfigurationSetsFormat(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration( @@ -114,9 +101,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame('json', $defaultValues->getDefaultFormat()); } - /** - * @test - */ + #[Test] public function fromConfigurationSetsDefaultControllerClassName(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -124,9 +109,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame(ActionController::class, $defaultValues->getDefaultControllerClassName()); } - /** - * @test - */ + #[Test] public function fromConfigurationSetsDefaultControllerAlias(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -134,9 +117,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame('ActionController', $defaultValues->getDefaultControllerAlias()); } - /** - * @test - */ + #[Test] public function getControllerAliasForControllerClassName(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -144,9 +125,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame('ActionController', $defaultValues->getControllerAliasForControllerClassName(ActionController::class)); } - /** - * @test - */ + #[Test] public function getControllerClassNameForAlias(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -154,9 +133,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame(ActionController::class, $defaultValues->getControllerClassNameForAlias('ActionController')); } - /** - * @test - */ + #[Test] public function getAllowedControllerActions(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -164,9 +141,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame([ActionController::class => ['list', 'show']], $defaultValues->getAllowedControllerActions()); } - /** - * @test - */ + #[Test] public function getControllerAliasToClassMapping(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); @@ -174,9 +149,7 @@ final class RequestBuilderDefaultValuesTest extends UnitTestCase self::assertSame(['ActionController' => ActionController::class], $defaultValues->getControllerAliasToClassMapping()); } - /** - * @test - */ + #[Test] public function getControllerClassToAliasMapping(): void { $defaultValues = RequestBuilderDefaultValues::fromConfiguration(self::MINIMAL_WORKING_CONFIGURATION); diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/Web/Routing/UriBuilderTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/Web/Routing/UriBuilderTest.php index 459e9e09a6bc..ff771acbc4e6 100644 --- a/typo3/sysext/extbase/Tests/Unit/Mvc/Web/Routing/UriBuilderTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Mvc/Web/Routing/UriBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\Exception; use PHPUnit\Framework\MockObject\MockObject; use Psr\Http\Message\ServerRequestInterface; @@ -91,9 +93,7 @@ final class UriBuilderTest extends UnitTestCase return (new ServerRequest(new Uri($baseUri)))->withAttribute('route', new Route('/test/Path', ['_identifier' => $routeIdentifier])); } - /** - * @test - */ + #[Test] public function settersAndGettersWorkAsExpected(): void { $this->subject @@ -124,9 +124,7 @@ final class UriBuilderTest extends UnitTestCase self::assertTrue($this->subject->getNoCache()); } - /** - * @test - */ + #[Test] public function uriForPrefixesArgumentsWithExtensionAndPluginNameAndSetsControllerArgument(): void { $expectedArguments = ['foo' => 'bar', 'baz' => ['extbase' => 'fluid'], 'controller' => 'SomeController']; @@ -136,9 +134,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function uriForRecursivelyMergesAndOverrulesControllerArgumentsWithArguments(): void { $arguments = ['foo' => 'bar', 'additionalParam' => 'additionalValue']; @@ -150,9 +146,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function uriForOnlySetsActionArgumentIfSpecified(): void { $expectedArguments = ['controller' => 'SomeController']; @@ -161,9 +155,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function uriForSetsControllerFromRequestIfControllerIsNotSet(): void { $this->mockRequest->expects(self::once())->method('getControllerName')->willReturn('SomeControllerFromRequest'); @@ -173,9 +165,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function uriForSetsExtensionNameFromRequestIfExtensionNameIsNotSet(): void { $this->mockRequest->expects(self::once())->method('getControllerExtensionName')->willReturn('SomeExtensionNameFromRequest'); @@ -185,9 +175,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function uriForSetsPluginNameFromRequestIfPluginNameIsNotSetInFrontend(): void { $this->mockExtensionService->expects(self::once())->method('getPluginNamespace')->willReturn('tx_someextension_somepluginnamefromrequest'); @@ -197,9 +185,7 @@ final class UriBuilderTest extends UnitTestCase $this->subject->uriFor(null, [], 'SomeController', 'SomeExtension'); self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function uriForSetsPluginNameFromRequestIfPluginNameIsNotSet(): void { $this->mockRequest->expects(self::once())->method('getPluginName')->willReturn('SomePluginNameFromRequest'); @@ -209,9 +195,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedArguments, $this->subject->getArguments()); } - /** - * @test - */ + #[Test] public function buildBackendUriKeepsQueryParametersIfAddQueryStringIsSet(): void { $extbaseParameters = new ExtbaseRequestParameters(); @@ -230,9 +214,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendUriRouteAttributeOverrulesGetParameterIfAddQueryStringIsSet(): void { $extbaseParameters = new ExtbaseRequestParameters(); @@ -314,10 +296,8 @@ final class UriBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSetDataProvider - */ + #[DataProvider('buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSetDataProvider')] + #[Test] public function buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSet(array $parameters, array $excluded, string $expected): void { $serverRequest = $this->getRequestWithRouteAttribute() @@ -336,9 +316,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expected, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendUriKeepsModuleQueryParametersIfAddQueryStringIsNotSet(): void { $serverRequest = $this->getRequestWithRouteAttribute() @@ -352,9 +330,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendUriMergesAndOverrulesQueryParametersWithArguments(): void { $serverRequest = $this->getRequestWithRouteAttribute() @@ -368,9 +344,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendUriConvertsDomainObjectsAfterArgumentsHaveBeenMerged(): void { $serverRequest = $this->getRequestWithRouteAttribute() @@ -385,9 +359,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendUriRespectsSection(): void { $serverRequest = $this->getRequestWithRouteAttribute() @@ -400,9 +372,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendUriCreatesAbsoluteUrisIfSpecified(): void { $request = $this->getRequestWithRouteAttribute(baseUri: 'http://baseuri/typo3/') @@ -420,9 +390,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendRespectsGivenControllerActionArguments(): void { $serverRequest = $this @@ -436,9 +404,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildBackendOverwritesSubRouteIdentifierControllerActionArguments(): void { $serverRequest = $this @@ -452,9 +418,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildFrontendUriCreatesTypoLink(): void { $uriBuilder = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration']); @@ -464,9 +428,7 @@ final class UriBuilderTest extends UnitTestCase $uriBuilder->buildFrontendUri(); } - /** - * @test - */ + #[Test] public function buildFrontendUriCreatesRelativeUrisByDefault(): void { $this->mockContentObject->expects(self::once())->method('createUrl')->willReturn('relative/uri'); @@ -475,9 +437,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildFrontendUriDoesNotStripLeadingSlashesFromRelativeUris(): void { $this->mockContentObject->expects(self::once())->method('createUrl')->willReturn('/relative/uri'); @@ -486,9 +446,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildFrontendUriCreatesAbsoluteUrisIfSpecified(): void { $uriBuilder = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration']); @@ -501,9 +459,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildFrontendUriSetsAbsoluteUriSchemeIfSpecified(): void { $uriBuilder = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration']); @@ -517,9 +473,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function buildFrontendUriDoesNotSetAbsoluteUriSchemeIfCreateAbsoluteUriIsFalse(): void { $uriBuilder = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration']); @@ -533,9 +487,7 @@ final class UriBuilderTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function resetSetsAllOptionsToTheirDefaultValue(): void { $this->subject @@ -569,9 +521,7 @@ final class UriBuilderTest extends UnitTestCase self::assertNull($this->subject->getAbsoluteUriScheme()); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationRespectsSpecifiedTargetPageUid(): void { $GLOBALS['TSFE']->id = 123; @@ -581,9 +531,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationUsesCurrentPageUidIfTargetPageUidIsNotSet(): void { $GLOBALS['TSFE']->id = 123; @@ -592,9 +540,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationProperlySetsAdditionalArguments(): void { $this->subject->setTargetPageUid(123); @@ -648,10 +594,8 @@ final class UriBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider buildTypolinkConfigurationProperlySetsAddQueryStringDataProvider - */ + #[DataProvider('buildTypolinkConfigurationProperlySetsAddQueryStringDataProvider')] + #[Test] public function buildTypolinkConfigurationProperlySetsAddQueryString( bool|string|int|null $addQueryString, array $expectedConfiguration @@ -664,9 +608,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationConvertsDomainObjects(): void { $mockDomainObject1 = $this->getAccessibleMock(AbstractEntity::class, null); @@ -680,9 +622,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationResolvesPageTypeFromFormat(): void { $this->subject->setTargetPageUid(123); @@ -703,9 +643,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationResolvesDefaultPageTypeFromFormatIfNoMappingIsConfigured(): void { $this->subject->setTargetPageUid(123); @@ -725,9 +663,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationResolvesDefaultPageTypeFromFormatIfFormatIsNotMapped(): void { $this->subject->setTargetPageUid(123); @@ -748,9 +684,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationDisablesCacheHashIfNoCacheIsSet(): void { $this->subject->setTargetPageUid(123); @@ -760,9 +694,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationConsidersSection(): void { $this->subject->setTargetPageUid(123); @@ -772,9 +704,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function buildTypolinkConfigurationLinkAccessRestrictedPagesSetting(): void { $this->subject->setTargetPageUid(123); @@ -784,9 +714,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedConfiguration, $actualConfiguration); } - /** - * @test - */ + #[Test] public function convertDomainObjectsToIdentityArraysConvertsDomainObjects(): void { $mockDomainObject1 = $this->getAccessibleMock(AbstractEntity::class, null); @@ -798,9 +726,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function convertDomainObjectsToIdentityArraysConvertsObjectStoragesWithDomainObjects(): void { $objectStorage = new ObjectStorage(); @@ -812,9 +738,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function conversionOfTransientObjectsIsInvoked(): void { $mockValueObject = new ValueObjectFixture(); @@ -826,9 +750,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function conversionOfTransientObjectsThrowsExceptionForOtherThanValueObjects(): void { $this->expectException(InvalidArgumentValueException::class); @@ -839,9 +761,7 @@ final class UriBuilderTest extends UnitTestCase $mockUriBuilder->_call('convertDomainObjectsToIdentityArrays', ['object' => $mockEntity]); } - /** - * @test - */ + #[Test] public function transientObjectsAreConvertedToAnArrayOfProperties(): void { $mockValueObject = new ValueObjectFixture(); @@ -852,9 +772,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function transientObjectsWithObjectStorageAreConvertedToAnArrayOfProperties(): void { $mockValueObject = new ValueObjectFixture(); @@ -882,9 +800,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function transientObjectsAreRecursivelyConverted(): void { $mockInnerValueObject2 = new ValueObjectFixture(); @@ -919,10 +835,8 @@ final class UriBuilderTest extends UnitTestCase ]; } - /** - * @dataProvider convertIteratorToArrayConvertsIteratorsToArrayProvider - * @test - */ + #[DataProvider('convertIteratorToArrayConvertsIteratorsToArrayProvider')] + #[Test] public function convertIteratorToArrayConvertsIteratorsToArray($iterator): void { $result = $this->subject->_call('convertIteratorToArray', $iterator); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationFactoryTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationFactoryTest.php index 8193c13a07c3..51697cd1b14b 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationFactoryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Package\PackageManager; use TYPO3\CMS\Core\Service\DependencyOrderingService; @@ -31,9 +32,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ClassesConfigurationFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function inheritPropertiesFromParentClasses(): void { $classesConfigurationFactory = new ClassesConfigurationFactory(new NullFrontend('extbase'), new PackageManager(new DependencyOrderingService()), 'PersistenceClasses'); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationTest.php index a65d8ffe49bc..1e20717b24e8 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/ClassesConfigurationTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\ClassesConfiguration; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ClassesConfigurationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hasClassReturnsTrue(): void { $className = 'ClassName'; @@ -35,9 +35,7 @@ final class ClassesConfigurationTest extends UnitTestCase self::assertTrue($classesConfiguration->hasClass($className)); } - /** - * @test - */ + #[Test] public function hasClassReturnsFalse(): void { $className = 'ClassName'; @@ -45,9 +43,7 @@ final class ClassesConfigurationTest extends UnitTestCase self::assertFalse($classesConfiguration->hasClass($className)); } - /** - * @test - */ + #[Test] public function getConfigurationForReturnsArray(): void { $configuration = [ @@ -62,9 +58,7 @@ final class ClassesConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getConfigurationForReturnsNull(): void { $classesConfiguration = new ClassesConfiguration([]); @@ -154,10 +148,8 @@ final class ClassesConfigurationTest extends UnitTestCase ]; } - /** - * @dataProvider resolveSubclassesRecursiveDataProvider - * @test - */ + #[DataProvider('resolveSubclassesRecursiveDataProvider')] + #[Test] public function getSubclasses(array $expected, array $configuration, string $className): void { $classesConfiguration = new ClassesConfiguration($configuration); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/BackendTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/BackendTest.php index 249d3e718155..651f04c923c6 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/BackendTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/BackendTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\DomainObject\DomainObjectInterface; @@ -37,9 +38,7 @@ final class BackendTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function insertRelationInRelationtableSetsMmMatchFieldsInRow(): void { $fixture = $this->getAccessibleMock(Backend::class, null, [], '', false); @@ -85,9 +84,7 @@ final class BackendTest extends UnitTestCase $fixture->_call('insertRelationInRelationtable', $domainObject, $domainObject, ''); } - /** - * @test - */ + #[Test] public function getIdentifierByObjectWithStringInsteadOfObjectReturnsNull(): void { $session = $this->createMock(Session::class); @@ -99,9 +96,7 @@ final class BackendTest extends UnitTestCase self::assertNull($backend->getIdentifierByObject('invalidObject')); } - /** - * @test - */ + #[Test] public function getIdentifierByObjectReturnsIdentifierForNonLazyObject(): void { $fakeUuid = 'fakeUuid'; @@ -120,9 +115,7 @@ final class BackendTest extends UnitTestCase self::assertEquals($backend->getIdentifierByObject($object), $fakeUuid); } - /** - * @test - */ + #[Test] public function getIdentifierByObjectReturnsIdentifierForLazyObject(): void { $fakeUuid = 'fakeUuid'; diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapFactoryTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapFactoryTest.php index 666f6cda4b47..07205b84c0e2 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapFactoryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapFactoryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\Mapper; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Belog\Domain\Model\LogEntry; use TYPO3\CMS\Core\Cache\Frontend\VariableFrontend; use TYPO3\CMS\Extbase\Persistence\Generic\Exception\InvalidClassException; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DataMapFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function buildDataMapThrowsExceptionIfClassNameIsNotKnown(): void { $this->expectException(InvalidClassException::class); @@ -53,10 +53,8 @@ final class DataMapFactoryTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider classNameTableNameMappings - */ + #[DataProvider('classNameTableNameMappings')] + #[Test] public function resolveTableNameReturnsExpectedTablenames($className, $expected): void { $subject = $this->getAccessibleMock(DataMapFactory::class, null, [], '', false); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapperTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapperTest.php index ac0a4592eef0..58e530646455 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapperTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Mapper/DataMapperTest.php @@ -18,6 +18,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic\Mapper; use Doctrine\Instantiator\InstantiatorInterface; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Extbase\Configuration\ConfigurationManager; @@ -71,9 +72,7 @@ final class DataMapperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getOrderingsForColumnMapReturnsNullIfNeitherForeignSortByNorForeignDefaultSortByAreSet(): void { // Arrange @@ -91,9 +90,7 @@ final class DataMapperTest extends UnitTestCase self::assertNull($orderings); } - /** - * @test - */ + #[Test] public function getOrderingsForColumnMapReturnsNullIfForeignDefaultSortByIsEmpty(): void { // Arrange @@ -112,9 +109,7 @@ final class DataMapperTest extends UnitTestCase self::assertNull($orderings); } - /** - * @test - */ + #[Test] public function getOrderingsForColumnMapFallBackToAscendingOrdering(): void { // Arrange @@ -136,9 +131,7 @@ final class DataMapperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setOneToManyRelationDetectsForeignSortBy(): void { // Arrange @@ -160,9 +153,7 @@ final class DataMapperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setOneToManyRelationDetectsForeignSortByWithForeignDefaultSortBy(): void { // Arrange @@ -185,9 +176,7 @@ final class DataMapperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setOneToManyRelationDetectsForeignDefaultSortByWithoutDirection(): void { // Arrange @@ -209,9 +198,7 @@ final class DataMapperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setOneToManyRelationDetectsForeignDefaultSortByWithDirection(): void { // Arrange @@ -233,9 +220,7 @@ final class DataMapperTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setOneToManyRelationDetectsMultipleForeignDefaultSortByWithAndWithoutDirection(): void { // Arrange diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/PersistenceManagerTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/PersistenceManagerTest.php index 607c914a8a9d..21e84acf53d4 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/PersistenceManagerTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/PersistenceManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; @@ -32,9 +33,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PersistenceManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function persistAllPassesAddedObjectsToBackend(): void { $entity2 = new Entity2(); @@ -53,9 +52,7 @@ final class PersistenceManagerTest extends UnitTestCase $manager->persistAll(); } - /** - * @test - */ + #[Test] public function persistAllPassesRemovedObjectsToBackend(): void { $entity2 = new Entity2(); @@ -74,9 +71,7 @@ final class PersistenceManagerTest extends UnitTestCase $manager->persistAll(); } - /** - * @test - */ + #[Test] public function getIdentifierByObjectReturnsIdentifierFromBackend(): void { $fakeUuid = 'fakeUuid'; @@ -94,9 +89,7 @@ final class PersistenceManagerTest extends UnitTestCase self::assertEquals($manager->getIdentifierByObject($object), $fakeUuid); } - /** - * @test - */ + #[Test] public function getObjectByIdentifierReturnsObjectFromSessionIfAvailable(): void { $fakeUuid = 'fakeUuid'; @@ -115,9 +108,7 @@ final class PersistenceManagerTest extends UnitTestCase self::assertEquals($manager->getObjectByIdentifier($fakeUuid, $object::class), $object); } - /** - * @test - */ + #[Test] public function getObjectByIdentifierReturnsObjectFromPersistenceIfAvailable(): void { $fakeUuid = '42'; @@ -142,9 +133,7 @@ final class PersistenceManagerTest extends UnitTestCase self::assertEquals($manager->getObjectByIdentifier($fakeUuid, $fakeEntityType), $object); } - /** - * @test - */ + #[Test] public function getObjectByIdentifierReturnsNullForUnknownObject(): void { $fakeUuid = '42'; @@ -171,9 +160,7 @@ final class PersistenceManagerTest extends UnitTestCase self::assertNull($manager->getObjectByIdentifier($fakeUuid, $fakeEntityType)); } - /** - * @test - */ + #[Test] public function addActuallyAddsAnObjectToTheInternalObjectsArray(): void { $someObject = new \stdClass(); @@ -197,9 +184,7 @@ final class PersistenceManagerTest extends UnitTestCase $persistenceManager->persistAll(); } - /** - * @test - */ + #[Test] public function removeActuallyRemovesAnObjectFromTheInternalObjectsArray(): void { $object1 = new \stdClass(); @@ -234,9 +219,7 @@ final class PersistenceManagerTest extends UnitTestCase $persistenceManager->persistAll(); } - /** - * @test - */ + #[Test] public function removeRemovesTheRightObjectEvenIfItHasBeenModifiedSinceItsAddition(): void { $object1 = new \ArrayObject(['val' => '1']); @@ -277,9 +260,8 @@ final class PersistenceManagerTest extends UnitTestCase /** * Make sure we remember the objects that are not currently add()ed * but might be in persistent storage. - * - * @test */ + #[Test] public function removeRetainsObjectForObjectsNotInCurrentSession(): void { $object = new \ArrayObject(['val' => '1']); @@ -303,9 +285,7 @@ final class PersistenceManagerTest extends UnitTestCase $persistenceManager->persistAll(); } - /** - * @test - */ + #[Test] public function updateSchedulesAnObjectForPersistence(): void { $className = StringUtility::getUniqueId('BazFixture'); @@ -356,9 +336,7 @@ final class PersistenceManagerTest extends UnitTestCase $persistenceManager->persistAll(); } - /** - * @test - */ + #[Test] public function tearDownWithBackendSupportingTearDownDelegatesCallToBackend(): void { $mockBackend = $this->getMockBuilder(BackendInterface::class) @@ -376,9 +354,7 @@ final class PersistenceManagerTest extends UnitTestCase $persistenceManager->tearDown(); } - /** - * @test - */ + #[Test] public function persistAllAddsNamespacedReconstitutedObjectFromSessionToBackendsAggregateRootObjects(): void { $className = StringUtility::getUniqueId('BazFixture'); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryFactoryTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryFactoryTest.php index 13fbd4ec434f..c24923b5ff7a 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryFactoryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryFactoryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use TYPO3\CMS\Core\Context\Context; @@ -77,10 +79,9 @@ final class QueryFactoryTest extends UnitTestCase * @param bool $static * @param bool $rootLevel * @param bool $expectedResult - * - * @dataProvider getStaticAndRootLevelAndExpectedResult - * @test */ + #[DataProvider('getStaticAndRootLevelAndExpectedResult')] + #[Test] public function createDoesNotRespectStoragePageIfStaticOrRootLevelIsTrue($static, $rootLevel, $expectedResult): void { $this->dataMap->method('getIsStatic')->willReturn($static); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php index c72c80ac8669..0028ddc02d3f 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper; use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult; use TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface; @@ -65,27 +66,21 @@ final class QueryResultTest extends UnitTestCase $this->mockDataMapper->method('map')->willReturn($this->sampleResult); } - /** - * @test - */ + #[Test] public function getQueryReturnsQueryObject(): void { $this->queryResult->setQuery($this->mockQuery); self::assertInstanceOf(QueryInterface::class, $this->queryResult->getQuery()); } - /** - * @test - */ + #[Test] public function getQueryReturnsAClone(): void { $this->queryResult->setQuery($this->mockQuery); self::assertNotSame($this->mockQuery, $this->queryResult->getQuery()); } - /** - * @test - */ + #[Test] public function offsetExistsWorksAsExpected(): void { $this->queryResult->setQuery($this->mockQuery); @@ -94,9 +89,7 @@ final class QueryResultTest extends UnitTestCase self::assertFalse($this->queryResult->offsetExists('foo')); } - /** - * @test - */ + #[Test] public function offsetGetWorksAsExpected(): void { $this->queryResult->setQuery($this->mockQuery); @@ -105,9 +98,7 @@ final class QueryResultTest extends UnitTestCase self::assertNull($this->queryResult->offsetGet('foo')); } - /** - * @test - */ + #[Test] public function offsetSetWorksAsExpected(): void { $this->queryResult->setQuery($this->mockQuery); @@ -115,9 +106,7 @@ final class QueryResultTest extends UnitTestCase self::assertInstanceOf(\stdClass::class, $this->queryResult->offsetGet(0)); } - /** - * @test - */ + #[Test] public function offsetUnsetWorksAsExpected(): void { $this->queryResult->setQuery($this->mockQuery); @@ -125,9 +114,7 @@ final class QueryResultTest extends UnitTestCase self::assertFalse($this->queryResult->offsetExists(0)); } - /** - * @test - */ + #[Test] public function countDoesNotInitializeProxy(): void { $queryResult = $this->getAccessibleMock(QueryResult::class, ['initialize'], [], '', false); @@ -138,9 +125,7 @@ final class QueryResultTest extends UnitTestCase $queryResult->count(); } - /** - * @test - */ + #[Test] public function countCallsGetObjectCountByQueryOnPersistenceManager(): void { $queryResult = $this->getAccessibleMock(QueryResult::class, ['initialize'], [], '', false); @@ -150,9 +135,7 @@ final class QueryResultTest extends UnitTestCase self::assertEquals(2, $queryResult->count()); } - /** - * @test - */ + #[Test] public function countCountsQueryResultDirectlyIfAlreadyInitialized(): void { $this->queryResult->setQuery($this->mockQuery); @@ -161,9 +144,7 @@ final class QueryResultTest extends UnitTestCase self::assertEquals(2, $this->queryResult->count()); } - /** - * @test - */ + #[Test] public function countOnlyCallsGetObjectCountByQueryOnPersistenceManagerOnce(): void { $this->queryResult->setQuery($this->mockQuery); @@ -172,9 +153,7 @@ final class QueryResultTest extends UnitTestCase self::assertEquals(2, $this->queryResult->count()); } - /** - * @test - */ + #[Test] public function countCallsGetObjectCountByQueryIfOffsetChanges(): void { $this->queryResult->setQuery($this->mockQuery); @@ -191,9 +170,7 @@ final class QueryResultTest extends UnitTestCase self::assertSame(3, $thirdCount); } - /** - * @test - */ + #[Test] public function iteratorMethodsAreCorrectlyImplemented(): void { $this->queryResult->setQuery($this->mockQuery); @@ -214,9 +191,7 @@ final class QueryResultTest extends UnitTestCase self::assertEquals($array1, $this->queryResult->current()); } - /** - * @test - */ + #[Test] public function initializeExecutesQueryWithArrayFetchMode(): void { $queryResult = $this->getAccessibleMock(QueryResult::class, null, [], '', false); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryTest.php index 860dc599721c..700fe0f6e84a 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory; @@ -59,9 +61,7 @@ final class QueryTest extends UnitTestCase $this->query->_set('container', $this->container); } - /** - * @test - */ + #[Test] public function executeReturnsQueryResultInstanceAndInjectsItself(): void { $queryResult = $this->createMock(QueryResult::class); @@ -70,9 +70,7 @@ final class QueryTest extends UnitTestCase self::assertSame($queryResult, $actualResult); } - /** - * @test - */ + #[Test] public function executeReturnsRawObjectDataIfReturnRawQueryResultIsSet(): void { $this->persistenceManager->expects(self::once())->method('getObjectDataByQuery')->with($this->query)->willReturn('rawQueryResult'); @@ -81,9 +79,7 @@ final class QueryTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function setLimitAcceptsOnlyIntegers(): void { $this->expectException(\InvalidArgumentException::class); @@ -91,9 +87,7 @@ final class QueryTest extends UnitTestCase $this->query->setLimit(1.5); } - /** - * @test - */ + #[Test] public function setLimitRejectsIntegersLessThanOne(): void { $this->expectException(\InvalidArgumentException::class); @@ -101,9 +95,7 @@ final class QueryTest extends UnitTestCase $this->query->setLimit(0); } - /** - * @test - */ + #[Test] public function setLimitSetsLimit(): void { $this->query->setLimit(15); @@ -114,9 +106,7 @@ final class QueryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function unsetLimitWillResetLimitToNull(): void { $this->query->setLimit(15); @@ -127,9 +117,7 @@ final class QueryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setOffsetAcceptsOnlyIntegers(): void { $this->expectException(\InvalidArgumentException::class); @@ -137,9 +125,7 @@ final class QueryTest extends UnitTestCase $this->query->setOffset(1.5); } - /** - * @test - */ + #[Test] public function setOffsetRejectsIntegersLessThanZero(): void { $this->expectException(\InvalidArgumentException::class); @@ -160,11 +146,11 @@ final class QueryTest extends UnitTestCase /** * Checks if equals condition makes utf-8 argument lowercase correctly * - * @test - * @dataProvider equalsForCaseSensitiveFalseLowercasesOperandProvider * @param string $propertyName The name of the property to compare against * @param mixed $operand The value to compare with */ + #[DataProvider('equalsForCaseSensitiveFalseLowercasesOperandProvider')] + #[Test] public function equalsForCaseSensitiveFalseLowercasesOperand(string $propertyName, $operand, string $expectedOperand): void { $qomFactory = $this->getAccessibleMock(QueryObjectModelFactory::class, ['comparison']); @@ -174,9 +160,7 @@ final class QueryTest extends UnitTestCase $this->query->equals($propertyName, $operand, false); } - /** - * @test - */ + #[Test] public function logicalAndSupportsMultipleConstraintsAsMethodArguments(): void { $subject = new Query( @@ -197,9 +181,7 @@ final class QueryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function logicalOrSupportsMultipleConstraintsAsMethodArguments(): void { $subject = new Query( diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/SessionTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/SessionTest.php index 1933ef8d01c8..f6b2b1f1d331 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/SessionTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/SessionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject; use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; use TYPO3\CMS\Extbase\Persistence\Generic\Session; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SessionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function objectRegisteredWithRegisterReconstitutedEntityCanBeRetrievedWithGetReconstitutedEntities(): void { $someObject = new class () extends AbstractDomainObject {}; @@ -37,9 +36,7 @@ final class SessionTest extends UnitTestCase self::assertTrue($ReconstitutedEntities->contains($someObject)); } - /** - * @test - */ + #[Test] public function unregisterReconstitutedEntityRemovesObjectFromSession(): void { $someObject = new class () extends AbstractDomainObject {}; @@ -52,9 +49,7 @@ final class SessionTest extends UnitTestCase self::assertFalse($ReconstitutedEntities->contains($someObject)); } - /** - * @test - */ + #[Test] public function hasObjectReturnsTrueForRegisteredObject(): void { $object1 = new class () extends AbstractDomainObject {}; @@ -66,9 +61,7 @@ final class SessionTest extends UnitTestCase self::assertFalse($session->hasObject($object2), 'Session claims it does have unregistered object.'); } - /** - * @test - */ + #[Test] public function hasIdentifierReturnsTrueForRegisteredObject(): void { $object = new class () extends AbstractDomainObject {}; @@ -79,9 +72,7 @@ final class SessionTest extends UnitTestCase self::assertFalse($session->hasIdentifier('67890', $object::class), 'Session claims it does have unregistered object.'); } - /** - * @test - */ + #[Test] public function getIdentifierByObjectReturnsRegisteredUUIDForObject(): void { $object = new class () extends AbstractDomainObject {}; @@ -91,9 +82,7 @@ final class SessionTest extends UnitTestCase self::assertEquals('12345', $session->getIdentifierByObject($object), 'Did not get UUID registered for object.'); } - /** - * @test - */ + #[Test] public function getObjectByIdentifierReturnsRegisteredObjectForUUID(): void { $object = new class () extends AbstractDomainObject {}; @@ -103,9 +92,7 @@ final class SessionTest extends UnitTestCase self::assertSame($session->getObjectByIdentifier('12345', $object::class), $object, 'Did not get object registered for UUID.'); } - /** - * @test - */ + #[Test] public function unregisterObjectRemovesRegisteredObject(): void { $object1 = new class () extends AbstractDomainObject {}; @@ -127,9 +114,7 @@ final class SessionTest extends UnitTestCase self::assertTrue($session->hasIdentifier('67890', $object2::class), 'Session claims it does not have registered object.'); } - /** - * @test - */ + #[Test] public function newSessionIsEmpty(): void { $persistenceSession = new Session(); @@ -137,9 +122,7 @@ final class SessionTest extends UnitTestCase self::assertCount(0, $reconstitutedObjects, 'The reconstituted objects storage was not empty.'); } - /** - * @test - */ + #[Test] public function objectCanBeRegisteredAsReconstituted(): void { $persistenceSession = new Session(); @@ -149,9 +132,7 @@ final class SessionTest extends UnitTestCase self::assertTrue($reconstitutedObjects->contains($entity), 'The object was not registered as reconstituted.'); } - /** - * @test - */ + #[Test] public function objectCanBeUnregisteredAsReconstituted(): void { $persistenceSession = new Session(); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Typo3QuerySettingsTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Typo3QuerySettingsTest.php index 453d86326b58..0d5a3833348b 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Typo3QuerySettingsTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/Typo3QuerySettingsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence\Generic; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\LanguageAspect; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; @@ -68,99 +70,77 @@ final class Typo3QuerySettingsTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider booleanValueProvider - */ + #[DataProvider('booleanValueProvider')] + #[Test] public function setRespectStoragePageSetsRespectStoragePageCorrectly(bool $input): void { $this->subject->setRespectStoragePage($input); self::assertEquals($input, $this->subject->getRespectStoragePage()); } - /** - * @test - */ + #[Test] public function setRespectStoragePageAllowsChaining(): void { self::assertInstanceOf(QuerySettingsInterface::class, $this->subject->setRespectStoragePage(true)); } - /** - * @test - * @dataProvider arrayValueProvider - */ + #[DataProvider('arrayValueProvider')] + #[Test] public function setStoragePageIdsSetsStoragePageIdsCorrectly(array $input): void { $this->subject->setStoragePageIds($input); self::assertEquals($input, $this->subject->getStoragePageIds()); } - /** - * @test - */ + #[Test] public function setStoragePageIdsAllowsChaining(): void { self::assertInstanceOf(QuerySettingsInterface::class, $this->subject->setStoragePageIds([1, 2, 3])); } - /** - * @test - * @dataProvider booleanValueProvider - */ + #[DataProvider('booleanValueProvider')] + #[Test] public function setRespectSysLanguageSetsRespectSysLanguageCorrectly(bool $input): void { $this->subject->setRespectSysLanguage($input); self::assertEquals($input, $this->subject->getRespectSysLanguage()); } - /** - * @test - */ + #[Test] public function setRespectSysLanguageAllowsChaining(): void { self::assertInstanceOf(QuerySettingsInterface::class, $this->subject->setRespectSysLanguage(true)); } - /** - * @test - */ + #[Test] public function setLanguageAspectHasFluentInterface(): void { self::assertSame($this->subject, $this->subject->setLanguageAspect(new LanguageAspect(1))); } - /** - * @test - * @dataProvider booleanValueProvider - */ + #[DataProvider('booleanValueProvider')] + #[Test] public function setIgnoreEnableFieldsSetsIgnoreEnableFieldsCorrectly(bool $input): void { $this->subject->setIgnoreEnableFields($input); self::assertEquals($input, $this->subject->getIgnoreEnableFields()); } - /** - * @test - */ + #[Test] public function setIgnoreEnableFieldsAllowsChaining(): void { self::assertInstanceOf(QuerySettingsInterface::class, $this->subject->setIgnoreEnableFields(true)); } - /** - * @test - * @dataProvider arrayValueProvider - */ + #[DataProvider('arrayValueProvider')] + #[Test] public function setEnableFieldsToBeIgnoredSetsEnableFieldsToBeIgnoredCorrectly(array $input): void { $this->subject->setEnableFieldsToBeIgnored($input); self::assertEquals($input, $this->subject->getEnableFieldsToBeIgnored()); } - /** - * @test - */ + #[Test] public function setEnableFieldsToBeIgnoredAllowsChaining(): void { self::assertInstanceOf( @@ -169,19 +149,15 @@ final class Typo3QuerySettingsTest extends UnitTestCase ); } - /** - * @test - * @dataProvider booleanValueProvider - */ + #[DataProvider('booleanValueProvider')] + #[Test] public function setIncludeDeletedSetsIncludeDeletedCorrectly(bool $input): void { $this->subject->setIncludeDeleted($input); self::assertEquals($input, $this->subject->getIncludeDeleted()); } - /** - * @test - */ + #[Test] public function setIncludeDeletedAllowsChaining(): void { self::assertInstanceOf(QuerySettingsInterface::class, $this->subject->setIncludeDeleted(true)); diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/ObjectStorageTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/ObjectStorageTest.php index 707f4a54e47e..8a4add108c38 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/ObjectStorageTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/ObjectStorageTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; use TYPO3\CMS\Extbase\Tests\Unit\Persistence\Fixture\Domain\Model\Entity; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ObjectStorageTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function currentForEmptyStorageReturnsNull(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -36,9 +36,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertNull($result); } - /** - * @test - */ + #[Test] public function countForEmptyStorageIsZero(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -47,9 +45,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(0, $objectStorage); } - /** - * @test - */ + #[Test] public function getInfoForEmptyStorageReturnsNull(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -60,9 +56,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertNull($result); } - /** - * @test - */ + #[Test] public function attachWithInformationMakesAttachedInformationAvailableUsingTheObjectAsKey(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -75,9 +69,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $objectStorage[$object]); } - /** - * @test - */ + #[Test] public function attachForEmptyStorageIncreasesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -89,9 +81,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(1, $objectStorage); } - /** - * @test - */ + #[Test] public function attachForNonEmptyStorageIncreasesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -104,9 +94,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(2, $objectStorage); } - /** - * @test - */ + #[Test] public function attachingAnObjectUsingArrayAssignmentWithInformationIncreasesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -119,9 +107,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(2, $objectStorage); } - /** - * @test - */ + #[Test] public function detachForAttachedObjectReducesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -137,9 +123,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(1, $objectStorage); } - /** - * @test - */ + #[Test] public function offsetSetIncreasesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -152,9 +136,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(2, $objectStorage); } - /** - * @test - */ + #[Test] public function offsetUnsetWithObjectReducesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -169,9 +151,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(1, $objectStorage); } - /** - * @test - */ + #[Test] public function offsetUnsetWithIntegerKeyReducesCountByOne(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -186,9 +166,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(1, $objectStorage); } - /** - * @test - */ + #[Test] public function offsetGetForNoneExistingIntegerEntryReturnsNull(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -197,9 +175,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertNull($objectStorage->offsetGet(1)); } - /** - * @test - */ + #[Test] public function offsetGetForNoneExistingObjectEntryReturnsNull(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -209,9 +185,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertNull($objectStorage->offsetGet($object)); } - /** - * @test - */ + #[Test] public function offsetGetForObjectAttachedWithoutWithoutInformationReturnsNull(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -222,9 +196,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertNull($objectStorage->offsetGet($object)); } - /** - * @test - */ + #[Test] public function offsetGetForObjectWithInformationAttachedUsingArrayAssignmentReturnsTheAssociatedInformation(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -236,9 +208,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $objectStorage->offsetGet($object1)); } - /** - * @test - */ + #[Test] public function offsetGetForObjectWithInformationAttachedUsingAttachReturnsTheAssociatedInformation(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -250,9 +220,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $objectStorage->offsetGet($object1)); } - /** - * @test - */ + #[Test] public function offsetGetWithIntegerKeyReturnsTheAssociatedObject(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -263,9 +231,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($object, $objectStorage->offsetGet(0)); } - /** - * @test - */ + #[Test] public function offsetExistsWithObjectAddedToStorageReturnsTrue(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -276,9 +242,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertTrue($objectStorage->offsetExists($object)); } - /** - * @test - */ + #[Test] public function offsetExistsWithObjectNotAddedToStorageReturnsFalse(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -287,9 +251,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertFalse($objectStorage->offsetExists(new Entity())); } - /** - * @test - */ + #[Test] public function offsetExistsWithIntegerKeyInStorageReturnsTrue(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -300,9 +262,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertTrue($objectStorage->offsetExists(0)); } - /** - * @test - */ + #[Test] public function offsetExistsWithIntegerKeyNotInStorageReturnsFalse(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -311,9 +271,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertFalse($objectStorage->offsetExists(0)); } - /** - * @test - */ + #[Test] public function offsetExistsWithNumericStringKeyNotInStorageReturnsFalse(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -334,10 +292,8 @@ final class ObjectStorageTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider informationDataProvider - */ + #[DataProvider('informationDataProvider')] + #[Test] public function getInfoReturnsTheInformationAssociatedWithTheCurrentIteratorEntry(mixed $information): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -349,10 +305,8 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $objectStorage->getInfo()); } - /** - * @test - * @dataProvider informationDataProvider - */ + #[DataProvider('informationDataProvider')] + #[Test] public function setInfoSetsTheInformationAssociatedWithTheCurrentIteratorEntry(mixed $information): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -365,10 +319,8 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $objectStorage[$object]); } - /** - * @test - * @dataProvider informationDataProvider - */ + #[DataProvider('informationDataProvider')] + #[Test] public function setInfoOverwritesTheInformationAssociatedWithTheCurrentIteratorEntry(mixed $information): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -381,9 +333,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $objectStorage[$object]); } - /** - * @test - */ + #[Test] public function removeAllRemovesObjectsContainedInAnotherStorageFromTheCurrentStorage(): void { $object1 = new Entity(); @@ -400,9 +350,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(0, $objectStorageToRemoveFrom); } - /** - * @test - */ + #[Test] public function removeAllRemovesRemovesObjectWithDifferentInformationFromTheCurrentStorage(): void { $object1 = new Entity(); @@ -419,9 +367,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(0, $objectStorageToRemoveFrom); } - /** - * @test - */ + #[Test] public function removeAllKeepsObjectsNotContainedInTheOtherStorage(): void { $object1 = new Entity(); @@ -439,9 +385,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(1, $objectStorageToRemoveFrom); } - /** - * @test - */ + #[Test] public function removeAlIgnoresAdditionsObjectsContainedInOtherStorage(): void { $object1 = new Entity(); @@ -459,9 +403,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertCount(1, $objectStorageToRemoveFrom); } - /** - * @test - */ + #[Test] public function addAllAddsAllObjectsFromAnotherStorage(): void { $object = new Entity(); @@ -477,9 +419,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertTrue($storageToAddTo->contains($object)); } - /** - * @test - */ + #[Test] public function addAllAlsoAddsInformationOfTheAddedObjects(): void { $object = new Entity(); @@ -496,9 +436,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame($information, $storageToAddTo[$object]); } - /** - * @test - */ + #[Test] public function toArrayReturnsObjectsInStorageUsingIntegerKeys(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -511,9 +449,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame([0 => $object1, 1 => $object2], $objectStorage->toArray()); } - /** - * @test - */ + #[Test] public function getArrayReturnsObjectsInStorageUsingIntegerKeys(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -526,9 +462,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertSame([0 => $object1, 1 => $object2], $objectStorage->getArray()); } - /** - * @test - */ + #[Test] public function relationsAreNotDirtyOnAttaching(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -540,9 +474,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertFalse($objectStorage->isRelationDirty($object)); } - /** - * @test - */ + #[Test] public function relationsAreNotDirtyOnAttachingAndRemoving(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -555,9 +487,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertFalse($objectStorage->isRelationDirty($object1)); } - /** - * @test - */ + #[Test] public function relationsAreNotDirtyOnReAddingAtSamePosition(): void { /** @var ObjectStorage<Entity> $objectStorage */ @@ -576,9 +506,7 @@ final class ObjectStorageTest extends UnitTestCase self::assertFalse($objectStorage->isRelationDirty($object2)); } - /** - * @test - */ + #[Test] public function relationsAreDirtyOnReAddingAtOtherPosition(): void { /** @var ObjectStorage<Entity> $objectStorage */ diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/RepositoryTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/RepositoryTest.php index 9cd391f7e896..fe91d66aa2f8 100644 --- a/typo3/sysext/extbase/Tests/Unit/Persistence/RepositoryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Persistence/RepositoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Persistence; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Extbase\Configuration\ConfigurationManager; use TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException; @@ -104,17 +105,13 @@ final class RepositoryTest extends UnitTestCase $this->repository->injectPersistenceManager($this->mockPersistenceManager); } - /** - * @test - */ + #[Test] public function abstractRepositoryImplementsRepositoryInterface(): void { self::assertInstanceOf(RepositoryInterface::class, $this->repository); } - /** - * @test - */ + #[Test] public function createQueryCallsPersistenceManagerWithExpectedClassName(): void { $mockPersistenceManager = $this->createMock(PersistenceManager::class); @@ -126,9 +123,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->createQuery(); } - /** - * @test - */ + #[Test] public function createQuerySetsDefaultOrderingIfDefined(): void { $orderings = ['foo' => QueryInterface::ORDER_ASCENDING]; @@ -146,9 +141,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->createQuery(); } - /** - * @test - */ + #[Test] public function findAllCreatesQueryAndReturnsResultOfExecuteCall(): void { $expectedResult = $this->createMock(QueryResultInterface::class); @@ -164,9 +157,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame($expectedResult, $repository->findAll()); } - /** - * @test - */ + #[Test] public function findByIdentifierReturnsResultOfGetObjectByIdentifierCallFromBackend(): void { $identifier = '42'; @@ -184,9 +175,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame($object, $this->repository->findByIdentifier($identifier)); } - /** - * @test - */ + #[Test] public function addDelegatesToPersistenceManager(): void { $object = new \stdClass(); @@ -197,9 +186,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->add($object); } - /** - * @test - */ + #[Test] public function removeDelegatesToPersistenceManager(): void { $object = new \stdClass(); @@ -210,9 +197,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->remove($object); } - /** - * @test - */ + #[Test] public function updateDelegatesToPersistenceManager(): void { $object = new \stdClass(); @@ -223,9 +208,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->update($object); } - /** - * @test - */ + #[Test] public function magicCallMethodTriggersAnErrorIfUnknownMethodsAreCalled(): void { $this->expectException(UnsupportedMethodException::class); @@ -236,9 +219,7 @@ final class RepositoryTest extends UnitTestCase $repository->__call('foo', []); } - /** - * @test - */ + #[Test] public function addChecksObjectType(): void { $this->expectException(IllegalObjectTypeException::class); @@ -247,9 +228,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->add(new \stdClass()); } - /** - * @test - */ + #[Test] public function removeChecksObjectType(): void { $this->expectException(IllegalObjectTypeException::class); @@ -258,9 +237,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->remove(new \stdClass()); } - /** - * @test - */ + #[Test] public function updateChecksObjectType(): void { $this->expectException(IllegalObjectTypeException::class); @@ -271,9 +248,7 @@ final class RepositoryTest extends UnitTestCase $repository->update(new \stdClass()); } - /** - * @test - */ + #[Test] public function constructSetsObjectTypeFromClassName(): void { $repository = new EntityRepository(); @@ -284,9 +259,7 @@ final class RepositoryTest extends UnitTestCase self::assertEquals(Entity::class, $objectType); } - /** - * @test - */ + #[Test] public function createQueryReturnsQueryWithUnmodifiedDefaultQuerySettings(): void { $this->mockQuery = $this->createMock(Query::class); @@ -298,9 +271,7 @@ final class RepositoryTest extends UnitTestCase self::assertNotSame($mockDefaultQuerySettings, $instanceQuerySettings); } - /** - * @test - */ + #[Test] public function findByUidReturnsResultOfGetObjectByIdentifierCall(): void { $fakeUid = '123'; @@ -314,9 +285,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function updateRejectsObjectsOfWrongType(): void { $this->expectException(IllegalObjectTypeException::class); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationBuilderTest.php b/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationBuilderTest.php index 1bdd2ea02ebc..bf003a6afa54 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationBuilderTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationBuilderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationBuilder; use TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -31,9 +32,7 @@ final class PropertyMappingConfigurationBuilderTest extends UnitTestCase $this->propertyMappingConfigurationBuilder = new PropertyMappingConfigurationBuilder(); } - /** - * @test - */ + #[Test] public function getTargetPropertyNameShouldReturnTheUnmodifiedPropertyNameWithoutConfiguration(): void { $defaultConfiguration = $this->propertyMappingConfigurationBuilder->build(); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationTest.php b/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationTest.php index 7f644e2dd144..3cfd24f15614 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/PropertyMappingConfigurationTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Property\PropertyMappingConfiguration; use TYPO3\CMS\Extbase\Property\TypeConverterInterface; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyMappingConfigurationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getTargetPropertyNameShouldReturnTheUnmodifiedPropertyNameWithoutConfiguration(): void { $subject = new PropertyMappingConfiguration(); @@ -33,9 +33,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertEquals('someOtherSourceProperty', $subject->getTargetPropertyName('someOtherSourceProperty')); } - /** - * @test - */ + #[Test] public function shouldMapReturnsFalseByDefault(): void { $subject = new PropertyMappingConfiguration(); @@ -43,9 +41,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertFalse($subject->shouldMap('someOtherSourceProperty')); } - /** - * @test - */ + #[Test] public function shouldMapReturnsTrueIfConfigured(): void { $subject = new PropertyMappingConfiguration(); @@ -54,9 +50,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertTrue($subject->shouldMap('someOtherSourceProperty')); } - /** - * @test - */ + #[Test] public function shouldMapReturnsTrueForAllowedProperties(): void { $subject = new PropertyMappingConfiguration(); @@ -65,9 +59,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertTrue($subject->shouldMap('someOtherProperty')); } - /** - * @test - */ + #[Test] public function shouldMapReturnsFalseForBlacklistedProperties(): void { $subject = new PropertyMappingConfiguration(); @@ -77,9 +69,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertTrue($subject->shouldMap('someOtherPropertyWhichHasNotBeenConfigured')); } - /** - * @test - */ + #[Test] public function shouldSkipReturnsFalseByDefault(): void { $subject = new PropertyMappingConfiguration(); @@ -87,9 +77,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertFalse($subject->shouldSkip('someOtherSourceProperty')); } - /** - * @test - */ + #[Test] public function shouldSkipReturnsTrueIfConfigured(): void { $subject = new PropertyMappingConfiguration(); @@ -98,9 +86,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertTrue($subject->shouldSkip('someOtherSourceProperty')); } - /** - * @test - */ + #[Test] public function setTypeConverterOptionsCanBeRetrievedAgain(): void { $mockTypeConverterClass = get_class($this->createMock(TypeConverterInterface::class)); @@ -110,17 +96,13 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertEquals('v2', $subject->getConfigurationValue($mockTypeConverterClass, 'k2')); } - /** - * @test - */ + #[Test] public function nonexistentTypeConverterOptionsReturnNull(): void { self::assertNull((new PropertyMappingConfiguration())->getConfigurationValue('foo', 'bar')); } - /** - * @test - */ + #[Test] public function setTypeConverterOptionsShouldOverrideAlreadySetOptions(): void { $mockTypeConverterClass = get_class($this->createMock(TypeConverterInterface::class)); @@ -131,9 +113,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertNull($subject->getConfigurationValue($mockTypeConverterClass, 'k2')); } - /** - * @test - */ + #[Test] public function setTypeConverterOptionShouldOverrideAlreadySetOptions(): void { $mockTypeConverterClass = get_class($this->createMock(TypeConverterInterface::class)); @@ -144,17 +124,13 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertEquals('v2', $subject->getConfigurationValue($mockTypeConverterClass, 'k2')); } - /** - * @test - */ + #[Test] public function getTypeConverterReturnsNullIfNoTypeConverterSet(): void { self::assertNull((new PropertyMappingConfiguration())->getTypeConverter()); } - /** - * @test - */ + #[Test] public function getTypeConverterReturnsTypeConverterIfItHasBeenSet(): void { $mockTypeConverter = $this->createMock(TypeConverterInterface::class); @@ -163,9 +139,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertSame($mockTypeConverter, $subject->getTypeConverter()); } - /** - * @test - */ + #[Test] public function getTargetPropertyNameShouldRespectMapping(): void { $subject = new PropertyMappingConfiguration(); @@ -184,19 +158,15 @@ final class PropertyMappingConfigurationTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider fluentInterfaceMethodsDataProvider - */ + #[DataProvider('fluentInterfaceMethodsDataProvider')] + #[Test] public function respectiveMethodsProvideFluentInterface($methodToTestForFluentInterface, array $argumentsForMethod = []): void { $subject = new PropertyMappingConfiguration(); self::assertSame($subject, $subject->$methodToTestForFluentInterface(...$argumentsForMethod)); } - /** - * @test - */ + #[Test] public function setTypeConverterOptionReturnsThis(): void { $mockTypeConverter = $this->createMock(TypeConverterInterface::class); @@ -205,9 +175,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertSame($subject, $subject->setTypeConverterOption($mockTypeConverterClass, 'key', 'value')); } - /** - * @test - */ + #[Test] public function setTypeConverterOptionsReturnsThis(): void { $mockTypeConverter = $this->createMock(TypeConverterInterface::class); @@ -216,9 +184,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertSame($subject, $subject->setTypeConverterOptions($mockTypeConverterClass, [])); } - /** - * @test - */ + #[Test] public function setTypeConverterReturnsThis(): void { $mockTypeConverter = $this->createMock(TypeConverterInterface::class); @@ -226,9 +192,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertSame($subject, $subject->setTypeConverter($mockTypeConverter)); } - /** - * @test - */ + #[Test] public function forPropertyWithAsteriskAllowsArbitraryPropertyNamesWithGetConfigurationFor(): void { $subject = new PropertyMappingConfiguration(); @@ -238,9 +202,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertSame('v1', $configuration->getConfigurationValue(\stdClass::class, 'k1')); } - /** - * @test - */ + #[Test] public function forPropertyWithAsteriskAllowsArbitraryPropertyNamesWithForProperty(): void { $subject = new PropertyMappingConfiguration(); @@ -250,9 +212,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase self::assertSame('v1', $configuration->getConfigurationValue(\stdClass::class, 'k1')); } - /** - * @test - */ + #[Test] public function forPropertyWithAsteriskAllowsArbitraryPropertyNamesWithShouldMap(): void { $subject = new PropertyMappingConfiguration(); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/ArrayConverterTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/ArrayConverterTest.php index 2cd53266d314..cc5988b43265 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/ArrayConverterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/ArrayConverterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Property\Exception\TypeConverterException; use TYPO3\CMS\Extbase\Property\PropertyMappingConfiguration; use TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationInterface; @@ -25,18 +27,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ArrayConverterTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function convertFromDoesNotModifyTheSourceArray(): void { $sourceArray = ['Foo' => 'Bar', 'Baz']; self::assertEquals($sourceArray, (new ArrayConverter())->convertFrom($sourceArray, 'array')); } - /** - * @test - */ + #[Test] public function canConvertFromEmptyStringToArray(): void { self::assertEquals([], (new ArrayConverter())->convertFrom('', 'array')); @@ -93,18 +91,14 @@ final class ArrayConverterTest extends UnitTestCase return $configuration; } - /** - * @test - * @dataProvider stringToArrayWithConfigurationDataProvider - */ + #[DataProvider('stringToArrayWithConfigurationDataProvider')] + #[Test] public function canConvertWithConfigurationFromString(string $source, PropertyMappingConfigurationInterface $configuration, array $expectedResult): void { self::assertEquals($expectedResult, (new ArrayConverter())->convertFrom($source, 'array', [], $configuration)); } - /** - * @test - */ + #[Test] public function throwsTypeConverterExceptionIfDelimiterIsNotGiven(): void { $this->expectException(TypeConverterException::class); @@ -112,9 +106,7 @@ final class ArrayConverterTest extends UnitTestCase (new ArrayConverter())->convertFrom('foo', 'array', [], new PropertyMappingConfiguration()); } - /** - * @test - */ + #[Test] public function returnsSourceUnchangedIfNonEmptyValueWithNoConfigurationIsGiven(): void { self::assertSame('foo', (new ArrayConverter())->convertFrom('foo', 'array', [])); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/BooleanConverterTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/BooleanConverterTest.php index be9fb210542f..1a9e70bbf302 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/BooleanConverterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/BooleanConverterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Property\TypeConverter\BooleanConverter; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,27 +31,21 @@ final class BooleanConverterTest extends UnitTestCase $this->converter = new BooleanConverter(); } - /** - * @test - */ + #[Test] public function convertFromDoesNotModifyTheBooleanSource(): void { $source = true; self::assertEquals($source, $this->converter->convertFrom($source, 'boolean')); } - /** - * @test - */ + #[Test] public function convertFromCastsSourceStringToBoolean(): void { $source = 'true'; self::assertTrue($this->converter->convertFrom($source, 'boolean')); } - /** - * @test - */ + #[Test] public function convertFromCastsNumericSourceStringToBoolean(): void { $source = '1'; diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/DateTimeConverterTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/DateTimeConverterTest.php index 99469c2ab24c..600262c9c82d 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/DateTimeConverterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/DateTimeConverterTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Error; use TYPO3\CMS\Extbase\Property\Exception\TypeConverterException; use TYPO3\CMS\Extbase\Property\PropertyMappingConfiguration; @@ -35,20 +37,14 @@ final class DateTimeConverterTest extends UnitTestCase $this->converter = new DateTimeConverter(); } - /** String to DateTime testcases **/ - - /** - * @test - */ + #[Test] public function convertFromReturnsErrorIfGivenStringCantBeConverted(): void { $error = $this->converter->convertFrom('1980-12-13', 'DateTime'); self::assertInstanceOf(Error::class, $error); } - /** - * @test - */ + #[Test] public function convertFromProperlyConvertsStringWithDefaultDateFormat(): void { $expectedResult = '1980-12-13T20:15:07+01:23'; @@ -57,9 +53,7 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function convertFromUsesDefaultDateFormatIfItIsNotConfigured(): void { $expectedResult = '1980-12-13T20:15:07+01:23'; @@ -75,9 +69,7 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function convertFromEmptyStringReturnsNull(): void { $date = $this->converter->convertFrom('', 'DateTime', [], null); @@ -105,9 +97,9 @@ final class DateTimeConverterTest extends UnitTestCase * @param string $source the string to be converted * @param string|null $dateFormat the expected date format * @param bool $isValid TRUE if the conversion is expected to be successful, otherwise FALSE - * @test - * @dataProvider convertFromStringDataProvider */ + #[DataProvider('convertFromStringDataProvider')] + #[Test] public function convertFromStringTests(string $source, ?string $dateFormat, bool $isValid): void { if ($dateFormat !== null) { @@ -145,10 +137,8 @@ final class DateTimeConverterTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider convertFromIntegerOrDigitStringsWithoutConfigurationDataProvider - */ + #[DataProvider('convertFromIntegerOrDigitStringsWithoutConfigurationDataProvider')] + #[Test] public function convertFromIntegerOrDigitStringWithoutConfigurationTests(string|int $source): void { $date = $this->converter->convertFrom($source, 'DateTime', [], null); @@ -156,12 +146,8 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame((string)$source, $date->format('U')); } - /** Array to DateTime testcases **/ - - /** - * @test - * @dataProvider convertFromIntegerOrDigitStringsWithoutConfigurationDataProvider - */ + #[DataProvider('convertFromIntegerOrDigitStringsWithoutConfigurationDataProvider')] + #[Test] public function convertFromIntegerOrDigitStringInArrayWithoutConfigurationTests(string|int $source): void { $date = $this->converter->convertFrom(['date' => $source], 'DateTime', [], null); @@ -169,18 +155,14 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame((string)$source, $date->format('U')); } - /** - * @test - */ + #[Test] public function convertFromReturnsErrorIfGivenArrayCantBeConverted(): void { $error = $this->converter->convertFrom(['date' => '1980-12-13'], 'DateTime'); self::assertInstanceOf(Error::class, $error); } - /** - * @test - */ + #[Test] public function convertFromThrowsExceptionIfGivenArrayDoesNotSpecifyTheDate(): void { $this->expectException(TypeConverterException::class); @@ -188,9 +170,7 @@ final class DateTimeConverterTest extends UnitTestCase $this->converter->convertFrom(['hour' => '12', 'minute' => '30'], 'DateTime'); } - /** - * @test - */ + #[Test] public function convertFromProperlyConvertsArrayWithDefaultDateFormat(): void { $expectedResult = '1980-12-13T20:15:07+01:23'; @@ -214,10 +194,8 @@ final class DateTimeConverterTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidDatePartKeyValuesDataProvider - */ + #[DataProvider('invalidDatePartKeyValuesDataProvider')] + #[Test] public function convertFromThrowsExceptionIfDatePartKeysHaveInvalidValuesSpecified($source): void { $this->expectException(TypeConverterException::class); @@ -225,9 +203,7 @@ final class DateTimeConverterTest extends UnitTestCase $this->converter->convertFrom($source, 'DateTime'); } - /** - * @test - */ + #[Test] public function convertFromProperlyConvertsArrayWithDateAsArray(): void { $source = ['day' => '13', 'month' => '10', 'year' => '2010']; @@ -243,9 +219,7 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame('2010-10-13', $actualResult); } - /** - * @test - */ + #[Test] public function convertFromAllowsToOverrideTheTime(): void { $source = [ @@ -262,9 +236,7 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame('59', $date->format('s')); } - /** - * @test - */ + #[Test] public function convertFromAllowsToOverrideTheTimezone(): void { $source = [ @@ -280,9 +252,7 @@ final class DateTimeConverterTest extends UnitTestCase self::assertSame('Atlantic/Reykjavik', $date->getTimezone()->getName()); } - /** - * @test - */ + #[Test] public function convertFromThrowsExceptionIfSpecifiedTimezoneIsInvalid(): void { $this->expectException(TypeConverterException::class); @@ -295,9 +265,7 @@ final class DateTimeConverterTest extends UnitTestCase $this->converter->convertFrom($source, 'DateTime'); } - /** - * @test - */ + #[Test] public function convertFromArrayThrowsExceptionForEmptyArray(): void { $this->expectException(TypeConverterException::class); @@ -305,9 +273,7 @@ final class DateTimeConverterTest extends UnitTestCase $this->converter->convertFrom([], 'DateTime', [], null); } - /** - * @test - */ + #[Test] public function convertFromArrayReturnsNullForEmptyDate(): void { self::assertNull($this->converter->convertFrom(['date' => ''], 'DateTime', [], null)); @@ -336,9 +302,9 @@ final class DateTimeConverterTest extends UnitTestCase /** * @param array $source the array to be converted * @param bool $isValid TRUE if the conversion is expected to be successful, otherwise FALSE - * @test - * @dataProvider convertFromArrayDataProvider */ + #[DataProvider('convertFromArrayDataProvider')] + #[Test] public function convertFromArrayTests(array $source, $isValid, ?string $expectedResult): void { $dateFormat = isset($source['dateFormat']) && $source['dateFormat'] !== '' ? $source['dateFormat'] : null; @@ -370,9 +336,7 @@ final class DateTimeConverterTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function convertFromSupportsDateTimeSubClasses(): void { $className = DateTimeSubFixture::class; diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/FloatConverterTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/FloatConverterTest.php index b075208e6a06..b8334562dabd 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/FloatConverterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/FloatConverterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Error; use TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationInterface; use TYPO3\CMS\Extbase\Property\TypeConverter\FloatConverter; @@ -24,33 +25,25 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FloatConverterTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function convertFromShouldCastTheStringToFloat(): void { self::assertSame(1.5, (new FloatConverter())->convertFrom('1.5', 'float')); } - /** - * @test - */ + #[Test] public function convertFromReturnsNullIfEmptyStringSpecified(): void { self::assertNull((new FloatConverter())->convertFrom('', 'float')); } - /** - * @test - */ + #[Test] public function convertFromShouldAcceptIntegers(): void { self::assertSame((float)123, (new FloatConverter())->convertFrom(123, 'float')); } - /** - * @test - */ + #[Test] public function convertFromShouldRespectConfiguration(): void { $mockMappingConfiguration = $this->createMock(PropertyMappingConfigurationInterface::class); @@ -70,17 +63,13 @@ final class FloatConverterTest extends UnitTestCase self::assertSame(1024.42, (new FloatConverter())->convertFrom('1.024,42', 'float', [], $mockMappingConfiguration)); } - /** - * @test - */ + #[Test] public function convertFromReturnsAnErrorIfSpecifiedStringIsNotNumeric(): void { self::assertInstanceOf(Error::class, (new FloatConverter())->convertFrom('not numeric', 'float')); } - /** - * @test - */ + #[Test] public function getSourceChildPropertiesToBeConvertedShouldReturnEmptyArray(): void { self::assertEquals([], (new FloatConverter())->getSourceChildPropertiesToBeConverted('myString')); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/IntegerConverterTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/IntegerConverterTest.php index 3465aa2c4fb0..f9c3f5dada74 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/IntegerConverterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/IntegerConverterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Error; use TYPO3\CMS\Extbase\Property\TypeConverter\IntegerConverter; use TYPO3\CMS\Extbase\Property\TypeConverterInterface; @@ -35,42 +36,32 @@ final class IntegerConverterTest extends UnitTestCase $this->converter = new IntegerConverter(); } - /** - * @test - */ + #[Test] public function convertFromShouldCastTheStringToInteger(): void { self::assertSame(15, $this->converter->convertFrom('15', 'integer')); } - /** - * @test - */ + #[Test] public function convertFromDoesNotModifyIntegers(): void { $source = 123; self::assertSame($source, $this->converter->convertFrom($source, 'integer')); } - /** - * @test - */ + #[Test] public function convertFromReturnsNullIfEmptyStringSpecified(): void { self::assertNull($this->converter->convertFrom('', 'integer')); } - /** - * @test - */ + #[Test] public function convertFromReturnsAnErrorIfSpecifiedStringIsNotNumeric(): void { self::assertInstanceOf(Error::class, $this->converter->convertFrom('not numeric', 'integer')); } - /** - * @test - */ + #[Test] public function getSourceChildPropertiesToBeConvertedShouldReturnEmptyArray(): void { self::assertEquals([], $this->converter->getSourceChildPropertiesToBeConverted('myString')); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/StringConverterTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/StringConverterTest.php index ebdea36e5994..80babdc2d3e6 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/StringConverterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/StringConverterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Property\TypeConverter\StringConverter; use TYPO3\CMS\Extbase\Property\TypeConverterInterface; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -34,17 +35,13 @@ final class StringConverterTest extends UnitTestCase $this->converter = new StringConverter(); } - /** - * @test - */ + #[Test] public function convertFromShouldReturnSourceString(): void { self::assertEquals('myString', $this->converter->convertFrom('myString', 'string')); } - /** - * @test - */ + #[Test] public function getSourceChildPropertiesToBeConvertedShouldReturnEmptyArray(): void { self::assertEquals([], $this->converter->getSourceChildPropertiesToBeConverted('myString')); diff --git a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverterRegistryTest.php b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverterRegistryTest.php index eb21922c8a12..68f5f2902954 100644 --- a/typo3/sysext/extbase/Tests/Unit/Property/TypeConverterRegistryTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Property/TypeConverterRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Property; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Authentication\LoginType; use TYPO3\CMS\Core\Type\TypeInterface; use TYPO3\CMS\Extbase\Domain\Model\FileReference; @@ -45,9 +46,7 @@ final class TypeConverterRegistryTest extends UnitTestCase $this->subject->add(new BooleanConverter(), 10, ['boolean', 'integer'], 'boolean'); } - /** - * @test - */ + #[Test] public function addThrowsDuplicateTypeConverterException(): void { $extendedBooleanConverter = new class () extends BooleanConverter {}; @@ -66,18 +65,14 @@ final class TypeConverterRegistryTest extends UnitTestCase $this->subject->add($extendedBooleanConverter, 10, ['boolean', 'integer'], 'boolean'); } - /** - * @test - */ + #[Test] public function findConverterFindsConverterForSimpleTypes(): void { $converter = $this->subject->findTypeConverter('boolean', 'boolean'); self::assertInstanceOf(BooleanConverter::class, $converter); } - /** - * @test - */ + #[Test] public function findConverterFindsConverterForSimpleTargetTypesWithHighestPriority(): void { $extendedBooleanConverter = new class () extends BooleanConverter {}; @@ -88,9 +83,7 @@ final class TypeConverterRegistryTest extends UnitTestCase self::assertInstanceOf($extendedBooleanConverterClassName, $converter); } - /** - * @test - */ + #[Test] public function findConverterThrowsTypeConverterExceptionWhenConverterForSimpleTypeTargetCannotBeFound(): void { $this->expectException(TypeConverterException::class); @@ -100,9 +93,7 @@ final class TypeConverterRegistryTest extends UnitTestCase $this->subject->findTypeConverter('array', 'boolean'); } - /** - * @test - */ + #[Test] public function findConverterThrowsInvalidTargetException(): void { $this->expectException(InvalidTargetException::class); @@ -112,9 +103,7 @@ final class TypeConverterRegistryTest extends UnitTestCase $this->subject->findTypeConverter('integer', 'NonExistingClass'); } - /** - * @test - */ + #[Test] public function findConverterThrowsTypeConverterExceptionWhenThereIsNoConverterRegisteredForGivenSourceTypeAndObjectTargetType(): void { $this->expectException(TypeConverterException::class); @@ -124,9 +113,7 @@ final class TypeConverterRegistryTest extends UnitTestCase $this->subject->findTypeConverter('array', \stdClass::class); } - /** - * @test - */ + #[Test] public function findConverterFindsTypeConverterForClassOrInterfaceTargetTypes(): void { $this->subject->add(new FileReferenceConverter(), 10, ['integer'], FileReference::class); @@ -135,9 +122,7 @@ final class TypeConverterRegistryTest extends UnitTestCase self::assertInstanceOf(FileReferenceConverter::class, $converter); } - /** - * @test - */ + #[Test] public function findConverterFindsTypeConverterForClassOrInterfaceParentClassOfTargetType(): void { $this->subject->add(new FileReferenceConverter(), 10, ['integer'], FileReference::class); @@ -149,9 +134,7 @@ final class TypeConverterRegistryTest extends UnitTestCase self::assertInstanceOf(FileReferenceConverter::class, $converter); } - /** - * @test - */ + #[Test] public function findConverterFindsTypeConverterForClassInterfaceOfTargetType(): void { $this->subject->add(new CoreTypeConverter(), 10, ['integer'], TypeInterface::class); @@ -160,9 +143,7 @@ final class TypeConverterRegistryTest extends UnitTestCase self::assertInstanceOf(CoreTypeConverter::class, $converter); } - /** - * @test - */ + #[Test] public function findConverterFindsLeastSpecificTypeConverterForClassOrInterfaceWithoutSpecificTypeConverterSet(): void { /* @@ -190,10 +171,9 @@ final class TypeConverterRegistryTest extends UnitTestCase } /** - * @test - * * @see testFindConverterThrowsTypeConverterExceptionWhenThereIsNoConverterRegisteredForGivenSourceTypeAndObjectTargetType */ + #[Test] public function findConverterThrowsExceptionIfNoConverterCanBeFoundToConvertSourceToAnObject(): void { /* @@ -212,9 +192,7 @@ final class TypeConverterRegistryTest extends UnitTestCase $this->subject->findTypeConverter('array', LoginType::class); } - /** - * @test - */ + #[Test] public function findConverterThrowsDuplicateTypeConverterException(): void { /* diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodParameterTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodParameterTest.php index 42a39daf61ed..53ec0b01a2df 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodParameterTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodParameterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection\ClassSchema; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Reflection\ClassSchema; use TYPO3\CMS\Extbase\Reflection\ClassSchema\Exception\NoSuchMethodParameterException; use TYPO3\CMS\Extbase\Tests\Unit\Reflection\Fixture\DummyClassWithAllTypesOfMethods; @@ -35,9 +36,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class MethodParameterTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classSchemaDetectsMandatoryParams(): void { self::assertFalse( @@ -48,9 +47,7 @@ final class MethodParameterTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsDefaultValueParams(): void { self::assertSame( @@ -62,9 +59,7 @@ final class MethodParameterTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsParamTypeFromTypeHint(): void { self::assertSame( @@ -76,9 +71,7 @@ final class MethodParameterTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsIgnoreValidationAnnotation(): void { $classSchemaMethod = (new ClassSchema(DummyControllerWithIgnoreValidationDoctrineAnnotation::class)) @@ -89,9 +82,7 @@ final class MethodParameterTest extends UnitTestCase $this->expectException(NoSuchMethodParameterException::class); $classSchemaMethod->getParameter('baz')->ignoreValidation(); } - /** - * @test - */ + #[Test] public function classSchemaDetectsIgnoreValidationAttribute(): void { $classSchemaMethod = (new ClassSchema(DummyControllerWithIgnoreValidationDoctrineAttribute::class)) @@ -103,9 +94,7 @@ final class MethodParameterTest extends UnitTestCase $classSchemaMethod->getParameter('baz')->ignoreValidation(); } - /** - * @test - */ + #[Test] public function classSchemaDetectsConstructorArgumentsWithDependencies(): void { $classSchema = new ClassSchema(DummyClassWithConstructorAndConstructorArgumentsWithDependencies::class); @@ -115,9 +104,7 @@ final class MethodParameterTest extends UnitTestCase self::assertSame(DummyClassWithGettersAndSetters::class, $method->getParameter('foo')->getDependency()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsValidateAnnotationsOfControllerActions(): void { $this->resetSingletonInstances = true; @@ -162,9 +149,7 @@ final class MethodParameterTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsValidateAttributesOfControllerActions(): void { $this->resetSingletonInstances = true; diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodTest.php index c744a68e4f89..04565842f23c 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/MethodTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection\ClassSchema; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Reflection\ClassSchema; use TYPO3\CMS\Extbase\Tests\Unit\Reflection\Fixture\DummyClassWithAllTypesOfMethods; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class MethodTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classSchemaDetectsMethodVisibility(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfMethods::class); @@ -49,9 +48,7 @@ final class MethodTest extends UnitTestCase self::assertTrue($methodDefinition->isPrivate()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsInjectMethods(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfMethods::class); @@ -73,9 +70,7 @@ final class MethodTest extends UnitTestCase self::assertArrayHasKey('injectFoo', $injectMethods); } - /** - * @test - */ + #[Test] public function classSchemaDetectsStaticMethods(): void { self::assertTrue( diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithTypeDeclarationsTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithTypeDeclarationsTest.php index c6d021c10279..ab0f92b054ec 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithTypeDeclarationsTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithTypeDeclarationsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection\ClassSchema\Property; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy; use TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyWithTypeDeclarationsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function intProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -38,9 +37,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('int', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function floatProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -50,9 +47,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('float', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function boolProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -62,9 +57,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('bool', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function objectProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -74,9 +67,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('object', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function arrayProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -86,9 +77,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('array', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function mixedProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -97,9 +86,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertCount(0, $propertyTypes); } - /** - * @test - */ + #[Test] public function nullableIntProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -111,10 +98,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase } // Collection Type Properties - - /** - * @test - */ + #[Test] public function listWithSquareBracketsSyntaxProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -130,9 +114,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $propertyTypes[0]->getCollectionValueTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function listWithArraySyntaxWithoutKeyValueTypeProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -149,9 +131,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $propertyTypes[0]->getCollectionValueTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function listWithArraySyntaxWithKeyValueTypeProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -168,9 +148,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $propertyTypes[0]->getCollectionValueTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function objectStorageWithArraySyntaxWithoutKeyValueTypeProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -191,10 +169,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase } // Union Type Properties (as of PHP 8.0) - - /** - * @test - */ + #[Test] public function intOrStringProperty(): void { $property = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -210,9 +185,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $property->getPrimaryType()?->getBuiltinType()); } - /** - * @test - */ + #[Test] public function nullableIntOrStringProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -225,9 +198,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertTrue($propertyTypes[1]->isNullable()); } - /** - * @test - */ + #[Test] public function concreteEntityOrLazyLoadingProxyProperty(): void { $property = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -240,9 +211,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame(DummyEntityWithTypeDeclarations::class, $property->getPrimaryType()?->getClassName()); } - /** - * @test - */ + #[Test] public function objectStorageProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -253,9 +222,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase self::assertSame(DummyEntityWithTypeDeclarations::class, $propertyTypes[0]->getCollectionValueTypes()[0]->getClassName()); } - /** - * @test - */ + #[Test] public function lazyObjectStorage(): void { $property = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) @@ -269,10 +236,7 @@ final class PropertyWithTypeDeclarationsTest extends UnitTestCase } // Intersection Type Properties (as of PHP 8.1) - - /** - * @test - */ + #[Test] public function arrayAccessAndTraversableProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithTypeDeclarations::class)) diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithoutTypeDeclarationsTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithoutTypeDeclarationsTest.php index 4f92e9a19fa7..83aeb22cbbd3 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithoutTypeDeclarationsTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/Property/PropertyWithoutTypeDeclarationsTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection\ClassSchema\Property; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy; use TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function nullableMixedProperty(): void { $property = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -38,9 +37,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertTrue($property->isNullable()); } - /** - * @test - */ + #[Test] public function intProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -50,9 +47,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('int', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function floatProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -62,9 +57,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('float', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function boolProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -74,9 +67,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('bool', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function objectProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -86,9 +77,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('object', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function arrayProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -98,9 +87,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('array', $propertyTypes[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function mixedProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -109,9 +96,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame([], $propertyTypes); } - /** - * @test - */ + #[Test] public function nullableIntProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -123,10 +108,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase } // Collection Type Properties - - /** - * @test - */ + #[Test] public function listWithSquareBracketsSyntaxProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -143,9 +125,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $propertyTypes[0]->getCollectionValueTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function listWithArraySyntaxWithoutKeyValueTypeProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -162,9 +142,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $propertyTypes[0]->getCollectionValueTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function listWithArraySyntaxWithKeyValueTypeProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -181,9 +159,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame('string', $propertyTypes[0]->getCollectionValueTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function objectStorageWithArraySyntaxWithoutKeyValueTypeProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -203,10 +179,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase } // Union Type Properties (as of PHP 8.0) - - /** - * @test - */ + #[Test] public function intOrStringProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -219,9 +192,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertFalse($propertyTypes[1]->isNullable()); } - /** - * @test - */ + #[Test] public function nullableIntOrStringProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -234,9 +205,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertTrue($propertyTypes[1]->isNullable()); } - /** - * @test - */ + #[Test] public function concreteEntityOrLazyLoadingProxyProperty(): void { $property = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -249,9 +218,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame(DummyEntityWithoutTypeDeclarations::class, $property->getPrimaryType()?->getClassName()); } - /** - * @test - */ + #[Test] public function objectStorageProperty(): void { $propertyTypes = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -262,9 +229,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase self::assertSame(DummyEntityWithoutTypeDeclarations::class, $propertyTypes[0]->getCollectionValueTypes()[0]->getClassName()); } - /** - * @test - */ + #[Test] public function lazyObjectStorage(): void { $property = (new ClassSchema(DummyEntityWithoutTypeDeclarations::class)) @@ -278,10 +243,7 @@ final class PropertyWithoutTypeDeclarationsTest extends UnitTestCase } // Intersection Type Properties (as of PHP 8.1) - - /** - * @test - */ + #[Test] public function arrayAccessAndTraversableProperty(): void { self::markTestSkipped('Current version of phpdoc reflection cannot detect intersection types'); diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/PropertyTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/PropertyTest.php index af0b4424313e..685bb7593b31 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/PropertyTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchema/PropertyTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection\ClassSchema; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; use TYPO3\CMS\Extbase\Reflection\ClassSchema; use TYPO3\CMS\Extbase\Tests\Unit\Reflection\Fixture\DummyClassWithAllTypesOfProperties; @@ -32,27 +33,21 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class PropertyTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classSchemaDetectsPropertiesWithLazyAnnotation(): void { $classSchema = new ClassSchema(DummyClassWithLazyDoctrineAnnotation::class); self::assertTrue($classSchema->getProperty('propertyWithLazyAnnotation')->isLazy()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsPropertiesWithLazyAttribute(): void { $classSchema = new ClassSchema(DummyClassWithLazyDoctrineAnnotation::class); self::assertTrue($classSchema->getProperty('propertyWithLazyAttribute')->isLazy()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsPropertyVisibility(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfProperties::class); @@ -73,9 +68,7 @@ final class PropertyTest extends UnitTestCase self::assertTrue($property->isPrivate()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsTransientProperty(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -84,9 +77,7 @@ final class PropertyTest extends UnitTestCase self::assertTrue($property->isTransient()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsTransientPropertyFromAttribute(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -95,9 +86,7 @@ final class PropertyTest extends UnitTestCase self::assertTrue($property->isTransient()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsCascadeProperty(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -106,9 +95,7 @@ final class PropertyTest extends UnitTestCase self::assertSame('remove', $property->getCascadeValue()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsCascadePropertyFromAttribute(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -117,9 +104,7 @@ final class PropertyTest extends UnitTestCase self::assertSame('remove', $property->getCascadeValue()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsCascadePropertyOnlyWithVarAnnotation(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -128,9 +113,7 @@ final class PropertyTest extends UnitTestCase self::assertNull($property->getCascadeValue()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsTypeAndElementType(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -152,9 +135,7 @@ final class PropertyTest extends UnitTestCase self::assertSame(DummyClassWithAllTypesOfProperties::class, $propertyType->getCollectionValueTypes()[0]->getClassName()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsTypeAndElementTypeWithoutFQCN(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -166,9 +147,7 @@ final class PropertyTest extends UnitTestCase self::assertSame(DummyClassWithAllTypesOfProperties::class, $property->getTypes()[0]->getCollectionValueTypes()[0]->getClassName()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsValidateAnnotationsModelProperties(): void { $this->resetSingletonInstances = true; @@ -214,9 +193,7 @@ final class PropertyTest extends UnitTestCase $property->getValidators() ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsValidateAttributeModelProperties(): void { $this->resetSingletonInstances = true; @@ -263,9 +240,7 @@ final class PropertyTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsValidateAttributeOnPromotedModelProperties(): void { $this->resetSingletonInstances = true; @@ -312,9 +287,7 @@ final class PropertyTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsTypeFromPropertyWithStringTypeHint(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -324,9 +297,7 @@ final class PropertyTest extends UnitTestCase self::assertSame('string', $property->getTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsTypeFromPropertyWithNullableStringTypeHint(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -336,9 +307,7 @@ final class PropertyTest extends UnitTestCase self::assertSame('string', $property->getTypes()[0]->getBuiltinType()); } - /** - * @test - */ + #[Test] public function isObjectStorageTypeDetectsObjectStorage(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -347,9 +316,7 @@ final class PropertyTest extends UnitTestCase self::assertTrue($property->isObjectStorageType()); } - /** - * @test - */ + #[Test] public function isObjectStorageTypeDetectsLazyObjectStorage(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -358,9 +325,7 @@ final class PropertyTest extends UnitTestCase self::assertTrue($property->isObjectStorageType()); } - /** - * @test - */ + #[Test] public function filterLazyLoadingProxyAndLazyObjectStorageFiltersLazyLoadingProxy(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) @@ -372,9 +337,7 @@ final class PropertyTest extends UnitTestCase self::assertSame(DummyClassWithAllTypesOfProperties::class, $types[0]->getClassName()); } - /** - * @test - */ + #[Test] public function filterLazyLoadingProxyAndLazyObjectStorageFiltersLazyObjectStorage(): void { $property = (new ClassSchema(DummyClassWithAllTypesOfProperties::class)) diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchemaTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchemaTest.php index d183730aa1bd..a3cd9a345c97 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchemaTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ClassSchemaTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject; use TYPO3\CMS\Extbase\Reflection\ClassSchema; @@ -38,9 +39,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ClassSchemaTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function classSchemaForModelIsSetAggregateRootIfRepositoryClassIsFoundForNamespacedClasses(): void { $this->resetSingletonInstances = true; @@ -49,18 +48,14 @@ final class ClassSchemaTest extends UnitTestCase self::assertTrue($classSchema->isAggregateRoot()); } - /** - * @test - */ + #[Test] public function classSchemaHasConstructor(): void { $classSchema = new ClassSchema(DummyClassWithConstructorAndConstructorArguments::class); self::assertTrue($classSchema->hasConstructor()); } - /** - * @test - */ + #[Test] public function classSchemaGetProperties(): void { self::assertSame( @@ -96,9 +91,7 @@ final class ClassSchemaTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaHasMethod(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfMethods::class); @@ -106,9 +99,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertFalse($classSchema->hasMethod('nonExistentMethod')); } - /** - * @test - */ + #[Test] public function classSchemaGetMethods(): void { self::assertSame( @@ -132,9 +123,7 @@ final class ClassSchemaTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function classSchemaDetectsPropertyDefaultValue(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfProperties::class); @@ -143,9 +132,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertSame('foo', $propertyDefinition->getDefaultValue()); } - /** - * @test - */ + #[Test] public function classSchemaSkipsDetectionOfDefaultValuesOfStaticClassProperties(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfProperties::class); @@ -154,51 +141,39 @@ final class ClassSchemaTest extends UnitTestCase self::assertNull($propertyDefinition->getDefaultValue()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsSingletons(): void { self::assertTrue((new ClassSchema(DummySingleton::class))->isSingleton()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsModels(): void { self::assertTrue((new ClassSchema(DummyEntity::class))->isModel()); self::assertTrue((new ClassSchema(DummyValueObject::class))->isModel()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsEntities(): void { self::assertTrue((new ClassSchema(DummyEntity::class))->isEntity()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsValueObjects(): void { self::assertTrue((new ClassSchema(DummyValueObject::class))->isValueObject()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsClassName(): void { $this->resetSingletonInstances = true; self::assertSame(DummyModel::class, (new ClassSchema(DummyModel::class))->getClassName()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsNonStaticProperties(): void { self::assertTrue((new ClassSchema(DummyClassWithAllTypesOfProperties::class))->hasProperty('publicProperty')); @@ -206,9 +181,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertTrue((new ClassSchema(DummyClassWithAllTypesOfProperties::class))->hasProperty('privateProperty')); } - /** - * @test - */ + #[Test] public function classSchemaDetectsStaticProperties(): void { self::assertTrue((new ClassSchema(DummyClassWithAllTypesOfProperties::class))->hasProperty('publicStaticProperty')); @@ -216,9 +189,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertTrue((new ClassSchema(DummyClassWithAllTypesOfProperties::class))->hasProperty('privateStaticProperty')); } - /** - * @test - */ + #[Test] public function classSchemaGenerationThrowsExceptionWithValidateDoctrineAnnotationsForParamWithoutTypeHint(): void { $this->resetSingletonInstances = true; @@ -229,9 +200,7 @@ final class ClassSchemaTest extends UnitTestCase new ClassSchema(DummyControllerWithValidateAnnotationWithoutParamTypeHint::class); } - /** - * @test - */ + #[Test] public function classSchemaGenerationThrowsExceptionWithValidateDoctrineAnnotationsForMissingParam(): void { $this->resetSingletonInstances = true; @@ -241,9 +210,7 @@ final class ClassSchemaTest extends UnitTestCase new ClassSchema(DummyControllerWithValidateAnnotationWithoutParam::class); } - /** - * @test - */ + #[Test] public function classSchemaGenerationThrowsExceptionWithValidateDoctrineAttributesForParamWithoutTypeHint(): void { $this->resetSingletonInstances = true; @@ -254,9 +221,7 @@ final class ClassSchemaTest extends UnitTestCase new ClassSchema(DummyControllerWithValidateAttributeWithoutParamTypeHint::class); } - /** - * @test - */ + #[Test] public function classSchemaGenerationThrowsExceptionWithValidateDoctrineAttributesForMissingParam(): void { $this->resetSingletonInstances = true; @@ -267,9 +232,7 @@ final class ClassSchemaTest extends UnitTestCase new ClassSchema(DummyControllerWithValidateAttributeWithoutParam::class); } - /** - * @test - */ + #[Test] public function classSchemaDetectsMethodParameterTypeViaReflection(): void { $class = new class () { @@ -283,9 +246,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertSame(ClassSchema::class, $classSchema->getMethod('bar')->getParameter('foo')->getType()); } - /** - * @test - */ + #[Test] public function classSchemaPrefersMethodParameterTypeDetectionViaReflection(): void { $class = new class () { @@ -299,9 +260,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertSame('string', $classSchema->getMethod('foo')->getParameter('foo')->getType()); } - /** - * @test - */ + #[Test] public function classSchemaCanHandleSelfMethodReturnTypes(): void { $class = new class () { @@ -319,9 +278,7 @@ final class ClassSchemaTest extends UnitTestCase self::assertSame(get_class($class), $classSchema->getMethod('bar')->getParameter('copy')->getType()); } - /** - * @test - */ + #[Test] public function classSchemaDetectsMethodParameterTypeDetectionViaDocBlocksIfNoTypeHintIsGiven(): void { $classSchema = new ClassSchema(DummyClassWithAllTypesOfMethods::class); diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ObjectAccessTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ObjectAccessTest.php index 0af67903fee3..ffc4cfd33ac0 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ObjectAccessTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ObjectAccessTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; @@ -41,27 +43,21 @@ final class ObjectAccessTest extends UnitTestCase $this->dummyObject->setAnotherProperty(42); } - /** - * @test - */ + #[Test] public function getPropertyReturnsExpectedValueForGetterProperty(): void { $property = ObjectAccess::getProperty($this->dummyObject, 'property'); self::assertEquals('string1', $property); } - /** - * @test - */ + #[Test] public function getPropertyReturnsExpectedValueForPublicProperty(): void { $property = ObjectAccess::getProperty($this->dummyObject, 'publicProperty2'); self::assertEquals(42, $property, 'A property of a given object was not returned correctly.'); } - /** - * @test - */ + #[Test] public function getPropertyThrowsExceptionIfPropertyDoesNotExist(): void { $this->expectException(PropertyNotAccessibleException::class); @@ -69,53 +65,41 @@ final class ObjectAccessTest extends UnitTestCase ObjectAccess::getProperty($this->dummyObject, 'notExistingProperty'); } - /** - * @test - */ + #[Test] public function getPropertyReturnsNullIfArrayKeyDoesNotExist(): void { $result = ObjectAccess::getProperty([], 'notExistingProperty'); self::assertNull($result); } - /** - * @test - */ + #[Test] public function getPropertyTriesToCallABooleanGetterMethodIfItExists(): void { $property = ObjectAccess::getProperty($this->dummyObject, 'booleanProperty'); self::assertTrue($property); } - /** - * @test - */ + #[Test] public function setPropertyReturnsFalseIfPropertyIsNotAccessible(): void { self::assertFalse(ObjectAccess::setProperty($this->dummyObject, 'protectedProperty', 42)); } - /** - * @test - */ + #[Test] public function setPropertyCallsASetterMethodToSetThePropertyValueIfOneIsAvailable(): void { ObjectAccess::setProperty($this->dummyObject, 'property', 4242); self::assertEquals(4242, $this->dummyObject->getProperty(), 'setProperty does not work with setter.'); } - /** - * @test - */ + #[Test] public function setPropertyWorksWithPublicProperty(): void { ObjectAccess::setProperty($this->dummyObject, 'publicProperty', 4242); self::assertEquals(4242, $this->dummyObject->publicProperty, 'setProperty does not work with public property.'); } - /** - * @test - */ + #[Test] public function setPropertyCanDirectlySetValuesInAnArrayObjectOrArray(): void { $arrayObject = new \ArrayObject(); @@ -126,9 +110,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('value', $array['key']); } - /** - * @test - */ + #[Test] public function getPropertyCanAccessPropertiesOfAnArrayObject(): void { $arrayObject = new \ArrayObject(['key' => 'value']); @@ -136,9 +118,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('value', $actual, 'getProperty does not work with ArrayObject property.'); } - /** - * @test - */ + #[Test] public function getPropertyCanAccessPropertiesOfAnObjectStorageObject(): void { $objectStorage = new ObjectStorage(); @@ -148,9 +128,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertSame($object, $actual, 'getProperty does not work with ObjectStorage property.'); } - /** - * @test - */ + #[Test] public function getPropertyCanAccessPropertiesOfAnObjectImplementingArrayAccess(): void { $arrayAccessInstance = new ArrayAccessClass(['key' => 'value']); @@ -158,9 +136,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('value', $actual, 'getProperty does not work with Array Access property.'); } - /** - * @test - */ + #[Test] public function getPropertyCanAccessPropertiesOfArrayAccessWithGetterMethodWhenOffsetNotExists(): void { $arrayAccessInstance = new ArrayAccessClass([]); @@ -168,9 +144,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('default-value', $actual, 'getProperty does not work with Array Access property.'); } - /** - * @test - */ + #[Test] public function getPropertyCanAccessPropertiesOfArrayAccessWithPriorityForOffsetIfOffsetExists(): void { $arrayAccessInstance = new ArrayAccessClass(['virtual' => 'overridden-value']); @@ -178,9 +152,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('overridden-value', $actual, 'getProperty does not work with Array Access property.'); } - /** - * @test - */ + #[Test] public function getPropertyCanAccessPropertiesOfAnArray(): void { $array = ['key' => 'value']; @@ -188,9 +160,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('value', $expected, 'getProperty does not work with Array property.'); } - /** - * @test - */ + #[Test] public function getPropertyPathCanAccessPropertiesOfAnArray(): void { $array = ['parent' => ['key' => 'value']]; @@ -198,9 +168,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('value', $actual, 'getPropertyPath does not work with Array property.'); } - /** - * @test - */ + #[Test] public function getPropertyPathCanAccessPropertiesOfAnObjectImplementingArrayAccess(): void { $array = ['parent' => new \ArrayObject(['key' => 'value'])]; @@ -208,9 +176,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals('value', $actual, 'getPropertyPath does not work with Array Access property.'); } - /** - * @test - */ + #[Test] public function getPropertyPathCanAccessPropertiesOfAnExtbaseObjectStorageObject(): void { $objectStorage = $this->setUpObjectStorageWithTwoItems(); @@ -221,9 +187,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertSame('value2', ObjectAccess::getPropertyPath($array, 'parent.1.key')); } - /** - * @test - */ + #[Test] public function getPropertyPathOnObjectStorageDoesNotAffectOngoingLoop(): void { $objectStorage = $this->setUpObjectStorageWithTwoItems(); @@ -247,9 +211,7 @@ final class ObjectAccessTest extends UnitTestCase return $objectStorage; } - /** - * @test - */ + #[Test] public function getPropertyPathCanAccessPropertiesOfAnSplObjectStorageObject(): void { $objectStorage = $this->setUpSplObjectStorageWithTwoItems(); @@ -260,9 +222,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertSame('value2', ObjectAccess::getPropertyPath($array, 'parent.1.key')); } - /** - * @test - */ + #[Test] public function getPropertyPathOnSplObjectStorageDoesNotAffectOngoingLoop(): void { $objectStorage = $this->setUpSplObjectStorageWithTwoItems(); @@ -286,9 +246,7 @@ final class ObjectAccessTest extends UnitTestCase return $objectStorage; } - /** - * @test - */ + #[Test] public function getGettablePropertyNamesReturnsAllPropertiesWhichAreAvailable(): void { GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata')); @@ -297,9 +255,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals($gettablePropertyNames, $expectedPropertyNames, 'getGettablePropertyNames returns not all gettable properties.'); } - /** - * @test - */ + #[Test] public function getGettablePropertyNamesRespectsMethodArguments(): void { $dateTimeZone = new \DateTimeZone('+2'); @@ -311,9 +267,7 @@ final class ObjectAccessTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function getSettablePropertyNamesReturnsAllPropertiesWhichAreAvailable(): void { GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata')); @@ -322,9 +276,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals($settablePropertyNames, $expectedPropertyNames, 'getSettablePropertyNames returns not all settable properties.'); } - /** - * @test - */ + #[Test] public function getSettablePropertyNamesReturnsPropertyNamesOfStdClass(): void { $stdClassObject = new \stdClass(); @@ -335,9 +287,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals($expectedPropertyNames, $settablePropertyNames, 'getSettablePropertyNames returns not all settable properties.'); } - /** - * @test - */ + #[Test] public function getGettablePropertiesReturnsTheCorrectValuesForAllProperties(): void { GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata')); @@ -355,9 +305,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals($allProperties, $expectedProperties, 'expectedProperties did not return the right values for the properties.'); } - /** - * @test - */ + #[Test] public function getGettablePropertiesReturnsPropertiesOfStdClass(): void { $stdClassObject = new \stdClass(); @@ -373,9 +321,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals($expectedProperties, $allProperties, 'expectedProperties did not return the right values for the properties.'); } - /** - * @test - */ + #[Test] public function isPropertySettableTellsIfAPropertyCanBeSet(): void { self::assertTrue(ObjectAccess::isPropertySettable($this->dummyObject, 'writeOnlyMagicProperty')); @@ -384,9 +330,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertFalse(ObjectAccess::isPropertySettable($this->dummyObject, 'privateProperty')); } - /** - * @test - */ + #[Test] public function isPropertySettableWorksOnStdClass(): void { $stdClassObject = new \stdClass(); @@ -396,12 +340,11 @@ final class ObjectAccessTest extends UnitTestCase } /** - * @dataProvider propertyGettableTestValues - * @test - * * @param string $property * @param bool $expected */ + #[DataProvider('propertyGettableTestValues')] + #[Test] public function isPropertyGettableTellsIfAPropertyCanBeRetrieved($property, $expected): void { self::assertEquals($expected, ObjectAccess::isPropertyGettable($this->dummyObject, $property)); @@ -419,9 +362,7 @@ final class ObjectAccessTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function isPropertyGettableWorksOnArrayAccessObjects(): void { $arrayObject = new \ArrayObject(); @@ -430,9 +371,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertFalse(ObjectAccess::isPropertyGettable($arrayObject, 'undefinedKey')); } - /** - * @test - */ + #[Test] public function isPropertyGettableWorksOnObjectsMixingRegularPropertiesAndArrayAccess(): void { /** @var \ArrayAccess $object */ @@ -453,9 +392,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertSame('v', ObjectAccess::getProperty($object, 'key')); } - /** - * @test - */ + #[Test] public function isPropertyGettableWorksOnStdClass(): void { $stdClassObject = new \stdClass(); @@ -464,9 +401,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertFalse(ObjectAccess::isPropertyGettable($stdClassObject, 'undefinedProperty')); } - /** - * @test - */ + #[Test] public function getPropertyPathCanRecursivelyGetPropertiesOfAnObject(): void { $alternativeObject = new DummyClassWithGettersAndSetters(); @@ -477,9 +412,7 @@ final class ObjectAccessTest extends UnitTestCase self::assertEquals($expected, $actual); } - /** - * @test - */ + #[Test] public function getPropertyPathReturnsNullForNonExistingPropertyPath(): void { $alternativeObject = new DummyClassWithGettersAndSetters(); @@ -488,18 +421,14 @@ final class ObjectAccessTest extends UnitTestCase self::assertNull(ObjectAccess::getPropertyPath($this->dummyObject, 'property2.property.not.existing')); } - /** - * @test - */ + #[Test] public function getPropertyPathReturnsNullIfSubjectIsNoObject(): void { $string = 'Hello world'; self::assertNull(ObjectAccess::getPropertyPath($string, 'property2')); } - /** - * @test - */ + #[Test] public function getPropertyPathReturnsNullIfSubjectOnPathIsNoObject(): void { $object = new \stdClass(); diff --git a/typo3/sysext/extbase/Tests/Unit/Reflection/ReflectionServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Reflection/ReflectionServiceTest.php index 4d04bb3253ce..a30e38b7b309 100644 --- a/typo3/sysext/extbase/Tests/Unit/Reflection/ReflectionServiceTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Reflection/ReflectionServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Reflection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Extbase\Reflection\ClassSchema; use TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException; @@ -31,9 +32,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ReflectionServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getClassSchemaThrowsExceptionIfClassIsNotFound(): void { $this->expectException(UnknownClassException::class); @@ -43,9 +42,7 @@ final class ReflectionServiceTest extends UnitTestCase $reflectionService->getClassSchema('Foo\Bar\Not\Existing'); } - /** - * @test - */ + #[Test] public function getClassSchemaThrowsExceptionIfTypeHintedClassWasNotFound(): void { $this->expectException(UnknownClassException::class); @@ -55,9 +52,7 @@ final class ReflectionServiceTest extends UnitTestCase $reflectionService->getClassSchema(DummyClassWithInvalidTypeHint::class); } - /** - * @test - */ + #[Test] public function reflectionServiceCanBeSerializedAndUnserialized(): void { $class = new class () {}; @@ -72,9 +67,7 @@ final class ReflectionServiceTest extends UnitTestCase self::assertInstanceOf(ClassSchema::class, $reflectionService->getClassSchema($class)); } - /** - * @test - */ + #[Test] public function reflectionServiceCanBeSerializedAndUnserializedWithCacheManager(): void { $class = new class () {}; diff --git a/typo3/sysext/extbase/Tests/Unit/Routing/Aspect/StaticRangeMapperTest.php b/typo3/sysext/extbase/Tests/Unit/Routing/Aspect/StaticRangeMapperTest.php index 48ded58d030d..d614c1501fd7 100644 --- a/typo3/sysext/extbase/Tests/Unit/Routing/Aspect/StaticRangeMapperTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Routing/Aspect/StaticRangeMapperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Routing\Aspect; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Core\Routing\Aspect\StaticRangeMapper; @@ -177,10 +179,8 @@ final class StaticRangeMapperTest extends TestCase ]; } - /** - * @test - * @dataProvider valueSettingsDataProvider - */ + #[DataProvider('valueSettingsDataProvider')] + #[Test] public function resolveDeterminesValues(string $start, string $end, array $expectations): void { $subject = new StaticRangeMapper([ diff --git a/typo3/sysext/extbase/Tests/Unit/Security/Cryptography/HashServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Security/Cryptography/HashServiceTest.php index e98bae5c0312..6a46a43890cd 100644 --- a/typo3/sysext/extbase/Tests/Unit/Security/Cryptography/HashServiceTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Security/Cryptography/HashServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Security\Cryptography; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Security\Cryptography\HashService; use TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException; use TYPO3\CMS\Extbase\Security\Exception\InvalidHashException; @@ -33,27 +34,21 @@ final class HashServiceTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = 'Testing'; } - /** - * @test - */ + #[Test] public function generateHmacReturnsHashStringIfStringIsGiven(): void { $hash = $this->hashService->generateHmac('asdf'); self::assertIsString($hash); } - /** - * @test - */ + #[Test] public function generateHmacReturnsHashStringWhichContainsSomeSalt(): void { $hash = $this->hashService->generateHmac('asdf'); self::assertNotEquals(sha1('asdf'), $hash); } - /** - * @test - */ + #[Test] public function generateHmacReturnsDifferentHashStringsForDifferentInputStrings(): void { $hash1 = $this->hashService->generateHmac('asdf'); @@ -61,9 +56,7 @@ final class HashServiceTest extends UnitTestCase self::assertNotEquals($hash1, $hash2); } - /** - * @test - */ + #[Test] public function generatedHmacCanBeValidatedAgain(): void { $string = 'asdf'; @@ -71,9 +64,7 @@ final class HashServiceTest extends UnitTestCase self::assertTrue($this->hashService->validateHmac($string, $hash)); } - /** - * @test - */ + #[Test] public function generatedHmacWillNotBeValidatedIfHashHasBeenChanged(): void { $string = 'asdf'; @@ -81,9 +72,7 @@ final class HashServiceTest extends UnitTestCase self::assertFalse($this->hashService->validateHmac($string, $hash)); } - /** - * @test - */ + #[Test] public function appendHmacAppendsHmacToGivenString(): void { $string = 'This is some arbitrary string '; @@ -91,9 +80,7 @@ final class HashServiceTest extends UnitTestCase self::assertSame($string, substr($hashedString, 0, -40)); } - /** - * @test - */ + #[Test] public function validateAndStripHmacThrowsExceptionIfGivenStringIsTooShort(): void { $this->expectException(InvalidArgumentForHashGenerationException::class); @@ -101,9 +88,7 @@ final class HashServiceTest extends UnitTestCase $this->hashService->validateAndStripHmac('string with less than 40 characters'); } - /** - * @test - */ + #[Test] public function validateAndStripHmacThrowsExceptionIfGivenStringHasNoHashAppended(): void { $this->expectException(InvalidHashException::class); @@ -111,9 +96,7 @@ final class HashServiceTest extends UnitTestCase $this->hashService->validateAndStripHmac('string with exactly a length 40 of chars'); } - /** - * @test - */ + #[Test] public function validateAndStripHmacThrowsExceptionIfTheAppendedHashIsInvalid(): void { $this->expectException(InvalidHashException::class); @@ -121,9 +104,7 @@ final class HashServiceTest extends UnitTestCase $this->hashService->validateAndStripHmac('some Stringac43682075d36592d4cb320e69ff0aa515886eab'); } - /** - * @test - */ + #[Test] public function validateAndStripHmacReturnsTheStringWithoutHmac(): void { $string = ' Some arbitrary string with special characters: öäüß!"§$ '; diff --git a/typo3/sysext/extbase/Tests/Unit/Service/CacheServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Service/CacheServiceTest.php index 5d9e8e3c9cf5..c28cb88fc4a2 100644 --- a/typo3/sysext/extbase/Tests/Unit/Service/CacheServiceTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Service/CacheServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; @@ -37,45 +38,35 @@ final class CacheServiceTest extends UnitTestCase $this->cacheService = new CacheService($configurationManager, $this->cacheManagerMock); } - /** - * @test - */ + #[Test] public function clearPageCacheConvertsPageIdsToArray(): void { $this->cacheManagerMock->expects(self::once())->method('flushCachesInGroupByTags')->with('pages', ['pageId_123']); $this->cacheService->clearPageCache(123); } - /** - * @test - */ + #[Test] public function clearPageCacheConvertsPageIdsToNumericArray(): void { $this->cacheManagerMock->expects(self::once())->method('flushCachesInGroupByTags')->with('pages', ['pageId_0']); $this->cacheService->clearPageCache('Foo'); } - /** - * @test - */ + #[Test] public function clearPageCacheDoesNotConvertPageIdsIfNoneAreSpecified(): void { $this->cacheManagerMock->expects(self::once())->method('flushCachesInGroup')->with('pages'); $this->cacheService->clearPageCache(); } - /** - * @test - */ + #[Test] public function clearPageCacheUsesCacheManagerToFlushCacheOfSpecifiedPages(): void { $this->cacheManagerMock->expects(self::once())->method('flushCachesInGroupByTags')->with('pages', ['pageId_1', 'pageId_2', 'pageId_3']); $this->cacheService->clearPageCache([1, 2, 3]); } - /** - * @test - */ + #[Test] public function clearsCachesOfRegisteredPageIds(): void { $this->cacheManagerMock->expects(self::once())->method('flushCachesInGroupByTags')->with('pages', ['pageId_2', 'pageId_15', 'pageId_8']); @@ -87,9 +78,7 @@ final class CacheServiceTest extends UnitTestCase $this->cacheService->clearCachesOfRegisteredPageIds(); } - /** - * @test - */ + #[Test] public function clearsCachesOfDuplicateRegisteredPageIdsOnlyOnce(): void { $this->cacheManagerMock->expects(self::once())->method('flushCachesInGroupByTags')->with('pages', ['pageId_2', 'pageId_15', 'pageId_8']); diff --git a/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php index a9e3ee12d5ea..ae71fb65f8e2 100644 --- a/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\ConnectionPool; @@ -127,12 +129,12 @@ final class ExtensionServiceTest extends UnitTestCase } /** - * @test - * @dataProvider getPluginNamespaceDataProvider * @param string $extensionName * @param string $pluginName * @param mixed $expectedResult */ + #[DataProvider('getPluginNamespaceDataProvider')] + #[Test] public function getPluginNamespaceTests($extensionName, $pluginName, $expectedResult): void { $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->willReturn([]); @@ -140,9 +142,7 @@ final class ExtensionServiceTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult, 'Failing for extension: "' . $extensionName . '", plugin: "' . $pluginName . '"'); } - /** - * @test - */ + #[Test] public function pluginNamespaceCanBeOverridden(): void { $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->with(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK, 'SomeExtension', 'SomePlugin')->willReturn(['view' => ['pluginNamespace' => 'overridden_plugin_namespace']]); @@ -167,10 +167,10 @@ final class ExtensionServiceTest extends UnitTestCase } /** - * @test - * @dataProvider getPluginNameByActionDataProvider * @param mixed $expectedResult */ + #[DataProvider('getPluginNameByActionDataProvider')] + #[Test] public function getPluginNameByActionTests(string $extensionName, string $controllerName, string $actionName, $expectedResult): void { $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->with(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK)->willReturn(['view' => ['pluginNamespace' => 'overridden_plugin_namespace']]); @@ -178,9 +178,7 @@ final class ExtensionServiceTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult, 'Failing for $extensionName: "' . $extensionName . '", $controllerName: "' . $controllerName . '", $actionName: "' . $actionName . '" - '); } - /** - * @test - */ + #[Test] public function getPluginNameByActionThrowsExceptionIfMoreThanOnePluginMatches(): void { $this->expectException(Exception::class); @@ -189,9 +187,7 @@ final class ExtensionServiceTest extends UnitTestCase $this->extensionService->getPluginNameByAction('ExtensionName', 'ControllerName', 'otherAction'); } - /** - * @test - */ + #[Test] public function getPluginNameByActionReturnsCurrentIfItCanHandleTheActionEvenIfMoreThanOnePluginMatches(): void { $frameworkConfiguration = [ @@ -216,27 +212,21 @@ final class ExtensionServiceTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getTargetPidByPluginSignatureReturnsNullIfConfigurationManagerIsNotInitialized(): void { $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->willReturn([]); self::assertNull($this->extensionService->getTargetPidByPlugin('ExtensionName', 'PluginName')); } - /** - * @test - */ + #[Test] public function getTargetPidByPluginSignatureReturnsNullIfDefaultPidIsZero(): void { $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->willReturn(['view' => ['defaultPid' => 0]]); self::assertNull($this->extensionService->getTargetPidByPlugin('ExtensionName', 'PluginName')); } - /** - * @test - */ + #[Test] public function getTargetPidByPluginSignatureReturnsTheConfiguredDefaultPid(): void { $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->willReturn(['view' => ['defaultPid' => 123]]); @@ -245,25 +235,19 @@ final class ExtensionServiceTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getDefaultControllerNameByPluginReturnsNullIfGivenExtensionCantBeFound(): void { self::assertNull($this->extensionService->getDefaultControllerNameByPlugin('NonExistingExtensionName', 'SomePlugin')); } - /** - * @test - */ + #[Test] public function getDefaultControllerNameByPluginReturnsNullIfGivenPluginCantBeFound(): void { self::assertNull($this->extensionService->getDefaultControllerNameByPlugin('ExtensionName', 'NonExistingPlugin')); } - /** - * @test - */ + #[Test] public function getDefaultControllerNameByPluginReturnsFirstControllerNameOfGivenPlugin(): void { $expectedResult = 'ControllerName'; @@ -271,33 +255,25 @@ final class ExtensionServiceTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getDefaultActionNameByPluginAndControllerReturnsNullIfGivenExtensionCantBeFound(): void { self::assertNull($this->extensionService->getDefaultActionNameByPluginAndController('NonExistingExtensionName', 'SomePlugin', 'ControllerName')); } - /** - * @test - */ + #[Test] public function getDefaultActionNameByPluginAndControllerReturnsNullIfGivenPluginCantBeFound(): void { self::assertNull($this->extensionService->getDefaultActionNameByPluginAndController('ExtensionName', 'NonExistingPlugin', 'ControllerName')); } - /** - * @test - */ + #[Test] public function getDefaultActionNameByPluginAndControllerReturnsNullIfGivenControllerCantBeFound(): void { self::assertNull($this->extensionService->getDefaultActionNameByPluginAndController('ExtensionName', 'SomePlugin', 'NonExistingControllerName')); } - /** - * @test - */ + #[Test] public function getDefaultActionNameByPluginAndControllerReturnsFirstActionNameOfGivenController(): void { $expectedResult = 'someAction'; @@ -305,9 +281,7 @@ final class ExtensionServiceTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function getTargetPageTypeByFormatReturnsZeroIfNoMappingIsSet(): void { $configurationManagerMock = $this->createMock(ConfigurationManager::class); @@ -322,9 +296,7 @@ final class ExtensionServiceTest extends UnitTestCase self::assertSame(0, $result); } - /** - * @test - */ + #[Test] public function getTargetPageTypeByFormatReturnsMappedPageTypeFromConfiguration(): void { $configurationManagerMock = $this->createMock(ConfigurationManager::class); diff --git a/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php index 9ce7a4908006..cfbc9129dc49 100644 --- a/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Service/ImageScriptServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Resource\File; @@ -43,9 +45,7 @@ final class ImageScriptServiceTest extends UnitTestCase $_SERVER['HTTP_HOST'] = 'foo.bar'; } - /** - * @test - */ + #[Test] public function fileIsUnwrappedFromReferenceForProcessing(): void { $reference = $this->getMockBuilder(FileReference::class)->disableOriginalConstructor()->getMock(); @@ -68,10 +68,8 @@ final class ImageScriptServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider prefixIsCorrectlyAppliedToGetImageUriDataProvider - */ + #[DataProvider('prefixIsCorrectlyAppliedToGetImageUriDataProvider')] + #[Test] public function prefixIsCorrectlyAppliedToGetImageUri($imageUri, $expected): void { $GLOBALS['TYPO3_REQUEST'] = (new ServerRequest()) @@ -94,10 +92,8 @@ final class ImageScriptServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider prefixIsCorrectlyAppliedToGetImageUriWithAbsolutePathDataProvider - */ + #[DataProvider('prefixIsCorrectlyAppliedToGetImageUriWithAbsolutePathDataProvider')] + #[Test] public function prefixIsCorrectlyAppliedToGetImageUriWithForcedAbsoluteUrl($imageUri, $expected): void { $GLOBALS['TYPO3_REQUEST'] = (new ServerRequest()) diff --git a/typo3/sysext/extbase/Tests/Unit/Utility/DebuggerUtilityTest.php b/typo3/sysext/extbase/Tests/Unit/Utility/DebuggerUtilityTest.php index a5300f0ee110..5b47a4b94c9a 100644 --- a/typo3/sysext/extbase/Tests/Unit/Utility/DebuggerUtilityTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Utility/DebuggerUtilityTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Persistence\ObjectStorage; use TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\DebuggerUtilityAccessibleProxy; use TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\DummyClass; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DebuggerUtilityTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function debuggerRewindsInstancesOfIterator(): void { $objectStorage = $this->getMockBuilder(ObjectStorage::class) @@ -42,9 +41,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertTrue($objectStorage->valid()); } - /** - * @test - */ + #[Test] public function debuggerDoesNotRewindInstancesOfGenerator(): void { $generator = (static function () { @@ -56,9 +53,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('Generator', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsPropertiesOfStdClassObjects(): void { $testObject = new \stdClass(); @@ -67,18 +62,14 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertMatchesRegularExpression('/foo.*bar/', $result); } - /** - * @test - */ + #[Test] public function varDumpHandlesVariadicArguments(): void { $result = DebuggerUtility::var_dump(static function (...$args) {}, null, 8, true, false, true); self::assertStringContainsString('function (...$args)', $result); } - /** - * @test - */ + #[Test] public function varDumpRespectsBlacklistedProperties(): void { $testClass = new \stdClass(); @@ -89,9 +80,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringNotContainsString($testClass->secretData, $result); } - /** - * @test - */ + #[Test] public function varDumpRespectsBlacklistedClasses(): void { $testClass = new \stdClass(); @@ -101,9 +90,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringNotContainsString($testClass->data, $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfDateTime(): void { $date = \DateTime::createFromFormat('Y-m-d H:i:s', '2018-11-26 09:27:28', new \DateTimeZone('UTC')); @@ -112,9 +99,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('2018-11-26T09:27:28', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfDateTimeImmutable(): void { $date = \DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '2018-11-26 09:27:28', new \DateTimeZone('UTC')); @@ -123,9 +108,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('2018-11-26T09:27:28', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfClosureWithArrayParameterType(): void { $closure = (static function (array $array) {}); @@ -134,9 +117,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('function (array $array)', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfClosureWithNullableArrayParameterTypeShowingOnlyArray(): void { $closure = (static function (?array $array) {}); @@ -145,9 +126,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('function (array $array)', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfClosureWithDummyClassParameterType(): void { $closure = (static function (DummyClass $class) {}); @@ -156,9 +135,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('function (TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\DummyClass $class)', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfClosureWithIntClassParameterType(): void { $closure = (static function (int $int) {}); @@ -167,9 +144,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('function ($int)', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfClosureWithStringClassParameterType(): void { $closure = (static function (string $string) {}); @@ -178,9 +153,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('function ($string)', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsDumpOfClosureWithoutClassParameterType(): void { $closure = (static function ($typeless) {}); @@ -189,9 +162,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('function ($typeless)', $result); } - /** - * @test - */ + #[Test] public function varDumpShowsUninitializedVariable(): void { $class = new class () { @@ -202,9 +173,7 @@ final class DebuggerUtilityTest extends UnitTestCase self::assertStringContainsString('test => protected uninitialized', $result); } - /** - * @test - */ + #[Test] public function varDumpUsesNonceValue(): void { DebuggerUtilityAccessibleProxy::setStylesheetEchoed(false); diff --git a/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php b/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php index 0eda20b5b74f..94a895fee66b 100644 --- a/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\ExtensionUtilityAccessibleProxy; use TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\FirstController; use TYPO3\CMS\Extbase\Tests\Unit\Utility\Fixtures\MyExtension\Controller\SecondController; @@ -26,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ExtensionUtilityTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function configurePluginWorksForMinimalisticSetup(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -41,9 +41,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertStringNotContainsString('USER_INT', $staticTypoScript); } - /** - * @test - */ + #[Test] public function configurePluginCreatesCorrectDefaultTypoScriptSetup(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -52,9 +50,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertStringContainsString('tt_content.list.20.myextension_pi1 = EXTBASEPLUGIN', $staticTypoScript); } - /** - * @test - */ + #[Test] public function configurePluginWorksForASingleControllerAction(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -79,9 +75,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']); } - /** - * @test - */ + #[Test] public function configurePluginThrowsExceptionIfExtensionNameIsEmpty(): void { $this->expectException(\InvalidArgumentException::class); @@ -91,9 +85,7 @@ final class ExtensionUtilityTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function configurePluginThrowsExceptionIfPluginNameIsEmpty(): void { $this->expectException(\InvalidArgumentException::class); @@ -103,9 +95,7 @@ final class ExtensionUtilityTest extends UnitTestCase ]); } - /** - * @test - */ + #[Test] public function configurePluginRespectsDefaultActionAsANonCacheableAction(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -133,9 +123,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']); } - /** - * @test - */ + #[Test] public function configurePluginRespectsNonDefaultActionAsANonCacheableAction(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -163,9 +151,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']); } - /** - * @test - */ + #[Test] public function configurePluginWorksForMultipleControllerActionsWithCacheableActionAsDefault(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -202,9 +188,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']); } - /** - * @test - */ + #[Test] public function configurePluginWorksForMultipleControllerActionsAsArrayWithCacheableActionAsDefault(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -241,9 +225,7 @@ final class ExtensionUtilityTest extends UnitTestCase self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']); } - /** - * @test - */ + #[Test] public function configurePluginWorksForMultipleControllerActionsWithNonCacheableActionAsDefault(): void { $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = []; @@ -285,9 +267,8 @@ final class ExtensionUtilityTest extends UnitTestCase /** * Tests method combination of registerPlugin() and its dependency addPlugin() to * verify plugin icon path resolving works. - * - * @test */ + #[Test] public function registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUnderscoredExtensionNameAndIconPathNotGiven(): void { $GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = []; @@ -306,9 +287,7 @@ final class ExtensionUtilityTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function registerPluginMethodReturnsPluginSignature(): void { $GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = []; @@ -323,9 +302,8 @@ final class ExtensionUtilityTest extends UnitTestCase /** * Tests method combination of registerPlugin() and its dependency addPlugin() to * verify plugin icon path resolving works. - * - * @test */ + #[Test] public function registerPluginTriggersAddPluginWhichSetsPluginIconPathIfUsingUpperCameCasedExtensionNameAndIconPathNotGiven(): void { $GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = []; @@ -347,9 +325,8 @@ final class ExtensionUtilityTest extends UnitTestCase /** * Tests method combination of registerPlugin() and its dependency addPlugin() to * verify plugin icon path resolving works. - * - * @test */ + #[Test] public function registerPluginTriggersAddPluginWhichSetsPluginIconPathIfIconPathIsGiven(): void { $GLOBALS['TCA']['tt_content']['columns']['list_type']['config']['items'] = []; @@ -403,10 +380,8 @@ final class ExtensionUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkResolveControllerAliasFromControllerClassNameDataProvider - */ + #[DataProvider('checkResolveControllerAliasFromControllerClassNameDataProvider')] + #[Test] public function checkResolveControllerAliasFromControllerClassName(string $expectedControllerAlias, string $controllerClassName): void { self::assertEquals( diff --git a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractCompositeValidatorTest.php b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractCompositeValidatorTest.php index 885541781509..63ab750467cc 100644 --- a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractCompositeValidatorTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractCompositeValidatorTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator\Fixture\AbstractCompositeValidatorClass; use TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationOptionsException; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractCompositeValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validatorAcceptsSupportedOptions(): void { $inputOptions = [ @@ -38,9 +37,7 @@ final class AbstractCompositeValidatorTest extends UnitTestCase self::assertSame($expectedOptions, $validator->getOptions()); } - /** - * @test - */ + #[Test] public function validatorHasDefaultOptions(): void { $inputOptions = ['requiredOption' => 666]; @@ -53,9 +50,7 @@ final class AbstractCompositeValidatorTest extends UnitTestCase self::assertSame($expectedOptions, $validator->getOptions()); } - /** - * @test - */ + #[Test] public function validatorThrowsExceptionOnNotSupportedOptions(): void { $inputOptions = ['invalidoption' => 42]; @@ -65,9 +60,7 @@ final class AbstractCompositeValidatorTest extends UnitTestCase $validator->setOptions($inputOptions); } - /** - * @test - */ + #[Test] public function validatorThrowsExceptionOnMissingRequiredOptions(): void { $inputOptions = []; diff --git a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractValidatorTest.php b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractValidatorTest.php index fe168bf1f2e6..5291cbc5bc78 100644 --- a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractValidatorTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/AbstractValidatorTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator\Fixture\AbstractValidatorClass; use TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationOptionsException; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validatorAcceptsSupportedOptions(): void { $inputOptions = [ @@ -38,9 +37,7 @@ final class AbstractValidatorTest extends UnitTestCase self::assertSame($expectedOptions, $validator->getOptions()); } - /** - * @test - */ + #[Test] public function validatorHasDefaultOptions(): void { $inputOptions = ['requiredOption' => 666]; @@ -53,9 +50,7 @@ final class AbstractValidatorTest extends UnitTestCase self::assertSame($expectedOptions, $validator->getOptions()); } - /** - * @test - */ + #[Test] public function validatorThrowsExceptionOnNotSupportedOptions(): void { $inputOptions = ['invalidoption' => 42]; @@ -65,9 +60,7 @@ final class AbstractValidatorTest extends UnitTestCase $validator->setOptions($inputOptions); } - /** - * @test - */ + #[Test] public function validatorThrowsExceptionOnMissingRequiredOptions(): void { $inputOptions = []; diff --git a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DisjunctionValidatorTest.php b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DisjunctionValidatorTest.php index b7ba998a3d6c..b9180166db76 100644 --- a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DisjunctionValidatorTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DisjunctionValidatorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Error; use TYPO3\CMS\Extbase\Error\Result; use TYPO3\CMS\Extbase\Validation\Validator\DisjunctionValidator; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DisjunctionValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validateReturnsNoErrorsIfOneValidatorReturnsNoError(): void { $validatorDisjunction = new DisjunctionValidator(); @@ -47,9 +46,7 @@ final class DisjunctionValidatorTest extends UnitTestCase self::assertFalse($validatorDisjunction->validate('some subject')->hasErrors()); } - /** - * @test - */ + #[Test] public function validateReturnsAllErrorsIfAllValidatorsReturnErrors(): void { $validatorDisjunction = new DisjunctionValidator(); diff --git a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php index 8067d58f100a..24bc389add45 100644 --- a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Error\Error; use TYPO3\CMS\Extbase\Error\Result; use TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator; @@ -25,17 +27,13 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class GenericObjectValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validatorShouldReturnErrorsIfTheValueIsNoObjectAndNotNull(): void { self::assertTrue((new GenericObjectValidator())->validate('foo')->hasErrors()); } - /** - * @test - */ + #[Test] public function validatorShouldReturnNoErrorsIfTheValueIsNull(): void { self::assertFalse((new GenericObjectValidator())->validate(null)->hasErrors()); @@ -75,14 +73,13 @@ final class GenericObjectValidatorTest extends UnitTestCase } /** - * @test - * @dataProvider dataProviderForValidator - * * @param mixed $objectToBeValidated * @param mixed $validationResultForFoo * @param mixed $validationResultForBar * @param mixed $errors */ + #[DataProvider('dataProviderForValidator')] + #[Test] public function validateChecksAllPropertiesForWhichAPropertyValidatorExists($objectToBeValidated, $validationResultForFoo, $validationResultForBar, $errors): void { $validator = new GenericObjectValidator(); @@ -103,9 +100,7 @@ final class GenericObjectValidatorTest extends UnitTestCase self::assertEquals($errors, $validator->validate($objectToBeValidated)->getFlattenedErrors()); } - /** - * @test - */ + #[Test] public function validateCanHandleRecursiveTargetsWithoutEndlessLooping(): void { $A = new class () { @@ -128,9 +123,7 @@ final class GenericObjectValidatorTest extends UnitTestCase self::assertFalse($aValidator->validate($A)->hasErrors()); } - /** - * @test - */ + #[Test] public function validateDetectsFailuresInRecursiveTargetsI(): void { $A = new class () { @@ -162,9 +155,7 @@ final class GenericObjectValidatorTest extends UnitTestCase self::assertSame(['b.uuid' => [$error]], $aValidator->validate($A)->getFlattenedErrors()); } - /** - * @test - */ + #[Test] public function validateDetectsFailuresInRecursiveTargetsII(): void { $A = new class () { @@ -198,9 +189,7 @@ final class GenericObjectValidatorTest extends UnitTestCase self::assertSame(['b.uuid' => [$error1], 'uuid' => [$error1]], $aValidator->validate($A)->getFlattenedErrors()); } - /** - * @test - */ + #[Test] public function validateDetectsFailuresInRecursiveTargetsIII(): void { // Create to test-entities. Use the same uuid to make the same validator trigger on both objects diff --git a/typo3/sysext/extbase/Tests/Unit/Validation/ValidatorClassNameResolverTest.php b/typo3/sysext/extbase/Tests/Unit/Validation/ValidatorClassNameResolverTest.php index 161d5221a0f3..179ac09aefef 100644 --- a/typo3/sysext/extbase/Tests/Unit/Validation/ValidatorClassNameResolverTest.php +++ b/typo3/sysext/extbase/Tests/Unit/Validation/ValidatorClassNameResolverTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\Unit\Validation; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Tests\Unit\Validation\Fixtures\Validation\Validator\CustomValidator; use TYPO3\CMS\Extbase\Tests\Unit\Validation\Fixtures\Validation\Validator\CustomValidatorThatDoesNotImplementValidatorInterfaceValidator; use TYPO3\CMS\Extbase\Validation\Exception\NoSuchValidatorException; @@ -34,18 +36,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; */ final class ValidatorClassNameResolverTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function resolveResolvesFullyQualifiedClassNames(): void { $validatorIdentifier = IntegerValidator::class; self::assertSame($validatorIdentifier, ValidatorClassNameResolver::resolve($validatorIdentifier)); } - /** - * @test - */ + #[Test] public function resolveResolvesCoreShorthandIdentifiers(): void { self::assertSame(IntegerValidator::class, ValidatorClassNameResolver::resolve('int')); @@ -55,17 +53,13 @@ final class ValidatorClassNameResolverTest extends UnitTestCase self::assertSame(FloatValidator::class, ValidatorClassNameResolver::resolve('float')); } - /** - * @test - */ + #[Test] public function resolveResolvesExtensionShorthandIdentifiers(): void { self::assertSame(IntegerValidator::class, ValidatorClassNameResolver::resolve('TYPO3.CMS.Extbase:Integer')); } - /** - * @test - */ + #[Test] public function resolveThrowsNoSuchValidatorExceptionDueToMissingClass(): void { $this->expectExceptionCode(1365799920); @@ -88,10 +82,8 @@ final class ValidatorClassNameResolverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider namespacedShorthandValidatorNamesDataProvider - */ + #[DataProvider('namespacedShorthandValidatorNamesDataProvider')] + #[Test] public function resolveWithShortHandNotationReturnsValidatorNameIfClassExists(string $validatorName, string $expectedClassName): void { self::assertSame( @@ -100,9 +92,7 @@ final class ValidatorClassNameResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveWithShortHandNotationThrowsExceptionIfClassDoesNotExist(): void { $this->expectException(NoSuchValidatorException::class); @@ -112,9 +102,7 @@ final class ValidatorClassNameResolverTest extends UnitTestCase ValidatorClassNameResolver::resolve($validatorName); } - /** - * @test - */ + #[Test] public function resolveThrowsNoSuchValidatorExceptionDueToClassInheritance(): void { $this->expectExceptionCode(1365776838); @@ -130,9 +118,7 @@ final class ValidatorClassNameResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveThrowsExceptionWithValidatorThatDoesNotImplementValidatorInterface(): void { $this->expectException(NoSuchValidatorException::class); @@ -142,9 +128,7 @@ final class ValidatorClassNameResolverTest extends UnitTestCase ValidatorClassNameResolver::resolve($validatorName); } - /** - * @test - */ + #[Test] public function resolveReturnsValidatorNameForFullQualifiedValidatorName(): void { $validatorName = CustomValidator::class; @@ -156,9 +140,7 @@ final class ValidatorClassNameResolverTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function resolveReturnsValidatorNameForFullQualifiedValidatorNameWithLeadingBackslash(): void { $validatorName = '\\' . CustomValidator::class; diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Mvc/Web/Routing/UriBuilderTest.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Mvc/Web/Routing/UriBuilderTest.php index efaea1884cba..0a0789f49741 100644 --- a/typo3/sysext/extbase/Tests/UnitDeprecated/Mvc/Web/Routing/UriBuilderTest.php +++ b/typo3/sysext/extbase/Tests/UnitDeprecated/Mvc/Web/Routing/UriBuilderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Mvc\Web\Routing; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\Mvc\Request; @@ -51,9 +52,7 @@ final class UriBuilderTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function removeDefaultControllerAndActionDoesNotModifyArgumentsIfSpecifiedControllerAndActionIsNotEqualToDefaults(): void { $this->mockExtensionService->expects(self::atLeastOnce())->method('getDefaultControllerNameByPlugin')->with('ExtensionName', 'PluginName')->willReturn('DefaultController'); @@ -66,9 +65,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function removeDefaultControllerAndActionRemovesControllerIfItIsEqualToTheDefault(): void { $this->mockExtensionService->expects(self::atLeastOnce())->method('getDefaultControllerNameByPlugin')->with('ExtensionName', 'PluginName')->willReturn('DefaultController'); @@ -81,9 +78,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function removeDefaultControllerAndActionRemovesActionIfItIsEqualToTheDefault(): void { $this->mockExtensionService->expects(self::atLeastOnce())->method('getDefaultControllerNameByPlugin')->with('ExtensionName', 'PluginName')->willReturn('DefaultController'); @@ -96,9 +91,7 @@ final class UriBuilderTest extends UnitTestCase self::assertEquals($expectedResult, $actualResult); } - /** - * @test - */ + #[Test] public function removeDefaultControllerAndActionRemovesControllerAndActionIfBothAreEqualToTheDefault(): void { $this->mockExtensionService->expects(self::atLeastOnce())->method('getDefaultControllerNameByPlugin')->with('ExtensionName', 'PluginName')->willReturn('DefaultController'); diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Persistence/RepositoryTest.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Persistence/RepositoryTest.php index c1ae789399c3..7e9ca5e1281a 100644 --- a/typo3/sysext/extbase/Tests/UnitDeprecated/Persistence/RepositoryTest.php +++ b/typo3/sysext/extbase/Tests/UnitDeprecated/Persistence/RepositoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Persistence; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Extbase\Configuration\ConfigurationManager; use TYPO3\CMS\Extbase\Persistence\Generic\Backend; @@ -98,9 +99,7 @@ final class RepositoryTest extends UnitTestCase $this->repository->injectPersistenceManager($this->mockPersistenceManager); } - /** - * @test - */ + #[Test] public function magicCallMethodAcceptsFindBySomethingCallsAndExecutesAQueryWithThatCriteria(): void { $mockQueryResult = $this->createMock(QueryResultInterface::class); @@ -117,9 +116,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame($mockQueryResult, $repository->findByFoo('bar')); } - /** - * @test - */ + #[Test] public function magicCallMethodAcceptsFindOneBySomethingCallsAndExecutesAQueryWithThatCriteria(): void { $object = new \stdClass(); @@ -139,9 +136,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame($object, $repository->findOneByFoo('bar')); } - /** - * @test - */ + #[Test] public function magicCallMethodAcceptsCountBySomethingCallsAndExecutesAQueryWithThatCriteria(): void { $mockQuery = $this->createMock(QueryInterface::class); @@ -159,9 +154,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame(2, $repository->countByFoo('bar')); } - /** - * @test - */ + #[Test] public function magicCallMethodReturnsFirstArrayKeyInFindOneBySomethingIfQueryReturnsRawResult(): void { $queryResultArray = [ @@ -176,9 +169,7 @@ final class RepositoryTest extends UnitTestCase self::assertSame(['foo' => 'bar'], $this->repository->findOneByFoo('bar')); } - /** - * @test - */ + #[Test] public function magicCallMethodReturnsNullInFindOneBySomethingIfQueryReturnsEmptyRawResult(): void { $queryResultArray = []; diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php index 121e4ccf7f65..e1a732eebd61 100644 --- a/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php +++ b/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php @@ -17,16 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Reflection; +use PHPUnit\Framework\Attributes\Test; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ReflectionServiceTest extends UnitTestCase { - /** - * @test - * - * Note: Starting with PHP8.2 unserializing dynamic properties (undefined properties) emits a deprecation - * warning, which fails in normal tests. This moved here to avoid failing tests. - */ + #[Test] public function reflectionServiceIsResetDuringWakeUp(): void { $insecureString = file_get_contents(__DIR__ . '/Fixture/InsecureSerializedReflectionService.txt'); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Controller/ActionControllerTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Controller/ActionControllerTest.php index c6ac1964a7c3..25c2c262c555 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Controller/ActionControllerTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Controller/ActionControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Registry; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -48,9 +49,8 @@ final class ActionControllerTest extends UnitTestCase /** * Warning: This test asserts multiple things at once to keep the setup short. - * - * @test */ + #[Test] public function createZipFileFromExtensionGeneratesCorrectArchive(): void { // 42 second of first day in 1970 - used to have achieve stable file names diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Controller/DownloadControllerTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Controller/DownloadControllerTest.php index 4dfd3c9c88e8..5c34e2333a29 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Controller/DownloadControllerTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Controller/DownloadControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Configuration\ExtensionConfiguration; use TYPO3\CMS\Extensionmanager\Controller\DownloadController; use TYPO3\CMS\Extensionmanager\Domain\Model\Extension; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DownloadControllerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function installFromTerReturnsArrayWithBooleanResultAndErrorArrayWhenExtensionManagerExceptionIsThrown(): void { $dummyExceptionMessage = 'exception message'; diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Controller/UploadExtensionFileControllerTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Controller/UploadExtensionFileControllerTest.php index 2810f5520be4..127f54521771 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Controller/UploadExtensionFileControllerTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Controller/UploadExtensionFileControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Controller\UploadExtensionFileController; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -62,10 +64,8 @@ final class UploadExtensionFileControllerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getExtensionFromZipFileExtractsExtensionKeyDataProvider - */ + #[DataProvider('getExtensionFromZipFileExtractsExtensionKeyDataProvider')] + #[Test] public function getExtensionKeyFromFileNameExtractsExtensionKey(string $filename, string $expectedKey): void { $subject = $this->getAccessibleMock(UploadExtensionFileController::class, null, [], '', false); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DependencyTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DependencyTest.php index 80f442828c98..016e18874d01 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DependencyTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DependencyTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Domain\Model\Dependency; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DependencyTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getLowestAndHighestIntegerVersionsReturnsArrayWithVersions(): void { $subject = Dependency::createFromEmConf('ter', '1.0.0-2.0.0'); @@ -32,9 +31,7 @@ final class DependencyTest extends UnitTestCase self::assertSame(2000000, $subject->getHighestVersionAsInteger()); } - /** - * @test - */ + #[Test] public function isVersionCompatibleReturnsCorrectResult(): void { $dependency = Dependency::createFromEmConf('typo3', '9.5.0-10.4.99'); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DownloadQueueTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DownloadQueueTest.php index eceefc725e15..972062a82b50 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DownloadQueueTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/DownloadQueueTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue; use TYPO3\CMS\Extensionmanager\Domain\Model\Extension; use TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException; @@ -28,12 +29,12 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DownloadQueueTest extends UnitTestCase { /** - * @var \TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue + * @var DownloadQueue */ protected $downloadQueue; /** - * @var \TYPO3\CMS\Extensionmanager\Domain\Model\Extension + * @var Extension */ protected $extension; @@ -46,9 +47,7 @@ final class DownloadQueueTest extends UnitTestCase $this->extension->setVersion('1.0.0'); } - /** - * @test - */ + #[Test] public function addExtensionToQueueAddsExtensionToDownloadStorageArray(): void { $this->downloadQueue->addExtensionToQueue($this->extension); @@ -57,9 +56,7 @@ final class DownloadQueueTest extends UnitTestCase self::assertArrayHasKey('foobar', $extensionStorage['download']); } - /** - * @test - */ + #[Test] public function addExtensionToQueueAddsExtensionToUpdateStorageArray(): void { $this->downloadQueue->addExtensionToQueue($this->extension, 'update'); @@ -68,9 +65,7 @@ final class DownloadQueueTest extends UnitTestCase self::assertArrayHasKey('foobar', $extensionStorage['update']); } - /** - * @test - */ + #[Test] public function addExtensionToQueueThrowsExceptionIfUnknownStackIsGiven(): void { $this->expectException(ExtensionManagerException::class); @@ -78,9 +73,7 @@ final class DownloadQueueTest extends UnitTestCase $this->downloadQueue->addExtensionToQueue($this->extension, 'unknownStack'); } - /** - * @test - */ + #[Test] public function addExtensionToQueueThrowsExceptionIfExtensionWithSameKeyAndDifferentValuesAlreadyExists(): void { $extension = new Extension(); @@ -93,9 +86,7 @@ final class DownloadQueueTest extends UnitTestCase $this->downloadQueue->addExtensionToQueue($this->extension); } - /** - * @test - */ + #[Test] public function removeExtensionFromQueueRemovesExtension(): void { $extension = new Extension(); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/ExtensionTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/ExtensionTest.php index 285c2c83f5df..a9b89d067f90 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/ExtensionTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Model/ExtensionTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Domain\Model\Extension; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -79,19 +81,17 @@ final class ExtensionTest extends UnitTestCase } /** - * @test - * @dataProvider getCategoryIndexFromStringOrNumberReturnsIndexDataProvider * @param string|int $input Given input * @param int $expected Expected result */ + #[DataProvider('getCategoryIndexFromStringOrNumberReturnsIndexDataProvider')] + #[Test] public function getCategoryIndexFromStringOrNumberReturnsIndex($input, $expected): void { $extension = new Extension(); self::assertEquals($expected, $extension->getCategoryIndexFromStringOrNumber($input)); } - /** - * @test - */ + #[Test] public function convertDependenciesToObjectsCreatesObjectStorage(): void { $serializedDependencies = [ @@ -105,9 +105,7 @@ final class ExtensionTest extends UnitTestCase self::assertInstanceOf(\SplObjectStorage::class, $dependencyObjects); } - /** - * @test - */ + #[Test] public function convertDependenciesToObjectsSetsIdentifier(): void { $serializedDependencies = [ @@ -176,10 +174,8 @@ final class ExtensionTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider convertDependenciesToObjectSetsVersionDataProvider - */ + #[DataProvider('convertDependenciesToObjectSetsVersionDataProvider')] + #[Test] public function convertDependenciesToObjectSetsVersion(array $dependencies, array $returnValue): void { $serializedDependencies = serialize($dependencies); @@ -190,9 +186,7 @@ final class ExtensionTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function convertDependenciesToObjectCanDealWithEmptyStringDependencyValues(): void { $dependencies = [ @@ -203,9 +197,7 @@ final class ExtensionTest extends UnitTestCase self::assertSame(0, $dependencyObjects->count()); } - /** - * @test - */ + #[Test] public function getDistributionImageTest(): void { $imageUrl = 'https://example.org/path/to/image.png'; @@ -219,9 +211,7 @@ final class ExtensionTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getDistributionWelcomeImageTest(): void { $imageUrl = 'https://example.org/path/to/image.png'; diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Repository/ExtensionRepositoryTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Repository/ExtensionRepositoryTest.php index 57ce7d776d89..e9c52b0f7761 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Domain/Repository/ExtensionRepositoryTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Domain/Repository/ExtensionRepositoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Repository; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Domain\Model\Dependency; use TYPO3\CMS\Extensionmanager\Domain\Model\Extension; use TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ExtensionRepositoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function filterYoungestVersionOfExtensionListFiltersAListToLatestVersion(): void { // foo2 should be kept @@ -53,9 +52,7 @@ final class ExtensionRepositoryTest extends UnitTestCase self::assertEquals(['foo' => $foo2, 'bar' => $bar1], $subject->_call('filterYoungestVersionOfExtensionList', $input, true)); } - /** - * @test - */ + #[Test] public function filterYoungestVersionOfExtensionListFiltersAListToLatestVersionWithOnlyCompatibleExtensions(): void { $suitableDependency = Dependency::createFromEmConf('typo3', '3.6.1'); @@ -94,9 +91,7 @@ final class ExtensionRepositoryTest extends UnitTestCase self::assertEquals(['foo' => $foo1, 'bar' => $bar2], $subject->_call('filterYoungestVersionOfExtensionList', $input, false)); } - /** - * @test - */ + #[Test] public function getExtensionsSuitableForTypo3VersionReturnsOnlySuitableOnes(): void { $suitableDependency = Dependency::createFromEmConf('typo3', '10.4.0-99.99.99'); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Parser/ExtensionXmlParserTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Parser/ExtensionXmlParserTest.php index 9294d752ed8c..d66d34ed523e 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Parser/ExtensionXmlParserTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Parser/ExtensionXmlParserTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Parser; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ExtensionXmlParserTest extends UnitTestCase { - /** - * @test - * @dataProvider isValidVersionNumberDataProvider - */ + #[DataProvider('isValidVersionNumberDataProvider')] + #[Test] public function isValidVersionNumber(string $versionNumber, bool $isValid): void { $subject = $this->getAccessibleMock(ExtensionXmlParser::class, null); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Report/ExtensionStatusTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Report/ExtensionStatusTest.php index 8be4122b7a70..75eacc93a651 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Report/ExtensionStatusTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Report/ExtensionStatusTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Report; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Localization\LanguageService; @@ -33,18 +34,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ExtensionStatusTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function extensionStatusImplementsStatusProviderInterface(): void { $reportMock = $this->createMock(ExtensionStatus::class); self::assertInstanceOf(StatusProviderInterface::class, $reportMock); } - /** - * @test - */ + #[Test] public function getStatusReturnsArray(): void { $report = $this->getMockBuilder(ExtensionStatus::class) @@ -54,9 +51,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertIsArray($report->getStatus()); } - /** - * @test - */ + #[Test] public function getStatusReturnArrayContainsFiveEntries(): void { $report = $this->getMockBuilder(ExtensionStatus::class) @@ -66,9 +61,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertCount(5, $report->getStatus()); } - /** - * @test - */ + #[Test] public function getStatusReturnArrayContainsInstancesOfReportsStatusStatus(): void { $statusObject = $this->getMockBuilder(Status::class) @@ -87,9 +80,7 @@ final class ExtensionStatusTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function getStatusCallsMainRepositoryForMainRepositoryStatusResult(): void { $languageServiceFactoryMock = $this->createMock(LanguageServiceFactory::class); @@ -109,9 +100,7 @@ final class ExtensionStatusTest extends UnitTestCase $subject->getStatus(); } - /** - * @test - */ + #[Test] public function getStatusReturnsErrorStatusIfRepositoryIsNotFound(): void { $languageServiceFactoryMock = $this->createMock(LanguageServiceFactory::class); @@ -132,9 +121,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertEquals(ContextualFeedbackSeverity::ERROR, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsNoticeIfRepositoryUpdateIsLongerThanSevenDaysAgo(): void { $languageServiceFactoryMock = $this->createMock(LanguageServiceFactory::class); @@ -169,9 +156,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertEquals(ContextualFeedbackSeverity::NOTICE, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsOkForLoadedExtensionIfNoInsecureExtensionIsLoaded(): void { $languageServiceFactoryMock = $this->createMock(LanguageServiceFactory::class); @@ -192,9 +177,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertEquals(ContextualFeedbackSeverity::OK, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsErrorForLoadedExtensionIfInsecureExtensionIsLoaded(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -215,9 +198,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertEquals(ContextualFeedbackSeverity::ERROR, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsOkForExistingExtensionIfNoInsecureExtensionExists(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -239,9 +220,7 @@ final class ExtensionStatusTest extends UnitTestCase } } - /** - * @test - */ + #[Test] public function getStatusReturnsWarningForExistingExtensionIfInsecureExtensionExistsButIsNotLoaded(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -262,9 +241,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertEquals(ContextualFeedbackSeverity::WARNING, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsWarningForLoadedExtensionIfOutdatedExtensionIsLoaded(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -285,9 +262,7 @@ final class ExtensionStatusTest extends UnitTestCase self::assertEquals(ContextualFeedbackSeverity::WARNING, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsErrorForExistingExtensionIfOutdatedExtensionExists(): void { $languageServiceMock = $this->createMock(LanguageService::class); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php index ad2fc708cbeb..86134a22362a 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue; @@ -65,9 +66,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase $this->managementService->injectDownloadQueue($this->downloadQueue); } - /** - * @test - */ + #[Test] public function installDownloadsExtensionIfNecessary(): void { $extension = new Extension(); @@ -87,9 +86,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase $this->managementService->installExtension($extension); } - /** - * @test - */ + #[Test] public function installExtensionReturnsFalseIfDependenciesCannotBeResolved(): void { $extension = new Extension(); @@ -101,9 +98,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function installExtensionWillReturnInstalledExtensions(): void { $extension = new Extension(); @@ -113,9 +108,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase self::assertSame(['installed' => ['foo' => 'foo']], $result); } - /** - * @test - */ + #[Test] public function installExtensionWillReturnDownloadedExtensions(): void { $downloadQueue = new DownloadQueue(); @@ -135,9 +128,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase self::assertSame(['downloaded' => ['foo' => $extension], 'installed' => ['foo' => 'foo']], $result); } - /** - * @test - */ + #[Test] public function installExtensionWillReturnUpdatedExtensions(): void { $downloadQueue = new DownloadQueue(); @@ -161,9 +152,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase self::assertSame(['updated' => ['foo' => $extension], 'installed' => ['foo' => 'foo']], $result); } - /** - * @test - */ + #[Test] public function markExtensionForDownloadAddsExtensionToDownloadQueueAndChecksDependencies(): void { $extension = new Extension(); @@ -176,9 +165,7 @@ final class ExtensionManagementServiceTest extends UnitTestCase self::assertSame(['download' => ['foo' => $extension]], $this->downloadQueue->getExtensionQueue()); } - /** - * @test - */ + #[Test] public function markExtensionForUpdateAddsExtensionToUpdateQueueAndChecksDependencies(): void { $extension = new Extension(); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/DependencyUtilityTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Utility/DependencyUtilityTest.php index de7d3e4b84a7..5c90173d6440 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Utility/DependencyUtilityTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/DependencyUtilityTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Extensionmanager\Domain\Model\Dependency; use TYPO3\CMS\Extensionmanager\Domain\Model\Extension; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DependencyUtilityTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function checkTypo3DependencyErrorsIfVersionNumberIsTooLow(): void { $dependency = Dependency::createFromEmConf('typo3', '15.0.0-0'); @@ -49,9 +48,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertSame(1399144499, $errors['foo'][0]['code']); } - /** - * @test - */ + #[Test] public function checkTypo3DependencyErrorsIfVersionNumberIsTooHigh(): void { $dependency = Dependency::createFromEmConf('typo3', '1.0.0-3.0.0'); @@ -69,9 +66,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertSame(1399144521, $errors['foo'][0]['code']); } - /** - * @test - */ + #[Test] public function checkTypo3DependencyReturnsTrueIfVersionNumberIsInRange(): void { $dependency = Dependency::createFromEmConf('typo3', '1.0.0-25.0.0'); @@ -88,9 +83,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertCount(0, $errors); } - /** - * @test - */ + #[Test] public function checkTypo3DependencyCanHandleEmptyVersionHighestVersion(): void { $dependency = Dependency::createFromEmConf('typo3', '1.0.0'); @@ -107,9 +100,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertCount(0, $errors); } - /** - * @test - */ + #[Test] public function checkTypo3DependencyCanHandleEmptyVersionLowestVersion(): void { $dependency = Dependency::createFromEmConf('typo3', '-15.0.0'); @@ -126,9 +117,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertCount(0, $errors); } - /** - * @test - */ + #[Test] public function checkPhpDependencyErrorsIfVersionNumberIsTooLow(): void { $dependency = Dependency::createFromEmConf('php', '15.0.0'); @@ -146,9 +135,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertSame(1377977857, $errors['foo'][0]['code']); } - /** - * @test - */ + #[Test] public function checkPhpDependencyThrowsExceptionIfVersionNumberIsTooHigh(): void { $dependency = Dependency::createFromEmConf('php', '1.0.0-3.0.0'); @@ -166,9 +153,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertSame(1377977856, $errors['foo'][0]['code']); } - /** - * @test - */ + #[Test] public function checkPhpDependencyReturnsTrueIfVersionNumberIsInRange(): void { $dependency = Dependency::createFromEmConf('php', '1.0.0-15.0.0'); @@ -186,9 +171,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertCount(0, $errors); } - /** - * @test - */ + #[Test] public function checkPhpDependencyCanHandleEmptyVersionHighestVersion(): void { $dependency = Dependency::createFromEmConf('php', '1.0.0'); @@ -206,9 +189,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertCount(0, $errors); } - /** - * @test - */ + #[Test] public function checkPhpDependencyCanHandleEmptyVersionLowestVersion(): void { $dependency = Dependency::createFromEmConf('typo3', '-25.0.0'); @@ -225,9 +206,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertCount(0, $errors); } - /** - * @test - */ + #[Test] public function isDependentExtensionAvailableReturnsTrueIfExtensionIsAvailable(): void { $availableExtensions = [ @@ -247,9 +226,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertTrue($dependencyUtility->_call('isDependentExtensionAvailable', 'dummy')); } - /** - * @test - */ + #[Test] public function isDependentExtensionAvailableReturnsFalseIfExtensionIsNotAvailable(): void { $availableExtensions = [ @@ -269,9 +246,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertFalse($dependencyUtility->_call('isDependentExtensionAvailable', '42')); } - /** - * @test - */ + #[Test] public function isAvailableVersionCompatibleCallsIsVersionCompatibleWithExtensionVersion(): void { $emConfUtility = $this->getMockBuilder(EmConfUtility::class) @@ -293,9 +268,7 @@ final class DependencyUtilityTest extends UnitTestCase $dependencyUtility->_call('isAvailableVersionCompatible', $dependency); } - /** - * @test - */ + #[Test] public function isExtensionDownloadableFromRemoteReturnsTrueIfOneVersionExists(): void { $extensionRepositoryMock = $this->getMockBuilder(ExtensionRepository::class) @@ -309,9 +282,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertTrue($count); } - /** - * @test - */ + #[Test] public function isExtensionDownloadableFromRemoteReturnsFalseIfNoVersionExists(): void { $extensionRepositoryMock = $this->getMockBuilder(ExtensionRepository::class) @@ -325,9 +296,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertFalse($count); } - /** - * @test - */ + #[Test] public function isDownloadableVersionCompatibleReturnsTrueIfCompatibleVersionExists(): void { $dependency = Dependency::createFromEmConf('dummy', '1.0.0-10.0.0'); @@ -342,9 +311,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertTrue($count); } - /** - * @test - */ + #[Test] public function isDownloadableVersionCompatibleReturnsFalseIfIncompatibleVersionExists(): void { $dependency = Dependency::createFromEmConf('dummy', '1.0.0-2.0.0'); @@ -359,9 +326,7 @@ final class DependencyUtilityTest extends UnitTestCase self::assertFalse($count); } - /** - * @test - */ + #[Test] public function getLatestCompatibleExtensionByDependencyWillReturnExtensionModelOfLatestExtension(): void { $suitableDependency = Dependency::createFromEmConf('typo3', '3.6.1'); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/EmConfUtilityTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Utility/EmConfUtilityTest.php index 9abdf498363b..ff8a4da0b5ec 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Utility/EmConfUtilityTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/EmConfUtilityTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extensionmanager\Utility\EmConfUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class EmConfUtilityTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructEmConfAddsCommentBlock(): void { $subject = new EmConfUtility(); @@ -32,9 +31,7 @@ final class EmConfUtilityTest extends UnitTestCase self::assertStringContainsString('Extension Manager/Repository config file for ext', $emConf); } - /** - * @test - */ + #[Test] public function fixEmConfTransfersOldConflictSettingToNewFormatWithSingleConflictingExtension(): void { $input = [ @@ -59,9 +56,7 @@ final class EmConfUtilityTest extends UnitTestCase self::assertEquals($expected, $result); } - /** - * @test - */ + #[Test] public function fixEmConfTransfersOldConflictSettingToNewFormatWithTwoConflictingExtensions(): void { $input = [ diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/FileHandlingUtilityTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Utility/FileHandlingUtilityTest.php index 5c63970800b4..9d7f5282e7d5 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Utility/FileHandlingUtilityTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/FileHandlingUtilityTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Localization\LanguageService; @@ -62,9 +63,7 @@ final class FileHandlingUtilityTest extends UnitTestCase return $extKey; } - /** - * @test - */ + #[Test] public function makeAndClearExtensionDirRemovesExtensionDirIfAlreadyExists(): void { $extKey = $this->createFakeExtension(); @@ -79,9 +78,7 @@ final class FileHandlingUtilityTest extends UnitTestCase $fileHandlerMock->_call('makeAndClearExtensionDir', $extKey); } - /** - * @test - */ + #[Test] public function makeAndClearExtensionDirAddsDir(): void { $extKey = $this->createFakeExtension(); @@ -95,9 +92,7 @@ final class FileHandlingUtilityTest extends UnitTestCase $fileHandlerMock->_call('makeAndClearExtensionDir', $extKey); } - /** - * @test - */ + #[Test] public function makeAndClearExtensionDirThrowsExceptionOnInvalidPath(): void { $this->expectException(ExtensionManagerException::class); @@ -112,9 +107,7 @@ final class FileHandlingUtilityTest extends UnitTestCase $fileHandlerMock->_call('makeAndClearExtensionDir', 'testing123', 'fakepath'); } - /** - * @test - */ + #[Test] public function addDirectoryAddsDirectory(): void { $extDirPath = $this->testRoot . StringUtility::getUniqueId('test-extensions-'); @@ -123,9 +116,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertDirectoryExists($extDirPath); } - /** - * @test - */ + #[Test] public function removeDirectoryRemovesDirectory(): void { $extDirPath = $this->testRoot . StringUtility::getUniqueId('test-extensions-'); @@ -135,9 +126,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertDirectoryDoesNotExist($extDirPath); } - /** - * @test - */ + #[Test] public function removeDirectoryRemovesSymlink(): void { $absoluteSymlinkPath = $this->testRoot . StringUtility::getUniqueId('test_symlink_'); @@ -149,9 +138,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertFalse(is_link($absoluteSymlinkPath)); } - /** - * @test - */ + #[Test] public function removeDirectoryDoesNotRemoveContentOfSymlinkedTargetDirectory(): void { $absoluteSymlinkPath = $this->testRoot . StringUtility::getUniqueId('test_symlink_'); @@ -168,9 +155,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertTrue(is_file($absoluteDirectoryPath . $relativeFilePath)); } - /** - * @test - */ + #[Test] public function unpackExtensionFromExtensionDataArrayCreatesTheExtensionDirectory(): void { $extensionKey = 'test'; @@ -187,9 +172,7 @@ final class FileHandlingUtilityTest extends UnitTestCase $fileHandlerMock->unpackExtensionFromExtensionDataArray($extensionKey, []); } - /** - * @test - */ + #[Test] public function unpackExtensionFromExtensionDataArrayStripsDirectoriesFromFilesArray(): void { $extensionData = [ @@ -255,9 +238,7 @@ final class FileHandlingUtilityTest extends UnitTestCase $fileHandlerMock->unpackExtensionFromExtensionDataArray('test', $extensionData); } - /** - * @test - */ + #[Test] public function writeExtensionFilesWritesFiles(): void { $files = [ @@ -282,9 +263,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertFileExists($rootPath . 'ChangeLog'); } - /** - * @test - */ + #[Test] public function extractDirectoriesFromExtensionDataExtractsDirectories(): void { $files = [ @@ -333,9 +312,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertSame($expected, array_values($extractedDirectories)); } - /** - * @test - */ + #[Test] public function createDirectoriesForExtensionFilesCreatesDirectories(): void { $rootPath = $this->fakedExtensions[$this->createFakeExtension()]['packagePath']; @@ -351,9 +328,7 @@ final class FileHandlingUtilityTest extends UnitTestCase self::assertDirectoryExists($rootPath . 'mod/doc/'); } - /** - * @test - */ + #[Test] public function writeEmConfWritesEmConfFile(): void { $extKey = $this->createFakeExtension(); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/InstallUtilityTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Utility/InstallUtilityTest.php index 73f63b41a195..1514a044d493 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Utility/InstallUtilityTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/InstallUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use Psr\EventDispatcher\EventDispatcherInterface; @@ -118,9 +120,7 @@ final class InstallUtilityTest extends UnitTestCase return $extKey; } - /** - * @test - */ + #[Test] public function installCallsUpdateDatabase(): void { $this->installMock->expects(self::once())->method('updateDatabase'); @@ -130,9 +130,7 @@ final class InstallUtilityTest extends UnitTestCase $this->installMock->install($this->extensionKey); } - /** - * @test - */ + #[Test] public function installCallsLoadExtension(): void { $cacheManagerMock = $this->getMockBuilder(CacheManager::class)->getMock(); @@ -141,9 +139,7 @@ final class InstallUtilityTest extends UnitTestCase $this->installMock->install($this->extensionKey); } - /** - * @test - */ + #[Test] public function installCallsFlushCaches(): void { $cacheManagerMock = $this->getMockBuilder(CacheManager::class)->getMock(); @@ -152,9 +148,7 @@ final class InstallUtilityTest extends UnitTestCase $this->installMock->install($this->extensionKey); } - /** - * @test - */ + #[Test] public function installCallsReloadCaches(): void { $cacheManagerMock = $this->getMockBuilder(CacheManager::class)->getMock(); @@ -163,9 +157,7 @@ final class InstallUtilityTest extends UnitTestCase $this->installMock->install($this->extensionKey); } - /** - * @test - */ + #[Test] public function installCallsSaveDefaultConfigurationWithExtensionKey(): void { $cacheManagerMock = $this->getMockBuilder(CacheManager::class)->getMock(); @@ -200,10 +192,8 @@ final class InstallUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider importT3DFileDoesNotImportFileIfAlreadyImportedDataProvider - */ + #[DataProvider('importT3DFileDoesNotImportFileIfAlreadyImportedDataProvider')] + #[Test] public function importT3DFileDoesNotImportFileIfAlreadyImported(string $fileName, string $registryNameReturnsFalse, string $registryNameReturnsTrue): void { $extKey = $this->createFakeExtension(); diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Utility/ListUtilityTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Utility/ListUtilityTest.php index 8c9bd9f33edf..aa258aec0fbd 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Utility/ListUtilityTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Utility/ListUtilityTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Utility; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; use TYPO3\CMS\Core\Package\Package; use TYPO3\CMS\Core\Package\PackageManager; @@ -107,10 +109,8 @@ final class ListUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getAvailableAndInstalledExtensionsDataProvider - */ + #[DataProvider('getAvailableAndInstalledExtensionsDataProvider')] + #[Test] public function getAvailableAndInstalledExtensionsTest(array $availableExtensions, array $expectedResult): void { self::assertEquals($expectedResult, $this->subject->getAvailableAndInstalledExtensions($availableExtensions)); @@ -137,10 +137,8 @@ final class ListUtilityTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider enrichExtensionsWithEmConfInformationDataProvider - */ + #[DataProvider('enrichExtensionsWithEmConfInformationDataProvider')] + #[Test] public function enrichExtensionsWithEmConfInformation(array $extensions, array $emConf, array $expectedResult): void { $this->subject->injectExtensionRepository($this->getAccessibleMock(ExtensionRepository::class, ['findOneByExtensionKeyAndVersion', 'findHighestAvailableVersion'], [], '', false)); diff --git a/typo3/sysext/felogin/Tests/Unit/Configuration/RecoveryConfigurationTest.php b/typo3/sysext/felogin/Tests/Unit/Configuration/RecoveryConfigurationTest.php index d0bbb8af0afd..f472827a932d 100644 --- a/typo3/sysext/felogin/Tests/Unit/Configuration/RecoveryConfigurationTest.php +++ b/typo3/sysext/felogin/Tests/Unit/Configuration/RecoveryConfigurationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\FrontendLogin\Tests\Unit\Configuration; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; @@ -79,9 +80,7 @@ final class RecoveryConfigurationTest extends UnitTestCase $this->subject->setLogger($this->logger); } - /** - * @test - */ + #[Test] public function getSenderShouldReturnAddressWithFallbackFromGlobals(): void { $this->settings['email_from'] = null; @@ -103,9 +102,7 @@ final class RecoveryConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getSenderShouldReturnAddressWithConfigFromTypoScript(): void { $this->setupSubject(); @@ -122,9 +119,7 @@ final class RecoveryConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getEmailTemplateNameThrowsExceptionIfTemplateNameIsEmpty(): void { $this->settings['email']['templateName'] = ''; @@ -134,9 +129,7 @@ final class RecoveryConfigurationTest extends UnitTestCase $this->subject->getMailTemplateName(); } - /** - * @test - */ + #[Test] public function getLifeTimeTimestampShouldReturnTimestamp(): void { $timestamp = time(); @@ -150,9 +143,7 @@ final class RecoveryConfigurationTest extends UnitTestCase self::assertSame($expected, $actual); } - /** - * @test - */ + #[Test] public function getForgotHashShouldReturnHashWithLifeTimeTimestamp(): void { $timestamp = time(); @@ -170,9 +161,7 @@ final class RecoveryConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getReplyToShouldReturnNullIfNoneAreSet(): void { $this->setupSubject(); @@ -180,9 +169,7 @@ final class RecoveryConfigurationTest extends UnitTestCase self::assertNull($this->subject->getReplyTo()); } - /** - * @test - */ + #[Test] public function getMailTemplatePathsReturnsAnInstanceOfTemplatePathsObjectWithConfigurationOfTypoScript(): void { $GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths'] = [ @@ -201,9 +188,7 @@ final class RecoveryConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getMailTemplatePathsReplacesTemplatePathsWithPathsConfiguredInTypoScript(): void { $GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths'] = [ @@ -222,18 +207,14 @@ final class RecoveryConfigurationTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getMailTemplateNameWillReturnTemplateNameConfiguredInTypoScript(): void { $this->setupSubject(); self::assertSame($this->settings['email']['templateName'], $this->subject->getMailTemplateName()); } - /** - * @test - */ + #[Test] public function recoveryConfigurationWillCreateAnInstanceOfAddressIfDefaultMailReplyToAddressIsSet(): void { $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailReplyToAddress'] = 'typo3@example.com'; @@ -241,9 +222,7 @@ final class RecoveryConfigurationTest extends UnitTestCase self::assertInstanceOf(Address::class, $this->subject->getReplyTo()); } - /** - * @test - */ + #[Test] public function recoveryConfigurationWillCreateAnInstanceOfAddressWithName(): void { $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailReplyToName'] = 'TYPO3'; diff --git a/typo3/sysext/felogin/Tests/Unit/Redirect/RedirectHandlerTest.php b/typo3/sysext/felogin/Tests/Unit/Redirect/RedirectHandlerTest.php index b81039b19a2a..cd88321cbe22 100644 --- a/typo3/sysext/felogin/Tests/Unit/Redirect/RedirectHandlerTest.php +++ b/typo3/sysext/felogin/Tests/Unit/Redirect/RedirectHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\FrontendLogin\Tests\Unit\Redirect; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Core\Context\Context; @@ -63,10 +65,8 @@ final class RedirectHandlerTest extends UnitTestCase yield 'empty string on redirect mode logout' => ['', 'logout']; } - /** - * @test - * @dataProvider loginTypeLogoutDataProvider - */ + #[DataProvider('loginTypeLogoutDataProvider')] + #[Test] public function processShouldReturnStringForLoginTypeLogout(string $expect, string $redirectMode): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -95,10 +95,8 @@ final class RedirectHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getLogoutRedirectUrlDataProvider - */ + #[DataProvider('getLogoutRedirectUrlDataProvider')] + #[Test] public function getLogoutRedirectUrlShouldReturnAlternativeRedirectUrl( string $expected, array $redirectModes, @@ -122,9 +120,7 @@ final class RedirectHandlerTest extends UnitTestCase self::assertEquals($expected, $this->subject->getLogoutFormRedirectUrl($request, $configuration, 13, false)); } - /** - * @test - */ + #[Test] public function getLogoutRedirectUrlShouldReturnAlternativeRedirectUrlForLoggedInUserAndRedirectPageLogoutSet(): void { $this->subject = new RedirectHandler( @@ -180,10 +176,8 @@ final class RedirectHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getLoginFormRedirectUrlDataProvider - */ + #[DataProvider('getLoginFormRedirectUrlDataProvider')] + #[Test] public function getLoginFormRedirectUrlReturnsExpectedValue( string $redirectUrl, string $redirectMode, @@ -207,9 +201,7 @@ final class RedirectHandlerTest extends UnitTestCase self::assertEquals($expected, $this->subject->getLoginFormRedirectUrl($request, $configuration, $redirectDisabled)); } - /** - * @test - */ + #[Test] public function getReferrerForLoginFormReturnsEmptyStringIfRedirectModeReferrerDisabled(): void { $serverRequest = (new ServerRequest())->withAttribute('extbase', new ExtbaseRequestParameters()); @@ -218,9 +210,7 @@ final class RedirectHandlerTest extends UnitTestCase self::assertEquals('', $this->subject->getReferrerForLoginForm($request, $settings)); } - /** - * @test - */ + #[Test] public function getReferrerForLoginFormReturnsReferrerGetParameter(): void { $expectedReferrer = 'https://example.com/page-referrer'; @@ -232,9 +222,7 @@ final class RedirectHandlerTest extends UnitTestCase self::assertEquals($expectedReferrer, $this->subject->getReferrerForLoginForm($request, $settings)); } - /** - * @test - */ + #[Test] public function getReferrerForLoginFormReturnsReferrerPostParameter(): void { $expectedReferrer = 'https://example.com/page-referrer'; @@ -246,9 +234,7 @@ final class RedirectHandlerTest extends UnitTestCase self::assertEquals($expectedReferrer, $this->subject->getReferrerForLoginForm($request, $settings)); } - /** - * @test - */ + #[Test] public function getReferrerForLoginFormReturnsHttpReferrerParameter(): void { $expectedReferrer = 'https://example.com/page-referrer'; @@ -260,9 +246,7 @@ final class RedirectHandlerTest extends UnitTestCase self::assertEquals($expectedReferrer, $this->subject->getReferrerForLoginForm($request, $settings)); } - /** - * @test - */ + #[Test] public function getReferrerForLoginFormReturnsOriginalRequestUrlIfCalledBySubRequest(): void { $expectedReferrer = 'https://example.com/original-page'; diff --git a/typo3/sysext/felogin/Tests/Unit/Service/RecoveryServiceTest.php b/typo3/sysext/felogin/Tests/Unit/Service/RecoveryServiceTest.php index 77917b0dd50f..94abd71aaa2b 100644 --- a/typo3/sysext/felogin/Tests/Unit/Service/RecoveryServiceTest.php +++ b/typo3/sysext/felogin/Tests/Unit/Service/RecoveryServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\FrontendLogin\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Mime\Address; @@ -60,10 +62,8 @@ final class RecoveryServiceTest extends UnitTestCase $this->extbaseRequest = new Request($request); } - /** - * @test - * @dataProvider configurationDataProvider - */ + #[DataProvider('configurationDataProvider')] + #[Test] public function sendRecoveryEmailShouldGenerateMailFromConfiguration( int $uid, array $recoveryConfiguration, diff --git a/typo3/sysext/felogin/Tests/Unit/Service/ValidatorResolverServiceTest.php b/typo3/sysext/felogin/Tests/Unit/Service/ValidatorResolverServiceTest.php index e9f6371eb7be..04f11570c3b8 100644 --- a/typo3/sysext/felogin/Tests/Unit/Service/ValidatorResolverServiceTest.php +++ b/typo3/sysext/felogin/Tests/Unit/Service/ValidatorResolverServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\FrontendLogin\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator; use TYPO3\CMS\Extbase\Validation\Validator\StringLengthValidator; use TYPO3\CMS\FrontendLogin\Service\ValidatorResolverService; @@ -26,9 +28,7 @@ final class ValidatorResolverServiceTest extends UnitTestCase { protected ValidatorResolverService $subject; - /** - * @test - */ + #[Test] public function resolveShouldReturnEmptyArrayIfEmptyConfigurationIsPassed(): void { $result = $this->subject->resolve([]); @@ -36,10 +36,8 @@ final class ValidatorResolverServiceTest extends UnitTestCase self::assertEmpty($result->current()); } - /** - * @test - * @dataProvider validatorConfigDataProvider - */ + #[DataProvider('validatorConfigDataProvider')] + #[Test] public function resolveShouldReturnValidators(array $config): void { $validators = $this->subject->resolve($config); diff --git a/typo3/sysext/felogin/Tests/Unit/Validation/RedirectUrlValidatorTest.php b/typo3/sysext/felogin/Tests/Unit/Validation/RedirectUrlValidatorTest.php index 4607d7e8b18b..3e5a5ff5b750 100644 --- a/typo3/sysext/felogin/Tests/Unit/Validation/RedirectUrlValidatorTest.php +++ b/typo3/sysext/felogin/Tests/Unit/Validation/RedirectUrlValidatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\FrontendLogin\Tests\Unit\Validation; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; @@ -97,10 +99,8 @@ final class RedirectUrlValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateRedirectUrlClearsUrlDataProvider - */ + #[DataProvider('validateRedirectUrlClearsUrlDataProvider')] + #[Test] public function validateRedirectUrlClearsUrl(string $url): void { Environment::initialize( @@ -135,10 +135,8 @@ final class RedirectUrlValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateRedirectUrlKeepsCleanUrlDataProvider - */ + #[DataProvider('validateRedirectUrlKeepsCleanUrlDataProvider')] + #[Test] public function validateRedirectUrlKeepsCleanUrl(string $url): void { Environment::initialize( @@ -170,10 +168,8 @@ final class RedirectUrlValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateRedirectUrlClearsInvalidUrlInSubdirectoryDataProvider - */ + #[DataProvider('validateRedirectUrlClearsInvalidUrlInSubdirectoryDataProvider')] + #[Test] public function validateRedirectUrlClearsInvalidUrlInSubdirectory(string $url): void { GeneralUtility::flushInternalRuntimeCaches(); @@ -198,10 +194,8 @@ final class RedirectUrlValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateRedirectUrlKeepsCleanUrlInSubdirectoryDataProvider - */ + #[DataProvider('validateRedirectUrlKeepsCleanUrlInSubdirectoryDataProvider')] + #[Test] public function validateRedirectUrlKeepsCleanUrlInSubdirectory(string $url): void { Environment::initialize( @@ -223,7 +217,6 @@ final class RedirectUrlValidatorTest extends UnitTestCase /************************************************** * Tests concerning isInCurrentDomain **************************************************/ - /** * Dataprovider for isInCurrentDomainIgnoresScheme */ @@ -254,12 +247,12 @@ final class RedirectUrlValidatorTest extends UnitTestCase } /** - * @test - * @dataProvider isInCurrentDomainIgnoresSchemeDataProvider * @param string $host $_SERVER['HTTP_HOST'] * @param string $https $_SERVER['HTTPS'] * @param string $url The url to test */ + #[DataProvider('isInCurrentDomainIgnoresSchemeDataProvider')] + #[Test] public function isInCurrentDomainIgnoresScheme(string $host, string $https, string $url): void { Environment::initialize( @@ -300,11 +293,11 @@ final class RedirectUrlValidatorTest extends UnitTestCase } /** - * @test - * @dataProvider isInCurrentDomainReturnsFalseIfDomainsAreDifferentDataProvider * @param string $host $_SERVER['HTTP_HOST'] * @param string $url The url to test */ + #[DataProvider('isInCurrentDomainReturnsFalseIfDomainsAreDifferentDataProvider')] + #[Test] public function isInCurrentDomainReturnsFalseIfDomainsAreDifferent(string $host, string $url): void { $_SERVER['HTTP_HOST'] = $host; @@ -321,10 +314,7 @@ final class RedirectUrlValidatorTest extends UnitTestCase /************************************************** * Tests concerning isInLocalDomain **************************************************/ - - /** - * @test - */ + #[Test] public function isInLocalDomainValidatesSites(): void { $url = 'http://example.com'; diff --git a/typo3/sysext/filelist/Tests/Unit/Event/ModifyEditFileFormDataEventTest.php b/typo3/sysext/filelist/Tests/Unit/Event/ModifyEditFileFormDataEventTest.php index 3a070c91ed15..d05a17b7f3e0 100644 --- a/typo3/sysext/filelist/Tests/Unit/Event/ModifyEditFileFormDataEventTest.php +++ b/typo3/sysext/filelist/Tests/Unit/Event/ModifyEditFileFormDataEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Filelist\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Http\Uri; use TYPO3\CMS\Core\Resource\File; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ModifyEditFileFormDataEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $formData = [ diff --git a/typo3/sysext/filelist/Tests/Unit/FileListTest.php b/typo3/sysext/filelist/Tests/Unit/FileListTest.php index 791708fc06ed..063b9b09b61f 100644 --- a/typo3/sysext/filelist/Tests/Unit/FileListTest.php +++ b/typo3/sysext/filelist/Tests/Unit/FileListTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Filelist\Tests\Unit; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Localization\Locale; use TYPO3\CMS\Core\Resource\File; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FileListTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function sortResourcesByNameSortsCorrectly(): void { $languageServiceMock = $this->createMock(LanguageService::class); @@ -69,9 +68,7 @@ final class FileListTest extends UnitTestCase self::assertSame($expected, $fileList->_call('sortResources', $resources, 'name')); } - /** - * @test - */ + #[Test] public function sortResourcesByFileextNameSortsCorrectly(): void { $languageServiceMock = $this->createMock(LanguageService::class); diff --git a/typo3/sysext/filelist/Tests/Unit/Matcher/ResourceFileExtensionMatcherTest.php b/typo3/sysext/filelist/Tests/Unit/Matcher/ResourceFileExtensionMatcherTest.php index 972de9a2685b..031a0427bdc1 100644 --- a/typo3/sysext/filelist/Tests/Unit/Matcher/ResourceFileExtensionMatcherTest.php +++ b/typo3/sysext/filelist/Tests/Unit/Matcher/ResourceFileExtensionMatcherTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Filelist\Tests\Unit\Matcher; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\ResourceStorage; use TYPO3\CMS\Filelist\Matcher\ResourceFileExtensionMatcher; @@ -32,9 +33,7 @@ final class ResourceFileExtensionMatcherTest extends UnitTestCase $this->storage = $this->getMockBuilder(ResourceStorage::class)->disableOriginalConstructor()->getMock(); } - /** - * @test - */ + #[Test] public function fileExtensionsAreTransformedToLowercase(): void { $matcher = new ResourceFileExtensionMatcher(); @@ -50,9 +49,7 @@ final class ResourceFileExtensionMatcherTest extends UnitTestCase self::assertTrue($matcher->match($this->getFile('png'))); } - /** - * @test - */ + #[Test] public function ignoredFileExtensionsAreTransformedToLowercase(): void { $matcher = new ResourceFileExtensionMatcher(); diff --git a/typo3/sysext/fluid/Tests/Unit/Core/Cache/FluidTemplateCacheTest.php b/typo3/sysext/fluid/Tests/Unit/Core/Cache/FluidTemplateCacheTest.php index 70c464c42f61..96b39bde894f 100644 --- a/typo3/sysext/fluid/Tests/Unit/Core/Cache/FluidTemplateCacheTest.php +++ b/typo3/sysext/fluid/Tests/Unit/Core/Cache/FluidTemplateCacheTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\Core\Cache; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\PhpCapableBackendInterface; use TYPO3\CMS\Fluid\Core\Cache\FluidTemplateCache; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FluidTemplateCacheTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function flushCallsFlushOnBackend(): void { $backend = $this->createMock(PhpCapableBackendInterface::class); @@ -34,9 +33,7 @@ final class FluidTemplateCacheTest extends UnitTestCase $instance->flush(); } - /** - * @test - */ + #[Test] public function getDelegatesToRequireOnce(): void { $instance = $this->getMockBuilder(FluidTemplateCache::class) @@ -47,9 +44,7 @@ final class FluidTemplateCacheTest extends UnitTestCase $instance->get('foobar'); } - /** - * @test - */ + #[Test] public function setCallsSetOnBackend(): void { $backend = $this->createMock(PhpCapableBackendInterface::class); @@ -63,9 +58,7 @@ final class FluidTemplateCacheTest extends UnitTestCase $instance->set('test', 'test', ['foobar']); } - /** - * @test - */ + #[Test] public function setRemovesLeadingPhpTagBeforeCallingParentWhichAddsLeadingPhpTag(): void { $backend = $this->createMock(PhpCapableBackendInterface::class); diff --git a/typo3/sysext/fluid/Tests/Unit/Core/Rendering/RenderingContextTest.php b/typo3/sysext/fluid/Tests/Unit/Core/Rendering/RenderingContextTest.php index 9181e67ec38b..064587d73a6c 100644 --- a/typo3/sysext/fluid/Tests/Unit/Core/Rendering/RenderingContextTest.php +++ b/typo3/sysext/fluid/Tests/Unit/Core/Rendering/RenderingContextTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\Core\Rendering; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters; use TYPO3\CMS\Extbase\Mvc\Request; @@ -43,9 +45,7 @@ final class RenderingContextTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function templateVariableContainerCanBeReadCorrectly(): void { $templateVariableContainer = $this->createMock(StandardVariableProvider::class); @@ -53,9 +53,7 @@ final class RenderingContextTest extends UnitTestCase self::assertSame($this->renderingContext->getVariableProvider(), $templateVariableContainer, 'Template Variable Container could not be read out again.'); } - /** - * @test - */ + #[Test] public function viewHelperVariableContainerCanBeReadCorrectly(): void { $viewHelperVariableContainer = $this->createMock(ViewHelperVariableContainer::class); @@ -64,11 +62,11 @@ final class RenderingContextTest extends UnitTestCase } /** - * @test - * @dataProvider getControllerActionTestValues * @param string $input * @param string $expected */ + #[DataProvider('getControllerActionTestValues')] + #[Test] public function setControllerActionProcessesInputCorrectly($input, $expected): void { $subject = $this->getMockBuilder(RenderingContext::class) diff --git a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ViewHelperResolverTest.php b/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ViewHelperResolverTest.php index 7dac7dc7cd6e..9ddaf68721e9 100644 --- a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ViewHelperResolverTest.php +++ b/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ViewHelperResolverTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\Core\ViewHelper; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\DependencyInjection\Container; use TYPO3\CMS\Fluid\Core\ViewHelper\ViewHelperResolver; use TYPO3\CMS\Fluid\ViewHelpers\CObjectViewHelper; @@ -27,12 +29,12 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ViewHelperResolverTest extends UnitTestCase { /** - * @test - * @dataProvider getResolveViewHelperNameTestValues * @param string $namespace * @param string $method * @param string $expected */ + #[DataProvider('getResolveViewHelperNameTestValues')] + #[Test] public function resolveViewHelperClassNameResolvesExpectedViewHelperClassName($namespace, $method, $expected): void { $viewHelperResolver = new ViewHelperResolver( diff --git a/typo3/sysext/fluid/Tests/Unit/View/AbstractTemplateViewTest.php b/typo3/sysext/fluid/Tests/Unit/View/AbstractTemplateViewTest.php index d9103d5b43d2..12e340c3e529 100644 --- a/typo3/sysext/fluid/Tests/Unit/View/AbstractTemplateViewTest.php +++ b/typo3/sysext/fluid/Tests/Unit/View/AbstractTemplateViewTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\View; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Fluid\Core\Rendering\RenderingContext; use TYPO3\CMS\Fluid\View\AbstractTemplateView; @@ -50,9 +51,7 @@ final class AbstractTemplateViewTest extends UnitTestCase $this->view->setRenderingContext($this->renderingContext); } - /** - * @test - */ + #[Test] public function viewIsPlacedInViewHelperVariableContainer(): void { $this->viewHelperVariableContainer->expects(self::once())->method('setView')->with($this->view); diff --git a/typo3/sysext/fluid/Tests/Unit/View/TemplatePathsTest.php b/typo3/sysext/fluid/Tests/Unit/View/TemplatePathsTest.php index 717339658d3a..090ac1c4fb02 100644 --- a/typo3/sysext/fluid/Tests/Unit/View/TemplatePathsTest.php +++ b/typo3/sysext/fluid/Tests/Unit/View/TemplatePathsTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\View; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Fluid\View\TemplatePaths; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -83,10 +85,10 @@ final class TemplatePathsTest extends UnitTestCase } /** - * @test - * @dataProvider getPathSetterMethodTestValues * @param string $method */ + #[DataProvider('getPathSetterMethodTestValues')] + #[Test] public function pathSetterMethodSortsPathsByKeyDescending($method, array $paths, array $expected): void { $setter = 'set' . ucfirst($method); @@ -97,9 +99,7 @@ final class TemplatePathsTest extends UnitTestCase self::assertEquals($expected, $subject->$getter()); } - /** - * @test - */ + #[Test] public function getContextSpecificViewConfigurationSortsTypoScriptConfiguredPathsCorrectlyInFrontendMode(): void { $configurationManager = $this->createMock(ConfigurationManagerInterface::class); @@ -154,9 +154,7 @@ final class TemplatePathsTest extends UnitTestCase ], $result); } - /** - * @test - */ + #[Test] public function getContextSpecificViewConfigurationSortsTypoScriptConfiguredPathsCorrectlyInBackendMode(): void { $configurationManager = $this->createMock(ConfigurationManagerInterface::class); @@ -211,9 +209,7 @@ final class TemplatePathsTest extends UnitTestCase ], $result); } - /** - * @test - */ + #[Test] public function getContextSpecificViewConfigurationDoesNotResolveFromTypoScriptAndDoesNotSortInUnspecifiedMode(): void { $configurationManager = $this->createMock(ConfigurationManagerInterface::class); @@ -259,9 +255,7 @@ final class TemplatePathsTest extends UnitTestCase ], $result); } - /** - * @test - */ + #[Test] public function getContextSpecificViewConfigurationRespectsTypoScriptConfiguredPaths(): void { $configurationManager = $this->createMock(ConfigurationManagerInterface::class); diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php index 5ddbd0342f06..e5e77635006b 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/TypolinkViewHelperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Link; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Fluid\ViewHelpers\Link\TypolinkViewHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -214,10 +216,8 @@ final class TypolinkViewHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodedConfigurationAndFluidArgumentDataProvider - */ + #[DataProvider('decodedConfigurationAndFluidArgumentDataProvider')] + #[Test] public function mergeTypoLinkConfigurationMergesData(array $decodedConfiguration, array $viewHelperArguments, array $expectation): void { $mock = \Closure::bind(static function (TypolinkViewHelper $typolinkViewHelper) use ($decodedConfiguration, $viewHelperArguments, &$result) { diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Uri/TypolinkViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Uri/TypolinkViewHelperTest.php index 67116bb17049..4f1106cfae64 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Uri/TypolinkViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Uri/TypolinkViewHelperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Uri; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Fluid\ViewHelpers\Uri\TypolinkViewHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -76,10 +78,8 @@ final class TypolinkViewHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider plainDecodedConfigurationDataProvider - */ + #[DataProvider('plainDecodedConfigurationDataProvider')] + #[Test] public function mergeTypoLinkConfigurationDoesNotModifyData(array $decodedConfiguration): void { $mock = \Closure::bind(static function (TypolinkViewHelper $typolinkViewHelper) use ($decodedConfiguration, &$result) { @@ -176,10 +176,8 @@ final class TypolinkViewHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider decodedConfigurationAndFluidArgumentDataProvider - */ + #[DataProvider('decodedConfigurationAndFluidArgumentDataProvider')] + #[Test] public function mergeTypoLinkConfigurationMergesData(array $decodedConfiguration, array $viewHelperArguments, array $expectation): void { $mock = \Closure::bind(static function (TypolinkViewHelper $typolinkViewHelper) use ($decodedConfiguration, $viewHelperArguments, &$result) { diff --git a/typo3/sysext/form/Tests/Unit/Controller/FormEditorControllerTest.php b/typo3/sysext/form/Tests/Unit/Controller/FormEditorControllerTest.php index 65ade2ec19f7..b8cdf182b525 100644 --- a/typo3/sysext/form/Tests/Unit/Controller/FormEditorControllerTest.php +++ b/typo3/sysext/form/Tests/Unit/Controller/FormEditorControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Controller\FormEditorController; use TYPO3\CMS\Form\Domain\Exception\RenderingException; @@ -33,9 +34,7 @@ final class FormEditorControllerTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; } - /** - * @test - */ + #[Test] public function getInsertRenderablesPanelConfigurationReturnsGroupedAndSortedConfiguration(): void { $mockTranslationService = $this->getAccessibleMock(TranslationService::class, ['translate'], [], '', false); @@ -118,9 +117,7 @@ final class FormEditorControllerTest extends UnitTestCase self::assertSame($expected, $subject->_call('getInsertRenderablesPanelConfiguration', $input)); } - /** - * @test - */ + #[Test] public function getFormEditorDefinitionsReturnReducedConfiguration(): void { $mockTranslationService = $this->getAccessibleMock(TranslationService::class, ['translateValuesRecursive'], [], '', false); @@ -239,9 +236,7 @@ final class FormEditorControllerTest extends UnitTestCase self::assertSame($expected, $subject->_call('getFormEditorDefinitions')); } - /** - * @test - */ + #[Test] public function renderFormEditorTemplatesThrowsExceptionIfLayoutRootPathsNotSet(): void { $this->expectException(RenderingException::class); @@ -260,9 +255,7 @@ final class FormEditorControllerTest extends UnitTestCase $mockController->_call('renderFormEditorTemplates', []); } - /** - * @test - */ + #[Test] public function renderFormEditorTemplatesThrowsExceptionIfLayoutRootPathsNotArray(): void { $this->expectException(RenderingException::class); @@ -282,9 +275,7 @@ final class FormEditorControllerTest extends UnitTestCase $mockController->_call('renderFormEditorTemplates', []); } - /** - * @test - */ + #[Test] public function renderFormEditorTemplatesThrowsExceptionIfPartialRootPathsNotSet(): void { $this->expectException(RenderingException::class); @@ -304,9 +295,7 @@ final class FormEditorControllerTest extends UnitTestCase $mockController->_call('renderFormEditorTemplates', []); } - /** - * @test - */ + #[Test] public function renderFormEditorTemplatesThrowsExceptionIfPartialRootPathsNotArray(): void { $this->expectException(RenderingException::class); @@ -326,9 +315,7 @@ final class FormEditorControllerTest extends UnitTestCase $mockController->_call('renderFormEditorTemplates', []); } - /** - * @test - */ + #[Test] public function renderFormEditorTemplatesThrowsExceptionIfTemplatePathAndFilenameNotSet(): void { $this->expectException(RenderingException::class); @@ -345,9 +332,7 @@ final class FormEditorControllerTest extends UnitTestCase $mockController->_call('renderFormEditorTemplates', []); } - /** - * @test - */ + #[Test] public function transformMultiValuePropertiesForFormEditorConvertMultiValueDataIntoMetaData(): void { $mockController = $this->getAccessibleMock(FormEditorController::class, null, [], '', false); @@ -425,9 +410,7 @@ final class FormEditorControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('transformMultiValuePropertiesForFormEditor', $input, 'type', $multiValueProperties)); } - /** - * @test - */ + #[Test] public function filterEmptyArraysRemovesEmptyArrayKeys(): void { $mockController = $this->getAccessibleMock(FormEditorController::class, null, [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/Controller/FormFrontendControllerTest.php b/typo3/sysext/form/Tests/Unit/Controller/FormFrontendControllerTest.php index 939b2372ba35..94ec9a42f026 100644 --- a/typo3/sysext/form/Tests/Unit/Controller/FormFrontendControllerTest.php +++ b/typo3/sysext/form/Tests/Unit/Controller/FormFrontendControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use Psr\EventDispatcher\EventDispatcherInterface; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; @@ -47,9 +48,7 @@ final class FormFrontendControllerTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function overrideByFlexFormSettingsReturnsNoOverriddenConfigurationIfFlexformOverridesDisabled(): void { $mockController = $this->getAccessibleMock(FormFrontendController::class, null, [], '', false); @@ -176,9 +175,7 @@ final class FormFrontendControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('overrideByFlexFormSettings', $input)); } - /** - * @test - */ + #[Test] public function overrideByFlexFormSettingsReturnsOverriddenConfigurationIfFlexformOverridesEnabled(): void { $mockController = $this->getAccessibleMock(FormFrontendController::class, null, [], '', false); @@ -328,9 +325,7 @@ final class FormFrontendControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('overrideByFlexFormSettings', $input)); } - /** - * @test - */ + #[Test] public function overrideByFlexFormSettingsReturnsNotOverriddenConfigurationKeyIfFlexformOverridesAreNotRepresentedInFormEngineConfiguration(): void { $mockController = $this->getAccessibleMock(FormFrontendController::class, null, [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php b/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php index 8133f507f3c9..49c1f3947b4a 100644 --- a/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php +++ b/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Resource\Folder; @@ -33,9 +34,7 @@ final class FormManagerControllerTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function getAccessibleFormStorageFoldersReturnsProcessedArray(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -94,9 +93,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('getAccessibleFormStorageFolders')); } - /** - * @test - */ + #[Test] public function getFormManagerAppInitialDataReturnsProcessedArray(): void { $mockTranslationService = $this->getAccessibleMock(TranslationService::class, ['translateValuesRecursive'], [], '', false); @@ -148,9 +145,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $subject->_call('getFormManagerAppInitialData')); } - /** - * @test - */ + #[Test] public function getAvailableFormDefinitionsReturnsProcessedArray(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -197,9 +192,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('getAvailableFormDefinitions')); } - /** - * @test - */ + #[Test] public function getProcessedReferencesRowsThrowsExceptionIfPersistenceIdentifierIsEmpty(): void { $this->expectException(\InvalidArgumentException::class); @@ -210,9 +203,7 @@ final class FormManagerControllerTest extends UnitTestCase $mockController->_call('getProcessedReferencesRows', ''); } - /** - * @test - */ + #[Test] public function getProcessedReferencesRowsReturnsProcessedArray(): void { $iconFactoryMock = $this->createMock(IconFactory::class); @@ -262,9 +253,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('getProcessedReferencesRows', 'fake')); } - /** - * @test - */ + #[Test] public function isValidTemplatePathReturnsTrueIfTemplateIsDefinedAndExists(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -293,9 +282,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertTrue($mockController->_call('isValidTemplatePath', 'standard', 'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml')); } - /** - * @test - */ + #[Test] public function isValidTemplatePathReturnsFalseIfTemplateIsDefinedButNotExists(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -324,9 +311,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertFalse($mockController->_call('isValidTemplatePath', 'standard', 'EXT:form/Tests/Unit/Controller/Fixtures/NonExistingForm.yaml')); } - /** - * @test - */ + #[Test] public function isValidTemplatePathReturnsFalseIfTemplateIsNotDefinedAndExists(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -365,9 +350,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertFalse($mockController->_call('isValidTemplatePath', 'other', 'EXT:form/Tests/Unit/Controller/Fixtures/SimpleContactForm.yaml')); } - /** - * @test - */ + #[Test] public function convertFormNameToIdentifierRemoveSpaces(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -377,9 +360,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('convertFormNameToIdentifier', $input)); } - /** - * @test - */ + #[Test] public function convertFormNameToIdentifierConvertAccentedCharacters(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -389,9 +370,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('convertFormNameToIdentifier', $input)); } - /** - * @test - */ + #[Test] public function convertFormNameToIdentifierConvertAccentedCharactersNotInNFC(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); @@ -401,9 +380,7 @@ final class FormManagerControllerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('convertFormNameToIdentifier', $input)); } - /** - * @test - */ + #[Test] public function convertFormNameToIdentifierRemoveSpecialChars(): void { $mockController = $this->getAccessibleMock(FormManagerController::class, null, [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/Domain/Configuration/ConfigurationServiceTest.php b/typo3/sysext/form/Tests/Unit/Domain/Configuration/ConfigurationServiceTest.php index 1bcf22c9bb28..c60049450dc3 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Configuration/ConfigurationServiceTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Configuration/ConfigurationServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Configuration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; use TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException; use TYPO3\CMS\Form\Domain\Configuration\Exception\PrototypeNotFoundException; @@ -29,9 +31,7 @@ final class ConfigurationServiceTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function getPrototypeConfigurationReturnsPrototypeConfiguration(): void { $configurationManagerMock = $this->createMock(ConfigurationManagerInterface::class); @@ -52,9 +52,7 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertSame($expected, $configurationService->getPrototypeConfiguration('standard')); } - /** - * @test - */ + #[Test] public function getPrototypeConfigurationThrowsExceptionIfNoPrototypeFound(): void { $configurationManagerMock = $this->createMock(ConfigurationManagerInterface::class); @@ -72,9 +70,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->getPrototypeConfiguration('standard'); } - /** - * @test - */ + #[Test] public function getSelectablePrototypeNamesDefinedInFormEditorSetupReturnsPrototypes(): void { $configurationManagerMock = $this->createMock(ConfigurationManagerInterface::class); @@ -104,10 +100,8 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertSame($expected, $configurationService->getSelectablePrototypeNamesDefinedInFormEditorSetup()); } - /** - * @test - * @dataProvider isFormElementPropertyDefinedInFormEditorSetupDataProvider - */ + #[DataProvider('isFormElementPropertyDefinedInFormEditorSetupDataProvider')] + #[Test] public function isFormElementPropertyDefinedInFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -130,10 +124,8 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - * @dataProvider isPropertyCollectionPropertyDefinedInFormEditorSetupDataProvider - */ + #[DataProvider('isPropertyCollectionPropertyDefinedInFormEditorSetupDataProvider')] + #[Test] public function isPropertyCollectionPropertyDefinedInFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -156,10 +148,8 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - * @dataProvider isFormElementPropertyDefinedInPredefinedDefaultsInFormEditorSetupDataProvider - */ + #[DataProvider('isFormElementPropertyDefinedInPredefinedDefaultsInFormEditorSetupDataProvider')] + #[Test] public function isFormElementPropertyDefinedInPredefinedDefaultsInFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -182,10 +172,8 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - * @dataProvider isPropertyCollectionPropertyDefinedInPredefinedDefaultsInFormEditorSetupDataProvider - */ + #[DataProvider('isPropertyCollectionPropertyDefinedInPredefinedDefaultsInFormEditorSetupDataProvider')] + #[Test] public function isPropertyCollectionPropertyDefinedInPredefinedDefaultsInFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -210,9 +198,7 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getFormElementPredefinedDefaultValueFromFormEditorSetupThrowsExceptionIfNoPredefinedDefaultIsAvailable( ): void { $this->expectException(PropertyException::class); @@ -233,9 +219,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->getFormElementPredefinedDefaultValueFromFormEditorSetup($validationDto); } - /** - * @test - */ + #[Test] public function getFormElementPredefinedDefaultValueFromFormEditorSetupReturnsDefaultValue(): void { $expected = 'foo'; @@ -266,9 +250,7 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getPropertyCollectionPredefinedDefaultValueFromFormEditorSetupThrowsExceptionIfNoPredefinedDefaultIsAvailable( ): void { $this->expectException(PropertyException::class); @@ -296,9 +278,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->getPropertyCollectionPredefinedDefaultValueFromFormEditorSetup($validationDto); } - /** - * @test - */ + #[Test] public function getPropertyCollectionPredefinedDefaultValueFromFormEditorSetupReturnsDefaultValue(): void { $expected = 'foo'; @@ -336,10 +316,8 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - * @dataProvider isFormElementTypeCreatableByFormEditorDataProvider - */ + #[DataProvider('isFormElementTypeCreatableByFormEditorDataProvider')] + #[Test] public function isFormElementTypeCreatableByFormEditor( array $configuration, ValidationDto $validationDto, @@ -362,10 +340,8 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - * @dataProvider isPropertyCollectionElementIdentifierCreatableByFormEditorDataProvider - */ + #[DataProvider('isPropertyCollectionElementIdentifierCreatableByFormEditorDataProvider')] + #[Test] public function isPropertyCollectionElementIdentifierCreatableByFormEditor( array $configuration, ValidationDto $validationDto, @@ -388,9 +364,7 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function isFormElementTypeDefinedInFormSetup(): void { $configuration = [ @@ -415,9 +389,7 @@ final class ConfigurationServiceTest extends UnitTestCase self::assertFalse($configurationService->isFormElementTypeDefinedInFormSetup($validationDto)); } - /** - * @test - */ + #[Test] public function addAdditionalPropertyPathsFromHookThrowsExceptionIfHookResultIsNoFormDefinitionValidation(): void { $this->expectException(PropertyException::class); @@ -429,9 +401,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->_call('addAdditionalPropertyPathsFromHook', '', '', $input, []); } - /** - * @test - */ + #[Test] public function addAdditionalPropertyPathsFromHookThrowsExceptionIfPrototypeDoesNotMatch(): void { $this->expectException(PropertyException::class); @@ -444,9 +414,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->_call('addAdditionalPropertyPathsFromHook', '', 'standard', $input, []); } - /** - * @test - */ + #[Test] public function addAdditionalPropertyPathsFromHookThrowsExceptionIfFormElementTypeDoesNotMatch(): void { $this->expectException(PropertyException::class); @@ -466,9 +434,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->_call('addAdditionalPropertyPathsFromHook', '', 'standard', $input, []); } - /** - * @test - */ + #[Test] public function addAdditionalPropertyPathsFromHookThrowsExceptionIfPropertyCollectionNameIsInvalid(): void { $this->expectException(PropertyException::class); @@ -488,9 +454,7 @@ final class ConfigurationServiceTest extends UnitTestCase $configurationService->_call('addAdditionalPropertyPathsFromHook', '', 'standard', $input, []); } - /** - * @test - */ + #[Test] public function addAdditionalPropertyPathsFromHookAddPaths(): void { $configurationService = $this->getAccessibleMock( @@ -547,10 +511,8 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - * @dataProvider buildFormDefinitionValidationConfigurationFromFormEditorSetupDataProvider - */ + #[DataProvider('buildFormDefinitionValidationConfigurationFromFormEditorSetupDataProvider')] + #[Test] public function buildFormDefinitionValidationConfigurationFromFormEditorSetup(array $configuration, array $expected): void { $configurationService = $this->getAccessibleMock( @@ -621,10 +583,8 @@ final class ConfigurationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider formElementPropertyHasLimitedAllowedValuesDefinedWithinFormEditorSetupDataProvider - */ + #[DataProvider('formElementPropertyHasLimitedAllowedValuesDefinedWithinFormEditorSetupDataProvider')] + #[Test] public function formElementPropertyHasLimitedAllowedValuesDefinedWithinFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -647,9 +607,7 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getAllowedValuesForFormElementPropertyFromFormEditorSetupThrowsExceptionIfNoLimitedAllowedValuesAreAvailable(): void { $this->expectException(PropertyException::class); @@ -696,10 +654,8 @@ final class ConfigurationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getAllowedValuesForFormElementPropertyFromFormEditorSetupDataProvider - */ + #[DataProvider('getAllowedValuesForFormElementPropertyFromFormEditorSetupDataProvider')] + #[Test] public function getAllowedValuesForFormElementPropertyFromFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -753,10 +709,8 @@ final class ConfigurationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider propertyCollectionPropertyHasLimitedAllowedValuesDefinedWithinFormEditorSetupDataProvider - */ + #[DataProvider('propertyCollectionPropertyHasLimitedAllowedValuesDefinedWithinFormEditorSetupDataProvider')] + #[Test] public function propertyCollectionPropertyHasLimitedAllowedValuesDefinedWithinFormEditorSetup( array $configuration, ValidationDto $validationDto, @@ -779,9 +733,7 @@ final class ConfigurationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function getAllowedValuesForPropertyCollectionPropertyFromFormEditorSetupThrowsExceptionIfNoLimitedAllowedValuesAreAvailable(): void { $this->expectException(PropertyException::class); @@ -828,10 +780,8 @@ final class ConfigurationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getAllowedValuesForPropertyCollectionPropertyFromFormEditorSetupDataProvider - */ + #[DataProvider('getAllowedValuesForPropertyCollectionPropertyFromFormEditorSetupDataProvider')] + #[Test] public function getAllowedValuesForPropertyCollectionPropertyFromFormEditorSetup( array $configuration, ValidationDto $validationDto, diff --git a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatableFormElementPropertiesValidatorTest.php b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatableFormElementPropertiesValidatorTest.php index 172944c955f9..44e913d66984 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatableFormElementPropertiesValidatorTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatableFormElementPropertiesValidatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Configuration\FormDefinition\Validators; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; use TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException; use TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\CreatableFormElementPropertiesValidator; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CreatableFormElementPropertiesValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validateFormElementPredefinedDefaultValueThrowsExceptionIfValueDoesNotMatch(): void { $this->expectException(PropertyException::class); @@ -52,9 +52,7 @@ final class CreatableFormElementPropertiesValidatorTest extends UnitTestCase $typeConverter($input, ''); } - /** - * @test - */ + #[Test] public function validateFormElementPredefinedDefaultValueThrowsNoExceptionIfValueMatches(): void { $validationDto = new ValidationDto(null, null, 'test-1', 'label'); @@ -107,10 +105,8 @@ final class CreatableFormElementPropertiesValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateFormElementValueThrowsExceptionIfValueDoesNotMatchDataProvider - */ + #[DataProvider('validateFormElementValueThrowsExceptionIfValueDoesNotMatchDataProvider')] + #[Test] public function validateFormElementValueThrowsExceptionIfValueDoesNotMatch($input, array $allowedValues, array $untranslatedAllowedValues): void { $this->expectException(PropertyException::class); @@ -171,10 +167,8 @@ final class CreatableFormElementPropertiesValidatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateFormElementValueThrowsNoExceptionIfValueMatchesDataProvider - */ + #[DataProvider('validateFormElementValueThrowsNoExceptionIfValueMatchesDataProvider')] + #[Test] public function validateFormElementValueThrowsNoExceptionIfValueMatches($input, array $allowedValues, array $untranslatedAllowedValues, array $allPossibleAllowedValuesTranslations): void { $validationDto = new ValidationDto('standard', null, 'test-1', 'label'); diff --git a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatablePropertyCollectionElementPropertiesValidatorTest.php b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatablePropertyCollectionElementPropertiesValidatorTest.php index 7e10e6202eb8..0d02e4103020 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatablePropertyCollectionElementPropertiesValidatorTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinition/Validators/CreatablePropertyCollectionElementPropertiesValidatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Configuration\FormDefinition\Validators; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; use TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException; use TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\CreatablePropertyCollectionElementPropertiesValidator; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CreatablePropertyCollectionElementPropertiesValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validatePropertyCollectionElementPredefinedDefaultValueThrowsExceptionIfValueDoesNotMatch(): void { $this->expectException(PropertyException::class); @@ -49,9 +49,7 @@ final class CreatablePropertyCollectionElementPropertiesValidatorTest extends Un $typeConverter->_call('validatePropertyCollectionElementPredefinedDefaultValue', $input, $validationDto); } - /** - * @test - */ + #[Test] public function validatePropertyCollectionElementPredefinedDefaultValueThrowsNoExceptionIfValueMatches(): void { $validationDto = new ValidationDto(null, null, 'test-1', 'label', 'validators', 'StringLength'); @@ -98,10 +96,8 @@ final class CreatablePropertyCollectionElementPropertiesValidatorTest extends Un ]; } - /** - * @test - * @dataProvider validatePropertyCollectionPropertyValueThrowsExceptionIfValueDoesNotMatchDataProvider - */ + #[DataProvider('validatePropertyCollectionPropertyValueThrowsExceptionIfValueDoesNotMatchDataProvider')] + #[Test] public function validatePropertyCollectionPropertyValueThrowsExceptionIfValueDoesNotMatch($input, array $allowedValues, array $untranslatedAllowedValues): void { $this->expectException(PropertyException::class); @@ -162,10 +158,8 @@ final class CreatablePropertyCollectionElementPropertiesValidatorTest extends Un ]; } - /** - * @test - * @dataProvider validatePropertyCollectionPropertyValueThrowsNoExceptionIfValueMatchesDataProvider - */ + #[DataProvider('validatePropertyCollectionPropertyValueThrowsNoExceptionIfValueMatchesDataProvider')] + #[Test] public function validatePropertyCollectionPropertyValueThrowsNoExceptionIfValueMatches($input, array $allowedValues, array $untranslatedAllowedValues, array $allPossibleAllowedValuesTranslations): void { $validationDto = new ValidationDto('standard', null, 'test-1', 'label', 'validators', 'StringLength'); diff --git a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionConversionServiceTest.php b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionConversionServiceTest.php index f45864c60463..e285a576cd53 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionConversionServiceTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionConversionServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -25,9 +26,7 @@ final class FormDefinitionConversionServiceTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function addHmacDataAddsHmacHashes(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; @@ -130,9 +129,7 @@ final class FormDefinitionConversionServiceTest extends UnitTestCase self::assertSame($expected, $data); } - /** - * @test - */ + #[Test] public function removeHmacDataRemoveHmacs(): void { $formDefinitionConversionService = new FormDefinitionConversionService(); diff --git a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionValidationServiceTest.php b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionValidationServiceTest.php index 3554fa39e7d5..00d5cb672dc6 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionValidationServiceTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Configuration/FormDefinitionValidationServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Configuration; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; use TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException; @@ -38,9 +40,7 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function validateAllFormElementPropertyValuesByHmacThrowsExceptionIfHmacIsInvalid(): void { $this->expectException(PropertyException::class); @@ -66,9 +66,7 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase $typeConverter->_call('validateAllFormElementPropertyValuesByHmac', $input, $sessionToken, $validationDto); } - /** - * @test - */ + #[Test] public function validateAllFormElementPropertyValuesByHmacThrowsExceptionIfHmacDoesNotExists(): void { $this->expectException(PropertyException::class); @@ -90,9 +88,7 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase $typeConverter->_call('validateAllFormElementPropertyValuesByHmac', $input, $sessionToken, $validationDto); } - /** - * @test - */ + #[Test] public function validateAllFormElementPropertyValuesByHmacThrowsNoExceptionIfHmacIsValid(): void { $typeConverter = $this->getAccessibleMock(FormDefinitionValidationService::class, null, [], '', false); @@ -126,9 +122,7 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase self::assertFalse($failed); } - /** - * @test - */ + #[Test] public function validateAllPropertyCollectionElementValuesByHmacThrowsExceptionIfHmacIsInvalid(): void { $this->expectException(PropertyException::class); @@ -166,9 +160,7 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function validateAllPropertyCollectionElementValuesByHmacThrowsExceptionIfHmacDoesNotExists(): void { $this->expectException(PropertyException::class); @@ -202,9 +194,7 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function validateAllPropertyCollectionElementValuesByHmacThrowsNoExceptionIfHmacIsValid(): void { $typeConverter = $this->getAccessibleMock(FormDefinitionValidationService::class, null, [], '', false); @@ -382,10 +372,8 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateAllPropertyValuesFromCreatableFormElementDataProvider - */ + #[DataProvider('validateAllPropertyValuesFromCreatableFormElementDataProvider')] + #[Test] public function validateAllPropertyValuesFromCreatableFormElement( array $mockConfiguration, array $formElement, @@ -560,10 +548,8 @@ final class FormDefinitionValidationServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider validateAllPropertyValuesFromCreatablePropertyCollectionElementDataProvider - */ + #[DataProvider('validateAllPropertyValuesFromCreatablePropertyCollectionElementDataProvider')] + #[Test] public function validateAllPropertyValuesFromCreatablePropertyCollectionElement( array $mockConfiguration, array $formElement, diff --git a/typo3/sysext/form/Tests/Unit/Domain/Factory/ArrayFormFactoryTest.php b/typo3/sysext/form/Tests/Unit/Domain/Factory/ArrayFormFactoryTest.php index f8b8673367aa..7b6f0ba76854 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Factory/ArrayFormFactoryTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Factory/ArrayFormFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Factory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Exception\IdentifierNotValidException; use TYPO3\CMS\Form\Domain\Factory\ArrayFormFactory; use TYPO3\CMS\Form\Domain\Model\FormElements\Section; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ArrayFormFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addNestedRenderableThrowsExceptionIfIdentifierIsMissing(): void { $this->expectException(IdentifierNotValidException::class); @@ -39,9 +38,7 @@ final class ArrayFormFactoryTest extends UnitTestCase $arrayFormFactory->_call('addNestedRenderable', [], $section); } - /** - * @test - */ + #[Test] public function addNestedRenderableSkipChildElementRenderingIfCompositeElementIsUnknown(): void { $unknownElement = new UnknownFormElement('test-2', 'test'); diff --git a/typo3/sysext/form/Tests/Unit/Domain/Finishers/AbstractFinisherTest.php b/typo3/sysext/form/Tests/Unit/Domain/Finishers/AbstractFinisherTest.php index f4dc488fccfd..03fa36d93633 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Finishers/AbstractFinisherTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Finishers/AbstractFinisherTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Finishers; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher; use TYPO3\CMS\Form\Domain\Finishers\Exception\FinisherException; use TYPO3\CMS\Form\Domain\Finishers\FinisherContext; @@ -28,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractFinisherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function parseOptionReturnsNullIfOptionNameIsTranslation(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -43,9 +42,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertNull($mockAbstractFinisher->_call('parseOption', 'translation')); } - /** - * @test - */ + #[Test] public function parseOptionReturnsNullIfOptionNameNotExistsWithinOptions(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -60,9 +57,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertNull($mockAbstractFinisher->_call('parseOption', 'foo')); } - /** - * @test - */ + #[Test] public function parseOptionReturnsNullIfOptionNameNotExistsWithinDefaultOptions(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -77,9 +72,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertNull($mockAbstractFinisher->_call('parseOption', 'foo')); } - /** - * @test - */ + #[Test] public function parseOptionReturnsBoolOptionValuesAsBool(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -96,9 +89,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertFalse($mockAbstractFinisher->_call('parseOption', 'foo1')); } - /** - * @test - */ + #[Test] public function parseOptionReturnsDefaultOptionValueIfOptionNameNotExistsWithinOptionsButWithinDefaultOptions(): void { $expected = 'defaultValue'; @@ -139,9 +130,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('parseOption', 'subject')); } - /** - * @test - */ + #[Test] public function parseOptionReturnsDefaultOptionValueIfOptionValueIsAFormElementReferenceAndTheFormElementValueIsEmpty(): void { $elementIdentifier = 'element-identifier-1'; @@ -183,9 +172,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('parseOption', 'subject')); } - /** - * @test - */ + #[Test] public function parseOptionResolvesFormElementReferenceFromTranslation(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -228,9 +215,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('parseOption', 'subject')); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsArrayIfInputIsArray(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -248,9 +233,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsStringIfInputIsString(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -268,9 +251,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsValueFromFormRuntimeIfInputReferenceAFormElementIdentifierWhoseValueIsAString(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -291,9 +272,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsValueFromFormRuntimeIfInputReferenceMultipleFormElementIdentifierWhoseValueIsAString(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -324,9 +303,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsValueFromFormRuntimeIfInputReferenceAFormElementIdentifierWhoseValueIsAnArray(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -347,9 +324,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsValueFromFormRuntimeIfInputIsArrayAndSomeItemsReferenceAFormElementIdentifierWhoseValueIsAnArray(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -396,9 +371,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsNoReplacedValueIfInputReferenceANonExistingFormElement(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -423,9 +396,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsTimestampIfInputIsATimestampRequestTrigger(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -446,9 +417,7 @@ final class AbstractFinisherTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesReturnsResolvesElementIdentifiersInArrayKeys(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( @@ -489,9 +458,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame($expected, $mockAbstractFinisher->_call('substituteRuntimeReferences', $input, $formRuntimeMock)); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesConvertsObjectsToString(): void { $date = new \DateTime('@1574415600'); @@ -527,9 +494,7 @@ final class AbstractFinisherTest extends UnitTestCase self::assertSame('When: 2019-11-22', $result); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesThrowsExceptionOnObjectWithoutStringableElement(): void { $formRuntimeMock = $this->createMock(FormRuntime::class); @@ -556,9 +521,7 @@ final class AbstractFinisherTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function substituteRuntimeReferencesThrowsExceptionOnMultipleVariablesResolvedAsArray(): void { $mockAbstractFinisher = $this->getAccessibleMockForAbstractClass( diff --git a/typo3/sysext/form/Tests/Unit/Domain/Finishers/ClosureFinisherTest.php b/typo3/sysext/form/Tests/Unit/Domain/Finishers/ClosureFinisherTest.php index 12cf552d74a4..2a1d935a0f7d 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Finishers/ClosureFinisherTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Finishers/ClosureFinisherTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Finishers; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Finishers\ClosureFinisher; use TYPO3\CMS\Form\Domain\Finishers\FinisherContext; use TYPO3\CMS\Form\Domain\Runtime\FormRuntime; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ClosureFinisherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function closureOptionForFinisherCanBeSetAndIsFunctional(): void { $closure = static function (FinisherContext $finisherContext) { diff --git a/typo3/sysext/form/Tests/Unit/Domain/Finishers/RedirectFinisherTest.php b/typo3/sysext/form/Tests/Unit/Domain/Finishers/RedirectFinisherTest.php index 5894e283d7a0..ecda73cfc291 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Finishers/RedirectFinisherTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Finishers/RedirectFinisherTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Finishers; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\PropagateResponseException; use TYPO3\CMS\Core\Http\Response; use TYPO3\CMS\Core\Http\ServerRequest; @@ -36,10 +38,10 @@ final class RedirectFinisherTest extends UnitTestCase protected bool $resetSingletonInstances = true; /** - * @test - * @dataProvider pageUidOptionForFinisherAcceptsVariousPageRepresentationsDataProvider * @param string|int|null $pageUid */ + #[DataProvider('pageUidOptionForFinisherAcceptsVariousPageRepresentationsDataProvider')] + #[Test] public function pageUidOptionForFinisherAcceptsVariousPageRepresentations($pageUid, int $expectedPage): void { $uriPrefix = 'https://site.test/?id='; diff --git a/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php b/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php index db6429a3c3b7..40590d072a37 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Finishers; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Finishers\Exception\FinisherException; use TYPO3\CMS\Form\Domain\Finishers\FinisherContext; use TYPO3\CMS\Form\Domain\Finishers\SaveToDatabaseFinisher; @@ -25,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SaveToDatabaseFinisherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function throwExceptionOnInconsistentConfigurationThrowsExceptionOnInconsistentConfiguration(): void { $this->expectException(FinisherException::class); @@ -40,9 +40,7 @@ final class SaveToDatabaseFinisherTest extends UnitTestCase $mockSaveToDatabaseFinisher->_call('throwExceptionOnInconsistentConfiguration'); } - /** - * @test - */ + #[Test] public function prepareDataConvertsArrayValuesToCsv(): void { $elementsConfiguration = [ @@ -64,9 +62,7 @@ final class SaveToDatabaseFinisherTest extends UnitTestCase self::assertSame('one,two', $databaseData['bar']); } - /** - * @test - */ + #[Test] public function executeInternalProcessesSingleTable(): void { $saveToDatabaseFinisher = $this->getMockBuilder(SaveToDatabaseFinisher::class) @@ -115,10 +111,10 @@ final class SaveToDatabaseFinisherTest extends UnitTestCase } /** - * @test - * @dataProvider skipIfValueIsEmptyDataProvider * @param mixed $value */ + #[DataProvider('skipIfValueIsEmptyDataProvider')] + #[Test] public function skipIfValueIsEmptyDetectsEmptyValues($value, bool $expectedEmpty): void { $elementsConfiguration = [ @@ -138,9 +134,7 @@ final class SaveToDatabaseFinisherTest extends UnitTestCase self::assertSame($expectedEmpty, empty($databaseData)); } - /** - * @test - */ + #[Test] public function executeInternalProcessesMultipleTables(): void { $saveToDatabaseFinisher = $this->getMockBuilder(SaveToDatabaseFinisher::class)->onlyMethods(['process'])->getMock(); @@ -162,9 +156,7 @@ final class SaveToDatabaseFinisherTest extends UnitTestCase $saveToDatabaseFinisher->execute($this->createMock(FinisherContext::class)); } - /** - * @test - */ + #[Test] public function prepareDataConvertsDateTimeToUnixTimestamp(): void { $elementsConfiguration = [ @@ -184,9 +176,7 @@ final class SaveToDatabaseFinisherTest extends UnitTestCase self::assertMatchesRegularExpression($expected, $databaseData['date']); } - /** - * @test - */ + #[Test] public function prepareDataConvertsDateTimeToFormat(): void { $elementsConfiguration = [ diff --git a/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractFormElementTest.php b/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractFormElementTest.php index 8527340a444d..60afefc9df6e 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractFormElementTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractFormElementTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\FormElements; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Domain\Exception\IdentifierNotValidException; use TYPO3\CMS\Form\Domain\Model\FormDefinition; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractFormElementTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function newInstanceHasNoProperties(): void { $subject = new TestingFormElement(); @@ -36,9 +35,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertCount(0, $subject->getProperties()); } - /** - * @test - */ + #[Test] public function setSimpleProperties(): void { $subject = new TestingFormElement(); @@ -54,9 +51,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertEquals('qax', $properties['buz']); } - /** - * @test - */ + #[Test] public function overrideProperties(): void { $subject = new TestingFormElement(); @@ -70,9 +65,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertEquals('buz', $properties['foo']); } - /** - * @test - */ + #[Test] public function setArrayProperties(): void { $subject = new TestingFormElement(); @@ -90,9 +83,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertEquals('baz', $properties['foo']['bar']); } - /** - * @test - */ + #[Test] public function setPropertyUnsetIfValueIsNull(): void { $subject = new TestingFormElement(); @@ -105,9 +96,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertSame($expected, $subject->getProperties()); } - /** - * @test - */ + #[Test] public function setPropertyUnsetIfValueIsArrayWithSomeNullVales(): void { $subject = new TestingFormElement(); @@ -127,9 +116,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertSame($expected, $subject->getProperties()); } - /** - * @test - */ + #[Test] public function constructThrowsExceptionWhenIdentifierIsEmpty(): void { $this->expectException(IdentifierNotValidException::class); @@ -139,9 +126,7 @@ final class AbstractFormElementTest extends UnitTestCase new GenericFormElement('', 'a_type'); } - /** - * @test - */ + #[Test] public function constructMustNotThrowExceptionWhenIdentifierIsNonEmptyString(): void { $formElement = new TestingFormElement(); @@ -149,9 +134,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertInstanceOf(TestingFormElement::class, $formElement); } - /** - * @test - */ + #[Test] public function initializeFormElementExpectedCallInitializeFormObjectHooks(): void { $formElement = new TestingFormElement(); @@ -172,9 +155,7 @@ final class AbstractFormElementTest extends UnitTestCase $formElement->initializeFormElement(); } - /** - * @test - */ + #[Test] public function getUniqueIdentifierExpectedUnique(): void { $formDefinition1 = $this->createMock(FormDefinition::class); @@ -199,9 +180,7 @@ final class AbstractFormElementTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setDefaultValueSetStringValueIfKeyDoesNotExists(): void { $formDefinitionMock = $this->getAccessibleMock(FormDefinition::class, null, [], '', false); @@ -216,9 +195,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertSame($expected, $formElement->getDefaultValue()); } - /** - * @test - */ + #[Test] public function setDefaultValueSetArrayValueIfKeyDoesNotExists(): void { $formDefinitionMock = $this->getAccessibleMock(FormDefinition::class, null, [], '', false); @@ -233,9 +210,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertSame($expected, $formElement->getDefaultValue()); } - /** - * @test - */ + #[Test] public function setDefaultValueUnsetIfValueIsArrayWithSomeNullVales(): void { $formDefinitionMock = $this->getAccessibleMock(FormDefinition::class, null, [], '', false); @@ -273,9 +248,7 @@ final class AbstractFormElementTest extends UnitTestCase self::assertSame($expected, $formElement->getDefaultValue()); } - /** - * @test - */ + #[Test] public function setDefaultValueAddValueIfValueIsArray(): void { $formDefinitionMock = $this->getAccessibleMock(FormDefinition::class, null, [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractSectionTest.php b/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractSectionTest.php index 6d4618c66a20..1bfaed1c3cff 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractSectionTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/FormElements/AbstractSectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\FormElements; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Domain\Exception\IdentifierNotValidException; use TYPO3\CMS\Form\Domain\Exception\TypeDefinitionNotFoundException; @@ -33,9 +34,7 @@ final class AbstractSectionTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function constructThrowsExceptionWhenIdentifierIsEmpty(): void { $this->expectException(IdentifierNotValidException::class); @@ -45,18 +44,14 @@ final class AbstractSectionTest extends UnitTestCase new Section('', 'foobar'); } - /** - * @test - */ + #[Test] public function constructMustNotThrowExceptionWhenIdentifierIsNonEmptyString(): void { $section = new Section('foobar', 'foobar'); self::assertInstanceOf(AbstractSection::class, $section); } - /** - * @test - */ + #[Test] public function createElementThrowsExceptionIfTypeDefinitionNotFoundAndSkipUnknownElementsIsFalse(): void { $rootForm = $this->getMockBuilder(FormDefinition::class) @@ -93,9 +88,7 @@ final class AbstractSectionTest extends UnitTestCase $mockAbstractSection->_call('createElement', '', ''); } - /** - * @test - */ + #[Test] public function createElementReturnsUnknownElementsIfTypeDefinitionIsNotFoundAndSkipUnknownElementsIsTrue(): void { $rootForm = $this->getMockBuilder(FormDefinition::class) @@ -118,9 +111,7 @@ final class AbstractSectionTest extends UnitTestCase self::assertSame('bar', $result->getType()); } - /** - * @test - */ + #[Test] public function createElementThrowsExceptionIfTypeDefinitionIsNotSet(): void { $rootForm = $this->getMockBuilder(FormDefinition::class) @@ -141,9 +132,7 @@ final class AbstractSectionTest extends UnitTestCase $section->createElement('id', 'foobar'); } - /** - * @test - */ + #[Test] public function createElementThrowsExceptionIfTypeDefinitionNotInstanceOfFormElementInterface(): void { $this->resetSingletonInstances = true; @@ -172,9 +161,7 @@ final class AbstractSectionTest extends UnitTestCase $section->createElement('id', 'foobar'); } - /** - * @test - */ + #[Test] public function createElementExpectedToAddAndInitializeElement(): void { $implementationMock = $this->createPartialMock(TestingFormElement::class, ['setOptions', 'initializeFormElement']); diff --git a/typo3/sysext/form/Tests/Unit/Domain/FormElements/SectionTest.php b/typo3/sysext/form/Tests/Unit/Domain/FormElements/SectionTest.php index 6a2316302ad6..8706338a166e 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/FormElements/SectionTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/FormElements/SectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\FormElements; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Domain\Model\FormElements\Section; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -36,27 +37,20 @@ final class SectionTest extends UnitTestCase */ protected $sectionInstance; - /** - * @before - */ public function setUp(): void { parent::setUp(); $this->sectionInstance = new Section(self::$IDENTIFIER, self::$TYPE); } - /** - * @test - */ + #[Test] public function newInstanceHasNoProperties(): void { self::assertNotNull($this->sectionInstance); self::assertCount(0, $this->sectionInstance->getProperties()); } - /** - * @test - */ + #[Test] public function setSimpleProperties(): void { $this->sectionInstance->setProperty('foo', 'bar'); @@ -70,9 +64,7 @@ final class SectionTest extends UnitTestCase self::assertEquals('qax', $properties['buz']); } - /** - * @test - */ + #[Test] public function overrideProperties(): void { $this->sectionInstance->setProperty('foo', 'bar'); @@ -84,9 +76,7 @@ final class SectionTest extends UnitTestCase self::assertEquals('buz', $properties['foo']); } - /** - * @test - */ + #[Test] public function setArrayProperties(): void { $this->sectionInstance->setProperty('foo', ['bar' => 'baz', 'bla' => 'blubb']); @@ -102,9 +92,7 @@ final class SectionTest extends UnitTestCase self::assertEquals('baz', $properties['foo']['bar']); } - /** - * @test - */ + #[Test] public function setPropertyUnsetIfValueIsNull(): void { $expected = ['foo-1' => ['bar-1' => 'foo-2']]; @@ -115,9 +103,7 @@ final class SectionTest extends UnitTestCase self::assertSame($expected, $this->sectionInstance->getProperties()); } - /** - * @test - */ + #[Test] public function setPropertyUnsetIfValueIsArrayWithSomeNullVales(): void { $expected = [ @@ -135,9 +121,7 @@ final class SectionTest extends UnitTestCase self::assertSame($expected, $this->sectionInstance->getProperties()); } - /** - * @test - */ + #[Test] public function setRenderingOptionSetStringValueIfKeyDoesNotExists(): void { $expected = ['foo' => 'bar']; @@ -146,9 +130,7 @@ final class SectionTest extends UnitTestCase self::assertSame($expected, $this->sectionInstance->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionSetArrayValueIfKeyDoesNotExists(): void { $expected = ['foo-1' => ['bar' => 'foo-2']]; @@ -157,9 +139,7 @@ final class SectionTest extends UnitTestCase self::assertSame($expected, $this->sectionInstance->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionUnsetIfValueIsNull(): void { $expected = ['foo-1' => ['bar-1' => 'foo-2']]; @@ -170,9 +150,7 @@ final class SectionTest extends UnitTestCase self::assertSame($expected, $this->sectionInstance->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionUnsetIfValueIsArrayWithSomeNullVales(): void { $expected = [ @@ -190,9 +168,7 @@ final class SectionTest extends UnitTestCase self::assertSame($expected, $this->sectionInstance->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionAddValueIfValueIsArray(): void { $expected = [ diff --git a/typo3/sysext/form/Tests/Unit/Domain/Renderable/AbstractRenderableTest.php b/typo3/sysext/form/Tests/Unit/Domain/Renderable/AbstractRenderableTest.php index b2081bd3ea60..656a4efe42f1 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Renderable/AbstractRenderableTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Renderable/AbstractRenderableTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Renderable; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Tests\Unit\Domain\Renderable\Fixtures\TestingRenderable; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractRenderableTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function setRenderingOptionSetStringValueIfKeyDoesNotExists(): void { $renderable = new TestingRenderable(); @@ -35,9 +34,7 @@ final class AbstractRenderableTest extends UnitTestCase self::assertSame($expected, $renderable->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionSetArrayValueIfKeyDoesNotExists(): void { $renderable = new TestingRenderable(); @@ -48,9 +45,7 @@ final class AbstractRenderableTest extends UnitTestCase self::assertSame($expected, $renderable->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionUnsetIfValueIsNull(): void { $renderable = new TestingRenderable(); @@ -63,9 +58,7 @@ final class AbstractRenderableTest extends UnitTestCase self::assertSame($expected, $renderable->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionUnsetIfValueIsArrayWithSomeNullVales(): void { $renderable = new TestingRenderable(); @@ -85,9 +78,7 @@ final class AbstractRenderableTest extends UnitTestCase self::assertSame($expected, $renderable->getRenderingOptions()); } - /** - * @test - */ + #[Test] public function setRenderingOptionAddValueIfValueIsArray(): void { $renderable = new TestingRenderable(); diff --git a/typo3/sysext/form/Tests/Unit/Domain/Renderable/RenderableVariantTest.php b/typo3/sysext/form/Tests/Unit/Domain/Renderable/RenderableVariantTest.php index d65b26d23b0c..4c045a6dd285 100644 --- a/typo3/sysext/form/Tests/Unit/Domain/Renderable/RenderableVariantTest.php +++ b/typo3/sysext/form/Tests/Unit/Domain/Renderable/RenderableVariantTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Domain\Renderable; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\ExpressionLanguage\Resolver; use TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement; use TYPO3\CMS\Form\Domain\Model\Renderable\RenderableVariant; @@ -26,9 +27,7 @@ final class RenderableVariantTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function formVariantOverridesArrayValues(): void { $formElementIdentifier = 'form-element-identifier'; @@ -74,9 +73,7 @@ final class RenderableVariantTest extends UnitTestCase self::assertEquals($expected, $mockFormElement->_get('properties')); } - /** - * @test - */ + #[Test] public function renderableIsPassedToConditionEvaluation(): void { $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, null, [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/EventListener/DataStructureIdentifierListenerTest.php b/typo3/sysext/form/Tests/Unit/EventListener/DataStructureIdentifierListenerTest.php index 489d0e49c2d4..d78283bcfe92 100644 --- a/typo3/sysext/form/Tests/Unit/EventListener/DataStructureIdentifierListenerTest.php +++ b/typo3/sysext/form/Tests/Unit/EventListener/DataStructureIdentifierListenerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\EventListener; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Configuration\Event\AfterFlexFormDataStructureIdentifierInitializedEvent; @@ -40,9 +42,7 @@ final class DataStructureIdentifierListenerTest extends UnitTestCase $GLOBALS['LANG'] = $this->createMock(LanguageService::class); } - /** - * @test - */ + #[Test] public function modifyIdentifiersReturnsIdentifierForNotMatchingScenario(): void { $givenIdentifier = ['aKey' => 'aValue']; @@ -60,9 +60,7 @@ final class DataStructureIdentifierListenerTest extends UnitTestCase self::assertSame($givenIdentifier, $event->getIdentifier()); } - /** - * @test - */ + #[Test] public function modifyIdentifiersAddDefaultValuesForNewRecord(): void { $event = new AfterFlexFormDataStructureIdentifierInitializedEvent( @@ -81,9 +79,7 @@ final class DataStructureIdentifierListenerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function modifyIdentifiersAddsGivenPersistenceIdentifier(): void { $row = [ @@ -124,9 +120,7 @@ final class DataStructureIdentifierListenerTest extends UnitTestCase self::assertEquals($expected, $event->getIdentifier()); } - /** - * @test - */ + #[Test] public function modifyIdentifiersAddsOverrideFinisherValue(): void { $row = [ @@ -163,9 +157,7 @@ final class DataStructureIdentifierListenerTest extends UnitTestCase self::assertEquals($expected, $event->getIdentifier()); } - /** - * @test - */ + #[Test] public function modifyDataStructureReturnsDataStructureUnchanged(): void { $dataStructure = ['foo' => 'bar']; @@ -181,10 +173,8 @@ final class DataStructureIdentifierListenerTest extends UnitTestCase self::assertEquals($expected, $event->getDataStructure()); } - /** - * @test - * @dataProvider modifyDataStructureDataProvider - */ + #[DataProvider('modifyDataStructureDataProvider')] + #[Test] public function modifyDataStructureAddsExistingFormItems(array $formDefinition, array $expectedItem): void { $formPersistenceManagerMock = $this->createMock(FormPersistenceManagerInterface::class); diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/ConfigurationManagerTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/ConfigurationManagerTest.php index 7cf0872fdec9..9e4ddc069a07 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/ConfigurationManagerTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/ConfigurationManagerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -36,9 +37,7 @@ final class ConfigurationManagerTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function getConfigurationDoesNotEvaluateTypoScriptLookalikeInstructionsFromYamlSettingsInFrontendContext(): void { $yamlSettings = [ diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/InheritancesResolverServiceTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/InheritancesResolverServiceTest.php index ed27e23b4147..020e0cd462ce 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/InheritancesResolverServiceTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/InheritancesResolverServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Mvc\Configuration\Exception\CycleInheritancesException; use TYPO3\CMS\Form\Mvc\Configuration\InheritancesResolverService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -34,10 +35,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase $this->subject = new InheritancesResolverService(); } - /** - * @test - * Test for the explicit example in service class comment - */ + #[Test] public function getDocExampleInheritance(): void { $input = [ @@ -74,9 +72,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getMergedConfigurationSimpleInheritance(): void { $input = [ @@ -115,9 +111,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getMergedConfigurationSimpleInheritanceOverrideValue(): void { $input = [ @@ -148,9 +142,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getMergedConfigurationSimpleInheritanceRemoveValue(): void { $input = [ @@ -213,9 +205,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getMergedConfigurationSimpleMixin(): void { $input = [ @@ -257,9 +247,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getMergedConfigurationAdvancedMixin(): void { $input = [ @@ -350,9 +338,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getMergedConfigurationResolvesInheritancesWithAndWithoutVendorNamespacePrefix(): void { $input = [ @@ -439,9 +425,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase self::assertSame($expected, $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration()); } - /** - * @test - */ + #[Test] public function getResolvedConfigurationThrowsExceptionIfCycleDependenciesOnSameLevelIsFound(): void { $input = [ @@ -463,9 +447,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration(); } - /** - * @test - */ + #[Test] public function getResolvedConfigurationThrowsExceptionIfCycleDependenciesOnSameLevelWithGapIsFound(): void { $input = [ @@ -497,9 +479,7 @@ final class InheritancesResolverServiceTest extends UnitTestCase $this->subject->reset()->setReferenceConfiguration($input)->getResolvedConfiguration(); } - /** - * @test - */ + #[Test] public function getResolvedConfigurationThrowsExceptionIfCycleDependenciesOnHigherLevelIsFound(): void { $input = [ diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/TypoScriptServiceTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/TypoScriptServiceTest.php index dda3e1315555..32fe8dad8019 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/TypoScriptServiceTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/TypoScriptServiceTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\Mvc\Configuration\TypoScriptService; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TypoScriptServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function resolveTypoScriptConfigurationReturnsResolvedConfiguration(): void { $mockTypoScriptService = $this->getAccessibleMock(TypoScriptService::class, [ diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/YamlSourceTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/YamlSourceTest.php index e936d04132ca..eccbc535d5d2 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Configuration/YamlSourceTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Configuration/YamlSourceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Configuration; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Mvc\Configuration\Exception\ParseErrorException; use TYPO3\CMS\Form\Mvc\Configuration\YamlSource; @@ -26,9 +27,7 @@ final class YamlSourceTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function loadThrowsExceptionIfFileToLoadNotExists(): void { $this->expectException(ParseErrorException::class); @@ -43,9 +42,7 @@ final class YamlSourceTest extends UnitTestCase $mockYamlSource->_call('load', $input); } - /** - * @test - */ + #[Test] public function loadThrowsExceptionIfFileToLoadIsNotValidYamlUseSymfonyParser(): void { $this->expectException(ParseErrorException::class); @@ -60,9 +57,7 @@ final class YamlSourceTest extends UnitTestCase $mockYamlSource->_call('load', $input); } - /** - * @test - */ + #[Test] public function getHeaderFromFileReturnsHeaderPart(): void { $mockYamlSource = $this->getAccessibleMock(YamlSource::class, null, [], '', false); @@ -76,9 +71,7 @@ final class YamlSourceTest extends UnitTestCase self::assertSame($expected, $mockYamlSource->_call('getHeaderFromFile', $input)); } - /** - * @test - */ + #[Test] public function loadOverruleNonArrayValuesOverArrayValues(): void { $mockYamlSource = $this->getAccessibleMock(YamlSource::class, null, [], '', false); @@ -98,9 +91,7 @@ final class YamlSourceTest extends UnitTestCase self::assertSame($expected, $mockYamlSource->_call('load', $input)); } - /** - * @test - */ + #[Test] public function loadRemovesVendorNamespacePrefixFromConfiguration(): void { $mockYamlSource = $this->getAccessibleMock(YamlSource::class, null, [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Persistence/FormPersistenceManagerTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Persistence/FormPersistenceManagerTest.php index 535b4d707876..eff0da56f6c4 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Persistence/FormPersistenceManagerTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Persistence/FormPersistenceManagerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Persistence; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Frontend\VariableFrontend; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Folder; @@ -32,9 +34,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FormPersistenceManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function loadThrowsExceptionIfPersistenceIdentifierHasNoYamlExtension(): void { $this->expectException(PersistenceManagerException::class); @@ -57,9 +57,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('load', $input); } - /** - * @test - */ + #[Test] public function loadThrowsExceptionIfPersistenceIdentifierIsAExtensionLocationWhichIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -88,9 +86,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('load', $input); } - /** - * @test - */ + #[Test] public function saveThrowsExceptionIfPersistenceIdentifierHasNoYamlExtension(): void { $this->expectException(PersistenceManagerException::class); @@ -102,9 +98,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('save', $input, []); } - /** - * @test - */ + #[Test] public function saveThrowsExceptionIfPersistenceIdentifierIsAExtensionLocationAndSaveToExtensionLocationIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -122,9 +116,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('save', $input, []); } - /** - * @test - */ + #[Test] public function saveThrowsExceptionIfPersistenceIdentifierIsAExtensionLocationWhichIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -154,9 +146,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('save', $input, []); } - /** - * @test - */ + #[Test] public function deleteThrowsExceptionIfPersistenceIdentifierHasNoYamlExtension(): void { $this->expectException(PersistenceManagerException::class); @@ -168,9 +158,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('delete', $input); } - /** - * @test - */ + #[Test] public function deleteThrowsExceptionIfPersistenceIdentifierFileDoesNotExists(): void { $this->expectException(PersistenceManagerException::class); @@ -186,9 +174,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('delete', $input); } - /** - * @test - */ + #[Test] public function deleteThrowsExceptionIfPersistenceIdentifierIsExtensionLocationAndDeleteFromExtensionLocationsIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -210,9 +196,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('delete', $input); } - /** - * @test - */ + #[Test] public function deleteThrowsExceptionIfPersistenceIdentifierIsExtensionLocationWhichIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -246,9 +230,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('delete', $input); } - /** - * @test - */ + #[Test] public function deleteThrowsExceptionIfPersistenceIdentifierIsStorageLocationAndDeleteFromStorageIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -281,9 +263,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('delete', $input); } - /** - * @test - */ + #[Test] public function existsReturnsTrueIfPersistenceIdentifierIsExtensionLocationAndFileExistsAndFileHasYamlExtension(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); @@ -311,9 +291,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertTrue($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function existsReturnsFalseIfPersistenceIdentifierIsExtensionLocationAndFileExistsAndFileHasNoYamlExtension(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); @@ -321,9 +299,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertFalse($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function existsReturnsFalseIfPersistenceIdentifierIsExtensionLocationAndFileExistsAndExtensionLocationIsNotAllowed(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); @@ -338,9 +314,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertFalse($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function existsReturnsFalseIfPersistenceIdentifierIsExtensionLocationAndFileNotExistsAndFileHasYamlExtension(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); @@ -348,9 +322,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertFalse($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function existsReturnsTrueIfPersistenceIdentifierIsStorageLocationAndFileExistsAndFileHasYamlExtension(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['getStorageByUid'], [], '', false); @@ -370,9 +342,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertTrue($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function existsReturnsFalseIfPersistenceIdentifierIsStorageLocationAndFileExistsAndFileNoYamlExtension(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['getStorageByUid'], [], '', false); @@ -392,9 +362,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertFalse($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function existsReturnsFalseIfPersistenceIdentifierIsStorageLocationAndFileNotExistsAndFileHasYamlExtension(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['getStorageByUid'], [], '', false); @@ -414,9 +382,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertFalse($mockFormPersistenceManager->_call('exists', $input)); } - /** - * @test - */ + #[Test] public function getUniquePersistenceIdentifierAppendNumberIfPersistenceIdentifierExists(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['exists'], [], '', false); @@ -436,9 +402,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertSame($expected, $result); } - /** - * @test - */ + #[Test] public function getUniquePersistenceIdentifierAppendTimestampIfPersistenceIdentifierExists(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['exists'], [], '', false); @@ -468,9 +432,7 @@ final class FormPersistenceManagerTest extends UnitTestCase return $returnValues; } - /** - * @test - */ + #[Test] public function getUniqueIdentifierThrowsExceptionIfIdentifierExists(): void { $this->expectException(NoUniqueIdentifierException::class); @@ -486,9 +448,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('getUniqueIdentifier', $input); } - /** - * @test - */ + #[Test] public function getUniqueIdentifierAppendTimestampIfIdentifierExists(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['checkForDuplicateIdentifier'], [], '', false); @@ -507,9 +467,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertMatchesRegularExpression($expected, $returnValue); } - /** - * @test - */ + #[Test] public function checkForDuplicateIdentifierReturnsTrueIfIdentifierIsUsed(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['listForms'], [], '', false); @@ -527,9 +485,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertTrue($mockFormPersistenceManager->_call('checkForDuplicateIdentifier', $input)); } - /** - * @test - */ + #[Test] public function checkForDuplicateIdentifierReturnsFalseIfIdentifierIsUsed(): void { $mockFormPersistenceManager = $this->getAccessibleMock(FormPersistenceManager::class, ['listForms'], [], '', false); @@ -596,19 +552,15 @@ final class FormPersistenceManagerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider metaDataIsExtractedDataProvider - */ + #[DataProvider('metaDataIsExtractedDataProvider')] + #[Test] public function metaDataIsExtracted(string $maybeRawFormDefinition, array $expectedMetaData): void { $formPersistenceManagerMock = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); self::assertSame($expectedMetaData, $formPersistenceManagerMock->_call('extractMetaDataFromCouldBeFormDefinition', $maybeRawFormDefinition)); } - /** - * @test - */ + #[Test] public function overrideByTypoScriptSettingsReturnsNotOverriddenConfigurationIfNoTypoScriptOverridesExists(): void { $mockController = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); @@ -660,9 +612,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('overrideByTypoScriptSettings', $input)); } - /** - * @test - */ + #[Test] public function overrideByTypoScriptSettingsReturnsOverriddenConfigurationIfTypoScriptOverridesExists(): void { $mockController = $this->getAccessibleMock(FormPersistenceManager::class, null, [], '', false); @@ -732,9 +682,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertSame($expected, $mockController->_call('overrideByTypoScriptSettings', $input)); } - /** - * @test - */ + #[Test] public function overrideByTypoScriptSettingsDoesNotEvaluateTypoScriptLookalikeInstructionsFromYamlSettings(): void { $formDefinitionYaml = [ @@ -828,9 +776,7 @@ final class FormPersistenceManagerTest extends UnitTestCase self::assertSame($expected, $controllerMock->_call('overrideByTypoScriptSettings', $formDefinitionYaml)); } - /** - * @test - */ + #[Test] public function retrieveFileByPersistenceIdentifierThrowsExceptionIfReadFromStorageIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -854,9 +800,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('retrieveFileByPersistenceIdentifier', $input); } - /** - * @test - */ + #[Test] public function getOrCreateFileThrowsExceptionIfFolderNotExistsInStorage(): void { $this->expectException(PersistenceManagerException::class); @@ -882,9 +826,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('getOrCreateFile', $input); } - /** - * @test - */ + #[Test] public function getOrCreateFileThrowsExceptionIfWriteToStorageIsNotAllowed(): void { $this->expectException(PersistenceManagerException::class); @@ -919,9 +861,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('getOrCreateFile', $input); } - /** - * @test - */ + #[Test] public function getStorageByUidThrowsExceptionIfStorageNotExists(): void { $this->expectException(PersistenceManagerException::class); @@ -937,9 +877,7 @@ final class FormPersistenceManagerTest extends UnitTestCase $mockFormPersistenceManager->_call('getStorageByUid', -1); } - /** - * @test - */ + #[Test] public function getStorageByUidThrowsExceptionIfStorageIsNotBrowsable(): void { $this->expectException(PersistenceManagerException::class); @@ -1133,10 +1071,8 @@ final class FormPersistenceManagerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isAllowedPersistencePathReturnsPropperValuesDataProvider - */ + #[DataProvider('isAllowedPersistencePathReturnsPropperValuesDataProvider')] + #[Test] public function isAllowedPersistencePathReturnsPropperValues(string $persistencePath, array $allowedExtensionPaths, array $allowedFileMounts, $expected): void { $formPersistenceManagerMock = $this->getAccessibleMock(FormPersistenceManager::class, ['getStorageByUid'], [], '', false); diff --git a/typo3/sysext/form/Tests/Unit/Mvc/ProcessingRuleTest.php b/typo3/sysext/form/Tests/Unit/Mvc/ProcessingRuleTest.php index fa7293d61562..5f8701b7cff9 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/ProcessingRuleTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/ProcessingRuleTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Extbase\Property\PropertyMapper; use TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator; use TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator; @@ -28,9 +29,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ProcessingRuleTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function addValidatorAddsValidator(): void { $conjunctionValidator = new ConjunctionValidator(); @@ -46,9 +45,7 @@ final class ProcessingRuleTest extends UnitTestCase self::assertInstanceOf(AbstractValidator::class, $validators->current()); } - /** - * @test - */ + #[Test] public function removeAllRemovesAllValidators(): void { $conjunctionValidator = new ConjunctionValidator(); @@ -63,9 +60,7 @@ final class ProcessingRuleTest extends UnitTestCase self::assertCount(0, $subject->getValidators()); } - /** - * @test - */ + #[Test] public function filterValidatorRemovesValidatorsDependingOnClosure(): void { $conjunctionValidator = new ConjunctionValidator(); @@ -84,9 +79,7 @@ final class ProcessingRuleTest extends UnitTestCase self::assertInstanceOf(AnotherTestValidator::class, $validators->current()); } - /** - * @test - */ + #[Test] public function processNoPropertyMappingReturnsNotModifiedValue(): void { $conjunctionValidator = new ConjunctionValidator(); @@ -98,9 +91,7 @@ final class ProcessingRuleTest extends UnitTestCase self::assertSame($input, $subject->process($input)); } - /** - * @test - */ + #[Test] public function processNoPropertyMappingAndHasErrorsIfValidatorContainsErrors(): void { $conjunctionValidator = new ConjunctionValidator(); diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Property/PropertyMappingConfigurationTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Property/PropertyMappingConfigurationTest.php index 77c2d26b808c..760113a0d8a3 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Property/PropertyMappingConfigurationTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Property/PropertyMappingConfigurationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Property; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -90,8 +91,8 @@ final class PropertyMappingConfigurationTest extends UnitTestCase /** * A bare minimum test that checks if the function maybe potentially works. - * @test */ + #[Test] public function afterBuildingFinishedAddsFileReferenceConverter(): void { // No validators @@ -115,9 +116,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase $propertyMappingConfiguration->afterBuildingFinished($this->fileUpload); } - /** - * @test - */ + #[Test] public function afterBuildingFinishedAddsMimeTypeConverter(): void { $mimeTypes = ['allowedMimeTypes' => ['text/plain', 'application/x-www-form-urlencoded']]; @@ -156,9 +155,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase $propertyMappingConfiguration->afterBuildingFinished($this->fileUpload); } - /** - * @test - */ + #[Test] public function afterBuildingFinishedSetsUpStoragePathToPropertySaveToFileMountIfItExists(): void { $resourceFactory = $this->createMock(ResourceFactory::class); @@ -190,9 +187,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase $this->propertyMappingConfiguration->afterBuildingFinished($this->fileUpload); } - /** - * @test - */ + #[Test] public function afterBuildingFinishedSetsUpStoragePathToToFormDefinitionPathIfSaveToFileMountIsNotDefinedAndFormWasNotAddedProgrammatically(): void { $resourceFactory = $this->createMock(ResourceFactory::class); @@ -228,9 +223,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase $this->propertyMappingConfiguration->afterBuildingFinished($this->fileUpload); } - /** - * @test - */ + #[Test] public function afterBuildingFinishedSetsStoragePathToUserUploadIfNeitherSaveToFileMountIsSetNorThereIsAFormDefinitionPath(): void { // Don't add any validators for now @@ -260,9 +253,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase $this->propertyMappingConfiguration->afterBuildingFinished($this->fileUpload); } - /** - * @test - */ + #[Test] public function afterBuildingFinishedCopiesValidators(): void { // Some other Validator @@ -292,9 +283,7 @@ final class PropertyMappingConfigurationTest extends UnitTestCase $this->propertyMappingConfiguration->afterBuildingFinished($this->fileUpload); } - /** - * @test - */ + #[Test] public function afterBuildingFinishedDoesNotCopyNotEmptyValidator(): void { // Not Empty Validator diff --git a/typo3/sysext/form/Tests/Unit/Mvc/Property/TypeConverter/FormDefinitionArrayConverterTest.php b/typo3/sysext/form/Tests/Unit/Mvc/Property/TypeConverter/FormDefinitionArrayConverterTest.php index 456503e2d26d..3d4b24d0e892 100644 --- a/typo3/sysext/form/Tests/Unit/Mvc/Property/TypeConverter/FormDefinitionArrayConverterTest.php +++ b/typo3/sysext/form/Tests/Unit/Mvc/Property/TypeConverter/FormDefinitionArrayConverterTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\Mvc\Property\TypeConverter; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException; use TYPO3\CMS\Form\Domain\Configuration\FormDefinitionValidationService; @@ -34,9 +35,7 @@ final class FormDefinitionArrayConverterTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = '12345'; } - /** - * @test - */ + #[Test] public function convertsJsonStringToFormDefinitionArray(): void { $sessionToken = '123'; @@ -95,9 +94,7 @@ final class FormDefinitionArrayConverterTest extends UnitTestCase self::assertSame($expected, $result->getArrayCopy()); } - /** - * @test - */ + #[Test] public function convertFromThrowsExceptionIfJsonIsInvalid(): void { $this->expectException(PropertyException::class); @@ -109,9 +106,7 @@ final class FormDefinitionArrayConverterTest extends UnitTestCase $typeConverter->convertFrom($input, FormDefinitionArray::class); } - /** - * @test - */ + #[Test] public function transformMultiValueElementsForFormFrameworkTransformValues(): void { $typeConverter = $this->getAccessibleMock(FormDefinitionArrayConverter::class, null, [], '', false); @@ -157,9 +152,7 @@ final class FormDefinitionArrayConverterTest extends UnitTestCase self::assertSame($expected, $typeConverter->_call('transformMultiValueElementsForFormFramework', $input)); } - /** - * @test - */ + #[Test] public function convertFromThrowsExceptionIfPrototypeNameWasChanged(): void { $this->expectException(PropertyException::class); @@ -188,9 +181,7 @@ final class FormDefinitionArrayConverterTest extends UnitTestCase $typeConverter->convertFrom(json_encode($input), FormDefinitionArray::class); } - /** - * @test - */ + #[Test] public function convertFromThrowsExceptionIfIdentifierWasChanged(): void { $this->expectException(PropertyException::class); diff --git a/typo3/sysext/form/Tests/Unit/ViewHelpers/Form/DatePickerViewHelperTest.php b/typo3/sysext/form/Tests/Unit/ViewHelpers/Form/DatePickerViewHelperTest.php index f34dbf10db36..c3d2d45aa71d 100644 --- a/typo3/sysext/form/Tests/Unit/ViewHelpers/Form/DatePickerViewHelperTest.php +++ b/typo3/sysext/form/Tests/Unit/ViewHelpers/Form/DatePickerViewHelperTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Tests\Unit\ViewHelpers\Form; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Form\ViewHelpers\Form\DatePickerViewHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -68,10 +70,8 @@ final class DatePickerViewHelperTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider convertDateFormatToDatePickerFormatReturnsTransformedFormatDataProvider - */ + #[DataProvider('convertDateFormatToDatePickerFormatReturnsTransformedFormatDataProvider')] + #[Test] public function convertDateFormatToDatePickerFormatReturnsTransformedFormat(string $input, string $expected): void { $mock = \Closure::bind(static function (DatePickerViewHelper $datePickerViewHelper) use ($input, &$result) { diff --git a/typo3/sysext/frontend/Tests/Unit/Authentication/FrontendUserAuthenticationTest.php b/typo3/sysext/frontend/Tests/Unit/Authentication/FrontendUserAuthenticationTest.php index a408c5d59c7d..5c6027346150 100644 --- a/typo3/sysext/frontend/Tests/Unit/Authentication/FrontendUserAuthenticationTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Authentication/FrontendUserAuthenticationTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Authentication; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Session\UserSession; @@ -32,9 +33,8 @@ final class FrontendUserAuthenticationTest extends UnitTestCase /** * Setting and immediately removing session data should be handled correctly. * No write operations should be made - * - * @test */ + #[Test] public function canSetAndUnsetSessionKey(): void { $uniqueSessionId = StringUtility::getUniqueId('test'); @@ -72,9 +72,8 @@ final class FrontendUserAuthenticationTest extends UnitTestCase /** * A user that is not signed in should be able to have associated session data - * - * @test */ + #[Test] public function canSetSessionDataForAnonymousUser(): void { $uniqueSessionId = StringUtility::getUniqueId('test'); diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/CaseContentObjectTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/CaseContentObjectTest.php index 237b1b9cb222..aa1d575ac350 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/CaseContentObjectTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/CaseContentObjectTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\DependencyInjection\Container; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -67,9 +68,7 @@ final class CaseContentObjectTest extends UnitTestCase $this->subject->setContentObjectRenderer($contentObjectRenderer); } - /** - * @test - */ + #[Test] public function renderReturnsEmptyStringIfNoKeyMatchesAndIfNoDefaultObjectIsSet(): void { $conf = [ @@ -78,9 +77,7 @@ final class CaseContentObjectTest extends UnitTestCase self::assertSame('', $this->subject->render($conf)); } - /** - * @test - */ + #[Test] public function renderReturnsContentFromDefaultObjectIfKeyDoesNotExist(): void { $conf = [ diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentDataProcessorTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentDataProcessorTest.php index 3f688269f88c..db28d092159d 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentDataProcessorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentDataProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\DependencyInjection\Container; use TYPO3\CMS\Frontend\ContentObject\ContentDataProcessor; @@ -43,9 +44,7 @@ final class ContentDataProcessorTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function throwsExceptionIfProcessorDoesNotExist(): void { $this->expectException(\UnexpectedValueException::class); @@ -60,9 +59,7 @@ final class ContentDataProcessorTest extends UnitTestCase $this->contentDataProcessor->process($contentObjectRendererStub, $config, $variables); } - /** - * @test - */ + #[Test] public function throwsExceptionIfProcessorClassDoesNotImplementInterface(): void { $this->expectException(\UnexpectedValueException::class); @@ -77,9 +74,7 @@ final class ContentDataProcessorTest extends UnitTestCase $this->contentDataProcessor->process($contentObjectRendererStub, $config, $variables); } - /** - * @test - */ + #[Test] public function processorClassIsCalled(): void { $contentObjectRendererStub = new ContentObjectRenderer(); @@ -96,9 +91,7 @@ final class ContentDataProcessorTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function throwsExceptionIfProcessorServiceDoesNotImplementInterface(): void { $this->expectException(\UnexpectedValueException::class); @@ -114,9 +107,7 @@ final class ContentDataProcessorTest extends UnitTestCase $this->contentDataProcessor->process($contentObjectRendererStub, $config, $variables); } - /** - * @test - */ + #[Test] public function processorServiceIsCalled(): void { $contentObjectRendererStub = new ContentObjectRenderer(); diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentObjectRendererTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentObjectRendererTest.php index f14b55371590..85cee9032275 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentObjectRendererTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/ContentObjectRendererTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\Exception; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\Rule\InvocationOrder; @@ -188,7 +190,6 @@ final class ContentObjectRendererTest extends UnitTestCase ////////////////////// // Utility functions ////////////////////// - /** * Converts the subject and the expected result into utf-8. * @@ -376,9 +377,7 @@ final class ContentObjectRendererTest extends UnitTestCase ///////////////////////////////////////////// // Tests concerning the getImgResource hook ///////////////////////////////////////////// - /** - * @test - */ + #[Test] public function getImgResourceCallsGetImgResourcePostProcessHook(): void { $cacheManagerMock = $this->getMockBuilder(CacheManager::class)->disableOriginalConstructor()->getMock(); @@ -425,11 +424,10 @@ final class ContentObjectRendererTest extends UnitTestCase ////////////////////////////////////// // Tests related to getContentObject ////////////////////////////////////// - /** * @see ContentObjectRendererTest::canRegisterAContentObjectClassForATypoScriptName - * @test */ + #[Test] public function willReturnNullForUnregisteredObject(): void { $object = $this->subject->getContentObject('FOO'); @@ -440,24 +438,19 @@ final class ContentObjectRendererTest extends UnitTestCase // Tests concerning crop ////////////////////////// /** - * @test - * - * Tests are kept due ensure parameter splitting works, also they are mostly duplicates of directly implemented - * HtmlCropper and TextCropper tests. * @see \TYPO3\CMS\Core\Tests\Unit\Html\HtmlCropperTest * @see \TYPO3\CMS\Core\Tests\Unit\Text\TextCropperTest */ + #[Test] public function cropIsMultibyteSafe(): void { self::assertEquals('бла', $this->subject->crop('бла', '3|...')); } ////////////////////////////// - ////////////////////////////// // Tests concerning cropHTML ////////////////////////////// - /** * Data provider for cropHTML. * @@ -761,8 +754,6 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if cropHTML works properly. * - * @test - * @dataProvider cropHTMLDataProvider * @param string $expect The expected cropped output. * @param string $content The given input. * @param string $conf The given configuration. @@ -772,6 +763,8 @@ final class ContentObjectRendererTest extends UnitTestCase * @see \TYPO3\CMS\Core\Tests\Unit\Html\HtmlCropperTest * @see \TYPO3\CMS\Core\Tests\Unit\Text\TextCropperTest */ + #[DataProvider('cropHTMLDataProvider')] + #[Test] public function cropHTML(string $expect, string $content, string $conf): void { $this->handleCharset($content, $expect); @@ -848,9 +841,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param float $expect The expected output. * @param mixed $content The given content. * @param array $conf The given configuration of 'round.'. - * @dataProvider roundDataProvider - * @test */ + #[DataProvider('roundDataProvider')] + #[Test] public function round(float $expect, mixed $content, array $conf): void { self::assertSame( @@ -859,9 +852,7 @@ final class ContentObjectRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function recursiveStdWrapProperlyRendersBasicString(): void { $stdWrapConfiguration = [ @@ -876,9 +867,7 @@ final class ContentObjectRendererTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function recursiveStdWrapIsOnlyCalledOnce(): void { $stdWrapConfiguration = [ @@ -951,10 +940,9 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if numberFormat works properly. - * - * @dataProvider numberFormatDataProvider - * @test */ + #[DataProvider('numberFormatDataProvider')] + #[Test] public function numberFormat(string $expects, mixed $content, array $conf): void { self::assertSame( @@ -1020,12 +1008,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap.replacement and all of its properties work properly * - * @test - * @dataProvider replacementDataProvider * @param string $content The given input. * @param string $expects The expected result. * @param array $conf The given configuration. */ + #[DataProvider('replacementDataProvider')] + #[Test] public function replacement(string $expects, string $content, array $conf): void { self::assertSame( @@ -1092,10 +1080,9 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if calcAge works properly. - * - * @test - * @dataProvider calcAgeDataProvider */ + #[DataProvider('calcAgeDataProvider')] + #[Test] public function calcAge(string $expect, int $timestamp, string $labels): void { self::assertSame( @@ -1119,10 +1106,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @dataProvider stdWrapReturnsExpectationDataProvider - * @test - */ + #[DataProvider('stdWrapReturnsExpectationDataProvider')] + #[Test] public function stdWrapReturnsExpectation(string $content, array $configuration, string $expectation): void { self::assertSame($expectation, $this->subject->stdWrap($content, $configuration)); @@ -1150,10 +1135,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @dataProvider stdWrapDoesOnlyCallIfEmptyIfTheTrimmedContentIsEmptyOrZeroDataProvider - * @test - */ + #[DataProvider('stdWrapDoesOnlyCallIfEmptyIfTheTrimmedContentIsEmptyOrZeroDataProvider')] + #[Test] public function stdWrapDoesOnlyCallIfEmptyIfTheTrimmedContentIsEmptyOrZero(string $content, bool $ifEmptyShouldBeCalled): void { $conf = [ @@ -1198,12 +1181,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if substring works properly. * - * @test - * @dataProvider substringDataProvider * @param string $expect The expected output. * @param string $content The given input. * @param string $conf The given configuration. */ + #[DataProvider('substringDataProvider')] + #[Test] public function substring(string $expect, string $content, string $conf): void { self::assertSame($expect, $this->subject->substring($content, $conf)); @@ -1220,10 +1203,9 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "gp" - * - * @test - * @dataProvider getDataWithTypeGpDataProvider */ + #[DataProvider('getDataWithTypeGpDataProvider')] + #[Test] public function getDataWithTypeGp(string $key, string $expectedValue): void { $queryArguments = [ @@ -1243,9 +1225,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "tsfe" - * - * @test */ + #[Test] public function getDataWithTypeTsfe(): void { $GLOBALS['TSFE']->linkVars = 'foo'; @@ -1254,9 +1235,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "getenv" - * - * @test */ + #[Test] public function getDataWithTypeGetenv(): void { $envName = StringUtility::getUniqueId('frontendtest'); @@ -1267,9 +1247,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "getindpenv" - * - * @test */ + #[Test] public function getDataWithTypeGetindpenv(): void { $this->subject->expects(self::once())->method('getEnvironmentVariable') @@ -1279,9 +1258,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "field" - * - * @test */ + #[Test] public function getDataWithTypeField(): void { $key = 'someKey'; @@ -1294,9 +1272,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "field" of the field content * is multi-dimensional (e.g. an array) - * - * @test */ + #[Test] public function getDataWithTypeFieldAndFieldIsMultiDimensional(): void { $key = 'somekey|level1|level2'; @@ -1323,10 +1300,9 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Basic check if getData gets the uid of a file object - * - * @test - * @dataProvider getDataWithTypeFileReturnsUidOfFileObjectDataProvider */ + #[DataProvider('getDataWithTypeFileReturnsUidOfFileObjectDataProvider')] + #[Test] public function getDataWithTypeFileReturnsUidOfFileObject(string $typoScriptPath): void { $uid = StringUtility::getUniqueId(); @@ -1338,9 +1314,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "parameters" - * - * @test */ + #[Test] public function getDataWithTypeParameters(): void { $key = StringUtility::getUniqueId('someKey'); @@ -1352,9 +1327,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "register" - * - * @test */ + #[Test] public function getDataWithTypeRegister(): void { $key = StringUtility::getUniqueId('someKey'); @@ -1366,9 +1340,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "session" - * - * @test */ + #[Test] public function getDataWithTypeSession(): void { $frontendUser = $this->getMockBuilder(FrontendUserAuthentication::class) @@ -1386,9 +1359,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "level" - * - * @test */ + #[Test] public function getDataWithTypeLevel(): void { $rootline = [ @@ -1402,9 +1374,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "leveltitle" - * - * @test */ + #[Test] public function getDataWithTypeLeveltitle(): void { $rootline = [ @@ -1420,9 +1391,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "levelmedia" - * - * @test */ + #[Test] public function getDataWithTypeLevelmedia(): void { $rootline = [ @@ -1438,9 +1408,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "leveluid" - * - * @test */ + #[Test] public function getDataWithTypeLeveluid(): void { $rootline = [ @@ -1456,9 +1425,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "levelfield" - * - * @test */ + #[Test] public function getDataWithTypeLevelfield(): void { $rootline = [ @@ -1473,9 +1441,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "fullrootline" - * - * @test */ + #[Test] public function getDataWithTypeFullrootline(): void { $rootline1 = [ @@ -1494,9 +1461,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "date" - * - * @test */ + #[Test] public function getDataWithTypeDate(): void { $format = 'Y-M-D'; @@ -1508,9 +1474,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "page" - * - * @test */ + #[Test] public function getDataWithTypePage(): void { $uid = random_int(0, mt_getrandmax()); @@ -1520,9 +1485,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "current" - * - * @test */ + #[Test] public function getDataWithTypeCurrent(): void { $key = StringUtility::getUniqueId('someKey'); @@ -1532,9 +1496,7 @@ final class ContentObjectRendererTest extends UnitTestCase self::assertEquals($value, $this->subject->getData('current')); } - /** - * @test - */ + #[Test] public function getDataWithTypeDbReturnsCorrectTitle() { $dummyRecord = ['uid' => 5, 'title' => 'someTitle']; @@ -1578,10 +1540,9 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "db" - * - * @test - * @dataProvider getDataWithTypeDbDataProvider */ + #[DataProvider('getDataWithTypeDbDataProvider')] + #[Test] public function getDataWithTypeDbReturnsEmptyStringOnInvalidIdentifiers(string $identifier, InvocationOrder $expectsMethodCall): void { $dummyRecord = ['uid' => 5, 'title' => 'someTitle']; @@ -1591,9 +1552,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "lll" - * - * @test */ + #[Test] public function getDataWithTypeLll(): void { $key = StringUtility::getUniqueId('someKey'); @@ -1608,9 +1568,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "path" - * - * @test */ + #[Test] public function getDataWithTypePath(): void { $filenameIn = 'typo3/sysext/frontend/Public/Icons/Extension.svg'; @@ -1619,9 +1578,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "context" - * - * @test */ + #[Test] public function getDataWithTypeContext(): void { $context = new Context([ @@ -1637,9 +1595,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "site" - * - * @test */ + #[Test] public function getDataWithTypeSite(): void { $site = new Site('my-site', 123, [ @@ -1657,9 +1614,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "site" and base variants - * - * @test */ + #[Test] public function getDataWithTypeSiteWithBaseVariants(): void { $packageManager = new PackageManager(new DependencyOrderingService()); @@ -1692,9 +1648,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "siteLanguage" - * - * @test */ + #[Test] public function getDataWithTypeSiteLanguage(): void { $site = $this->createSiteWithLanguage([ @@ -1715,9 +1670,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "parentRecordNumber" - * - * @test */ + #[Test] public function getDataWithTypeParentRecordNumber(): void { $recordNumber = random_int(0, mt_getrandmax()); @@ -1727,9 +1681,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "debug:rootLine" - * - * @test */ + #[Test] public function getDataWithTypeDebugRootline(): void { $rootline = [ @@ -1749,9 +1702,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "debug:fullRootLine" - * - * @test */ + #[Test] public function getDataWithTypeDebugFullRootline(): void { $rootline = [ @@ -1771,9 +1723,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "debug:data" - * - * @test */ + #[Test] public function getDataWithTypeDebugData(): void { $key = StringUtility::getUniqueId('someKey'); @@ -1791,9 +1742,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "debug:register" - * - * @test */ + #[Test] public function getDataWithTypeDebugRegister(): void { $key = StringUtility::getUniqueId('someKey'); @@ -1811,9 +1761,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Checks if getData() works with type "data:page" - * - * @test */ + #[Test] public function getDataWithTypeDebugPage(): void { $uid = random_int(0, mt_getrandmax()); @@ -1828,9 +1777,7 @@ final class ContentObjectRendererTest extends UnitTestCase self::assertEquals($expectedResult, $cleanedResult); } - /** - * @test - */ + #[Test] public function renderingContentObjectThrowsException(): void { $this->expectException(\LogicException::class); @@ -1839,9 +1786,7 @@ final class ContentObjectRendererTest extends UnitTestCase $this->subject->render($contentObjectFixture, []); } - /** - * @test - */ + #[Test] public function exceptionHandlerIsEnabledByDefaultInProductionContext(): void { Environment::initialize( @@ -1859,9 +1804,7 @@ final class ContentObjectRendererTest extends UnitTestCase $this->subject->render($contentObjectFixture, []); } - /** - * @test - */ + #[Test] public function renderingContentObjectDoesNotThrowExceptionIfExceptionHandlerIsConfiguredLocally(): void { $contentObjectFixture = $this->createContentObjectThrowingExceptionFixture(); @@ -1872,9 +1815,7 @@ final class ContentObjectRendererTest extends UnitTestCase $this->subject->render($contentObjectFixture, $configuration); } - /** - * @test - */ + #[Test] public function renderingContentObjectDoesNotThrowExceptionIfExceptionHandlerIsConfiguredGlobally(): void { $contentObjectFixture = $this->createContentObjectThrowingExceptionFixture(); @@ -1883,9 +1824,7 @@ final class ContentObjectRendererTest extends UnitTestCase $this->subject->render($contentObjectFixture, []); } - /** - * @test - */ + #[Test] public function globalExceptionHandlerConfigurationCanBeOverriddenByLocalConfiguration(): void { $contentObjectFixture = $this->createContentObjectThrowingExceptionFixture(false); @@ -1898,9 +1837,7 @@ final class ContentObjectRendererTest extends UnitTestCase $this->subject->render($contentObjectFixture, $configuration); } - /** - * @test - */ + #[Test] public function renderedErrorMessageCanBeCustomized(): void { $contentObjectFixture = $this->createContentObjectThrowingExceptionFixture(); @@ -1915,9 +1852,7 @@ final class ContentObjectRendererTest extends UnitTestCase self::assertSame('New message for testing', $this->subject->render($contentObjectFixture, $configuration)); } - /** - * @test - */ + #[Test] public function localConfigurationOverridesGlobalConfiguration(): void { $contentObjectFixture = $this->createContentObjectThrowingExceptionFixture(); @@ -1936,9 +1871,7 @@ final class ContentObjectRendererTest extends UnitTestCase self::assertSame('New message for testing', $this->subject->render($contentObjectFixture, $configuration)); } - /** - * @test - */ + #[Test] public function specificExceptionsCanBeIgnoredByExceptionHandler(): void { $contentObjectFixture = $this->createContentObjectThrowingExceptionFixture(); @@ -2063,10 +1996,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider _parseFuncReturnsCorrectHtmlDataProvider - */ + #[DataProvider('_parseFuncReturnsCorrectHtmlDataProvider')] + #[Test] public function stdWrap_parseFuncReturnsParsedHtml(string $value, array $configuration, string $expectedResult, LinkResultInterface|false $linkResult): void { if ($linkResult !== false) { @@ -2338,10 +2269,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider _parseFuncParsesNestedTagsProperlyDataProvider - */ + #[DataProvider('_parseFuncParsesNestedTagsProperlyDataProvider')] + #[Test] public function parseFuncParsesNestedTagsProperly(string $value, array $configuration, string $expectedResult): void { self::assertEquals($expectedResult, $this->subject->stdWrap_parseFunc($value, $configuration)); @@ -2479,10 +2408,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider httpMakelinksDataProvider - */ + #[DataProvider('httpMakelinksDataProvider')] + #[Test] public function httpMakelinksReturnsLink(string $data, array $configuration, string $expectedResult, LinkResult $linkResult): void { $linkFactory = $this->getMockBuilder(LinkFactory::class)->disableOriginalConstructor()->getMock(); @@ -2516,10 +2443,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider invalidHttpMakelinksDataProvider - */ + #[DataProvider('invalidHttpMakelinksDataProvider')] + #[Test] public function httpMakelinksReturnsNoLink(string $data, array $configuration, string $expectedResult): void { self::assertSame($expectedResult, $this->subject->_call('http_makelinks', $data, $configuration)); @@ -2591,10 +2516,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider mailtoMakelinksDataProvider - */ + #[DataProvider('mailtoMakelinksDataProvider')] + #[Test] public function mailtoMakelinksReturnsMailToLink(string $data, array $configuration, string $expectedResult, LinkResult $linkResult): void { $linkFactory = $this->getMockBuilder(LinkFactory::class)->disableOriginalConstructor()->getMock(); @@ -2604,17 +2527,13 @@ final class ContentObjectRendererTest extends UnitTestCase self::assertSame($expectedResult, $this->subject->_call('mailto_makelinks', $data, $configuration)); } - /** - * @test - */ + #[Test] public function mailtoMakelinksReturnsNoMailToLink(): void { self::assertSame('mailto:', $this->subject->_call('mailto_makelinks', 'mailto:', [])); } - /** - * @test - */ + #[Test] public function stdWrap_splitObjReturnsCount(): void { $conf = [ @@ -2685,8 +2604,6 @@ final class ContentObjectRendererTest extends UnitTestCase * - takes key from $conf['key'] * - processes key with stdWrap based on $conf['key.'] * - * @test - * @dataProvider calculateCacheKeyDataProvider * @param string $expect Expected result. * @param array $conf Properties 'key', 'key.' * @param int $times Times called mocked method. @@ -2694,6 +2611,8 @@ final class ContentObjectRendererTest extends UnitTestCase * @param array|null $withWrap * @param string|null $will Return value of mocked method. */ + #[DataProvider('calculateCacheKeyDataProvider')] + #[Test] public function calculateCacheKey(string $expect, array $conf, int $times, ?string $with, ?array $withWrap, ?string $will): void { $subject = $this->getAccessibleMock(ContentObjectRenderer::class, ['stdWrap']); @@ -2740,14 +2659,14 @@ final class ContentObjectRendererTest extends UnitTestCase * - CacheFrontend is created and called if $cacheKey is not empty. * - Else false is returned. * - * @test - * @dataProvider getFromCacheDataProvider * @param string|bool $expect Expected result. * @param array $conf Configuration to pass to calculateCacheKey mock. * @param string $cacheKey Return from calculateCacheKey mock. * @param int $times Times the cache is expected to be called (0 or 1). * @param string|null $cached Return from cacheFrontend mock. */ + #[DataProvider('getFromCacheDataProvider')] + #[Test] public function getFromCache(string|bool $expect, array $conf, string $cacheKey, int $times, ?string $cached): void { $tags = [StringUtility::getUniqueId('tags')]; @@ -2860,11 +2779,11 @@ final class ContentObjectRendererTest extends UnitTestCase * - 1 => 1 * - 'string' => 'string' * - * @test - * @dataProvider getFieldValDataProvider * @param mixed $expect The expected string. * @param string $fields Field names divides by //. */ + #[DataProvider('getFieldValDataProvider')] + #[Test] public function getFieldVal(mixed $expect, string $fields): void { $data = [ @@ -2923,10 +2842,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider caseshiftDataProvider - */ + #[DataProvider('caseshiftDataProvider')] + #[Test] public function caseshift(string $expected, string $content, string $case): void { self::assertSame($expected, $this->subject->caseshift($content, $case)); @@ -2956,10 +2873,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider HTMLcaseshiftDataProvider - */ + #[DataProvider('HTMLcaseshiftDataProvider')] + #[Test] public function HTMLcaseshift(string $content, string $expected): void { self::assertSame($expected, (new ContentObjectRenderer())->HTMLcaseshift($content, 'upper')); @@ -2968,7 +2883,6 @@ final class ContentObjectRendererTest extends UnitTestCase /*************************************************************************** * General tests for stdWrap_ ***************************************************************************/ - /** * Check that all registered stdWrap processors are callable. * @@ -2977,9 +2891,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - The given invalidProcessor is counted as not callable. * - All stdWrap processors are counted as callable. * - Their amount is 91. - * - * @test */ + #[Test] public function allStdWrapProcessorsAreCallable(): void { $callable = 0; @@ -3016,9 +2929,8 @@ final class ContentObjectRendererTest extends UnitTestCase * The exceptions break, if the configuration is empty. This test just * tracks the different behaviour to gain information. It doesn't mean * that it is an issue. - * - * @test */ + #[Test] public function notAllStdWrapProcessorsAreCallableWithEmptyConfiguration(): void { $timeTrackerMock = $this->getMockBuilder(TimeTracker::class)->disableOriginalConstructor()->getMock(); @@ -3054,11 +2966,9 @@ final class ContentObjectRendererTest extends UnitTestCase /*************************************************************************** * End general tests for stdWrap_ ***************************************************************************/ - /*************************************************************************** * Tests for stdWrap_ in alphabetical order (all uppercase before lowercase) ***************************************************************************/ - /** * Data provider for fourTypesOfStdWrapHookObjectProcessors * @@ -3096,11 +3006,11 @@ final class ContentObjectRendererTest extends UnitTestCase * - stdWrap_stdWrapProcess * - stdWrap_stdWrapPostProcess * - * @test - * @dataProvider fourTypesOfStdWrapHookObjectProcessorsDataProvider * @param string $stdWrapMethod The method to cover. * @param string $hookObjectCall The expected hook object call. */ + #[DataProvider('fourTypesOfStdWrapHookObjectProcessorsDataProvider')] + #[Test] public function fourTypesOfStdWrapHookObjectProcessors( string $stdWrapMethod, string $hookObjectCall @@ -3186,14 +3096,14 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['HTMLparser']. * - Returns the return value. * - * @test - * @dataProvider stdWrap_HTMLparserDataProvider * @param string $expect The expected output. * @param string $content The given content. * @param array $conf The given configuration. * @param int $times Times HTMLparser_TSbridge is called (0 or 1). * @param string $will Return of HTMLparser_TSbridge. */ + #[DataProvider('stdWrap_HTMLparserDataProvider')] + #[Test] public function stdWrap_HTMLparser( string $expect, string $content, @@ -3235,10 +3145,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider stdWrap_addPageCacheTagsAddsPageTagsDataProvider - */ + #[DataProvider('stdWrap_addPageCacheTagsAddsPageTagsDataProvider')] + #[Test] public function stdWrap_addPageCacheTagsAddsPageTags(array $expectedTags, array $configuration): void { $this->subject->stdWrap_addPageCacheTags('', $configuration); @@ -3254,9 +3162,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is the difference between $content and EXEC_TIME. * - Parameter 2 is $conf['age']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_age(): void { $now = 10; @@ -3285,9 +3192,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Second parameter is $conf['append.']. * - Third parameter is '/stdWrap/.append'. * - Returns the return value appended to $content. - * - * @test */ + #[Test] public function stdWrap_append(): void { $debugKey = '/stdWrap/.append'; @@ -3347,9 +3253,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param string|null $xhtmlDoctype Xhtml document type. - * @test - * @dataProvider stdWrapBrDataProvider */ + #[DataProvider('stdWrapBrDataProvider')] + #[Test] public function stdWrap_br(string $expected, string $input, ?string $xhtmlDoctype): void { $pageRenderer = $this->getMockBuilder(PageRenderer::class)->disableOriginalConstructor()->addMethods(['dummy'])->getMock(); @@ -3395,10 +3301,9 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if brTag works properly - * - * @test - * @dataProvider stdWrapBrTagDataProvider */ + #[DataProvider('stdWrapBrTagDataProvider')] + #[Test] public function stdWrap_brTag(string $input, string $expected, array $config): void { self::assertEquals($expected, $this->subject->stdWrap_brTag($input, $config)); @@ -3470,12 +3375,12 @@ final class ContentObjectRendererTest extends UnitTestCase * is done by testing input/output pairs instead. To not duplicate * the testing of formatSize just a few smoke tests are done here. * - * @test - * @dataProvider stdWrap_bytesDataProvider * @param string $expect The expected output. * @param string $content The given input. * @param array $conf The given configuration for 'bytes.'. */ + #[DataProvider('stdWrap_bytesDataProvider')] + #[Test] public function stdWrap_bytes(string $expect, string $content, array $conf): void { $locale = 'en_US.UTF-8'; @@ -3501,9 +3406,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['cObject.']. * - Parameter 3 is '/stdWrap/.cObject'. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_cObject(): void { $debugKey = '/stdWrap/.cObject'; @@ -3597,10 +3501,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider stdWrap_orderedStdWrapDataProvider - */ + #[DataProvider('stdWrap_orderedStdWrapDataProvider')] + #[Test] public function stdWrap_orderedStdWrap(array $config, string $expected): void { self::assertSame($expected, (new ContentObjectRenderer())->stdWrap_orderedStdWrap('someContent', $config)); @@ -3658,8 +3560,6 @@ final class ContentObjectRendererTest extends UnitTestCase * - getFromCache is called to fetch from cache * - $conf['cache.'] is passed on as parameter * - * @test - * @dataProvider stdWrap_cacheReadDataProvider * @param string $expect Expected result. * @param string $input Given input string. * @param array $conf Property 'cache.' @@ -3667,6 +3567,8 @@ final class ContentObjectRendererTest extends UnitTestCase * @param array|null $with Parameter passed to mocked method. * @param string|false $will Return value of mocked method. */ + #[DataProvider('stdWrap_cacheReadDataProvider')] + #[Test] public function stdWrap_cacheRead( string $expect, string $input, @@ -3735,13 +3637,13 @@ final class ContentObjectRendererTest extends UnitTestCase * - Calls all configured user functions with $params, $this. * - Calls set on the cache frontend with $key, $content, $tags, $lifetime. * - * @test - * @dataProvider stdWrap_cacheStoreDataProvider * @param array|null $confCache Configuration of 'cache.' * @param int $timesCCK Times calculateCacheKey is called. * @param mixed $key The return value of calculateCacheKey. * @param int $times Times the other methods are called. */ + #[DataProvider('stdWrap_cacheStoreDataProvider')] + #[Test] public function stdWrap_cacheStore( ?array $confCache, int $timesCCK, @@ -3839,9 +3741,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['case']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_case(): void { $content = StringUtility::getUniqueId(); @@ -3865,9 +3766,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_char works properly. - * - * @test */ + #[Test] public function stdWrap_char(): void { $input = 'discarded'; @@ -3884,9 +3784,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['crop']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_crop(): void { $content = StringUtility::getUniqueId('content'); @@ -3917,9 +3816,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['cropHTML']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_cropHTML(): void { $content = StringUtility::getUniqueId('content'); @@ -4010,10 +3908,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider stdWrap_formattedDateProvider - */ + #[DataProvider('stdWrap_formattedDateProvider')] + #[Test] public function stdWrap_formattedDate(string $expected, mixed $pattern, string $locale = null, string $givenDate = null): void { $this->frontendControllerMock->getContext()->setAspect('date', new DateTimeAspect(new \DateTimeImmutable('2023-02-02 13:05:00'))); @@ -4069,12 +3965,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_csConv works properly. * - * @test - * @dataProvider stdWrap_csConvDataProvider * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Property: csConv */ + #[DataProvider('stdWrap_csConvDataProvider')] + #[Test] public function stdWrap_csConv(string $expected, string $input, array $conf): void { self::assertSame( @@ -4091,9 +3987,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - current is returned from $this->data * - the key is stored in $this->currentValKey * - the key defaults to 'currentValue_kidjls9dksoje' - * - * @test */ + #[Test] public function stdWrap_current(): void { $data = [ @@ -4138,11 +4033,11 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is property data by default. * - Returns the return value. * - * @test - * @dataProvider stdWrap_dataDataProvider * @param array $expect Expect either $data * @param array $data The data. */ + #[DataProvider('stdWrap_dataDataProvider')] + #[Test] public function stdWrap_data(array $expect, array $data): void { $conf = ['data' => StringUtility::getUniqueId('conf.data')]; @@ -4169,9 +4064,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['dataWrap']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_dataWrap(): void { $content = StringUtility::getUniqueId('content'); @@ -4236,13 +4130,13 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_date works properly. * - * @test - * @dataProvider stdWrap_dateDataProvider * @param string $expected The expected output. * @param mixed $content The given input. * @param array $conf The given configuration. * @param int $now Fictive execution time. */ + #[DataProvider('stdWrap_dateDataProvider')] + #[Test] public function stdWrap_date(string $expected, mixed $content, array $conf, int $now): void { $GLOBALS['EXEC_TIME'] = $now; @@ -4254,9 +4148,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_debug works properly. - * - * @test */ + #[Test] public function stdWrap_debug(): void { $expect = '<pre><p class="class"><br/>' @@ -4282,9 +4175,8 @@ final class ContentObjectRendererTest extends UnitTestCase * Note 2: * The second parameter to the debug function isn't used by the current * implementation at all. It can't even indirectly be tested. - * - * @test */ + #[Test] public function stdWrap_debugData(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*'; @@ -4332,11 +4224,11 @@ final class ContentObjectRendererTest extends UnitTestCase * easily intercepted. The test is done indirectly by catching the * frontend output of debug. * - * @test - * @dataProvider stdWrap_debugFuncDataProvider * @param bool $expectArray If cast to array is expected. * @param mixed $confDebugFunc The configuration for $conf['debugFunc']. */ + #[DataProvider('stdWrap_debugFuncDataProvider')] + #[Test] public function stdWrap_debugFunc(bool $expectArray, mixed $confDebugFunc): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*'; @@ -4418,12 +4310,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if doubleBrTag works properly * - * @test - * @dataProvider stdWrapDoubleBrTagDataProvider * @param string $expected The expected value. * @param string $input The input value. * @param array $config The property 'doubleBrTag'. */ + #[DataProvider('stdWrapDoubleBrTagDataProvider')] + #[Test] public function stdWrap_doubleBrTag(string $expected, string $input, array $config): void { self::assertEquals($expected, $this->subject->stdWrap_doubleBrTag($input, $config)); @@ -4438,9 +4330,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['encapsLines']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_encapsLines(): void { $content = StringUtility::getUniqueId('content'); @@ -4466,10 +4357,9 @@ final class ContentObjectRendererTest extends UnitTestCase * Check if stdWrap_encapsLines uses self closing tags * only for allowed tags according to * @see https://www.w3.org/TR/html5/syntax.html#void-elements - * - * @test - * @dataProvider html5SelfClosingTagsDataprovider */ + #[DataProvider('html5SelfClosingTagsDataprovider')] + #[Test] public function stdWrap_encapsLines_HTML5SelfClosingTags(string $input, string $expected): void { $rteParseFunc = self::getLibParseFunc_RTE(); @@ -4618,11 +4508,11 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if encodeForJavaScriptValue works properly. * - * @test - * @dataProvider stdWrap_encodeForJavaScriptValueDataProvider * @param string $expect The expected output. * @param string $content The given input. */ + #[DataProvider('stdWrap_encodeForJavaScriptValueDataProvider')] + #[Test] public function stdWrap_encodeForJavaScriptValue(string $expect, string $content): void { self::assertSame( @@ -4653,11 +4543,11 @@ final class ContentObjectRendererTest extends UnitTestCase * can't mock static methods, to prove they are called, all we do here * is to provide a few smoke tests. * - * @test - * @dataProvider stdWrap_expandListDataProvider * @param string $expected The expected output. * @param string $content The given content. */ + #[DataProvider('stdWrap_expandListDataProvider')] + #[Test] public function stdWrap_expandList(string $expected, string $content): void { self::assertEquals( @@ -4673,9 +4563,8 @@ final class ContentObjectRendererTest extends UnitTestCase * * - calls getFieldVal * - passes conf['field'] as parameter - * - * @test */ + #[Test] public function stdWrap_field(): void { $expect = StringUtility::getUniqueId('expect'); @@ -4779,13 +4668,13 @@ final class ContentObjectRendererTest extends UnitTestCase * - False triggers a stop of further rendering. * - False returns '', true the given content as is. * - * @test - * @dataProvider stdWrap_fieldRequiredDataProvider * @param string $expect The expected output. * @param bool $stop Expect stop further rendering. * @param string $content The given input. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_fieldRequiredDataProvider')] + #[Test] public function stdWrap_fieldRequired(string $expect, bool $stop, string $content, array $conf): void { $data = [ @@ -4854,12 +4743,12 @@ final class ContentObjectRendererTest extends UnitTestCase * - Returns '' for invalid algorithm. * - Value can be processed by stdWrap. * - * @test - * @dataProvider hashDataProvider * @param string $expect The expected output. * @param string $content The given content. * @param array $conf The given configuration. */ + #[DataProvider('hashDataProvider')] + #[Test] public function stdWrap_hash(string $expect, string $content, array $conf): void { self::assertSame( @@ -4902,12 +4791,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_htmlSpecialChars works properly * - * @test - * @dataProvider stdWrap_htmlSpecialCharsDataProvider * @param string $expected The expected value. * @param string $input The input value. * @param array $conf htmlSpecialChars.preserveEntities */ + #[DataProvider('stdWrap_htmlSpecialCharsDataProvider')] + #[Test] public function stdWrap_htmlSpecialChars(string $expected, string $input, array $conf): void { self::assertSame( @@ -5006,8 +4895,6 @@ final class ContentObjectRendererTest extends UnitTestCase * - 'False' triggers a stop of further rendering. * - Returns the content as is or '' if false. * - * @test - * @dataProvider stdWrap_ifDataProvider * @param string $expect The expected output. * @param bool $stop Expect stop further rendering. * @param string $content The given content. @@ -5015,6 +4902,8 @@ final class ContentObjectRendererTest extends UnitTestCase * @param int $times Times checkIf is called (0 or 1). * @param bool $will Return of checkIf (null if not called). */ + #[DataProvider('stdWrap_ifDataProvider')] + #[Test] public function stdWrap_if(string $expect, bool $stop, string $content, array $conf, int $times, bool $will): void { $subject = $this->getAccessibleMock( @@ -5064,11 +4953,11 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if checkIf works properly. * - * @test - * @dataProvider checkIfDataProvider * @param bool $expect Whether result should be true or false. * @param array $conf TypoScript configuration to pass into checkIf */ + #[DataProvider('checkIfDataProvider')] + #[Test] public function checkIf(bool $expect, array $conf): void { $subject = $this->getAccessibleMock( @@ -5112,12 +5001,12 @@ final class ContentObjectRendererTest extends UnitTestCase * - The check for blank is done by comparing the trimmed content * with the empty string for equality. * - * @test - * @dataProvider stdWrap_ifBlankDataProvider * @param mixed $expect * @param mixed $content The given input. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_ifBlankDataProvider')] + #[Test] public function stdWrap_ifBlank(mixed $expect, mixed $content, array $conf): void { $result = $this->subject->stdWrap_ifBlank($content, $conf); @@ -5166,12 +5055,12 @@ final class ContentObjectRendererTest extends UnitTestCase * - Otherwise returns $conf['ifEmpty']. * - Empty is checked by cast to boolean after trimming. * - * @test - * @dataProvider stdWrap_ifEmptyDataProvider * @param mixed $expect The expected output. * @param mixed $content The given content. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_ifEmptyDataProvider')] + #[Test] public function stdWrap_ifEmpty(mixed $expect, mixed $content, array $conf): void { $result = $this->subject->stdWrap_ifEmpty($content, $conf); @@ -5207,12 +5096,12 @@ final class ContentObjectRendererTest extends UnitTestCase * - Otherwise returns $conf['ifNull']. * - Null is strictly checked by identity with null. * - * @test - * @dataProvider stdWrap_ifNullDataProvider * @param mixed $expect * @param mixed $content The given input. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_ifNullDataProvider')] + #[Test] public function stdWrap_ifNull(mixed $expect, mixed $content, array $conf): void { $result = $this->subject->stdWrap_ifNull($content, $conf); @@ -5264,9 +5153,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Property: innerWrap - * @test - * @dataProvider stdWrap_innerWrapDataProvider */ + #[DataProvider('stdWrap_innerWrapDataProvider')] + #[Test] public function stdWrap_innerWrap(string $expected, string $input, array $conf): void { self::assertSame( @@ -5320,9 +5209,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Property: innerWrap2 - * @test - * @dataProvider stdWrap_innerWrap2DataProvider */ + #[DataProvider('stdWrap_innerWrap2DataProvider')] + #[Test] public function stdWrap_innerWrap2(string $expected, string $input, array $conf): void { self::assertSame( @@ -5339,9 +5228,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Delegates to method insertData. * - Parameter 1 is $content. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_insertData(): void { $content = StringUtility::getUniqueId('content'); @@ -5373,11 +5261,11 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check that stdWrap_insertData works properly with given input. * - * @test - * @dataProvider stdWrap_insertDataProvider * @param mixed $expect The expected output. * @param string $content The given input. */ + #[DataProvider('stdWrap_insertDataProvider')] + #[Test] public function stdWrap_insertDataAndInputExamples(mixed $expect, string $content): void { self::assertSame($expect, $this->subject->stdWrap_insertData($content)); @@ -5427,11 +5315,11 @@ final class ContentObjectRendererTest extends UnitTestCase * * * - * @test - * @dataProvider stdWrap_intvalDataProvider * @param int $expect The expected output. * @param mixed $content The given input. */ + #[DataProvider('stdWrap_intvalDataProvider')] + #[Test] public function stdWrap_intval(int $expect, mixed $content): void { self::assertSame($expect, $this->subject->stdWrap_intval($content)); @@ -5487,9 +5375,9 @@ final class ContentObjectRendererTest extends UnitTestCase * * @param string $expected The expected value. * @param string $input The input value. - * @test - * @dataProvider stdWrapKeywordsDataProvider */ + #[DataProvider('stdWrapKeywordsDataProvider')] + #[Test] public function stdWrap_keywords(string $expected, string $input): void { self::assertSame($expected, $this->subject->stdWrap_keywords($input)); @@ -5563,9 +5451,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $input The input value. * @param array $conf Properties: lang.xy. * @param string $language For $TSFE->config[config][language]. - * @test - * @dataProvider stdWrap_langDataProvider */ + #[DataProvider('stdWrap_langDataProvider')] + #[Test] public function stdWrap_langViaSiteLanguage(string $expected, string $input, array $conf, string $language): void { $site = $this->createSiteWithLanguage([ @@ -5590,9 +5478,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['listNum']. * - Parameter 3 is $conf['listNum.']['splitChar']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_listNum(): void { $content = StringUtility::getUniqueId('content'); @@ -5692,12 +5579,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_noTrimWrap works properly. * - * @test - * @dataProvider stdWrap_noTrimWrapDataProvider * @param string $expect The expected output. * @param string $content The given input. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_noTrimWrapDataProvider')] + #[Test] public function stdWrap_noTrimWrap(string $expect, string $content, array $conf): void { self::assertSame( @@ -5714,9 +5601,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Delegates to method numRows. * - Parameter is $conf['numRows.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_numRows(): void { $conf = [ @@ -5742,9 +5628,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['numberFormat.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_numberFormat(): void { $content = StringUtility::getUniqueId('content'); @@ -5811,9 +5696,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Property: outerWrap - * @test - * @dataProvider stdWrap_outerWrapDataProvider */ + #[DataProvider('stdWrap_outerWrapDataProvider')] + #[Test] public function stdWrap_outerWrap(string $expected, string $input, array $conf): void { self::assertSame( @@ -5896,10 +5781,10 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_override works properly. * - * @test - * @dataProvider stdWrap_overrideDataProvider * @param array $conf Property: setCurrent */ + #[DataProvider('stdWrap_overrideDataProvider')] + #[Test] public function stdWrap_override(mixed $expect, string $content, array $conf): void { self::assertSame( @@ -5918,9 +5803,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['parseFunc.']. * - Parameter 3 is $conf['parseFunc']. * - Returns the return. - * - * @test */ + #[Test] public function stdWrap_parseFunc(): void { $content = StringUtility::getUniqueId('content'); @@ -5952,9 +5836,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['postCObject.']. * - Parameter 3 is '/stdWrap/.postCObject'. * - Returns the return value appended by $content. - * - * @test */ + #[Test] public function stdWrap_postCObject(): void { $debugKey = '/stdWrap/.postCObject'; @@ -5985,9 +5868,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $conf['postUserFunc']. * - Parameter 2 is $conf['postUserFunc.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_postUserFunc(): void { $content = StringUtility::getUniqueId('content'); @@ -6024,9 +5906,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - type: 'POSTUSERFUNC' * - cObj: serialized content renderer object * - Returns "<!-- $substKey -->". - * - * @test */ + #[Test] public function stdWrap_postUserFuncInt(): void { $uniqueHash = StringUtility::getUniqueId('uniqueHash'); @@ -6075,9 +5956,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['preCObject.']. * - Parameter 3 is '/stdWrap/.preCObject'. * - Returns the return value appended by $content. - * - * @test */ + #[Test] public function stdWrap_preCObject(): void { $debugKey = '/stdWrap/.preCObject'; @@ -6110,9 +5990,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['preIfEmptyListNum']. * - Parameter 3 is $conf['preIfEmptyListNum.']['splitChar']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_preIfEmptyListNum(): void { $content = StringUtility::getUniqueId('content'); @@ -6176,10 +6055,9 @@ final class ContentObjectRendererTest extends UnitTestCase * - Returns $content as is, * - if $conf['prefixComment'] is empty. * - if 'config.disablePrefixComment' is configured by the frontend. - * - * @test - * @dataProvider stdWrap_prefixCommentDataProvider */ + #[DataProvider('stdWrap_prefixCommentDataProvider')] + #[Test] public function stdWrap_prefixComment( string $expect, string $content, @@ -6213,9 +6091,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Second parameter is $conf['prepend.']. * - Third parameter is '/stdWrap/.prepend'. * - Returns the return value prepended to $content. - * - * @test */ + #[Test] public function stdWrap_prepend(): void { $debugKey = '/stdWrap/.prepend'; @@ -6268,12 +6145,12 @@ final class ContentObjectRendererTest extends UnitTestCase * duplicate the testing of calculateWithParentheses just a few * smoke tests are done here. * - * @test - * @dataProvider stdWrap_prioriCalcDataProvider * @param mixed $expect The expected output. * @param string $content The given content. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_prioriCalcDataProvider')] + #[Test] public function stdWrap_prioriCalc(mixed $expect, string $content, array $conf): void { $result = $this->subject->stdWrap_prioriCalc($content, $conf); @@ -6290,9 +6167,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 2 is $conf['preUserFunc.']. * - Parameter 3 is $content. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_preUserFunc(): void { $content = StringUtility::getUniqueId('content'); @@ -6333,11 +6209,11 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if rawUrlEncode works properly. * - * @test - * @dataProvider stdWrap_rawUrlEncodeDataProvider * @param string $expect The expected output. * @param string $content The given input. */ + #[DataProvider('stdWrap_rawUrlEncodeDataProvider')] + #[Test] public function stdWrap_rawUrlEncode(string $expect, string $content): void { self::assertSame( @@ -6355,9 +6231,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['replacement.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_replacement(): void { $content = StringUtility::getUniqueId('content'); @@ -6412,12 +6287,12 @@ final class ContentObjectRendererTest extends UnitTestCase * - Empty content triggers a stop of further rendering. * - Returns the content as is or '' for empty content. * - * @test - * @dataProvider stdWrap_requiredDataProvider * @param mixed $expect The expected output. * @param bool $stop Expect stop further rendering. * @param mixed $content The given input. */ + #[DataProvider('stdWrap_requiredDataProvider')] + #[Test] public function stdWrap_required(mixed $expect, bool $stop, mixed $content): void { $subject = $this->subject; @@ -6436,9 +6311,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['round.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_round(): void { $content = StringUtility::getUniqueId('content'); @@ -6459,9 +6333,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_setContentToCurrent works properly. - * - * @test */ + #[Test] public function stdWrap_setContentToCurrent(): void { $content = StringUtility::getUniqueId('content'); @@ -6515,11 +6388,11 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_setCurrent works properly. * - * @test - * @dataProvider stdWrap_setCurrentDataProvider * @param string $input The input value. * @param array $conf Property: setCurrent */ + #[DataProvider('stdWrap_setCurrentDataProvider')] + #[Test] public function stdWrap_setCurrent(string $input, array $conf): void { if (isset($conf['setCurrent'])) { @@ -6540,9 +6413,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['split.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_split(): void { $content = StringUtility::getUniqueId('content'); @@ -6572,9 +6444,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['stdWrap.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_stdWrap(): void { $content = StringUtility::getUniqueId('content'); @@ -6661,10 +6532,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @dataProvider stdWrap_stdWrapValueDataProvider - * @test - */ + #[DataProvider('stdWrap_stdWrapValueDataProvider')] + #[Test] public function stdWrap_stdWrapValue( string $key, array $configuration, @@ -6786,12 +6655,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_strPad works properly. * - * @test - * @dataProvider stdWrap_strPadDataProvider * @param string $expect The expected output. * @param string $content The given input. * @param array $conf The configuration of 'strPad.'. */ + #[DataProvider('stdWrap_strPadDataProvider')] + #[Test] public function stdWrap_strPad(string $expect, string $content, array $conf): void { $conf = ['strPad.' => $conf]; @@ -6833,13 +6702,13 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_strftime works properly. * - * @test - * @dataProvider stdWrap_strftimeDataProvider * @param string $expect The expected output. * @param mixed $content The given input. * @param array $conf The given configuration. * @param int $now Fictive execution time. */ + #[DataProvider('stdWrap_strftimeDataProvider')] + #[Test] public function stdWrap_strftime(string $expect, mixed $content, array $conf, int $now): void { // Save current timezone and set to UTC to make the system under test @@ -6858,9 +6727,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Test for the stdWrap_stripHtml - * - * @test */ + #[Test] public function stdWrap_stripHtml(): void { $content = '<html><p>Hello <span class="inline">inline tag<span>!</p><p>Hello!</p></html>'; @@ -6912,12 +6780,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if stdWrap_strtotime works properly. * - * @test - * @dataProvider stdWrap_strtotimeDataProvider * @param mixed $expect The expected output. * @param string $content The given input. * @param array $conf The given configuration. */ + #[DataProvider('stdWrap_strtotimeDataProvider')] + #[Test] public function stdWrap_strtotime(mixed $expect, string $content, array $conf): void { // Set exec_time to a hard timestamp @@ -6944,9 +6812,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['substring']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_substring(): void { $content = StringUtility::getUniqueId('content'); @@ -7020,10 +6887,9 @@ final class ContentObjectRendererTest extends UnitTestCase * - -1 => '-1' * - 1.0 => '1' * - 1.1 => '1.1' - * - * @test - * @dataProvider stdWrap_trimDataProvider */ + #[DataProvider('stdWrap_trimDataProvider')] + #[Test] public function stdWrap_trim(string $expect, mixed $content): void { $result = $this->subject->stdWrap_trim($content); @@ -7038,9 +6904,8 @@ final class ContentObjectRendererTest extends UnitTestCase * - Parameter 1 is $content. * - Parameter 2 is $conf['typolink.']. * - Returns the return value. - * - * @test */ + #[Test] public function stdWrap_typolink(): void { $content = StringUtility::getUniqueId('content'); @@ -7114,9 +6979,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Properties: wrap, wrap.splitChar - * @test - * @dataProvider stdWrap_wrapDataProvider */ + #[DataProvider('stdWrap_wrapDataProvider')] + #[Test] public function stdWrap_wrap(string $expected, string $input, array $conf): void { self::assertSame( @@ -7180,9 +7045,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Properties: wrap2, wrap2.splitChar - * @test - * @dataProvider stdWrap_wrap2DataProvider */ + #[DataProvider('stdWrap_wrap2DataProvider')] + #[Test] public function stdWrap_wrap2(string $expected, string $input, array $conf): void { self::assertSame($expected, $this->subject->stdWrap_wrap2($input, $conf)); @@ -7243,9 +7108,9 @@ final class ContentObjectRendererTest extends UnitTestCase * @param string $expected The expected value. * @param string $input The input value. * @param array $conf Properties: wrap3, wrap3.splitChar - * @test - * @dataProvider stdWrap_wrap3DataProvider */ + #[DataProvider('stdWrap_wrap3DataProvider')] + #[Test] public function stdWrap_wrap3(string $expected, string $input, array $conf): void { self::assertSame($expected, $this->subject->stdWrap_wrap3($input, $conf)); @@ -7280,12 +7145,12 @@ final class ContentObjectRendererTest extends UnitTestCase * - Returns the content as is, * - if $conf['wrapAlign'] evals to false after being trimmed. * - * @test - * @dataProvider stdWrap_wrapAlignDataProvider * @param string $expect The expected output. * @param string $content The given content. * @param mixed $wrapAlignConf The given input. */ + #[DataProvider('stdWrap_wrapAlignDataProvider')] + #[Test] public function stdWrap_wrapAlign(string $expect, string $content, mixed $wrapAlignConf): void { $conf = []; @@ -7301,7 +7166,6 @@ final class ContentObjectRendererTest extends UnitTestCase /*************************************************************************** * End of tests of stdWrap in alphabetical order ***************************************************************************/ - /*************************************************************************** * Begin: Mixed tests * @@ -7309,12 +7173,10 @@ final class ContentObjectRendererTest extends UnitTestCase * - Place tests in alphabetical order. * - Place data provider above test method. ***************************************************************************/ - /** * Check if getCurrentTable works properly. - * - * @test */ + #[Test] public function getCurrentTable(): void { self::assertEquals('tt_content', $this->subject->getCurrentTable()); @@ -7386,12 +7248,12 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check if prefixComment works properly. * - * @test - * @dataProvider prefixCommentDataProvider * @param string $expect The expected output. * @param string $comment The parameter $comment. * @param string $content The parameter $content. */ + #[DataProvider('prefixCommentDataProvider')] + #[Test] public function prefixComment(string $expect, string $comment, string $content): void { // The parameter $conf is never used. Just provide null. @@ -7402,9 +7264,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check setter and getter of currentFile work properly. - * - * @test */ + #[Test] public function setCurrentFile_getCurrentFile(): void { $storageMock = $this->createMock(ResourceStorage::class); @@ -7419,9 +7280,9 @@ final class ContentObjectRendererTest extends UnitTestCase * Show it stored to $this->data[$this->currentValKey]. * (The default value of currentValKey is tested elsewhere.) * - * @test * @see stdWrap_current() */ + #[Test] public function setCurrentVal_getCurrentVal(): void { $key = StringUtility::getUniqueId(); @@ -7434,9 +7295,8 @@ final class ContentObjectRendererTest extends UnitTestCase /** * Check setter and getter of userObjectType work properly. - * - * @test */ + #[Test] public function setUserObjectType_getUserObjectType(): void { $value = StringUtility::getUniqueId(); @@ -7514,10 +7374,8 @@ final class ContentObjectRendererTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getGlobalDataProvider - */ + #[DataProvider('getGlobalDataProvider')] + #[Test] public function getGlobalReturnsExpectedResult(mixed $expected, string $key, ?array $globals, ?array $source): void { if (isset($globals['HTTP_SERVER_VARS'])) { @@ -7544,7 +7402,7 @@ final class ContentObjectRendererTest extends UnitTestCase public function getContentObject( string $name, - \Psr\Http\Message\ServerRequestInterface $request, + ServerRequestInterface $request, ContentObjectRenderer $contentObjectRenderer ): ?AbstractContentObject { if (is_callable($this->getContentObjectCallbacks[$name] ?? null)) { @@ -7577,9 +7435,7 @@ final class ContentObjectRendererTest extends UnitTestCase }; } - /** - * @test - */ + #[Test] public function mergeTSRefResolvesRecursive(): void { $typoScriptString = @@ -7640,19 +7496,15 @@ final class ContentObjectRendererTest extends UnitTestCase } - /** - * @test - * @dataProvider listNumDataProvider - */ + #[DataProvider('listNumDataProvider')] + #[Test] public function listNum(string $expected, string $content, string $listNum, string $delimeter): void { $contentObjectRenderer = new ContentObjectRenderer(); self::assertEquals($expected, $contentObjectRenderer->listNum($content, $listNum, $delimeter)); } - /** - * @test - */ + #[Test] public function listNumWithListNumRandReturnsString(): void { $contentObjectRenderer = new ContentObjectRenderer(); diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/Exception/ProductionExceptionHandlerTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/Exception/ProductionExceptionHandlerTest.php index e1357fab6904..74ca20a9a327 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/Exception/ProductionExceptionHandlerTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/Exception/ProductionExceptionHandlerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject\Exception; +use PHPUnit\Framework\Attributes\Test; use Psr\Log\NullLogger; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\DateTimeAspect; @@ -29,9 +30,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ProductionExceptionHandlerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function relayPropagateResponseException(): void { $exception = new PropagateResponseException(new HtmlResponse(''), 1607328584); @@ -41,9 +40,7 @@ final class ProductionExceptionHandlerTest extends UnitTestCase $subject->handle($exception); } - /** - * @test - */ + #[Test] public function relayImmediateResponseException(): void { $exception = new ImmediateResponseException(new HtmlResponse(''), 1533939251); @@ -53,9 +50,7 @@ final class ProductionExceptionHandlerTest extends UnitTestCase $subject->handle($exception); } - /** - * @test - */ + #[Test] public function handleReturnsMessageWithResolvedErrorCode(): void { $currentTimestamp = 1629993829; @@ -76,9 +71,7 @@ final class ProductionExceptionHandlerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function handleReturnsCustomErrorMessageWithResolvedErrorCode(): void { $currentTimestamp = 1629993829; @@ -102,9 +95,7 @@ final class ProductionExceptionHandlerTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function handleReturnsCustomErrorMessageWithResolvedErrorCodeForLegacyPlaceholder(): void { $currentTimestamp = 1629993829; diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/ImageContentObjectTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/ImageContentObjectTest.php index de5f807ee418..b69ca64241d5 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/ImageContentObjectTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/ImageContentObjectTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Http\ServerRequest; @@ -69,10 +71,9 @@ final class ImageContentObjectTest extends UnitTestCase /** * Make sure that the rendering falls back to the classic <img style if nothing else is found - * - * @test - * @dataProvider getImageTagTemplateFallsBackToDefaultTemplateIfNoTemplateIsFoundDataProvider */ + #[DataProvider('getImageTagTemplateFallsBackToDefaultTemplateIfNoTemplateIsFoundDataProvider')] + #[Test] public function getImageTagTemplateFallsBackToDefaultTemplateIfNoTemplateIsFound(?string $key, ?array $configuration): void { $defaultImgTagTemplate = '<img src="###SRC###" width="###WIDTH###" height="###HEIGHT###" ###PARAMS### ###ALTPARAMS### ###SELFCLOSINGTAGSLASH###>'; @@ -100,10 +101,9 @@ final class ImageContentObjectTest extends UnitTestCase /** * Assure if a layoutKey and layout is given the selected layout is returned - * - * @test - * @dataProvider getImageTagTemplateReturnTemplateElementIdentifiedByKeyDataProvider */ + #[DataProvider('getImageTagTemplateReturnTemplateElementIdentifiedByKeyDataProvider')] + #[Test] public function getImageTagTemplateReturnTemplateElementIdentifiedByKey(string $key, array $configuration, string $expectation): void { $result = $this->subject->_call('getImageTagTemplate', $key, $configuration); @@ -121,10 +121,9 @@ final class ImageContentObjectTest extends UnitTestCase /** * Make sure the source collection is empty if no valid configuration or source collection is defined - * - * @test - * @dataProvider getImageSourceCollectionReturnsEmptyStringIfNoSourcesAreDefinedDataProvider */ + #[DataProvider('getImageSourceCollectionReturnsEmptyStringIfNoSourcesAreDefinedDataProvider')] + #[Test] public function getImageSourceCollectionReturnsEmptyStringIfNoSourcesAreDefined( ?string $layoutKey, ?array $configuration, @@ -136,9 +135,8 @@ final class ImageContentObjectTest extends UnitTestCase /** * Make sure the generation of subimages calls the generation of the subimages and uses the layout -> source template - * - * @test */ + #[Test] public function getImageSourceCollectionRendersDefinedSources(): void { $cObj = $this->getMockBuilder(ContentObjectRenderer::class) @@ -227,10 +225,9 @@ final class ImageContentObjectTest extends UnitTestCase /** * Make sure the generation of subimages renders the expected HTML Code for the sourceset - * - * @test - * @dataProvider getImageSourceCollectionRendersDefinedLayoutKeyDataDefaultProvider */ + #[DataProvider('getImageSourceCollectionRendersDefinedLayoutKeyDataDefaultProvider')] + #[Test] public function getImageSourceCollectionRendersDefinedLayoutKeyDefault(string $layoutKey, array $configuration): void { $cObj = $this->getMockBuilder(ContentObjectRenderer::class) @@ -342,10 +339,9 @@ final class ImageContentObjectTest extends UnitTestCase /** * Make sure the generation of subimages renders the expected HTML Code for the sourceset - * - * @test - * @dataProvider getImageSourceCollectionRendersDefinedLayoutKeyDataDataProvider */ + #[DataProvider('getImageSourceCollectionRendersDefinedLayoutKeyDataDataProvider')] + #[Test] public function getImageSourceCollectionRendersDefinedLayoutKeyData( string $layoutKey, array $configuration, @@ -392,9 +388,8 @@ final class ImageContentObjectTest extends UnitTestCase /** * Make sure the hook in get sourceCollection is called - * - * @test */ + #[Test] public function getImageSourceCollectionHookCalled(): void { $cObj = $this->getAccessibleMock( @@ -518,12 +513,12 @@ final class ImageContentObjectTest extends UnitTestCase /** * Check if linkWrap works properly. * - * @test - * @dataProvider linkWrapDataProvider * @param string $expected The expected output. * @param string $content The parameter $content. * @param string|null $wrap The parameter $wrap. */ + #[DataProvider('linkWrapDataProvider')] + #[Test] public function linkWrap(string $expected, string $content, $wrap): void { $GLOBALS['TSFE']->config = ['rootLine' => [3 => ['uid' => 55]]]; diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/AbstractMenuContentObjectTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/AbstractMenuContentObjectTest.php index 0fe2d887f0b4..2b3c84dfc5f8 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/AbstractMenuContentObjectTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/AbstractMenuContentObjectTest.php @@ -18,6 +18,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject\Menu; use Doctrine\DBAL\Result; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface; @@ -128,9 +130,7 @@ final class AbstractMenuContentObjectTest extends UnitTestCase GeneralUtility::addInstance(ConnectionPool::class, $connectionPoolMock); } - /** - * @test - */ + #[Test] public function sectionIndexReturnsEmptyArrayIfTheRequestedPageCouldNotBeFetched(): void { $this->prepareSectionIndexTest(); @@ -141,9 +141,7 @@ final class AbstractMenuContentObjectTest extends UnitTestCase self::assertEquals([], $result); } - /** - * @test - */ + #[Test] public function sectionIndexUsesTheInternalIdIfNoPageIdWasGiven(): void { $this->prepareSectionIndexTest(); @@ -155,9 +153,7 @@ final class AbstractMenuContentObjectTest extends UnitTestCase self::assertEquals([], $result); } - /** - * @test - */ + #[Test] public function sectionIndexThrowsAnExceptionIfTheInternalQueryFails(): void { $this->expectException(\UnexpectedValueException::class); @@ -175,9 +171,7 @@ final class AbstractMenuContentObjectTest extends UnitTestCase $this->subject->_call('sectionIndex', 'field'); } - /** - * @test - */ + #[Test] public function sectionIndexReturnsOverlaidRowBasedOnTheLanguageOfTheGivenPage(): void { $statementMock = $this->createMock(Result::class); @@ -243,10 +237,8 @@ final class AbstractMenuContentObjectTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sectionIndexFiltersDataProvider - */ + #[DataProvider('sectionIndexFiltersDataProvider')] + #[Test] public function sectionIndexFilters(int $expectedAmount, array $dataRow): void { $statementMock = $this->createMock(Result::class); @@ -306,10 +298,8 @@ final class AbstractMenuContentObjectTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sectionIndexQueriesWithDifferentColPosDataProvider - */ + #[DataProvider('sectionIndexQueriesWithDifferentColPosDataProvider')] + #[Test] public function sectionIndexQueriesWithDifferentColPos(array $configuration, string $colPosFromStdWrapValue, string $whereClausePrefix): void { $statementMock = $this->createMock(Result::class); @@ -428,10 +418,8 @@ final class AbstractMenuContentObjectTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider isItemStateChecksExcludeUidListDataProvider - */ + #[DataProvider('isItemStateChecksExcludeUidListDataProvider')] + #[Test] public function isItemStateChecksExcludeUidList(array $menuItems, string $excludeUidList, bool $expectedResult): void { $subject = $this->getAccessibleMockForAbstractClass(AbstractMenuContentObject::class, [], '', true, true, true, ['getRuntimeCache']); @@ -623,10 +611,8 @@ final class AbstractMenuContentObjectTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider menuTypoLinkCreatesExpectedTypoLinkConfigurationDataProvider - */ + #[DataProvider('menuTypoLinkCreatesExpectedTypoLinkConfigurationDataProvider')] + #[Test] public function menuTypoLinkCreatesExpectedTypoLinkConfiguration(array $expected, array $mconf, array $page, string $oTarget, string|int $addParams = '', string|int $typeOverride = '', int|string|null $overrideId = null): void { $expected['page'] = new Page($page); diff --git a/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/MenuContentObjectFactoryTest.php b/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/MenuContentObjectFactoryTest.php index c661b7b88292..6d4968bc925c 100644 --- a/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/MenuContentObjectFactoryTest.php +++ b/typo3/sysext/frontend/Tests/Unit/ContentObject/Menu/MenuContentObjectFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\ContentObject\Menu; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject; use TYPO3\CMS\Frontend\ContentObject\Menu\Exception\NoSuchMenuTypeException; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MenuContentObjectFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getMenuObjectByTypeThrowsExceptionForUnknownType(): void { $this->expectException(NoSuchMenuTypeException::class); @@ -36,27 +35,21 @@ final class MenuContentObjectFactoryTest extends UnitTestCase $factory->getMenuObjectByType(StringUtility::getUniqueId('foo_')); } - /** - * @test - */ + #[Test] public function getMenuObjectByTypeReturnsObjectForRegisteredMenuType(): void { $factory = new MenuContentObjectFactory(); self::assertIsObject($factory->getMenuObjectByType('TMENU')); } - /** - * @test - */ + #[Test] public function getMenuObjectByTypeReturnsObjectWithLowercasedMenuType(): void { $factory = new MenuContentObjectFactory(); self::assertIsObject($factory->getMenuObjectByType('tmenu')); } - /** - * @test - */ + #[Test] public function getMenuObjectByTypeReturnsInstanceOfOwnRegisteredTypeInsteadOfInternalType(): void { $factory = new MenuContentObjectFactory(); @@ -67,9 +60,7 @@ final class MenuContentObjectFactoryTest extends UnitTestCase self::assertInstanceOf($selfClassName, $factory->getMenuObjectByType('TMENU')); } - /** - * @test - */ + #[Test] public function getMenuObjectByTypeReturnsInstanceOfNewRegisteredType(): void { $factory = new MenuContentObjectFactory(); diff --git a/typo3/sysext/frontend/Tests/Unit/Controller/ErrorControllerTest.php b/typo3/sysext/frontend/Tests/Unit/Controller/ErrorControllerTest.php index ac0b3b605454..9e34822ea78e 100644 --- a/typo3/sysext/frontend/Tests/Unit/Controller/ErrorControllerTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Controller/ErrorControllerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\NormalizedParams; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Information\Typo3Information; @@ -28,9 +29,7 @@ final class ErrorControllerTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function pageNotFoundHandlingReturns404ResponseIfNotConfigured(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -44,9 +43,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('This test page was not found!', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function unavailableHandlingReturns503ResponseIfNotConfigured(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -60,9 +57,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('This page is temporarily unavailable.', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function unavailableHandlingDoesNotTriggerDueToDevIpMask(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*'; @@ -76,9 +71,7 @@ final class ErrorControllerTest extends UnitTestCase $subject->unavailableAction($request, 'All your system are belong to us!'); } - /** - * @test - */ + #[Test] public function internalErrorHandlingReturns500ResponseIfNotConfigured(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -92,9 +85,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('All your system are belong to us!', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function internalErrorHandlingDoesNotTriggerDueToDevIpMask(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*'; @@ -108,9 +99,7 @@ final class ErrorControllerTest extends UnitTestCase $subject->internalErrorAction($request, 'All your system are belong to us!'); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithHtmlResponseIsChosenWhenNoSiteConfiguredForPageNotFoundAction(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -125,9 +114,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('Error handler is not configured.', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithJsonResponseIsChosenWhenNoSiteConfiguredForPageNotFoundAction(): void { $request = new ServerRequest(); @@ -140,9 +127,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertEquals(['reason' => 'Error handler is not configured.'], $responseContent); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithHtmlResponseIsChosenWhenNoSiteConfiguredForUnavailableAction(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -157,9 +142,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('Error handler is not configured.', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithJsonResponseIsChosenWhenNoSiteConfiguredForUnavailableAction(): void { $request = new ServerRequest(); @@ -172,9 +155,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertEquals(['reason' => 'Error handler is not configured.'], $responseContent); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithHtmlResponseIsChosenWhenNoSiteConfiguredForInternalErrorAction(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -189,9 +170,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('Error handler is not configured.', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithJsonResponseIsChosenWhenNoSiteConfiguredForInternalErrorAction(): void { $request = new ServerRequest(); @@ -204,9 +183,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertEquals(['reason' => 'Error handler is not configured.'], $responseContent); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithHtmlResponseIsChosenWhenNoSiteConfiguredForAccessDeniedAction(): void { $typo3InformationMock = $this->getMockBuilder(Typo3Information::class)->disableOriginalConstructor()->getMock(); @@ -221,9 +198,7 @@ final class ErrorControllerTest extends UnitTestCase self::assertStringContainsString('Error handler is not configured.', $response->getBody()->getContents()); } - /** - * @test - */ + #[Test] public function defaultErrorHandlerWithJsonResponseIsChosenWhenNoSiteConfiguredForAccessDeniedAction(): void { $request = new ServerRequest(); diff --git a/typo3/sysext/frontend/Tests/Unit/Controller/TypoScriptFrontendControllerTest.php b/typo3/sysext/frontend/Tests/Unit/Controller/TypoScriptFrontendControllerTest.php index 7be3e682f787..d03c4c4d200d 100644 --- a/typo3/sysext/frontend/Tests/Unit/Controller/TypoScriptFrontendControllerTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Controller/TypoScriptFrontendControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -48,10 +50,8 @@ final class TypoScriptFrontendControllerTest extends UnitTestCase ]; } - /** - * @dataProvider baseUrlWrapHandlesDifferentUrlsDataProvider - * @test - */ + #[DataProvider('baseUrlWrapHandlesDifferentUrlsDataProvider')] + #[Test] public function baseUrlWrapHandlesDifferentUrls(string $baseUrl, string $url, string $expected): void { $subject = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->onlyMethods([])->getMock(); diff --git a/typo3/sysext/frontend/Tests/Unit/DataProcessing/FlexFormProcessorTest.php b/typo3/sysext/frontend/Tests/Unit/DataProcessing/FlexFormProcessorTest.php index 36f9c706b0c3..881bf0e0c066 100644 --- a/typo3/sysext/frontend/Tests/Unit/DataProcessing/FlexFormProcessorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/DataProcessing/FlexFormProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\DataProcessing; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Service\FlexFormService; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -37,9 +38,7 @@ final class FlexFormProcessorTest extends UnitTestCase $this->prepareFlexFormService(); } - /** - * @test - */ + #[Test] public function customFieldNameDoesNotExistsWillReturnUnchangedProcessedData(): void { $processorConfiguration = ['as' => 'myOutputVariable', 'fieldName' => 'non_existing_field']; @@ -65,9 +64,7 @@ final class FlexFormProcessorTest extends UnitTestCase self::assertSame($expected, $processedData); } - /** - * @test - */ + #[Test] public function customFieldNameDoesNotContainFlexFormDataWillReturnUnchangedProcessedData(): void { $processorConfiguration = ['as' => 'myOutputVariable', 'fieldName' => 'custom_field']; @@ -93,9 +90,7 @@ final class FlexFormProcessorTest extends UnitTestCase self::assertSame($expected, $processedData); } - /** - * @test - */ + #[Test] public function customOutputVariableForProcessorWillReturnParsedFlexFormToDataCustomVariable(): void { $processorConfiguration = ['as' => 'myCustomVar']; @@ -121,9 +116,7 @@ final class FlexFormProcessorTest extends UnitTestCase self::assertIsArray($expected['myCustomVar']); } - /** - * @test - */ + #[Test] public function defaultOutputVariableForProcessorWillBeUsed(): void { $processorConfiguration = []; @@ -150,9 +143,7 @@ final class FlexFormProcessorTest extends UnitTestCase self::assertIsArray($expected['flexFormData']); } - /** - * @test - */ + #[Test] public function defaultConfigurationWithCustomFieldNameWillReturnParsedFlexFormToDefaultOutputVariable(): void { $processorConfiguration = ['as' => 'myOutputVariable', 'fieldName' => 'my_flexform']; @@ -178,9 +169,7 @@ final class FlexFormProcessorTest extends UnitTestCase self::assertIsArray($expected['myOutputVariable']); } - /** - * @test - */ + #[Test] public function subDataProcessorIsResolved(): void { $this->prepareFlexFormServiceWithSubDataProcessorData(); diff --git a/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteLanguageProcessorTest.php b/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteLanguageProcessorTest.php index b3202cb8b41d..5200e7b31a27 100644 --- a/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteLanguageProcessorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteLanguageProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\DataProcessing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SiteLanguageProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function siteLanguageIsRetrieved(): void { $expectedName = 'currentLanguage'; @@ -43,9 +42,7 @@ final class SiteLanguageProcessorTest extends UnitTestCase self::assertEquals($siteLanguage->toArray(), $processedData[$expectedName]); } - /** - * @test - */ + #[Test] public function nullIsProvidedIfSiteLanguageCouldNotBeRetrieved(): void { $expectedName = 'currentSiteLanguage'; diff --git a/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteProcessorTest.php b/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteProcessorTest.php index d6a8f44d9678..56d9db51f537 100644 --- a/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteProcessorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/DataProcessing/SiteProcessorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\DataProcessing; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SiteProcessorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function siteIsRetrieved(): void { $expectedName = 'currentSite'; @@ -43,9 +42,7 @@ final class SiteProcessorTest extends UnitTestCase self::assertEquals($site, $processedData[$expectedName]); } - /** - * @test - */ + #[Test] public function nullIsProvidedIfSiteCouldNotBeRetrieved(): void { $expectedName = 'currentSite'; diff --git a/typo3/sysext/frontend/Tests/Unit/Http/RequestHandlerTest.php b/typo3/sysext/frontend/Tests/Unit/Http/RequestHandlerTest.php index a74a8217e429..3611320346fb 100644 --- a/typo3/sysext/frontend/Tests/Unit/Http/RequestHandlerTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Http/RequestHandlerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Http; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\DependencyInjection\Container; use TYPO3\CMS\Core\EventDispatcher\ListenerProvider; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; @@ -90,10 +92,9 @@ final class RequestHandlerTest extends UnitTestCase /** * Does not test stdWrap functionality. - * - * @test - * @dataProvider generateHtmlTagIncludesAllPossibilitiesDataProvider */ + #[DataProvider('generateHtmlTagIncludesAllPossibilitiesDataProvider')] + #[Test] public function generateHtmlTagIncludesAllPossibilities(array $htmlTagAttributes, array $configuration, string $expectedResult): void { $subject = $this->getAccessibleMock(RequestHandler::class, null, [], '', false); @@ -103,9 +104,7 @@ final class RequestHandlerTest extends UnitTestCase self::assertEquals($expectedResult, $result); } - /** - * @test - */ + #[Test] public function generateMetaTagExpectExceptionOnBogusTags(): void { $stdWrapResult = '10'; @@ -268,10 +267,8 @@ final class RequestHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generateMetaTagHtmlGeneratesCorrectTagsDataProvider - */ + #[DataProvider('generateMetaTagHtmlGeneratesCorrectTagsDataProvider')] + #[Test] public function generateMetaTagHtmlGeneratesCorrectTags(array $typoScript, string $stdWrapResult, array $expectedTags): void { $siteLanguage = $this->createSiteWithLanguage()->getLanguageById(3); @@ -315,9 +312,7 @@ final class RequestHandlerTest extends UnitTestCase $subject->_call('processHtmlBasedRenderingSettings', $frontendController, $siteLanguage, $request); } - /** - * @test - */ + #[Test] public function generateMetaTagHtmlGenerateNoTagWithEmptyContent(): void { $stdWrapResult = ''; @@ -422,10 +417,8 @@ final class RequestHandlerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider generateMultipleMetaTagsDataProvider - */ + #[DataProvider('generateMultipleMetaTagsDataProvider')] + #[Test] public function generateMultipleMetaTags(array $typoScript, string $stdWrapResult, array $expectedTags): void { $siteLanguage = $this->createSiteWithLanguage()->getLanguageById(3); @@ -485,9 +478,8 @@ final class RequestHandlerTest extends UnitTestCase /** * Test if the method is called, and the globals are still the same after calling the method - * - * @test */ + #[Test] public function resetGlobalsToCurrentRequestDoesNotModifyAnything(): void { $getVars = ['outside' => '1']; @@ -507,9 +499,8 @@ final class RequestHandlerTest extends UnitTestCase /** * Test if the method is called, and the globals are still the same after calling the method - * - * @test */ + #[Test] public function resetGlobalsToCurrentRequestWithModifiedRequestOverridesGlobals(): void { $getVars = ['typical' => '1']; diff --git a/typo3/sysext/frontend/Tests/Unit/Imaging/GifBuilderTest.php b/typo3/sysext/frontend/Tests/Unit/Imaging/GifBuilderTest.php index 28ed78a56e9c..d8ddca5a8970 100644 --- a/typo3/sysext/frontend/Tests/Unit/Imaging/GifBuilderTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Imaging/GifBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Imaging; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Frontend\Imaging\GifBuilder; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -45,11 +47,8 @@ final class GifBuilderTest extends UnitTestCase ]; } - /** - * @test - * - * @dataProvider singleIntegerDataProvider - */ + #[DataProvider('singleIntegerDataProvider')] + #[Test] public function calcOffsetWithSingleIntegerReturnsTheGivenIntegerAsString(string $number): void { $result = $this->subject->calcOffset($number); @@ -57,9 +56,7 @@ final class GifBuilderTest extends UnitTestCase self::assertSame($number, $result); } - /** - * @test - */ + #[Test] public function calcOffsetWithMultipleIntegersReturnsTheGivenIntegerCommaSeparated(): void { $numbers = '1,2,3'; @@ -68,9 +65,7 @@ final class GifBuilderTest extends UnitTestCase self::assertSame($numbers, $result); } - /** - * @test - */ + #[Test] public function calcOffsetTrimsWhitespaceAroundProvidedNumbers(): void { $result = $this->subject->calcOffset(' 1, 2, 3 '); @@ -89,11 +84,8 @@ final class GifBuilderTest extends UnitTestCase ]; } - /** - * @test - * - * @dataProvider roundingDataProvider - */ + #[DataProvider('roundingDataProvider')] + #[Test] public function calcOffsetRoundsNumbersToNearestInteger(string $input, string $expectedResult): void { $result = $this->subject->calcOffset($input); @@ -118,11 +110,8 @@ final class GifBuilderTest extends UnitTestCase ]; } - /** - * @test - * - * @dataProvider calculationDataProvider - */ + #[DataProvider('calculationDataProvider')] + #[Test] public function calcOffsetDoesTheProvidedCalculation(string $input, string $expectedResult): void { $result = $this->subject->calcOffset($input); diff --git a/typo3/sysext/frontend/Tests/Unit/Middleware/PageArgumentValidatorTest.php b/typo3/sysext/frontend/Tests/Unit/Middleware/PageArgumentValidatorTest.php index 19b13f4e8c19..1792a35309c7 100644 --- a/typo3/sysext/frontend/Tests/Unit/Middleware/PageArgumentValidatorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Middleware/PageArgumentValidatorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Middleware; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -58,9 +59,7 @@ final class PageArgumentValidatorTest extends UnitTestCase $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] = ''; } - /** - * @test - */ + #[Test] public function givenCacheHashWithoutRequiredParametersTriggersRedirect(): void { $incomingUrl = 'https://example.com/lotus-flower/en/mr-magpie/bloom/?cHash=XYZ'; @@ -79,9 +78,7 @@ final class PageArgumentValidatorTest extends UnitTestCase self::assertEquals($expectedResult, $response->getHeader('Location')[0]); } - /** - * @test - */ + #[Test] public function givenCacheHashNotMatchingCalculatedCacheHashTriggers404(): void { $incomingUrl = 'https://example.com/lotus-flower/en/mr-magpie/bloom/?cHash=YAZ'; @@ -100,9 +97,7 @@ final class PageArgumentValidatorTest extends UnitTestCase self::assertEquals(404, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function noPageArgumentsReturnsErrorResponse(): void { $incomingUrl = 'https://king.com/lotus-flower/en/mr-magpie/bloom/'; @@ -116,9 +111,7 @@ final class PageArgumentValidatorTest extends UnitTestCase self::assertEquals(404, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function staticPageArgumentsSkipProcessingAndReturnsSuccess(): void { $incomingUrl = 'https://example.com/lotus-flower/en/mr-magpie/bloom/'; @@ -133,9 +126,7 @@ final class PageArgumentValidatorTest extends UnitTestCase self::assertEquals(200, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function invalidCacheHashWithDynamicArgumentsTriggers404(): void { $incomingUrl = 'https://example.com/lotus-flower/en/mr-magpie/bloom/'; diff --git a/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php b/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php index c6cc712c1c1a..22ae69b4f135 100644 --- a/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Middleware/SiteBaseRedirectResolverTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Middleware; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -137,10 +139,8 @@ final class SiteBaseRedirectResolverTest extends UnitTestCase ]; } - /** - * @dataProvider doRedirectOnMissingOrSuperfluousRequestUrlDataProvider - * @test - */ + #[DataProvider('doRedirectOnMissingOrSuperfluousRequestUrlDataProvider')] + #[Test] public function doRedirectOnMissingOrSuperfluousRequestUrl( string $incomingUrl, string $expectedRedirectUrl, @@ -168,10 +168,8 @@ final class SiteBaseRedirectResolverTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkIf404IsSiteLanguageIsDisabledInFrontendDataProvider - */ + #[DataProvider('checkIf404IsSiteLanguageIsDisabledInFrontendDataProvider')] + #[Test] public function checkIf404IsSiteLanguageIsDisabledInFrontend( string $url, int $expectedStatusCode, @@ -250,10 +248,8 @@ final class SiteBaseRedirectResolverTest extends UnitTestCase ]; } - /** - * @dataProvider doNotRedirectOnBaseWithoutQueryDataProvider - * @test - */ + #[DataProvider('doNotRedirectOnBaseWithoutQueryDataProvider')] + #[Test] public function doNotRedirectOnBaseWithoutQuery( string $incomingUrl, Site $site, @@ -271,9 +267,7 @@ final class SiteBaseRedirectResolverTest extends UnitTestCase self::assertEquals(200, $response->getStatusCode()); } - /** - * @test - */ + #[Test] public function useDefaultLanguageIfNoLanguageIsGiven(): void { $incomingUrl = 'https://twenty.one/'; @@ -308,9 +302,7 @@ final class SiteBaseRedirectResolverTest extends UnitTestCase self::assertEquals('https://twenty.one/en/', $response->getHeader('Location')[0]); } - /** - * @test - */ + #[Test] public function useFirstAvailableLanguageIfDefaultLanguageIsNotEnabledAndLanguageIsGiven(): void { $incomingUrl = 'https://twenty.one/'; diff --git a/typo3/sysext/frontend/Tests/Unit/Middleware/SiteResolverTest.php b/typo3/sysext/frontend/Tests/Unit/Middleware/SiteResolverTest.php index 7ce2891fb8b9..f773c43d788f 100644 --- a/typo3/sysext/frontend/Tests/Unit/Middleware/SiteResolverTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Middleware/SiteResolverTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Middleware; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -92,9 +94,8 @@ final class SiteResolverTest extends UnitTestCase * Then the site handling gets triggered, and the URL is taken to resolve a site. * * This case tests against a site with no domain or scheme, and successfully finds it. - * - * @test */ + #[Test] public function detectASingleSiteWhenProperRequestIsGiven(): void { $incomingUrl = 'https://a-random-domain.com/mysite/'; @@ -135,9 +136,8 @@ final class SiteResolverTest extends UnitTestCase * The result should be that site 2 is resolved by the router when calling * * www.random-result.com/mysubsite/you-know-why/ - * - * @test */ + #[Test] public function detectSubsiteInsideNestedUrlStructure(): void { $incomingUrl = 'https://www.random-result.com/mysubsite/you-know-why/'; @@ -217,10 +217,9 @@ final class SiteResolverTest extends UnitTestCase * * and site 3 when calling * www.random-result.com/mysubsite/micro-site/oh-yes-you-do/ - * - * @test - * @dataProvider detectSubSubsiteInsideNestedUrlStructureDataProvider */ + #[DataProvider('detectSubSubsiteInsideNestedUrlStructureDataProvider')] + #[Test] public function detectSubSubsiteInsideNestedUrlStructure($incomingUrl, $expectedSiteIdentifier, $expectedRootPageId, $expectedBase): void { $siteFinder = $this->createSiteFinder( @@ -324,10 +323,9 @@ final class SiteResolverTest extends UnitTestCase * Language: 2: / * Site 3: /mysubsite/micro-site/ * Language: 13: /ru/ - * - * @test - * @dataProvider detectProperLanguageByIncomingUrlDataProvider */ + #[DataProvider('detectProperLanguageByIncomingUrlDataProvider')] + #[Test] public function detectProperLanguageByIncomingUrl($incomingUrl, $expectedSiteIdentifier, $expectedRootPageId, $expectedLanguageId, $expectedBase): void { $siteFinder = $this->createSiteFinder( diff --git a/typo3/sysext/frontend/Tests/Unit/Middleware/StaticRouteResolverTest.php b/typo3/sysext/frontend/Tests/Unit/Middleware/StaticRouteResolverTest.php index 5d36c16b99dc..f195dc83ce6e 100644 --- a/typo3/sysext/frontend/Tests/Unit/Middleware/StaticRouteResolverTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Middleware/StaticRouteResolverTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Middleware; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -45,9 +46,7 @@ final class StaticRouteResolverTest extends UnitTestCase }; } - /** - * @test - */ + #[Test] public function invalidStaticRouteDoesNotWork(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); diff --git a/typo3/sysext/frontend/Tests/Unit/Page/CacheHashCalculatorTest.php b/typo3/sysext/frontend/Tests/Unit/Page/CacheHashCalculatorTest.php index 14c2c8a7e056..e4526c1bc385 100644 --- a/typo3/sysext/frontend/Tests/Unit/Page/CacheHashCalculatorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Page/CacheHashCalculatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Frontend\Page\CacheHashCalculator; use TYPO3\CMS\Frontend\Page\CacheHashConfiguration; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -46,10 +48,8 @@ final class CacheHashCalculatorTest extends UnitTestCase parent::tearDown(); } - /** - * @dataProvider cacheHashCalculationDataProvider - * @test - */ + #[DataProvider('cacheHashCalculationDataProvider')] + #[Test] public function cacheHashCalculationWorks(array $params, string $expected): void { self::assertEquals($expected, $this->subject->calculateCacheHash($params)); @@ -80,10 +80,8 @@ final class CacheHashCalculatorTest extends UnitTestCase ]; } - /** - * @dataProvider getRelevantParametersDataprovider - * @test - */ + #[DataProvider('getRelevantParametersDataprovider')] + #[Test] public function getRelevantParametersWorks(string $params, array $expected): void { $actual = $this->subject->getRelevantParameters($params); @@ -117,18 +115,14 @@ final class CacheHashCalculatorTest extends UnitTestCase ]; } - /** - * @dataProvider canGenerateForParametersDataProvider - * @test - */ + #[DataProvider('canGenerateForParametersDataProvider')] + #[Test] public function canGenerateForParameters(string $params, string $expected): void { self::assertEquals($expected, $this->subject->generateForParameters($params)); } - /** - * @test - */ + #[Test] public function generateForParametersThrowsExceptionWhenIdIsNotSpecified(): void { $this->expectException(\RuntimeException::class); @@ -153,10 +147,8 @@ final class CacheHashCalculatorTest extends UnitTestCase ]; } - /** - * @dataProvider parametersRequireCacheHashDataprovider - * @test - */ + #[DataProvider('parametersRequireCacheHashDataprovider')] + #[Test] public function parametersRequireCacheHashWorks(string $params, bool $expected): void { self::assertEquals($expected, $this->subject->doParametersRequireCacheHash($params)); @@ -176,10 +168,9 @@ final class CacheHashCalculatorTest extends UnitTestCase /** * In case the $TYPO3_CONF_VARS[FE][cacheHash][cachedParametersWhiteList] is set, other parameters should not * influence the cHash (except the encryption key of course) - * - * @dataProvider canWhitelistParametersDataProvider - * @test */ + #[DataProvider('canWhitelistParametersDataProvider')] + #[Test] public function canWhitelistParameters(string $params, string $expected): void { $this->subject->setConfiguration([ @@ -201,10 +192,8 @@ final class CacheHashCalculatorTest extends UnitTestCase ]; } - /** - * @dataProvider canSkipParametersWithEmptyValuesDataProvider - * @test - */ + #[DataProvider('canSkipParametersWithEmptyValuesDataProvider')] + #[Test] public function canSkipParametersWithEmptyValues(string $params, array $settings, array $expected): void { $this->subject->setConfiguration($settings); diff --git a/typo3/sysext/frontend/Tests/Unit/Page/CacheHashConfigurationTest.php b/typo3/sysext/frontend/Tests/Unit/Page/CacheHashConfigurationTest.php index 65decc3bfbd3..e01b04385fb7 100644 --- a/typo3/sysext/frontend/Tests/Unit/Page/CacheHashConfigurationTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Page/CacheHashConfigurationTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Core\Utility\PermutationUtility; use TYPO3\CMS\Frontend\Page\CacheHashConfiguration; @@ -36,10 +38,8 @@ final class CacheHashConfigurationTest extends TestCase ]); } - /** - * @test - * @dataProvider nonArrayValueThrowsExceptionDataProvider - */ + #[DataProvider('nonArrayValueThrowsExceptionDataProvider')] + #[Test] public function nonArrayValueThrowsException(string $aspect, mixed $value): void { $this->expectException(\LogicException::class); @@ -60,10 +60,8 @@ final class CacheHashConfigurationTest extends TestCase ]); } - /** - * @test - * @dataProvider nonScalarValueThrowsExceptionDataProvider - */ + #[DataProvider('nonScalarValueThrowsExceptionDataProvider')] + #[Test] public function nonScalarValueThrowsException(string $aspect, mixed $value): void { $this->expectException(\LogicException::class); @@ -84,10 +82,8 @@ final class CacheHashConfigurationTest extends TestCase ]); } - /** - * @test - * @dataProvider emptyIndicatedValueThrowsExceptionDataProvider - */ + #[DataProvider('emptyIndicatedValueThrowsExceptionDataProvider')] + #[Test] public function emptyIndicatedValueThrowsException(string $aspect, string $value): void { $this->expectException(\LogicException::class); @@ -110,10 +106,8 @@ final class CacheHashConfigurationTest extends TestCase ]); } - /** - * @test - * @dataProvider equalsResolvesParameterValueDataProvider - */ + #[DataProvider('equalsResolvesParameterValueDataProvider')] + #[Test] public function equalsResolvesParameterValue(string $aspect, array $values, array $positives, array $negatives): void { $configuration = new CacheHashConfiguration([$aspect => $values]); @@ -140,10 +134,8 @@ final class CacheHashConfigurationTest extends TestCase ]); } - /** - * @test - * @dataProvider startsWithResolvesParameterValueDataProvider - */ + #[DataProvider('startsWithResolvesParameterValueDataProvider')] + #[Test] public function startsWithResolvesParameterValue(string $aspect, array $values, array $positives, array $negatives): void { $configuration = new CacheHashConfiguration([$aspect => $values]); @@ -170,10 +162,8 @@ final class CacheHashConfigurationTest extends TestCase ]); } - /** - * @test - * @dataProvider containsResolvesParameterValueDataProvider - */ + #[DataProvider('containsResolvesParameterValueDataProvider')] + #[Test] public function containsResolvesParameterValue(string $aspect, array $values, array $positives, array $negatives): void { $configuration = new CacheHashConfiguration([$aspect => $values]); @@ -191,10 +181,8 @@ final class CacheHashConfigurationTest extends TestCase return self::containsResolvesParameterValueDataProvider(); } - /** - * @test - * @dataProvider appliesResolvesParameterValueDataProvider - */ + #[DataProvider('appliesResolvesParameterValueDataProvider')] + #[Test] public function appliesResolvesParameterValue(string $aspect, array $values, array $positives, array $negatives): void { $configuration = new CacheHashConfiguration([$aspect => $values]); diff --git a/typo3/sysext/frontend/Tests/Unit/Page/PageAccessFailureReasonsTest.php b/typo3/sysext/frontend/Tests/Unit/Page/PageAccessFailureReasonsTest.php index a23d9bfed972..ce7b4e97a6d5 100644 --- a/typo3/sysext/frontend/Tests/Unit/Page/PageAccessFailureReasonsTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Page/PageAccessFailureReasonsTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PageAccessFailureReasonsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getMessageForReasonReturnsExpectedMessageForCode(): void { $subject = new PageAccessFailureReasons(); @@ -32,9 +31,7 @@ final class PageAccessFailureReasonsTest extends UnitTestCase self::assertEquals('No page on rootlevel found', $message); } - /** - * @test - */ + #[Test] public function getMessageForReasonThrowsExceptionForWrongCode(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/frontend/Tests/Unit/Page/PageLayoutResolverTest.php b/typo3/sysext/frontend/Tests/Unit/Page/PageLayoutResolverTest.php index 4ed96e6a42a9..b34d24079d85 100644 --- a/typo3/sysext/frontend/Tests/Unit/Page/PageLayoutResolverTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Page/PageLayoutResolverTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Page; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Frontend\Page\PageLayoutResolver; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PageLayoutResolverTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getLayoutForPageFetchesSelectedPageDirectly(): void { $subject = new PageLayoutResolver(); @@ -32,9 +31,7 @@ final class PageLayoutResolverTest extends UnitTestCase self::assertEquals('1', $result); } - /** - * @test - */ + #[Test] public function getLayoutForPageTreatsSpecialMinusOneValueAsNone(): void { $subject = new PageLayoutResolver(); @@ -42,9 +39,7 @@ final class PageLayoutResolverTest extends UnitTestCase self::assertEquals('none', $result); } - /** - * @test - */ + #[Test] public function getLayoutForPageTreatsSpecialValueZeroOrEmptyAsDefaultWithEmptyRootLine(): void { $subject = new PageLayoutResolver(); @@ -57,9 +52,7 @@ final class PageLayoutResolverTest extends UnitTestCase self::assertEquals('default', $result); } - /** - * @test - */ + #[Test] public function getLayoutForPageTreatsSpecialValueZeroOrEmptyAsDefaultWhenNothingGivenInRootLine(): void { $subject = new PageLayoutResolver(); @@ -70,9 +63,7 @@ final class PageLayoutResolverTest extends UnitTestCase self::assertEquals('default', $result); } - /** - * @test - */ + #[Test] public function getLayoutForPageFetchesRootLinePagesUpUntilSomethingWasFound(): void { $subject = new PageLayoutResolver(); @@ -83,9 +74,7 @@ final class PageLayoutResolverTest extends UnitTestCase self::assertEquals('regular', $result); } - /** - * @test - */ + #[Test] public function getLayoutForPageFetchesRootLinePagesUpWhenNoneWasSelectedExplicitly(): void { $subject = new PageLayoutResolver(); diff --git a/typo3/sysext/frontend/Tests/Unit/Processor/GalleryProcessorTest.php b/typo3/sysext/frontend/Tests/Unit/Processor/GalleryProcessorTest.php index 86366970a9da..8b34be5fca68 100644 --- a/typo3/sysext/frontend/Tests/Unit/Processor/GalleryProcessorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Processor/GalleryProcessorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Processor; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\FileReference; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; @@ -36,9 +38,7 @@ final class GalleryProcessorTest extends UnitTestCase ->getMock(); } - /** - * @test - */ + #[Test] public function processThrowsExceptionWhenFilesProcessedDataKeyIsNotFound(): void { $this->expectException(ContentRenderingException::class); @@ -142,10 +142,8 @@ final class GalleryProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider galleryPositionDataProvider - */ + #[DataProvider('galleryPositionDataProvider')] + #[Test] public function galleryPositionTest(array $processorConfiguration, array $expected): void { $processor = new GalleryProcessor(); @@ -159,9 +157,7 @@ final class GalleryProcessorTest extends UnitTestCase self::assertEquals($expected, $processedData['gallery']['position']); } - /** - * @test - */ + #[Test] public function maxGalleryWidthTest(): void { $processor = new GalleryProcessor(); @@ -175,9 +171,7 @@ final class GalleryProcessorTest extends UnitTestCase self::assertEquals(200, $processedData['gallery']['width']); } - /** - * @test - */ + #[Test] public function maxGalleryWidthWhenInTextTest(): void { $processor = new GalleryProcessor(); @@ -242,10 +236,8 @@ final class GalleryProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider countDataProvider - */ + #[DataProvider('countDataProvider')] + #[Test] public function countResultTest(int $numberOfFiles, array $data, array $processorConfiguration, array $expected): void { $files = []; @@ -427,10 +419,8 @@ final class GalleryProcessorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calculateMediaWidthsAndHeightsDataProvider - */ + #[DataProvider('calculateMediaWidthsAndHeightsDataProvider')] + #[Test] public function calculateMediaWidthsAndHeightsTest(array $testFiles, array $processorConfiguration, array $expected): void { $files = []; diff --git a/typo3/sysext/frontend/Tests/Unit/Resource/FilePathSanitizerTest.php b/typo3/sysext/frontend/Tests/Unit/Resource/FilePathSanitizerTest.php index 176e04b63148..b4dcc496d5df 100644 --- a/typo3/sysext/frontend/Tests/Unit/Resource/FilePathSanitizerTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Resource/FilePathSanitizerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Resource; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException; use TYPO3\CMS\Core\Resource\Exception\InvalidFileException; @@ -55,9 +57,7 @@ final class FilePathSanitizerTest extends UnitTestCase $this->testFilesToDelete[] = $fakePublicDir . '/index.php'; } - /** - * @test - */ + #[Test] public function tryingToResolvePrivateResourcesFromComposerPackagesThrowsException(): void { $this->simulateWebRequestInComposerMode(); @@ -66,9 +66,7 @@ final class FilePathSanitizerTest extends UnitTestCase $subject->sanitize('EXT:frontend/Resources/Private/Templates/MainPage.html'); } - /** - * @test - */ + #[Test] public function settingSecondArgumentToFalseIsNotAllowed(): void { $this->expectException(\BadMethodCallException::class); @@ -117,10 +115,8 @@ final class FilePathSanitizerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider publicAssetsInComposerModeResolvedCorrectlyDataProvider - */ + #[DataProvider('publicAssetsInComposerModeResolvedCorrectlyDataProvider')] + #[Test] public function publicAssetsInComposerModeResolvedCorrectly(string $givenPathOrUrl, string $expectedPathOrUrl, ?bool $allowExtensionPath = null): void { $this->simulateWebRequestInComposerMode(); @@ -170,19 +166,15 @@ final class FilePathSanitizerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider sanitizeCorrectlyResolvesPathsAndUrlsDataProvider - */ + #[DataProvider('sanitizeCorrectlyResolvesPathsAndUrlsDataProvider')] + #[Test] public function sanitizeCorrectlyResolvesPathsAndUrls(string $givenPathOrUrl, string $expectedPathOrUrl, ?bool $allowExtensionPath = null): void { $subject = new FilePathSanitizer(); self::assertSame($expectedPathOrUrl, $subject->sanitize($givenPathOrUrl, $allowExtensionPath)); } - /** - * @test - */ + #[Test] public function sanitizeFailsIfDirectoryGiven(): void { $this->expectException(FileDoesNotExistException::class); @@ -190,9 +182,7 @@ final class FilePathSanitizerTest extends UnitTestCase $subject->sanitize(__DIR__); } - /** - * @test - */ + #[Test] public function sanitizeThrowsExceptionWithInvalidFileName(): void { $this->expectException(InvalidFileNameException::class); diff --git a/typo3/sysext/frontend/Tests/Unit/Typolink/AbstractTypolinkBuilderTest.php b/typo3/sysext/frontend/Tests/Unit/Typolink/AbstractTypolinkBuilderTest.php index 9bc334f160d2..5d55f4ff5aa2 100644 --- a/typo3/sysext/frontend/Tests/Unit/Typolink/AbstractTypolinkBuilderTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Typolink/AbstractTypolinkBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Typolink; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\Container; @@ -51,7 +53,6 @@ final class AbstractTypolinkBuilderTest extends UnitTestCase ////////////////////// // Utility functions ////////////////////// - /** * Avoid logging to the file system (file writer is currently the only configured writer) */ @@ -165,9 +166,9 @@ final class AbstractTypolinkBuilderTest extends UnitTestCase * @param string $expected The expected URL * @param string $url The URL to parse and manipulate * @param array $configuration The configuration array - * @test - * @dataProvider forceAbsoluteUrlReturnsCorrectAbsoluteUrlDataProvider */ + #[DataProvider('forceAbsoluteUrlReturnsCorrectAbsoluteUrlDataProvider')] + #[Test] public function forceAbsoluteUrlReturnsCorrectAbsoluteUrl(string $expected, string $url, array $configuration): void { Environment::initialize( @@ -201,9 +202,7 @@ final class AbstractTypolinkBuilderTest extends UnitTestCase self::assertEquals($expected, $subject->_call('forceAbsoluteUrl', $url, $configuration)); } - /** - * @test - */ + #[Test] public function forceAbsoluteUrlReturnsCorrectAbsoluteUrlWithSubfolder(): void { Environment::initialize( @@ -276,10 +275,8 @@ final class AbstractTypolinkBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider resolveTargetAttributeDataProvider - */ + #[DataProvider('resolveTargetAttributeDataProvider')] + #[Test] public function canResolveTheTargetAttribute( string $expected, array $conf, diff --git a/typo3/sysext/frontend/Tests/Unit/Typolink/DatabaseRecordLinkBuilderTest.php b/typo3/sysext/frontend/Tests/Unit/Typolink/DatabaseRecordLinkBuilderTest.php index 0ec7469fc228..2bdd9ae4ac4d 100644 --- a/typo3/sysext/frontend/Tests/Unit/Typolink/DatabaseRecordLinkBuilderTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Typolink/DatabaseRecordLinkBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Typolink; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Backend\LinkHandler\RecordLinkHandler; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Domain\Repository\PageRepository; @@ -88,10 +90,9 @@ final class DatabaseRecordLinkBuilderTest extends UnitTestCase * in the default link handler configuration * * Note that the TypolinkCodecService is not mocked on purpose to get the full unit tested. - * - * @test - * @dataProvider attributesSetInRecordLinkOverwriteConfiguredAttributesDataProvider */ + #[DataProvider('attributesSetInRecordLinkOverwriteConfiguredAttributesDataProvider')] + #[Test] public function attributesSetInRecordLinkOverwriteConfiguredAttributes(string $parameterFromTypoScript, string $parameterFromDb, string $expectedParameter): void { $confFromDb = [ diff --git a/typo3/sysext/frontend/Tests/Unit/Typolink/LinkVarsCalculatorTest.php b/typo3/sysext/frontend/Tests/Unit/Typolink/LinkVarsCalculatorTest.php index c8a7b08fe8b7..2312513bf709 100644 --- a/typo3/sysext/frontend/Tests/Unit/Typolink/LinkVarsCalculatorTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Typolink/LinkVarsCalculatorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Typolink; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Frontend\Typolink\LinkVarsCalculator; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -62,10 +64,8 @@ final class LinkVarsCalculatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider calculateLinkVarsDataProvider - */ + #[DataProvider('calculateLinkVarsDataProvider')] + #[Test] public function calculateLinkVarsConsidersCorrectVariables(string $linkVars, array $getVars, string $expected): void { $subject = new LinkVarsCalculator(); @@ -177,10 +177,8 @@ final class LinkVarsCalculatorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider splitLinkVarsDataProvider - */ + #[DataProvider('splitLinkVarsDataProvider')] + #[Test] public function splitLinkVarsStringSplitsStringByComma(string $string, array $expected): void { $subject = $this->getAccessibleMock(LinkVarsCalculator::class, null); diff --git a/typo3/sysext/frontend/Tests/Unit/Typolink/PageLinkBuilderTest.php b/typo3/sysext/frontend/Tests/Unit/Typolink/PageLinkBuilderTest.php index 0804e821e8c1..0b251c623746 100644 --- a/typo3/sysext/frontend/Tests/Unit/Typolink/PageLinkBuilderTest.php +++ b/typo3/sysext/frontend/Tests/Unit/Typolink/PageLinkBuilderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\Unit\Typolink; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Routing\PageArguments; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; @@ -47,10 +49,8 @@ final class PageLinkBuilderTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getQueryArgumentsExcludesParametersDataProvider - */ + #[DataProvider('getQueryArgumentsExcludesParametersDataProvider')] + #[Test] public function getQueryArgumentsExcludesParameters(string $queryString, string $queryInformation, array $configuration, string $expectedResult): void { parse_str($queryString, $queryParameters); diff --git a/typo3/sysext/frontend/Tests/UnitDeprecated/Resource/FilePathSanitizerTest.php b/typo3/sysext/frontend/Tests/UnitDeprecated/Resource/FilePathSanitizerTest.php index ca5c18e99094..7af1720249d0 100644 --- a/typo3/sysext/frontend/Tests/UnitDeprecated/Resource/FilePathSanitizerTest.php +++ b/typo3/sysext/frontend/Tests/UnitDeprecated/Resource/FilePathSanitizerTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Frontend\Tests\UnitDeprecated\Resource; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Frontend\Resource\FilePathSanitizer; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FilePathSanitizerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function sanitizeCorrectlyResolvesPathsForLegacySystemsEvenForPrivateResources(): void { $subject = new FilePathSanitizer(); diff --git a/typo3/sysext/impexp/Tests/Unit/ExportTest.php b/typo3/sysext/impexp/Tests/Unit/ExportTest.php index 8f1a442785cc..6089c444dcdc 100644 --- a/typo3/sysext/impexp/Tests/Unit/ExportTest.php +++ b/typo3/sysext/impexp/Tests/Unit/ExportTest.php @@ -15,6 +15,8 @@ namespace TYPO3\CMS\Impexp\Tests\Unit; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Resource\File; @@ -37,10 +39,8 @@ final class ExportTest extends UnitTestCase $this->exportMock->_set('compressionAvailable', true); } - /** - * @test - * @dataProvider setExportFileNameSanitizesFileNameProvider - */ + #[DataProvider('setExportFileNameSanitizesFileNameProvider')] + #[Test] public function setExportFileNameSanitizesFileName(string $fileName, string $expected): void { $this->exportMock->setExportFileName($fileName); @@ -59,9 +59,7 @@ final class ExportTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function getOrGenerateExportFileNameWithFileExtensionConsidersPidAndLevels(): void { $this->exportMock->setPid(1); @@ -70,9 +68,7 @@ final class ExportTest extends UnitTestCase self::assertMatchesRegularExpression("/T3D_tree_PID1_L2_$patternDateTime.xml/", $this->exportMock->getOrGenerateExportFileNameWithFileExtension()); } - /** - * @test - */ + #[Test] public function getOrGenerateExportFileNameWithFileExtensionConsidersRecords(): void { $this->exportMock->setRecord(['page:1', 'tt_content:1']); @@ -80,9 +76,7 @@ final class ExportTest extends UnitTestCase self::assertMatchesRegularExpression("/T3D_recs_page_1-tt_conte_$patternDateTime.xml/", $this->exportMock->getOrGenerateExportFileNameWithFileExtension()); } - /** - * @test - */ + #[Test] public function getOrGenerateExportFileNameWithFileExtensionConsidersLists(): void { $this->exportMock->setList(['sys_news:0', 'news:12']); @@ -99,28 +93,22 @@ final class ExportTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider setExportFileTypeSucceedsWithSupportedFileTypeProvider - */ + #[DataProvider('setExportFileTypeSucceedsWithSupportedFileTypeProvider')] + #[Test] public function setExportFileTypeSucceedsWithSupportedFileType(string $fileType): void { $this->exportMock->setExportFileType($fileType); self::assertEquals($fileType, $this->exportMock->getExportFileType()); } - /** - * @test - */ + #[Test] public function setExportFileTypeFailsWithUnsupportedFileType(): void { $this->expectException(\Exception::class); $this->exportMock->setExportFileType('json'); } - /** - * @test - */ + #[Test] public function fixFileIdInRelationsProcessesOriginalRelationsArray(): void { $relations = [ @@ -188,10 +176,8 @@ final class ExportTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider removeRedundantSoftRefsInRelationsProcessesOriginalRelationsArrayDataProvider - */ + #[DataProvider('removeRedundantSoftRefsInRelationsProcessesOriginalRelationsArrayDataProvider')] + #[Test] public function removeRedundantSoftRefsInRelationsProcessesOriginalRelationsArray(array $relations, array $expected): void { $resourceFactoryMock = $this->getAccessibleMock( @@ -344,10 +330,9 @@ final class ExportTest extends UnitTestCase /** * Temporary test until there is a complex functional test which tests exportAddFilesFromRelations() implicitly. - * - * @test - * @dataProvider exportAddFilesFromRelationsSucceedsDataProvider */ + #[DataProvider('exportAddFilesFromRelationsSucceedsDataProvider')] + #[Test] public function exportAddFilesFromRelationsSucceeds(array $dat, array $expected): void { $exportMock = $this->getAccessibleMock( diff --git a/typo3/sysext/indexed_search/Tests/Unit/IndexerTest.php b/typo3/sysext/indexed_search/Tests/Unit/IndexerTest.php index bdc69dff987c..704b0502188c 100644 --- a/typo3/sysext/indexed_search/Tests/Unit/IndexerTest.php +++ b/typo3/sysext/indexed_search/Tests/Unit/IndexerTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\IndexedSearch\Tests\Unit; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Http\NormalizedParams; use TYPO3\CMS\Core\Http\ServerRequest; @@ -38,9 +39,7 @@ final class IndexerTest extends UnitTestCase $GLOBALS['TYPO3_REQUEST'] = $request; } - /** - * @test - */ + #[Test] public function extractHyperLinksDoesNotReturnNonExistingLocalPath(): void { $html = 'test <a href="' . StringUtility::getUniqueId() . '">test</a> test'; @@ -50,9 +49,7 @@ final class IndexerTest extends UnitTestCase self::assertEquals('', $result[0]['localPath']); } - /** - * @test - */ + #[Test] public function extractHyperLinksReturnsCorrectPathWithBaseUrl(): void { $baseURL = $GLOBALS['TYPO3_REQUEST']->getAttribute('normalizedParams')->getSiteUrl(); @@ -63,9 +60,7 @@ final class IndexerTest extends UnitTestCase self::assertEquals(Environment::getPublicPath() . '/index.php', $result[0]['localPath']); } - /** - * @test - */ + #[Test] public function extractHyperLinksFindsCorrectPathWithAbsolutePath(): void { $html = 'test <a href="index.php">test</a> test'; @@ -75,9 +70,7 @@ final class IndexerTest extends UnitTestCase self::assertEquals(Environment::getPublicPath() . '/index.php', $result[0]['localPath']); } - /** - * @test - */ + #[Test] public function extractHyperLinksFindsCorrectPathForPathWithinTypo3Directory(): void { $html = 'test <a href="typo3/index.php">test</a> test'; @@ -87,9 +80,7 @@ final class IndexerTest extends UnitTestCase self::assertEquals(Environment::getPublicPath() . '/typo3/index.php', $result[0]['localPath']); } - /** - * @test - */ + #[Test] public function extractHyperLinksFindsCorrectPathUsingAbsRefPrefix(): void { $absRefPrefix = '/' . StringUtility::getUniqueId(); @@ -107,9 +98,7 @@ final class IndexerTest extends UnitTestCase self::assertEquals(Environment::getPublicPath() . '/index.php', $result[0]['localPath']); } - /** - * @test - */ + #[Test] public function extractBaseHrefExtractsBaseHref(): void { $baseHref = 'http://example.com/'; @@ -121,9 +110,8 @@ final class IndexerTest extends UnitTestCase /** * Tests whether indexer can extract content between "TYPO3SEARCH_begin" and "TYPO3SEARCH_end" markers - * - * @test */ + #[Test] public function typoSearchTagsRemovesBodyContentOutsideMarkers(): void { $body = <<<EOT @@ -165,9 +153,8 @@ EOT; /** * Tests whether indexer can extract content between multiple pairs of "TYPO3SEARCH" markers - * - * @test */ + #[Test] public function typoSearchTagsHandlesMultipleMarkerPairs(): void { $body = <<<EOT diff --git a/typo3/sysext/install/Tests/Unit/Controller/UpgradeControllerTest.php b/typo3/sysext/install/Tests/Unit/Controller/UpgradeControllerTest.php index 5f072f567894..62506527f676 100644 --- a/typo3/sysext/install/Tests/Unit/Controller/UpgradeControllerTest.php +++ b/typo3/sysext/install/Tests/Unit/Controller/UpgradeControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\View\ViewInterface; use TYPO3\CMS\Install\Controller\UpgradeController; @@ -46,10 +48,8 @@ final class UpgradeControllerTest extends UnitTestCase ]; } - /** - * @dataProvider versionDataProvider - * @test - */ + #[DataProvider('versionDataProvider')] + #[Test] public function versionIsAsserted(string $version, bool $expectsException): void { if ($expectsException) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php index eeae82123607..f35a8867e4ec 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php @@ -19,14 +19,13 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php; use PhpParser\NodeTraverser; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\CodeStatistics; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CodeStatisticsTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function enterNodeSumsStatistics(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/GeneratorClassesResolverTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/GeneratorClassesResolverTest.php index e899cfda6304..3aa535367c6f 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/GeneratorClassesResolverTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/GeneratorClassesResolverTest.php @@ -24,15 +24,14 @@ use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Name\FullyQualified; use PhpParser\NodeTraverser; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\GeneratorClassesResolver; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\AbstractCoreMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class GeneratorClassesResolverTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function visitorCreatesFullyQualifiedNameFromStringArgumentInMakeInstance(): void { $phpCode = <<<'EOC' @@ -53,9 +52,7 @@ EOC; self::assertInstanceOf(New_::class, $node->getAttribute(AbstractCoreMatcher::NODE_RESOLVED_AS)); } - /** - * @test - */ + #[Test] public function visitorDoesNotTransformDynamicallyCreatesFullyQualifiedNameFromStringArgumentInMakeInstance(): void { $phpCode = <<<'EOC' diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/AbstractCoreMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/AbstractCoreMatcherTest.php index d7d100ae5157..fbab6f0a1ee8 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/AbstractCoreMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/AbstractCoreMatcherTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\AbstractCoreMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractCoreMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function validateMatcherDefinitionsRunsFineWithProperDefinition(): void { $matcher = $this->getAccessibleMockForAbstractClass(AbstractCoreMatcher::class, [], '', false); @@ -40,9 +39,7 @@ final class AbstractCoreMatcherTest extends UnitTestCase $matcher->_call('validateMatcherDefinitions', ['requiredArg1']); } - /** - * @test - */ + #[Test] public function validateMatcherDefinitionsThrowsIfRequiredArgIsNotInConfig(): void { $matcher = $this->getAccessibleMockForAbstractClass(AbstractCoreMatcher::class, [], '', false); @@ -60,9 +57,7 @@ final class AbstractCoreMatcherTest extends UnitTestCase $matcher->_call('validateMatcherDefinitions', ['requiredArg1']); } - /** - * @test - */ + #[Test] public function validateMatcherDefinitionsThrowsWithMissingRestFiles(): void { $matcher = $this->getAccessibleMockForAbstractClass(AbstractCoreMatcher::class, [], '', false); @@ -77,9 +72,7 @@ final class AbstractCoreMatcherTest extends UnitTestCase $matcher->_call('validateMatcherDefinitions', []); } - /** - * @test - */ + #[Test] public function validateMatcherDefinitionsThrowsWithEmptySingleRestFile(): void { $matcher = $this->getAccessibleMockForAbstractClass(AbstractCoreMatcher::class, [], '', false); @@ -97,9 +90,7 @@ final class AbstractCoreMatcherTest extends UnitTestCase $matcher->_call('validateMatcherDefinitions', []); } - /** - * @test - */ + #[Test] public function initializeMethodNameArrayThrowsWithInvalidKeys(): void { $matcher = $this->getAccessibleMockForAbstractClass(AbstractCoreMatcher::class, [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php index 9f0f25101a97..264678db60ef 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\ArrayDimensionMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ArrayDimensionMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -118,10 +118,8 @@ final class ArrayDimensionMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php index dad1a5012a18..4e4aad346126 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\ArrayGlobalMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ArrayGlobalMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -83,10 +83,8 @@ final class ArrayGlobalMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php index 1b003af86698..b6d144818e53 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php @@ -20,15 +20,15 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\GeneratorClassesResolver; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\ClassConstantMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ClassConstantMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -92,10 +92,8 @@ final class ClassConstantMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php index 2fa4180b48bb..8e46a0831c5d 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php @@ -20,15 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\GeneratorClassesResolver; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\ClassNameMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ClassNameMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php index 5ca0762515e8..337f18d334db 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php @@ -20,15 +20,15 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\GeneratorClassesResolver; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\ConstantMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ConstantMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -85,10 +85,8 @@ final class ConstantMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstructorArgumentMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstructorArgumentMatcherTest.php index c1bc543451c3..040ca6a2ab24 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstructorArgumentMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstructorArgumentMatcherTest.php @@ -20,6 +20,8 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Install\ExtensionScanner\Php\GeneratorClassesResolver; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\ConstructorArgumentMatcher; @@ -72,10 +74,8 @@ final class ConstructorArgumentMatcherTest extends TestCase ]; } - /** - * @test - * @dataProvider hitsFromFixtureAreFoundDataProvider - */ + #[DataProvider('hitsFromFixtureAreFoundDataProvider')] + #[Test] public function hitsFromFixtureAreFound(array $configuration, array $expectation): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php index 8e19b4254a61..7e7259d74525 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php @@ -20,14 +20,13 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\FunctionCallMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class FunctionCallMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -59,9 +58,7 @@ final class FunctionCallMatcherTest extends UnitTestCase self::assertEquals($expectedHitLineNumbers, $actualHitLineNumbers); } - /** - * @test - */ + #[Test] public function matchIsIgnoredIfIgnoreFileIsSet(): void { $phpCode = <<<'EOC' diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/InterfaceMethodChangedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/InterfaceMethodChangedMatcherTest.php index 5648bc3238ef..c69ac7d97414 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/InterfaceMethodChangedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/InterfaceMethodChangedMatcherTest.php @@ -20,14 +20,13 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\InterfaceMethodChangedMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class InterfaceMethodChangedMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodAnnotationMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodAnnotationMatcherTest.php index 215758941d6c..f2ed09bc07f9 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodAnnotationMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodAnnotationMatcherTest.php @@ -20,14 +20,13 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodAnnotationMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodAnnotationMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php index 11a9f5e70f43..78d0e0c428f9 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodArgumentDroppedMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodArgumentDroppedMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -219,10 +219,8 @@ final class MethodArgumentDroppedMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php index 6f96a75057d2..083b114e480a 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodArgumentDroppedStaticMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodArgumentDroppedStaticMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -222,10 +222,8 @@ final class MethodArgumentDroppedStaticMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredMatcherTest.php index 5444e65826a8..c6ac7a2b0455 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodArgumentRequiredMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodArgumentRequiredMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -212,10 +212,8 @@ final class MethodArgumentRequiredMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredStaticMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredStaticMatcherTest.php index d384c1e622c7..9c92c6cc8e81 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredStaticMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentRequiredStaticMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodArgumentRequiredStaticMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodArgumentRequiredStaticMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -190,10 +190,8 @@ final class MethodArgumentRequiredStaticMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php index a09815bc7cd5..f57591b5fa2b 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodArgumentUnusedMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodArgumentUnusedMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -208,10 +208,8 @@ final class MethodArgumentUnusedMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php index 97062abfeb1e..172af55b7a8f 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodCallMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodCallMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -62,9 +62,7 @@ final class MethodCallMatcherTest extends UnitTestCase self::assertEquals($expectedHitLineNumbers, $actualHitLineNumbers); } - /** - * @test - */ + #[Test] public function matchIsIgnoredIfIgnoreFileIsSet(): void { $phpCode = <<<'EOC' @@ -302,10 +300,8 @@ EOC; ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php index 77125199e0a1..616fbb561caa 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php @@ -20,15 +20,15 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\GeneratorClassesResolver; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\MethodCallStaticMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MethodCallStaticMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -263,10 +263,8 @@ final class MethodCallStaticMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyAnnotationMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyAnnotationMatcherTest.php index 50e91dcdbd45..22c74b51437a 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyAnnotationMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyAnnotationMatcherTest.php @@ -20,14 +20,13 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\PropertyAnnotationMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyAnnotationMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyExistsStaticMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyExistsStaticMatcherTest.php index 676e3764f85d..e62155b7d903 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyExistsStaticMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyExistsStaticMatcherTest.php @@ -20,14 +20,13 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\PropertyExistsStaticMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyExistsStaticMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php index 77180b225844..bd4235a7d36e 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\PropertyProtectedMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyProtectedMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -117,10 +117,8 @@ final class PropertyProtectedMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php index f1077840c46e..0f6142226237 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php @@ -20,14 +20,14 @@ namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php\Matcher; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; use PhpParser\ParserFactory; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\Matcher\PropertyPublicMatcher; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PropertyPublicMatcherTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hitsFromFixtureAreFound(): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); @@ -117,10 +117,8 @@ final class PropertyPublicMatcherTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider matchesReturnsExpectedRestFilesDataProvider - */ + #[DataProvider('matchesReturnsExpectedRestFilesDataProvider')] + #[Test] public function matchesReturnsExpectedRestFiles(array $configuration, string $phpCode, array $expected): void { $parser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7); diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/MatcherFactoryTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/MatcherFactoryTest.php index 5da6a8a51104..0e3329a5c8ba 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/MatcherFactoryTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/MatcherFactoryTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\ExtensionScanner\Php; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\ExtensionScanner\Php\MatcherFactory; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class MatcherFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function createAllThrowWithMissingClass(): void { $subject = new MatcherFactory(); @@ -38,9 +37,7 @@ final class MatcherFactoryTest extends UnitTestCase $subject->createAll($configuration); } - /** - * @test - */ + #[Test] public function createAllThrowsWithMissingConfiguration(): void { $subject = new MatcherFactory(); @@ -54,9 +51,7 @@ final class MatcherFactoryTest extends UnitTestCase $subject->createAll($configuration); } - /** - * @test - */ + #[Test] public function createAllThrowsWithBothConfigurationFileAndConfigurationArray(): void { $subject = new MatcherFactory(); @@ -72,9 +67,7 @@ final class MatcherFactoryTest extends UnitTestCase $subject->createAll($configuration); } - /** - * @test - */ + #[Test] public function createAllThrowsIfConfigurationFileDoesNotExist(): void { $subject = new MatcherFactory(); @@ -89,9 +82,7 @@ final class MatcherFactoryTest extends UnitTestCase $subject->createAll($configuration); } - /** - * @test - */ + #[Test] public function createAllThrowsIfConfigurationFileDoesNotReturnArray(): void { $subject = new MatcherFactory(); @@ -106,9 +97,7 @@ final class MatcherFactoryTest extends UnitTestCase $subject->createAll($configuration); } - /** - * @test - */ + #[Test] public function createAllThrowsIfConfigurationArrayIsNotAnArray(): void { $subject = new MatcherFactory(); @@ -123,9 +112,7 @@ final class MatcherFactoryTest extends UnitTestCase $subject->createAll($configuration); } - /** - * @test - */ + #[Test] public function createAllThrowIfMatcherDoesNotImplementCodeScannerInterface(): void { $subject = new MatcherFactory(); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/AbstractNodeTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/AbstractNodeTest.php index c0191e292c10..58afce216278 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/AbstractNodeTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/AbstractNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -29,9 +30,7 @@ use TYPO3\CMS\Install\FolderStructure\RootNodeInterface; final class AbstractNodeTest extends AbstractFolderStructureTestCase { - /** - * @test - */ + #[Test] public function getNameReturnsSetName(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -40,9 +39,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame($name, $node->getName()); } - /** - * @test - */ + #[Test] public function getTargetPermissionReturnsSetTargetPermission(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -51,9 +48,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame($permission, $node->_call('getTargetPermission')); } - /** - * @test - */ + #[Test] public function getChildrenReturnsSetChildren(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -62,9 +57,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame($children, $node->_call('getChildren')); } - /** - * @test - */ + #[Test] public function getParentReturnsSetParent(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -73,9 +66,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame($parent, $node->_call('getParent')); } - /** - * @test - */ + #[Test] public function getAbsolutePathCallsParentForPathAndAppendsOwnName(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -88,9 +79,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame($parentPath . '/' . $name, $node->getAbsolutePath()); } - /** - * @test - */ + #[Test] public function isWritableCallsParentIsWritable(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -100,9 +89,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase $node->isWritable(); } - /** - * @test - */ + #[Test] public function isWritableReturnsWritableStatusOfParent(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -112,9 +99,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->isWritable()); } - /** - * @test - */ + #[Test] public function existsReturnsTrueIfNodeExists(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['getAbsolutePath'], [], '', false); @@ -123,9 +108,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('exists')); } - /** - * @test - */ + #[Test] public function existsReturnsTrueIfIsLinkAndTargetIsDead(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['getAbsolutePath'], [], '', false); @@ -141,9 +124,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('exists')); } - /** - * @test - */ + #[Test] public function existsReturnsFalseIfNodeNotExists(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['getAbsolutePath'], [], '', false); @@ -152,9 +133,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertFalse($node->_call('exists')); } - /** - * @test - */ + #[Test] public function fixPermissionThrowsExceptionIfPermissionAreAlreadyCorrect(): void { $node = $this->getAccessibleMock( @@ -171,9 +150,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase $node->_call('fixPermission'); } - /** - * @test - */ + #[Test] public function fixPermissionReturnsOkStatusIfPermissionCanBeFixedAndSetsPermissionToCorrectValue(): void { $node = $this->getAccessibleMock( @@ -196,9 +173,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame('2770', $resultDirectoryPermissions); } - /** - * @test - */ + #[Test] public function isPermissionCorrectReturnsTrueOnWindowsOs(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['isWindowsOs'], [], '', false); @@ -206,9 +181,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('isPermissionCorrect')); } - /** - * @test - */ + #[Test] public function isPermissionCorrectReturnsFalseIfTargetPermissionAndCurrentPermissionAreNotIdentical(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['isWindowsOs', 'getCurrentPermission'], [], '', false); @@ -218,9 +191,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertFalse($node->_call('isPermissionCorrect')); } - /** - * @test - */ + #[Test] public function getCurrentPermissionReturnsCurrentDirectoryPermission(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['getAbsolutePath'], [], '', false); @@ -231,9 +202,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame('0444', $node->_call('getCurrentPermission')); } - /** - * @test - */ + #[Test] public function getCurrentPermissionReturnsCurrentFilePermission(): void { $node = $this->getAccessibleMock(AbstractNode::class, ['getAbsolutePath'], [], '', false); @@ -245,9 +214,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame('0770', $node->_call('getCurrentPermission')); } - /** - * @test - */ + #[Test] public function getRelativePathBelowSiteRootThrowsExceptionIfGivenPathIsNotBelowPathSiteConstant(): void { $this->expectException(InvalidArgumentException::class); @@ -256,9 +223,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase $node->_call('getRelativePathBelowSiteRoot', '/tmp'); } - /** - * @test - */ + #[Test] public function getRelativePathCallsGetAbsolutePathIfPathIsNull(): void { $node = $this->getAccessibleMock( @@ -272,9 +237,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase $node->_call('getRelativePathBelowSiteRoot', null); } - /** - * @test - */ + #[Test] public function getRelativePathBelowSiteRootReturnsSingleForwardSlashIfGivenPathEqualsPathSiteConstant(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); @@ -282,9 +245,7 @@ final class AbstractNodeTest extends AbstractFolderStructureTestCase self::assertSame('/', $result); } - /** - * @test - */ + #[Test] public function getRelativePathBelowSiteRootReturnsSubPath(): void { $node = $this->getAccessibleMock(AbstractNode::class, null, [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/DefaultFactoryTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/DefaultFactoryTest.php index 92ecad0b40bd..4123eb9efc14 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/DefaultFactoryTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/DefaultFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\FolderStructure\DefaultFactory; use TYPO3\CMS\Install\FolderStructure\StructureFacadeInterface; use TYPO3\CMS\Install\WebserverType; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class DefaultFactoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getStructureReturnsInstanceOfStructureFacadeInterface(): void { $webserverType = WebserverType::fromType('i-dont-care'); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/DirectoryNodeTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/DirectoryNodeTest.php index 347eaf30cfdb..71729b0fb085 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/DirectoryNodeTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/DirectoryNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; @@ -30,9 +31,7 @@ use TYPO3\CMS\Install\FolderStructure\RootNodeInterface; final class DirectoryNodeTest extends AbstractFolderStructureTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfParentIsNull(): void { $this->expectException(InvalidArgumentException::class); @@ -40,9 +39,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase new DirectoryNode([], null); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfNameContainsForwardSlash(): void { $this->expectException(InvalidArgumentException::class); @@ -54,9 +51,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase new DirectoryNode($structure, $parent); } - /** - * @test - */ + #[Test] public function constructorCallsCreateChildrenIfChildrenAreSet(): void { $parent = $this->createMock(NodeInterface::class); @@ -75,9 +70,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase $node->__construct($structure, $parent); } - /** - * @test - */ + #[Test] public function constructorSetsParent(): void { $parent = $this->createMock(NodeInterface::class); @@ -89,9 +82,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame($parent, $node->_call('getParent')); } - /** - * @test - */ + #[Test] public function constructorSetsTargetPermission(): void { $parent = $this->createMock(NodeInterface::class); @@ -105,9 +96,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame($targetPermission, $node->_call('getTargetPermission')); } - /** - * @test - */ + #[Test] public function constructorSetsName(): void { $parent = $this->createMock(RootNodeInterface::class); @@ -116,9 +105,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame($name, $node->getName()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArray(): void { $node = $this->getAccessibleMock( @@ -138,9 +125,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertIsArray($node->getStatus()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithWarningStatusIfDirectoryNotExists(): void { $node = $this->getAccessibleMock( @@ -161,9 +146,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::WARNING, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithErrorStatusIfNodeIsNotADirectory(): void { $node = $this->getAccessibleMock( @@ -185,9 +168,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::ERROR, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithErrorStatusIfDirectoryExistsButIsNotWritable(): void { $node = $this->getAccessibleMock( @@ -209,9 +190,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::ERROR, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithNoticeStatusIfDirectoryExistsButPermissionAreNotCorrect(): void { $node = $this->getAccessibleMock( @@ -233,9 +212,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::NOTICE, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithOkStatusIfDirectoryExistsAndPermissionAreCorrect(): void { $node = $this->getAccessibleMock( @@ -257,9 +234,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::OK, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusCallsGetStatusOnChildren(): void { $node = $this->getAccessibleMock( @@ -281,9 +256,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase $node->getStatus(); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithOwnStatusAndStatusOfChild(): void { $node = $this->getAccessibleMock( @@ -308,9 +281,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame($childMessage, $statusOfChild); } - /** - * @test - */ + #[Test] public function fixCallsFixSelfAndReturnsItsResult(): void { $node = $this->getMockBuilder(DirectoryNode::class) @@ -322,9 +293,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame($uniqueReturn, $node->fix()); } - /** - * @test - */ + #[Test] public function fixCallsFixOnChildrenAndReturnsMergedResult(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['fixSelf'], [], '', false); @@ -344,9 +313,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame([$uniqueReturnSelf, $uniqueReturnChild1, $uniqueReturnChild2], $node->fix()); } - /** - * @test - */ + #[Test] public function fixSelfCallsCreateDirectoryIfDirectoryDoesNotExistAndReturnsResult(): void { $node = $this->getAccessibleMock( @@ -363,9 +330,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame([$uniqueReturn], $node->_call('fixSelf')); } - /** - * @test - */ + #[Test] public function fixSelfReturnsErrorStatusIfNodeExistsButIsNotADirectoryAndReturnsResult(): void { $node = $this->getAccessibleMock( @@ -384,9 +349,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::ERROR, $result[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function fixSelfCallsFixPermissionIfDirectoryExistsButIsNotWritable(): void { $node = $this->getAccessibleMock( @@ -403,9 +366,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame([$message], $node->_call('fixSelf')); } - /** - * @test - */ + #[Test] public function createDirectoryThrowsExceptionIfNodeExists(): void { $this->expectException(Exception::class); @@ -416,9 +377,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase $node->_call('createDirectory'); } - /** - * @test - */ + #[Test] public function createDirectoryCreatesDirectory(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['exists', 'getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -430,9 +389,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertDirectoryExists($path); } - /** - * @test - */ + #[Test] public function createDirectoryReturnsOkStatusIfDirectoryWasCreated(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['exists', 'getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -443,9 +400,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::OK, $node->_call('createDirectory')->getSeverity()); } - /** - * @test - */ + #[Test] public function createChildrenThrowsExceptionIfAChildTypeIsNotSet(): void { $this->expectException(InvalidArgumentException::class); @@ -459,9 +414,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase $node->_call('createChildren', $brokenStructure); } - /** - * @test - */ + #[Test] public function createChildrenThrowsExceptionIfAChildNameIsNotSet(): void { $this->expectException(InvalidArgumentException::class); @@ -475,9 +428,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase $node->_call('createChildren', $brokenStructure); } - /** - * @test - */ + #[Test] public function createChildrenThrowsExceptionForMultipleChildrenWithSameName(): void { $this->expectException(InvalidArgumentException::class); @@ -496,9 +447,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase $node->_call('createChildren', $brokenStructure); } - /** - * @test - */ + #[Test] public function getChildrenReturnsCreatedChild(): void { $node = $this->getAccessibleMock(DirectoryNode::class, null, [], '', false); @@ -522,9 +471,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertSame($childName, $child->getName()); } - /** - * @test - */ + #[Test] public function isWritableReturnsFalseIfNodeDoesNotExist(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['getAbsolutePath'], [], '', false); @@ -533,9 +480,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertFalse($node->isWritable()); } - /** - * @test - */ + #[Test] public function isWritableReturnsTrueIfNodeExistsAndFileCanBeCreated(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['getAbsolutePath'], [], '', false); @@ -544,9 +489,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->isWritable()); } - /** - * @test - */ + #[Test] public function isDirectoryReturnsTrueIfNameIsADirectory(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['getAbsolutePath'], [], '', false); @@ -555,9 +498,7 @@ final class DirectoryNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('isDirectory')); } - /** - * @test - */ + #[Test] public function isDirectoryReturnsFalseIfNameIsALinkToADirectory(): void { $node = $this->getAccessibleMock(DirectoryNode::class, ['getAbsolutePath'], [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/FileNodeTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/FileNodeTest.php index fd2cd4de2f54..63c28c71a412 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/FileNodeTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/FileNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; @@ -30,9 +31,7 @@ use TYPO3\CMS\Install\FolderStructure\RootNodeInterface; final class FileNodeTest extends AbstractFolderStructureTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfParentIsNull(): void { $this->expectException(InvalidArgumentException::class); @@ -41,9 +40,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->__construct([], null); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfNameContainsForwardSlash(): void { $this->expectException(InvalidArgumentException::class); @@ -56,9 +53,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->__construct($structure, $parent); } - /** - * @test - */ + #[Test] public function constructorSetsParent(): void { $parent = $this->createMock(NodeInterface::class); @@ -70,9 +65,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($parent, $node->_call('getParent')); } - /** - * @test - */ + #[Test] public function constructorSetsTargetPermission(): void { $parent = $this->createMock(NodeInterface::class); @@ -86,9 +79,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($targetPermission, $node->_call('getTargetPermission')); } - /** - * @test - */ + #[Test] public function constructorSetsName(): void { $node = $this->getAccessibleMock(FileNode::class, null, [], '', false); @@ -98,9 +89,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($name, $node->getName()); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfBothTargetContentAndTargetContentFileAreSet(): void { $this->expectException(InvalidArgumentException::class); @@ -115,9 +104,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->__construct($structure, $parent); } - /** - * @test - */ + #[Test] public function constructorSetsTargetContent(): void { $node = $this->getAccessibleMock(FileNode::class, null, [], '', false); @@ -131,9 +118,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($targetContent, $node->_get('targetContent')); } - /** - * @test - */ + #[Test] public function constructorSetsTargetContentToContentOfTargetContentFile(): void { $node = $this->getAccessibleMock(FileNode::class, null, [], '', false); @@ -149,9 +134,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($targetContent, $node->_get('targetContent')); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfTargetContentFileDoesNotExist(): void { $this->expectException(InvalidArgumentException::class); @@ -166,9 +149,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->__construct($structure, $parent); } - /** - * @test - */ + #[Test] public function targetContentIsNullIfNotGiven(): void { $node = $this->getAccessibleMock(FileNode::class, null, [], '', false); @@ -180,9 +161,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertNull($node->_get('targetContent')); } - /** - * @test - */ + #[Test] public function getStatusReturnsArray(): void { $node = $this->getAccessibleMock( @@ -206,9 +185,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertIsArray($node->getStatus()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithWarningStatusIFileNotExists(): void { $node = $this->getAccessibleMock( @@ -230,9 +207,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::WARNING, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithErrorStatusIfNodeIsNotAFile(): void { $node = $this->getAccessibleMock( @@ -255,9 +230,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::ERROR, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayNoticeStatusIfFileExistsButIsNotWritable(): void { $node = $this->getAccessibleMock( @@ -280,9 +253,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::NOTICE, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithNoticeStatusIfFileExistsButPermissionAreNotCorrect(): void { $node = $this->getAccessibleMock( @@ -305,9 +276,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::NOTICE, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithNoticeStatusIfFileExistsButContentIsNotCorrect(): void { $node = $this->getAccessibleMock( @@ -330,9 +299,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::NOTICE, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithOkStatusIfFileExistsAndPermissionAreCorrect(): void { $node = $this->getAccessibleMock( @@ -355,9 +322,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::OK, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function fixCallsFixSelfAndReturnsItsResult(): void { $node = $this->getAccessibleMock( @@ -372,9 +337,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($uniqueReturn, $node->fix()); } - /** - * @test - */ + #[Test] public function fixSelfCallsCreateFileIfFileDoesNotExistAndReturnsResult(): void { $node = $this->getAccessibleMock( @@ -394,9 +357,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($message, $actualReturn); } - /** - * @test - */ + #[Test] public function fixSelfCallsSetsContentIfFileCreationWasSuccessfulAndTargetContentIsNotNullAndReturnsResult(): void { $node = $this->getAccessibleMock( @@ -419,9 +380,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($message2, $actualReturn); } - /** - * @test - */ + #[Test] public function fixSelfDoesNotCallSetContentIfFileCreationFailed(): void { $node = $this->getAccessibleMock( @@ -441,9 +400,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('fixSelf'); } - /** - * @test - */ + #[Test] public function fixSelfDoesNotCallSetContentIfFileTargetContentIsNull(): void { $node = $this->getAccessibleMock( @@ -463,9 +420,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('fixSelf'); } - /** - * @test - */ + #[Test] public function fixSelfReturnsErrorStatusIfNodeExistsButIsNotAFileAndReturnsResult(): void { $node = $this->getAccessibleMock( @@ -483,9 +438,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame([$message], $node->_call('fixSelf')); } - /** - * @test - */ + #[Test] public function fixSelfCallsFixPermissionIfFileExistsButPermissionAreWrong(): void { $node = $this->getAccessibleMock( @@ -501,9 +454,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('fixSelf'); } - /** - * @test - */ + #[Test] public function fixSelfReturnsArrayOfStatusMessages(): void { $node = $this->getAccessibleMock( @@ -519,9 +470,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertIsArray($node->_call('fixSelf')); } - /** - * @test - */ + #[Test] public function createFileThrowsExceptionIfNodeExists(): void { $this->expectException(Exception::class); @@ -532,9 +481,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('createFile'); } - /** - * @test - */ + #[Test] public function createFileReturnsOkStatusIfFileWasCreated(): void { $node = $this->getAccessibleMock(FileNode::class, ['exists', 'getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -545,9 +492,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::OK, $node->_call('createFile')->getSeverity()); } - /** - * @test - */ + #[Test] public function createFileCreatesFile(): void { $node = $this->getAccessibleMock(FileNode::class, ['exists', 'getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -559,9 +504,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertTrue(is_file($path)); } - /** - * @test - */ + #[Test] public function isContentCorrectThrowsExceptionIfTargetIsNotAFile(): void { $this->expectException(Exception::class); @@ -572,9 +515,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('isContentCorrect'); } - /** - * @test - */ + #[Test] public function isContentCorrectReturnsTrueIfTargetContentPropertyIsNull(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath'], [], '', false); @@ -585,9 +526,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('isContentCorrect')); } - /** - * @test - */ + #[Test] public function isContentCorrectReturnsTrueIfTargetContentEqualsCurrentContent(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath'], [], '', false); @@ -599,9 +538,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('isContentCorrect')); } - /** - * @test - */ + #[Test] public function isContentCorrectReturnsFalseIfTargetContentNotEqualsCurrentContent(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath'], [], '', false); @@ -614,9 +551,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertFalse($node->_call('isContentCorrect')); } - /** - * @test - */ + #[Test] public function isPermissionCorrectReturnsTrueIfTargetPermissionAndCurrentPermissionAreIdentical(): void { $parent = $this->createMock(NodeInterface::class); @@ -632,9 +567,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('isPermissionCorrect')); } - /** - * @test - */ + #[Test] public function setContentThrowsExceptionIfTargetIsNotAFile(): void { $this->expectException(Exception::class); @@ -646,9 +579,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('setContent'); } - /** - * @test - */ + #[Test] public function setContentThrowsExceptionIfTargetContentIsNull(): void { $this->expectException(Exception::class); @@ -661,9 +592,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase $node->_call('setContent'); } - /** - * @test - */ + #[Test] public function setContentSetsContentToFile(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -677,9 +606,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame($targetContent, $resultContent); } - /** - * @test - */ + #[Test] public function setContentReturnsOkStatusIfContentWasSuccessfullySet(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -691,9 +618,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertSame(ContextualFeedbackSeverity::OK, $node->_call('setContent')->getSeverity()); } - /** - * @test - */ + #[Test] public function isFileReturnsTrueIfNameIsFile(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath', 'getRelativePathBelowSiteRoot'], [], '', false); @@ -703,9 +628,7 @@ final class FileNodeTest extends AbstractFolderStructureTestCase self::assertTrue($node->_call('isFile')); } - /** - * @test - */ + #[Test] public function isFileReturnsFalseIfNameIsALinkFile(): void { $node = $this->getAccessibleMock(FileNode::class, ['getAbsolutePath'], [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/LinkNodeTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/LinkNodeTest.php index 3455d04e9af3..8a65612ed297 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/LinkNodeTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/LinkNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -40,9 +41,7 @@ final class LinkNodeTest extends UnitTestCase GeneralUtility::mkdir_deep($this->testRoot); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfParentIsNull(): void { $this->expectException(InvalidArgumentException::class); @@ -51,9 +50,7 @@ final class LinkNodeTest extends UnitTestCase $node->__construct([], null); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfNameContainsForwardSlash(): void { $this->expectException(InvalidArgumentException::class); @@ -66,9 +63,7 @@ final class LinkNodeTest extends UnitTestCase $node->__construct($structure, $parent); } - /** - * @test - */ + #[Test] public function constructorSetsParent(): void { $parent = $this->createMock(NodeInterface::class); @@ -80,9 +75,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame($parent, $node->_call('getParent')); } - /** - * @test - */ + #[Test] public function constructorSetsName(): void { $node = $this->getAccessibleMock(LinkNode::class, null, [], '', false); @@ -92,9 +85,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame($name, $node->getName()); } - /** - * @test - */ + #[Test] public function constructorSetsNameAndTarget(): void { $node = $this->getAccessibleMock(LinkNode::class, null, [], '', false); @@ -105,9 +96,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame($target, $node->_call('getTarget')); } - /** - * @test - */ + #[Test] public function getStatusReturnsArray(): void { $node = $this->getAccessibleMock( @@ -122,9 +111,7 @@ final class LinkNodeTest extends UnitTestCase self::assertIsArray($node->getStatus()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithInformationStatusIfRunningOnWindows(): void { $node = $this->getAccessibleMock( @@ -141,9 +128,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::INFO, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithErrorStatusIfLinkNotExists(): void { $node = $this->getAccessibleMock( @@ -161,9 +146,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::ERROR, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithWarningStatusIfNodeIsNotALink(): void { $node = $this->getAccessibleMock( @@ -180,9 +163,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::WARNING, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsErrorStatusIfLinkTargetIsNotCorrect(): void { $node = $this->getAccessibleMock( @@ -201,9 +182,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::ERROR, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsOkStatusIfLinkExistsAndTargetIsCorrect(): void { $node = $this->getAccessibleMock( @@ -222,9 +201,7 @@ final class LinkNodeTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::OK, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function fixReturnsEmptyArray(): void { $node = $this->getAccessibleMock( @@ -238,9 +215,7 @@ final class LinkNodeTest extends UnitTestCase self::assertEmpty($statusArray); } - /** - * @test - */ + #[Test] public function isLinkThrowsExceptionIfLinkNotExists(): void { $this->expectException(InvalidArgumentException::class); @@ -250,9 +225,7 @@ final class LinkNodeTest extends UnitTestCase self::assertFalse($node->_call('isLink')); } - /** - * @test - */ + #[Test] public function isLinkReturnsTrueIfNameIsLink(): void { $node = $this->getAccessibleMock(LinkNode::class, ['exists', 'getAbsolutePath'], [], '', false); @@ -265,9 +238,7 @@ final class LinkNodeTest extends UnitTestCase self::assertTrue($node->_call('isLink')); } - /** - * @test - */ + #[Test] public function isFileReturnsFalseIfNameIsAFile(): void { $node = $this->getAccessibleMock(LinkNode::class, ['exists', 'getAbsolutePath'], [], '', false); @@ -278,9 +249,7 @@ final class LinkNodeTest extends UnitTestCase self::assertFalse($node->_call('isLink')); } - /** - * @test - */ + #[Test] public function isTargetCorrectThrowsExceptionIfLinkNotExists(): void { $this->expectException(InvalidArgumentException::class); @@ -290,9 +259,7 @@ final class LinkNodeTest extends UnitTestCase self::assertFalse($node->_call('isTargetCorrect')); } - /** - * @test - */ + #[Test] public function isTargetCorrectThrowsExceptionIfNodeIsNotALink(): void { $this->expectException(InvalidArgumentException::class); @@ -303,9 +270,7 @@ final class LinkNodeTest extends UnitTestCase self::assertTrue($node->_call('isTargetCorrect')); } - /** - * @test - */ + #[Test] public function isTargetCorrectReturnsTrueIfNoExpectedLinkTargetIsSpecified(): void { $node = $this->getAccessibleMock(LinkNode::class, ['exists', 'isLink', 'getTarget'], [], '', false); @@ -315,9 +280,7 @@ final class LinkNodeTest extends UnitTestCase self::assertTrue($node->_call('isTargetCorrect')); } - /** - * @test - */ + #[Test] public function isTargetCorrectAcceptsATargetWithATrailingSlash(): void { $node = $this->getAccessibleMock(LinkNode::class, ['exists', 'isLink', 'getCurrentTarget', 'getTarget'], [], '', false); @@ -328,9 +291,7 @@ final class LinkNodeTest extends UnitTestCase self::assertTrue($node->_call('isTargetCorrect')); } - /** - * @test - */ + #[Test] public function isTargetCorrectReturnsTrueIfActualTargetIsIdenticalToSpecifiedTarget(): void { $path = $this->testRoot . StringUtility::getUniqueId('link_'); @@ -351,9 +312,7 @@ final class LinkNodeTest extends UnitTestCase self::assertTrue($node->_call('isTargetCorrect')); } - /** - * @test - */ + #[Test] public function isTargetCorrectReturnsFalseIfActualTargetIsNotIdenticalToSpecifiedTarget(): void { $path = $this->testRoot . StringUtility::getUniqueId('link_'); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/RootNodeTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/RootNodeTest.php index 10120ee61154..c4dd6a3e97f4 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/RootNodeTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/RootNodeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; @@ -32,9 +33,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RootNodeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfParentIsNotNull(): void { $this->expectException(RootNodeException::class); @@ -44,9 +43,7 @@ final class RootNodeTest extends UnitTestCase $node->__construct([], $falseParent); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfAbsolutePathIsNotSet(): void { $this->expectException(InvalidArgumentException::class); @@ -58,9 +55,7 @@ final class RootNodeTest extends UnitTestCase $node->__construct($structure, null); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfAbsolutePathIsNotAbsoluteOnWindows(): void { $this->expectException(InvalidArgumentException::class); @@ -75,9 +70,7 @@ final class RootNodeTest extends UnitTestCase $node->__construct($structure, null); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionIfAbsolutePathIsNotAbsoluteOnUnix(): void { $this->expectException(InvalidArgumentException::class); @@ -92,9 +85,7 @@ final class RootNodeTest extends UnitTestCase $node->__construct($structure, null); } - /** - * @test - */ + #[Test] public function constructorSetsParentToNull(): void { $node = $this->getAccessibleMock(RootNode::class, ['isWindowsOs'], [], '', false); @@ -108,9 +99,7 @@ final class RootNodeTest extends UnitTestCase self::assertNull($node->_call('getParent')); } - /** - * @test - */ + #[Test] public function getChildrenReturnsChildCreatedByConstructor(): void { $node = $this->getAccessibleMock(RootNode::class, ['isWindowsOs'], [], '', false); @@ -135,9 +124,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame($childName, $child->getName()); } - /** - * @test - */ + #[Test] public function constructorSetsTargetPermission(): void { $node = $this->getAccessibleMock(RootNode::class, ['isWindowsOs'], [], '', false); @@ -153,9 +140,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame($targetPermission, $node->_call('getTargetPermission')); } - /** - * @test - */ + #[Test] public function constructorSetsName(): void { $node = $this->getAccessibleMock(RootNode::class, ['isWindowsOs'], [], '', false); @@ -167,9 +152,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame($name, $node->getName()); } - /** - * @test - */ + #[Test] public function getStatusReturnsArrayWithOkStatusAndCallsOwnStatusMethods(): void { $node = $this->getAccessibleMock( @@ -193,9 +176,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::OK, $statusArray[0]->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusCallsGetChildrenStatusForStatus(): void { $node = $this->getAccessibleMock( @@ -224,9 +205,7 @@ final class RootNodeTest extends UnitTestCase self::assertSame($childStatus, $statusOfChild); } - /** - * @test - */ + #[Test] public function getAbsolutePathReturnsGivenName(): void { $node = $this->getAccessibleMock(RootNode::class, ['isWindowsOs'], [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/FolderStructure/StructureFacadeTest.php b/typo3/sysext/install/Tests/Unit/FolderStructure/StructureFacadeTest.php index 79db7e17f51e..d9fef0b0d892 100644 --- a/typo3/sysext/install/Tests/Unit/FolderStructure/StructureFacadeTest.php +++ b/typo3/sysext/install/Tests/Unit/FolderStructure/StructureFacadeTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\FolderStructure; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessageQueue; use TYPO3\CMS\Install\FolderStructure\RootNode; use TYPO3\CMS\Install\FolderStructure\StructureFacade; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class StructureFacadeTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getStatusReturnsStatusOfStructureAndReturnsItsResult(): void { $facade = $this->getAccessibleMock(StructureFacade::class, null, [], '', false); @@ -37,9 +36,7 @@ final class StructureFacadeTest extends UnitTestCase self::assertInstanceOf(FlashMessageQueue::class, $status); } - /** - * @test - */ + #[Test] public function fixCallsFixOfStructureAndReturnsItsResult(): void { $facade = $this->getAccessibleMock(StructureFacade::class, null, [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/Service/ClearTableServiceTest.php b/typo3/sysext/install/Tests/Unit/Service/ClearTableServiceTest.php index 455a74c462fc..b6efbfe20685 100644 --- a/typo3/sysext/install/Tests/Unit/Service/ClearTableServiceTest.php +++ b/typo3/sysext/install/Tests/Unit/Service/ClearTableServiceTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\Service\ClearTableService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ClearTableServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function clearSelectedTableThrowsWithInvalidTableName(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/install/Tests/Unit/Service/CoreUpdateServiceTest.php b/typo3/sysext/install/Tests/Unit/Service/CoreUpdateServiceTest.php index 730b5c12d11e..273e00c660b1 100644 --- a/typo3/sysext/install/Tests/Unit/Service/CoreUpdateServiceTest.php +++ b/typo3/sysext/install/Tests/Unit/Service/CoreUpdateServiceTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Messaging\FlashMessageQueue; use TYPO3\CMS\Install\Service\CoreUpdateService; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class CoreUpdateServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getMessagesReturnsPreviouslySetMessage(): void { $instance = $this->getAccessibleMock(CoreUpdateService::class, null, [], '', false); @@ -34,9 +33,7 @@ final class CoreUpdateServiceTest extends UnitTestCase self::assertSame($aMessage, $instance->getMessages()); } - /** - * @test - */ + #[Test] public function isCoreUpdateEnabledReturnsTrueForEnvironmentVariableNotSet(): void { if (defined('TYPO3_COMPOSER_MODE') && TYPO3_COMPOSER_MODE) { @@ -48,9 +45,7 @@ final class CoreUpdateServiceTest extends UnitTestCase self::assertTrue($instance->isCoreUpdateEnabled()); } - /** - * @test - */ + #[Test] public function isCoreUpdateEnabledReturnsFalseFor_TYPO3_DISABLE_CORE_UPDATER_EnvironmentVariableSet(): void { $instance = $this->getAccessibleMock(CoreUpdateService::class, null, [], '', false); @@ -59,9 +54,7 @@ final class CoreUpdateServiceTest extends UnitTestCase self::assertFalse($instance->isCoreUpdateEnabled()); } - /** - * @test - */ + #[Test] public function isCoreUpdateEnabledReturnsFalseFor_REDIRECT_TYPO3_DISABLE_CORE_UPDATER_EnvironmentVariableSet(): void { $instance = $this->getAccessibleMock(CoreUpdateService::class, null, [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/Service/CoreVersionServiceTest.php b/typo3/sysext/install/Tests/Unit/Service/CoreVersionServiceTest.php index c93639a3d65c..9e160470edf3 100644 --- a/typo3/sysext/install/Tests/Unit/Service/CoreVersionServiceTest.php +++ b/typo3/sysext/install/Tests/Unit/Service/CoreVersionServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\JsonResponse; use TYPO3\CMS\Core\Http\RequestFactory; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -36,9 +38,7 @@ final class CoreVersionServiceTest extends UnitTestCase GeneralUtility::addInstance(RequestFactory::class, $requestFactoryMock); } - /** - * @test - */ + #[Test] public function isVersionActivelyCommunityMaintainedReturnsFalseIfMaintainedUntilIsNotSet(): void { $this->setUpApiResponse( @@ -58,9 +58,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function isVersionActivelyCommunityMaintainedReturnsTrueIfMaintainedUntilIsAfterToday(): void { $this->setUpApiResponse( @@ -81,9 +79,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function isVersionActivelyCommunityMaintainedReturnsFalseIfMaintainedUntilWasBeforeToday(): void { $this->setUpApiResponse( @@ -104,9 +100,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function isVersionActivelyEltsMaintainedReturnsFalseIfEltsUntilIsNotSet(): void { $this->setUpApiResponse( @@ -126,9 +120,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function isVersionActivelyEltsMaintainedReturnsTrueIfEltsUntilIsAfterToday(): void { $this->setUpApiResponse( @@ -149,9 +141,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function isVersionActivelyEltsMaintainedReturnsFalseIfEltsUntilWasBeforeToday(): void { $this->setUpApiResponse( @@ -174,8 +164,8 @@ final class CoreVersionServiceTest extends UnitTestCase /** * The maintenance date ranges are built relatively to avoid the need to adjust them once the dates passed - * @test */ + #[Test] public function getSupportedMajorReleasesReturnsListOfVersions(): void { $this->setUpApiResponse( @@ -235,9 +225,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertSame($expectation, $result); } - /** - * @test - */ + #[Test] public function isPatchReleaseSuitableForUpdateReturnsTrueIfNewerVersionExists(): void { $this->setUpApiResponse( @@ -262,9 +250,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function isPatchReleaseSuitableForUpdateReturnsFalseIfNoNewerVersionExists(): void { $this->setUpApiResponse( @@ -289,9 +275,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function isUpdateSecurityRelevantReturnsTrueIfNewerSecurityUpdateExists(): void { $coreRelease = new CoreRelease('8.7.5', new \DateTimeImmutable('2017-09-05T10:54:18+00:00'), 'security', 'e79466bffc81f270f5c262d01a125e82b2e1989a'); @@ -335,9 +319,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertTrue($result); } - /** - * @test - */ + #[Test] public function isUpdateSecurityRelevantReturnsFalseIfNewerSecurityUpdateExistsButCannotGetUpgraded(): void { $coreRelease = new CoreRelease('8.7.6', new \DateTimeImmutable('2017-09-05T10:54:18+00:00'), 'security', 'e79466bffc81f270f5c262d01a125e82b2e1989a'); @@ -381,9 +363,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function isUpdateSecurityRelevantReturnsFalseIfNoNewerSecurityUpdatesExist(): void { $coreRelease = new CoreRelease('8.7.6', new \DateTimeImmutable('2017-09-05T10:54:18+00:00'), 'security', 'e79466bffc81f270f5c262d01a125e82b2e1989a'); @@ -419,10 +399,8 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - * @dataProvider isCurrentInstalledVersionEltsReturnsExpectedResultDataProvider - */ + #[DataProvider('isCurrentInstalledVersionEltsReturnsExpectedResultDataProvider')] + #[Test] public function isCurrentInstalledVersionEltsReturnsExpectedResult(string $major, string $version, bool $expectation): void { $this->setUpApiResponse( @@ -473,10 +451,8 @@ final class CoreVersionServiceTest extends UnitTestCase ]; } - /** - * @dataProvider getYoungestPatchReleaseReturnsLatestReleaseForCurrentMajorVersionDataProvider - * @test - */ + #[DataProvider('getYoungestPatchReleaseReturnsLatestReleaseForCurrentMajorVersionDataProvider')] + #[Test] public function getYoungestPatchReleaseReturnsLatestReleaseForCurrentMajorVersion(string $major, array $response): void { $this->setUpApiResponse( @@ -526,9 +502,7 @@ final class CoreVersionServiceTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function getYoungestCommunityPatchReleaseReturnsLatestNonEltsRelease(): void { $this->setUpApiResponse( @@ -581,9 +555,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertSame('8.7.30', $result->getVersion()); } - /** - * @test - */ + #[Test] public function isInstalledVersionAReleasedVersionReturnsTrueForNonDevelopmentVersion(): void { $instance = $this->getAccessibleMock(CoreVersionService::class, ['getInstalledVersion'], [], '', false); @@ -591,9 +563,7 @@ final class CoreVersionServiceTest extends UnitTestCase self::assertTrue($instance->isInstalledVersionAReleasedVersion()); } - /** - * @test - */ + #[Test] public function isInstalledVersionAReleasedVersionReturnsFalseForDevelopmentVersion(): void { $instance = $this->getAccessibleMock(CoreVersionService::class, ['getInstalledVersion'], [], '', false); diff --git a/typo3/sysext/install/Tests/Unit/Service/Typo3tempFileServiceTest.php b/typo3/sysext/install/Tests/Unit/Service/Typo3tempFileServiceTest.php index 7917d6457e24..60de68d08da5 100644 --- a/typo3/sysext/install/Tests/Unit/Service/Typo3tempFileServiceTest.php +++ b/typo3/sysext/install/Tests/Unit/Service/Typo3tempFileServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Resource\ProcessedFileRepository; use TYPO3\CMS\Core\Resource\StorageRepository; use TYPO3\CMS\Install\Service\Typo3tempFileService; @@ -24,9 +25,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class Typo3tempFileServiceTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function clearAssetsFolderThrowsWithInvalidPath(): void { $this->expectException(\RuntimeException::class); @@ -37,9 +36,7 @@ final class Typo3tempFileServiceTest extends UnitTestCase $subject->clearAssetsFolder('../foo'); } - /** - * @test - */ + #[Test] public function clearAssetsFolderThrowsIfPathDoesNotStartWithTypotempAssets(): void { $this->expectException(\RuntimeException::class); diff --git a/typo3/sysext/install/Tests/Unit/SystemEnvironment/DatabaseCheck/Platform/MySqlTest.php b/typo3/sysext/install/Tests/Unit/SystemEnvironment/DatabaseCheck/Platform/MySqlTest.php index 869860f3357c..f2f89fed5297 100644 --- a/typo3/sysext/install/Tests/Unit/SystemEnvironment/DatabaseCheck/Platform/MySqlTest.php +++ b/typo3/sysext/install/Tests/Unit/SystemEnvironment/DatabaseCheck/Platform/MySqlTest.php @@ -20,6 +20,8 @@ namespace TYPO3\CMS\Install\Tests\Unit\SystemEnvironment\DatabaseCheck\Platform; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\MariaDBPlatform; use Doctrine\DBAL\Platforms\MySQLPlatform; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; @@ -79,10 +81,8 @@ final class MySqlTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider checkMySQLOrMariaDBVersionReportsExpectedStatusDataProvider - */ + #[DataProvider('checkMySQLOrMariaDBVersionReportsExpectedStatusDataProvider')] + #[Test] public function checkMySQLOrMariaDBVersionReportsExpectedStatus( AbstractPlatform $platform, string $serverVersionString, diff --git a/typo3/sysext/install/Tests/Unit/SystemEnvironment/ServerResponse/ContentSecurityPolicyHeaderTest.php b/typo3/sysext/install/Tests/Unit/SystemEnvironment/ServerResponse/ContentSecurityPolicyHeaderTest.php index 3a828ec9613f..05002b44a569 100644 --- a/typo3/sysext/install/Tests/Unit/SystemEnvironment/ServerResponse/ContentSecurityPolicyHeaderTest.php +++ b/typo3/sysext/install/Tests/Unit/SystemEnvironment/ServerResponse/ContentSecurityPolicyHeaderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\SystemEnvironment\ServerResponse; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Install\SystemEnvironment\ServerResponse\ContentSecurityPolicyHeader; @@ -93,10 +95,8 @@ final class ContentSecurityPolicyHeaderTest extends TestCase ]; } - /** - * @test - * @dataProvider mitigatesCrossSiteScriptingDataProvider - */ + #[DataProvider('mitigatesCrossSiteScriptingDataProvider')] + #[Test] public function mitigatesCrossSiteScripting(string $header, ?string $fileName, $expectation): void { $subject = new ContentSecurityPolicyHeader($header); diff --git a/typo3/sysext/install/Tests/Unit/Updates/RowUpdater/L18nDiffsourceToJsonMigrationTest.php b/typo3/sysext/install/Tests/Unit/Updates/RowUpdater/L18nDiffsourceToJsonMigrationTest.php index 0518bf8a648c..56f2fbf13bac 100644 --- a/typo3/sysext/install/Tests/Unit/Updates/RowUpdater/L18nDiffsourceToJsonMigrationTest.php +++ b/typo3/sysext/install/Tests/Unit/Updates/RowUpdater/L18nDiffsourceToJsonMigrationTest.php @@ -17,23 +17,21 @@ declare(strict_types=1); namespace TYPO3\CMS\Install\Tests\Unit\Updates\RowUpdater; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Install\Updates\RowUpdater\L18nDiffsourceToJsonMigration; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class L18nDiffsourceToJsonMigrationTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function hasPotentialUpdateForTableReturnsFalseIfTableIsNotLocalizable(): void { $GLOBALS['TCA']['testTable'] = []; self::assertFalse((new L18nDiffsourceToJsonMigration())->hasPotentialUpdateForTable('testTable')); } - /** - * @test - */ + #[Test] public function hasPotentialUpdateForTableReturnsTrueIfTableIsLocalizable(): void { $GLOBALS['TCA']['testTable'] = [ @@ -46,9 +44,7 @@ final class L18nDiffsourceToJsonMigrationTest extends UnitTestCase self::assertTrue((new L18nDiffsourceToJsonMigration())->hasPotentialUpdateForTable('testTable')); } - /** - * @test - */ + #[Test] public function updateTableRowDoesNothingIfFieldIsNotSet(): void { $GLOBALS['TCA']['testTable'] = [ @@ -107,12 +103,11 @@ final class L18nDiffsourceToJsonMigrationTest extends UnitTestCase } /** - * @test - * @dataProvider updateTableRowUpdatesFieldDataProvider - * * @param mixed $input * @param mixed $expected */ + #[DataProvider('updateTableRowUpdatesFieldDataProvider')] + #[Test] public function updateTableRowUpdatesField($input, $expected): void { $GLOBALS['TCA']['testTable'] = [ diff --git a/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php b/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php index 048cec02a9a8..545c1861f9f8 100644 --- a/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php +++ b/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php @@ -20,6 +20,8 @@ namespace TYPO3\CMS\Linkvalidator\Tests\Unit\Linktype; use GuzzleHttp\Cookie\CookieJar; use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Psr7\Response; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Http\Client\GuzzleClientFactory; use TYPO3\CMS\Core\Http\RequestFactory; @@ -42,9 +44,7 @@ final class ExternalLinktypeTest extends UnitTestCase return $languageServiceMock; } - /** - * @test - */ + #[Test] public function checkLinkWithExternalUrlNotFoundReturnsFalse(): void { $response = new Response(404); @@ -68,9 +68,7 @@ final class ExternalLinktypeTest extends UnitTestCase self::assertFalse($result); } - /** - * @test - */ + #[Test] public function checkLinkWithExternalUrlNotFoundResultsNotFoundErrorType(): void { $response = new Response(404); @@ -172,10 +170,8 @@ final class ExternalLinktypeTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider preprocessUrlsDataProvider - */ + #[DataProvider('preprocessUrlsDataProvider')] + #[Test] public function preprocessUrlReturnsCorrectString(string $inputUrl, $expectedResult): void { $subject = new ExternalLinktype(new RequestFactory(new GuzzleClientFactory())); @@ -184,9 +180,7 @@ final class ExternalLinktypeTest extends UnitTestCase self::assertEquals($result, $expectedResult); } - /** - * @test - */ + #[Test] public function setAdditionalConfigMergesHeaders(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); @@ -213,8 +207,8 @@ final class ExternalLinktypeTest extends UnitTestCase /** * If the timeout is not set via TSconfig, core $GLOBALS['TYPO3_CONF_VARS']['HTTP']['timeout'] should * be used. Which is the case if timeout is not passed to the request() function. - * @test */ + #[Test] public function requestWithNoTimeoutIsCalledIfTimeoutNotSetByTsConfig(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); @@ -238,9 +232,7 @@ final class ExternalLinktypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setAdditionalConfigOverwritesUserAgent(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); @@ -264,9 +256,7 @@ final class ExternalLinktypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setAdditionalConfigAppendsAgentUrlIfConfigured(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); @@ -290,9 +280,7 @@ final class ExternalLinktypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setAdditionalConfigAppendsEmailIfConfigured(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); @@ -316,9 +304,7 @@ final class ExternalLinktypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setAdditionalConfigAppendsEmailFromGlobalsIfConfigured(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); @@ -342,9 +328,7 @@ final class ExternalLinktypeTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function setAdditionalConfigSetsRangeAndMethod(): void { $requestFactoryMock = $this->getMockBuilder(RequestFactory::class)->disableOriginalConstructor()->getMock(); diff --git a/typo3/sysext/linkvalidator/Tests/Unit/Linktype/LinktypeRegistryTest.php b/typo3/sysext/linkvalidator/Tests/Unit/Linktype/LinktypeRegistryTest.php index 0342055d1ff8..cdfe5597a9dd 100644 --- a/typo3/sysext/linkvalidator/Tests/Unit/Linktype/LinktypeRegistryTest.php +++ b/typo3/sysext/linkvalidator/Tests/Unit/Linktype/LinktypeRegistryTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Linkvalidator\Tests\Unit\Linktype; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Linkvalidator\Linktype\LinktypeInterface; use TYPO3\CMS\Linkvalidator\Linktype\LinktypeRegistry; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class LinktypeRegistryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function registrationRequiresInterface(): void { $linktypes = [ @@ -40,9 +39,7 @@ final class LinktypeRegistryTest extends UnitTestCase self::assertEquals(['valid-identifier'], $linkTypeRegistry->getIdentifiers()); } - /** - * @test - */ + #[Test] public function registrationThrowsExceptionOnEmptyIdentifier(): void { $linktypes = [ @@ -55,9 +52,7 @@ final class LinktypeRegistryTest extends UnitTestCase new LinktypeRegistry($linktypes); } - /** - * @test - */ + #[Test] public function registrationThrowsExceptionOnDuplicateIdentifier(): void { $linktypes = [ diff --git a/typo3/sysext/linkvalidator/Tests/Unit/Repository/PagesRepositoryTest.php b/typo3/sysext/linkvalidator/Tests/Unit/Repository/PagesRepositoryTest.php index e7e50ce33397..991181cc3e50 100644 --- a/typo3/sysext/linkvalidator/Tests/Unit/Repository/PagesRepositoryTest.php +++ b/typo3/sysext/linkvalidator/Tests/Unit/Repository/PagesRepositoryTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Linkvalidator\Tests\Unit\Repository; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Linkvalidator\Repository\PagesRepository; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class PagesRepositoryTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function doesRootLineContainHiddenPagesReturnTrueForCurrentPage(): void { $subject = new PagesRepository(); diff --git a/typo3/sysext/lowlevel/Tests/Unit/Controller/DatabaseIntegrityControllerTest.php b/typo3/sysext/lowlevel/Tests/Unit/Controller/DatabaseIntegrityControllerTest.php index 33edf0366ded..c25692e21af3 100644 --- a/typo3/sysext/lowlevel/Tests/Unit/Controller/DatabaseIntegrityControllerTest.php +++ b/typo3/sysext/lowlevel/Tests/Unit/Controller/DatabaseIntegrityControllerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Lowlevel\Tests\Unit\Controller; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Lowlevel\Controller\DatabaseIntegrityController; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -104,10 +106,8 @@ final class DatabaseIntegrityControllerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getSubscriptReturnsExpectedValuesDataProvider - */ + #[DataProvider('getSubscriptReturnsExpectedValuesDataProvider')] + #[Test] public function getSubscriptReturnsExpectedValues($input, array $expectedArray): void { $subject = $this->getAccessibleMock(DatabaseIntegrityController::class, null, [], '', false); diff --git a/typo3/sysext/lowlevel/Tests/Unit/Event/ModifyBlindedConfigurationOptionsEventTest.php b/typo3/sysext/lowlevel/Tests/Unit/Event/ModifyBlindedConfigurationOptionsEventTest.php index 192643b3a2cd..0042e941a991 100644 --- a/typo3/sysext/lowlevel/Tests/Unit/Event/ModifyBlindedConfigurationOptionsEventTest.php +++ b/typo3/sysext/lowlevel/Tests/Unit/Event/ModifyBlindedConfigurationOptionsEventTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Lowlevel\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Lowlevel\Event\ModifyBlindedConfigurationOptionsEvent; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ModifyBlindedConfigurationOptionsEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $identifier = 'myidentifier'; diff --git a/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php b/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php index ee355c7da850..c91cf0153a12 100644 --- a/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php +++ b/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Opendocs\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Opendocs\Service\OpenDocumentService; @@ -33,9 +34,7 @@ final class OpenDocumentServiceTest extends UnitTestCase $GLOBALS['BE_USER'] = $this->backendUser; } - /** - * @test - */ + #[Test] public function getsOpenDocumentsFromUserSession(): void { $this->backendUser->method('getModuleData')->with('FormEngine', 'ses')->willReturn([ @@ -54,9 +53,7 @@ final class OpenDocumentServiceTest extends UnitTestCase self::assertEquals($expected, $openDocuments); } - /** - * @test - */ + #[Test] public function handlesUserSessionWithoutOpenDocuments(): void { $this->backendUser->method('getModuleData')->with('FormEngine', 'ses')->willReturn(null); @@ -65,9 +62,7 @@ final class OpenDocumentServiceTest extends UnitTestCase self::assertEquals([], $openDocuments); } - /** - * @test - */ + #[Test] public function getsRecentDocumentsFromUserSession(): void { $this->backendUser->method('getModuleData')->with('opendocs::recent')->willReturn([ @@ -81,9 +76,7 @@ final class OpenDocumentServiceTest extends UnitTestCase self::assertEquals($expected, $recentDocuments); } - /** - * @test - */ + #[Test] public function handlesUserSessionWithoutRecentDocuments(): void { $this->backendUser->method('getModuleData')->with('opendocs::recent')->willReturn(null); @@ -92,9 +85,7 @@ final class OpenDocumentServiceTest extends UnitTestCase self::assertEquals([], $recentDocuments); } - /** - * @test - */ + #[Test] public function closesDocument(): void { $this->backendUser->method('getModuleData')->willReturnMap([ diff --git a/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php b/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php index f2b5096ad482..e22ee3915384 100644 --- a/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Evaluation; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Redirects\Evaluation\SourceHost; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -66,10 +68,8 @@ final class SourceHostTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider evaluateFieldValueWorksWithDifferentInputsDataProvider - */ + #[DataProvider('evaluateFieldValueWorksWithDifferentInputsDataProvider')] + #[Test] public function evaluateFieldValueWorksWithDifferentInputs(string $input, string $expected): void { $subject = new SourceHost(); diff --git a/typo3/sysext/redirects/Tests/Unit/Event/AfterAutoCreateRedirectHasBeenPersistedEventTest.php b/typo3/sysext/redirects/Tests/Unit/Event/AfterAutoCreateRedirectHasBeenPersistedEventTest.php index 0a96449f1da3..339bb5252b47 100644 --- a/typo3/sysext/redirects/Tests/Unit/Event/AfterAutoCreateRedirectHasBeenPersistedEventTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Event/AfterAutoCreateRedirectHasBeenPersistedEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Redirects\Event\AfterAutoCreateRedirectHasBeenPersistedEvent; @@ -27,9 +28,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AfterAutoCreateRedirectHasBeenPersistedEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function afterAutoCreateRedirectHasBeenPersistedGettersReturnsCreationValues(): void { $source = new PlainSlugReplacementRedirectSource( diff --git a/typo3/sysext/redirects/Tests/Unit/Event/BeforeRedirectMatchDomainEventTest.php b/typo3/sysext/redirects/Tests/Unit/Event/BeforeRedirectMatchDomainEventTest.php index 62e3cb0e7732..a4f541f8ff99 100644 --- a/typo3/sysext/redirects/Tests/Unit/Event/BeforeRedirectMatchDomainEventTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Event/BeforeRedirectMatchDomainEventTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Redirects\Event\BeforeRedirectMatchDomainEvent; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class BeforeRedirectMatchDomainEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function getterReturnsConstructorSetValues(): void { $event = new BeforeRedirectMatchDomainEvent('acme.com', '/some-path', '?param=value', '*'); @@ -36,9 +35,7 @@ final class BeforeRedirectMatchDomainEventTest extends UnitTestCase self::assertNull($event->getMatchedRedirect()); } - /** - * @test - */ + #[Test] public function matchedRedirectSetterReturnsSetMatchedRedirectAndCanBeSetToNull(): void { $redirect = ['some-redirect']; diff --git a/typo3/sysext/redirects/Tests/Unit/Event/ModifyAutoCreateRedirectRecordBeforePersistingEventTest.php b/typo3/sysext/redirects/Tests/Unit/Event/ModifyAutoCreateRedirectRecordBeforePersistingEventTest.php index 0edd3b3d34b1..d7a8c107a2fa 100644 --- a/typo3/sysext/redirects/Tests/Unit/Event/ModifyAutoCreateRedirectRecordBeforePersistingEventTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Event/ModifyAutoCreateRedirectRecordBeforePersistingEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Redirects\Event\ModifyAutoCreateRedirectRecordBeforePersistingEvent; @@ -56,9 +57,7 @@ final class ModifyAutoCreateRedirectRecordBeforePersistingEventTest extends Unit self::assertSame($redirectRecord, $event->getRedirectRecord()); } - /** - * @test - */ + #[Test] public function modifyAutoCreateRedirectRecordBeforePersistingRedirectRecordCanBeSet(): void { $source = new PlainSlugReplacementRedirectSource( diff --git a/typo3/sysext/redirects/Tests/Unit/Event/ModifyRedirectManagementControllerViewDataEventTest.php b/typo3/sysext/redirects/Tests/Unit/Event/ModifyRedirectManagementControllerViewDataEventTest.php index 63976acb0f9d..9c5cde8ca769 100644 --- a/typo3/sysext/redirects/Tests/Unit/Event/ModifyRedirectManagementControllerViewDataEventTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Event/ModifyRedirectManagementControllerViewDataEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\View\ViewInterface; use TYPO3\CMS\Redirects\Event\ModifyRedirectManagementControllerViewDataEvent; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ModifyRedirectManagementControllerViewDataEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnsSetValues(): void { $demand = $this->createMock(Demand::class); diff --git a/typo3/sysext/redirects/Tests/Unit/Event/SlugRedirectChangeItemCreatedEventTest.php b/typo3/sysext/redirects/Tests/Unit/Event/SlugRedirectChangeItemCreatedEventTest.php index 32b810e03bdd..07eeadef78f7 100644 --- a/typo3/sysext/redirects/Tests/Unit/Event/SlugRedirectChangeItemCreatedEventTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Event/SlugRedirectChangeItemCreatedEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Redirects\Event\SlugRedirectChangeItemCreatedEvent; @@ -26,9 +27,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SlugRedirectChangeItemCreatedEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function slugRedirectChangeItemGetterReturnsChangeItemUsedForInstantiation(): void { $changeItem = new SlugRedirectChangeItem( @@ -46,9 +45,7 @@ final class SlugRedirectChangeItemCreatedEventTest extends UnitTestCase self::assertSame($changeItem, $event->getSlugRedirectChangeItem()); } - /** - * @test - */ + #[Test] public function slugRedirectChangeItemGetterReturnsChangedItemSetBySetter(): void { $changeItem = new SlugRedirectChangeItem( diff --git a/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php b/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php index e9f483b4d94f..42008ad7151d 100644 --- a/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php +++ b/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\FormDataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\SiteFinder; use TYPO3\CMS\Redirects\FormDataProvider\ValuePickerItemDataProvider; @@ -39,9 +40,7 @@ final class ValuePickerItemDataProviderTest extends UnitTestCase ], ]; - /** - * @test - */ + #[Test] public function addDataDoesNothingIfNoRedirectDataGiven(): void { $result = [ @@ -54,9 +53,7 @@ final class ValuePickerItemDataProviderTest extends UnitTestCase self::assertSame($result, $actualResult); } - /** - * @test - */ + #[Test] public function addDataAddsHostsAsKeyAndValueToRedirectValuePicker(): void { // no results for now @@ -75,9 +72,7 @@ final class ValuePickerItemDataProviderTest extends UnitTestCase self::assertSame($expected, $actualResult); } - /** - * @test - */ + #[Test] public function addDataDoesNotChangeResultSetIfNoSitesAreFound(): void { $siteFinderMock = $this->getMockBuilder(SiteFinder::class)->disableOriginalConstructor()->getMock(); diff --git a/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/RedirectSourceCollectionTest.php b/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/RedirectSourceCollectionTest.php index 8e44201bb003..6d0656703a1b 100644 --- a/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/RedirectSourceCollectionTest.php +++ b/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/RedirectSourceCollectionTest.php @@ -17,24 +17,21 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\RedirectUpdate; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Redirects\RedirectUpdate\RedirectSourceCollection; use TYPO3\CMS\Redirects\RedirectUpdate\RedirectSourceInterface; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class RedirectSourceCollectionTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function countReturnsZeroIfNoItemsAdded(): void { $count = (new RedirectSourceCollection())->count(); self::assertSame(0, $count); } - /** - * @test - */ + #[Test] public function countReturnsCorrectCountOfItemsAdded(): void { $item = $this->createMock(RedirectSourceInterface::class); @@ -42,9 +39,7 @@ final class RedirectSourceCollectionTest extends UnitTestCase self::assertSame(3, $subject->count()); } - /** - * @test - */ + #[Test] public function allReturnsItemsInTheSameOrderTheyHaveBeenAdded(): void { $item1 = $this->createMock(RedirectSourceInterface::class); @@ -54,9 +49,7 @@ final class RedirectSourceCollectionTest extends UnitTestCase self::assertSame([$item3, $item1, $item2], $subject->all()); } - /** - * @test - */ + #[Test] public function throwsTypeExceptionIfInvalidItemIsAdded(): void { $this->expectException(\TypeError::class); diff --git a/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/SlugRedirectChangeItemTest.php b/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/SlugRedirectChangeItemTest.php index a8702d1b6197..61dfc88d55d4 100644 --- a/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/SlugRedirectChangeItemTest.php +++ b/typo3/sysext/redirects/Tests/Unit/RedirectUpdate/SlugRedirectChangeItemTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\RedirectUpdate; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Site\Entity\Site; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Redirects\RedirectUpdate\RedirectSourceCollection; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class SlugRedirectChangeItemTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function withChangedReturnsNewInstanceWithChangedSet(): void { $changeItem = $this->createInitialChangeItem(); @@ -36,9 +35,7 @@ final class SlugRedirectChangeItemTest extends UnitTestCase self::assertSame('/changed', $extendedChangeItem->getChanged()['slug'] ?? null); } - /** - * @test - */ + #[Test] public function withSourcesCollectionReturnsNewInstanceWithCorrectSourcesCollection(): void { $changeItem = $this->createInitialChangeItem(); diff --git a/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php b/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php index 40011c67d987..7a0f8ad5d3a2 100644 --- a/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Repository; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Redirects\Repository\Demand; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -36,10 +38,8 @@ final class DemandTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getParametersRespectsDemandStateStateDataProvider - */ + #[DataProvider('getParametersRespectsDemandStateStateDataProvider')] + #[Test] public function getParametersRespectsDemandState(array $input, array $expected): void { self::assertEquals($expected, (new Demand(...$input))->getParameters()); diff --git a/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php b/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php index 4805bcd4b8b3..148b7d7f59de 100644 --- a/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php +++ b/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\Service; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\NullLogger; use TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher; @@ -61,9 +63,7 @@ final class RedirectServiceTest extends UnitTestCase $GLOBALS['SIM_ACCESS_TIME'] = 42; } - /** - * @test - */ + #[Test] public function matchRedirectReturnsNullIfNoRedirectsExist(): void { $this->redirectCacheServiceMock->method('getRedirects')->willReturnMap([ @@ -76,10 +76,8 @@ final class RedirectServiceTest extends UnitTestCase self::assertNull($result); } - /** - * @test - * @dataProvider matchRedirectReturnsRedirectOnFlatMatchDataProvider - */ + #[DataProvider('matchRedirectReturnsRedirectOnFlatMatchDataProvider')] + #[Test] public function matchRedirectReturnsRedirectOnFlatMatch(string $path = ''): void { $row = [ @@ -137,9 +135,7 @@ final class RedirectServiceTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function matchRedirectReturnsRedirectOnRespectQueryParametersMatch(): void { $row = [ @@ -174,9 +170,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row, $result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsRedirectOnRespectQueryParametersMatchWithSlash(): void { $row = [ @@ -211,9 +205,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row, $result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsRedirectOnFullRespectQueryParametersMatch(): void { $row = [ @@ -248,9 +240,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row, $result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsNullOnPartialRespectQueryParametersMatch(): void { $row = [ @@ -285,9 +275,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertNull($result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsMatchingRedirectWithMatchingQueryParametersOverMatchingPath(): void { $row1 = [ @@ -338,9 +326,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row2, $result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsRedirectSpecificToDomainOnFlatMatchIfSpecificAndNonSpecificExist(): void { $row1 = [ @@ -390,9 +376,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row1, $result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsRedirectOnRegexMatch(): void { $row = [ @@ -427,9 +411,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row, $result); } - /** - * @test - */ + #[Test] public function matchRedirectReturnsOnlyActiveRedirects(): void { $row1 = [ @@ -473,9 +455,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertSame($row2, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlReturnsNullIfUrlCouldNotBeResolved(): void { $this->linkServiceMock->method('resolve')->with(self::anything())->willThrowException(new InvalidPathException('', 1516531195)); @@ -485,9 +465,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertNull($result); } - /** - * @test - */ + #[Test] public function getTargetUrlReturnsUrlForTypeUrl(): void { $redirectTargetMatch = [ @@ -510,9 +488,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertEquals($uri, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlReturnsUrlForTypeFile(): void { $fileMock = $this->getMockBuilder(File::class)->disableOriginalConstructor()->getMock(); @@ -537,9 +513,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertEquals($uri, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlReturnsUrlForTypeFolder(): void { $folderMock = $this->getMockBuilder(Folder::class)->disableOriginalConstructor()->getMock(); @@ -565,9 +539,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertEquals($uri, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlRespectsForceHttps(): void { $redirectTargetMatch = [ @@ -590,9 +562,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertEquals($uri, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlAddsExistingQueryParams(): void { $redirectTargetMatch = [ @@ -616,9 +586,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertEquals($uri, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlRespectsAdditionalParametersFromTypolink(): void { $redirectService = $this->getAccessibleMock( @@ -663,9 +631,7 @@ final class RedirectServiceTest extends UnitTestCase self::assertEquals($uri, $result); } - /** - * @test - */ + #[Test] public function getTargetUrlReplaceRegExpCaptureGroup(): void { $redirectTargetMatch = [ @@ -733,10 +699,8 @@ final class RedirectServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getTargetUrlWithQueryReplaceRegExpCaptureGroupDataProvider - */ + #[DataProvider('getTargetUrlWithQueryReplaceRegExpCaptureGroupDataProvider')] + #[Test] public function getTargetUrlWithQueryReplaceRegExpCaptureGroup( string $redirectSourcePath, string $redirectTarget, @@ -814,10 +778,8 @@ final class RedirectServiceTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider getTargetUrlWithQueryAndSlashReplaceRegExpCaptureGroupDataProvider - */ + #[DataProvider('getTargetUrlWithQueryAndSlashReplaceRegExpCaptureGroupDataProvider')] + #[Test] public function getTargetUrlWithQueryAndSlashReplaceRegExpCaptureGroup( string $redirectSourcePath, string $redirectTarget, diff --git a/typo3/sysext/redirects/Tests/Unit/ViewHelpers/TargetPageIdViewHelperTest.php b/typo3/sysext/redirects/Tests/Unit/ViewHelpers/TargetPageIdViewHelperTest.php index 67eb486e6d89..85a7083cbee6 100644 --- a/typo3/sysext/redirects/Tests/Unit/ViewHelpers/TargetPageIdViewHelperTest.php +++ b/typo3/sysext/redirects/Tests/Unit/ViewHelpers/TargetPageIdViewHelperTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Redirects\Tests\Unit\ViewHelpers; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Fluid\Core\Rendering\RenderingContext; use TYPO3\CMS\Redirects\ViewHelpers\TargetPageIdViewHelper; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TargetPageIdViewHelperTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function nonTypo3TargetInRenderStaticReturnsEmptyString(): void { $renderingContext = new class () extends RenderingContext { @@ -35,9 +34,7 @@ final class TargetPageIdViewHelperTest extends UnitTestCase self::assertSame('', TargetPageIdViewHelper::renderStatic($args, static fn() => '', $renderingContext)); } - /** - * @test - */ + #[Test] public function emptyTargetInRenderStaticReturnsEmptyString(): void { $renderingContext = new class () extends RenderingContext { diff --git a/typo3/sysext/reports/Tests/Unit/Report/Status/StatusTest.php b/typo3/sysext/reports/Tests/Unit/Report/Status/StatusTest.php index c213eb401f3a..39d2e6a0062a 100644 --- a/typo3/sysext/reports/Tests/Unit/Report/Status/StatusTest.php +++ b/typo3/sysext/reports/Tests/Unit/Report/Status/StatusTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Reports\Tests\Unit\Report\Status; +use PHPUnit\Framework\Attributes\Test; use Psr\Container\ContainerInterface; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Backend\View\BackendViewFactory; @@ -43,9 +44,7 @@ final class StatusTest extends UnitTestCase $GLOBALS['LANG'] = $mockLanguageService; } - /** - * @test - */ + #[Test] public function getSystemStatusCollectsAllStatusProvider(): void { $statusProviderArguments = [ @@ -87,9 +86,7 @@ final class StatusTest extends UnitTestCase self::assertSame($httpHeader[1], $result[$statusProviderArguments[2][1]][0]->getValue()); } - /** - * @test - */ + #[Test] public function getDetailedSystemStatusReturnsOnlyExtendedStatuses(): void { $statusProviderArguments = [ diff --git a/typo3/sysext/reports/Tests/Unit/Report/Status/Typo3StatusTest.php b/typo3/sysext/reports/Tests/Unit/Report/Status/Typo3StatusTest.php index 4cf6ead46819..5c374c60b6f3 100644 --- a/typo3/sysext/reports/Tests/Unit/Report/Status/Typo3StatusTest.php +++ b/typo3/sysext/reports/Tests/Unit/Report/Status/Typo3StatusTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Reports\Tests\Unit\Report\Status; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity; use TYPO3\CMS\Reports\Report\Status\Typo3Status; @@ -31,9 +32,7 @@ final class Typo3StatusTest extends UnitTestCase $GLOBALS['LANG'] = $mockLanguageService; } - /** - * @test - */ + #[Test] public function getStatusReturnsXclassStatusObjectWithSeverityOkIfNoXclassExists(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'] = []; @@ -43,9 +42,7 @@ final class Typo3StatusTest extends UnitTestCase self::assertSame(ContextualFeedbackSeverity::OK, $statusObject->getSeverity()); } - /** - * @test - */ + #[Test] public function getStatusReturnsXclassStatusObjectWithSeverityNoticeIfXclassExists(): void { $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'] = [ diff --git a/typo3/sysext/scheduler/Tests/Unit/CronCommand/CronCommandTest.php b/typo3/sysext/scheduler/Tests/Unit/CronCommand/CronCommandTest.php index bb43db833119..abb340deffb3 100644 --- a/typo3/sysext/scheduler/Tests/Unit/CronCommand/CronCommandTest.php +++ b/typo3/sysext/scheduler/Tests/Unit/CronCommand/CronCommandTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Scheduler\Tests\Unit\CronCommand; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Scheduler\CronCommand\CronCommand; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -51,18 +53,14 @@ final class CronCommandTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function constructorSetsNormalizedCronCommandSections(): void { $instance = new CronCommand('2-3 * * * *'); self::assertSame(['2,3', '*', '*', '*', '*'], $instance->getCronCommandSections()); } - /** - * @test - */ + #[Test] public function constructorThrowsExceptionForInvalidCronCommand(): void { $this->expectException(\InvalidArgumentException::class); @@ -70,9 +68,7 @@ final class CronCommandTest extends UnitTestCase new CronCommand('61 * * * *'); } - /** - * @test - */ + #[Test] public function constructorSetsTimestampToNowPlusOneMinuteRoundedDownToSixtySeconds(): void { $instance = new CronCommand('* * * * *'); @@ -81,18 +77,14 @@ final class CronCommandTest extends UnitTestCase self::assertSame($expectedTime, $instance->getTimestamp()); } - /** - * @test - */ + #[Test] public function constructorSetsTimestampToGivenTimestampPlusSixtySeconds(): void { $instance = new CronCommand('* * * * *', self::TIMESTAMP); self::assertSame(self::TIMESTAMP + 60, $instance->getTimestamp()); } - /** - * @test - */ + #[Test] public function constructorSetsTimestampToGiveTimestampRoundedDownToSixtySeconds(): void { $instance = new CronCommand('* * * * *', self::TIMESTAMP + 1); @@ -232,12 +224,12 @@ final class CronCommandTest extends UnitTestCase } /** - * @test - * @dataProvider expectedTimestampDataProvider * @param string $cronCommand Cron command * @param int $startTimestamp Timestamp for start of calculation * @param int $expectedTimestamp Expected result (next time of execution) */ + #[DataProvider('expectedTimestampDataProvider')] + #[Test] public function calculateNextValueDeterminesCorrectNextTimestamp(string $cronCommand, int $startTimestamp, int $expectedTimestamp): void { $instance = new CronCommand($cronCommand, $startTimestamp); @@ -246,12 +238,12 @@ final class CronCommandTest extends UnitTestCase } /** - * @test - * @dataProvider expectedCalculatedTimestampDataProvider * @param string $cronCommand Cron command * @param int $startTimestamp Timestamp for start of calculation * @param string $expectedTimestamp Expected result (next time of execution), to be fed to strtotime */ + #[DataProvider('expectedCalculatedTimestampDataProvider')] + #[Test] public function calculateNextValueDeterminesCorrectNextCalculatedTimestamp(string $cronCommand, int $startTimestamp, string $expectedTimestamp): void { $instance = new CronCommand($cronCommand, $startTimestamp); @@ -260,13 +252,13 @@ final class CronCommandTest extends UnitTestCase } /** - * @test - * @dataProvider expectedTimestampDataProvider * @param string $cronCommand Cron command * @param int $startTimestamp [unused] Timestamp for start of calculation * @param int $firstTimestamp Timestamp of the next execution * @param int $secondTimestamp Timestamp of the further execution */ + #[DataProvider('expectedTimestampDataProvider')] + #[Test] public function calculateNextValueDeterminesCorrectNextTimestampOnConsecutiveCall(string $cronCommand, int $startTimestamp, int $firstTimestamp, int $secondTimestamp): void { $instance = new CronCommand($cronCommand, $firstTimestamp); @@ -275,13 +267,13 @@ final class CronCommandTest extends UnitTestCase } /** - * @test - * @dataProvider expectedCalculatedTimestampDataProvider * @param string $cronCommand Cron command * @param int $startTimestamp [unused] Timestamp for start of calculation * @param string $firstTimestamp Timestamp of the next execution, to be fed to strtotime * @param string $secondTimestamp Timestamp of the further execution, to be fed to strtotime */ + #[DataProvider('expectedCalculatedTimestampDataProvider')] + #[Test] public function calculateNextValueDeterminesCorrectNextCalculatedTimestampOnConsecutiveCall(string $cronCommand, int $startTimestamp, string $firstTimestamp, string $secondTimestamp): void { $instance = new CronCommand($cronCommand, strtotime($firstTimestamp)); @@ -289,9 +281,7 @@ final class CronCommandTest extends UnitTestCase self::assertSame(strtotime($secondTimestamp), $instance->getTimestamp()); } - /** - * @test - */ + #[Test] public function calculateNextValueDeterminesCorrectNextTimestampOnChangeToSummertime(): void { $backupTimezone = date_default_timezone_get(); @@ -302,9 +292,7 @@ final class CronCommandTest extends UnitTestCase self::assertSame(1269741600, $instance->getTimestamp()); } - /** - * @test - */ + #[Test] public function calculateNextValueThrowsExceptionWithImpossibleCronCommand(): void { $this->expectException(\RuntimeException::class); @@ -313,18 +301,14 @@ final class CronCommandTest extends UnitTestCase $instance->calculateNextValue(); } - /** - * @test - */ + #[Test] public function getTimestampReturnsInteger(): void { $instance = new CronCommand('* * * * *'); self::assertIsInt($instance->getTimestamp()); } - /** - * @test - */ + #[Test] public function getCronCommandSectionsReturnsArray(): void { $instance = new CronCommand('* * * * *'); diff --git a/typo3/sysext/scheduler/Tests/Unit/CronCommand/NormalizeCommandTest.php b/typo3/sysext/scheduler/Tests/Unit/CronCommand/NormalizeCommandTest.php index 7f6c32ce2f6b..5e6204093a68 100644 --- a/typo3/sysext/scheduler/Tests/Unit/CronCommand/NormalizeCommandTest.php +++ b/typo3/sysext/scheduler/Tests/Unit/CronCommand/NormalizeCommandTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Scheduler\Tests\Unit\CronCommand; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Scheduler\CronCommand\NormalizeCommand; use TYPO3\CMS\Scheduler\Tests\Unit\CronCommand\AccessibleProxies\NormalizeCommandAccessibleProxy; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -56,11 +58,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider normalizeValidDataProvider * @param string $expression Cron command to test * @param string $expected Expected result (normalized cron command syntax) */ + #[DataProvider('normalizeValidDataProvider')] + #[Test] public function normalizeConvertsCronCommand(string $expression, string $expected): void { $result = NormalizeCommand::normalize($expression); @@ -81,20 +83,18 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validSpecialKeywordsDataProvider * @param string $keyword Cron command keyword * @param string $expectedCronCommand Expected result (normalized cron command syntax) */ + #[DataProvider('validSpecialKeywordsDataProvider')] + #[Test] public function convertKeywordsToCronCommandConvertsValidKeywords(string $keyword, string $expectedCronCommand): void { $result = NormalizeCommandAccessibleProxy::convertKeywordsToCronCommand($keyword); self::assertEquals($expectedCronCommand, $result); } - /** - * @test - */ + #[Test] public function convertKeywordsToCronCommandReturnsUnchangedCommandIfKeywordWasNotFound(): void { $invalidKeyword = 'foo'; @@ -114,11 +114,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider normalizeFieldsValidDataProvider * @param string $expression Cron command to normalize * @param string $expected Expected result (normalized cron command syntax) */ + #[DataProvider('normalizeFieldsValidDataProvider')] + #[Test] public function normalizeFieldsConvertsField(string $expression, string $expected): void { $result = NormalizeCommandAccessibleProxy::normalizeFields($expression); @@ -151,12 +151,12 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider normalizeMonthAndWeekdayFieldValidDataProvider * @param string $expression Cron command partial expression for month and weekday fields * @param bool $isMonthField Flag to designate month field or not * @param string $expected Expected result (normalized months or weekdays) */ + #[DataProvider('normalizeMonthAndWeekdayFieldValidDataProvider')] + #[Test] public function normalizeMonthAndWeekdayFieldReturnsNormalizedListForValidExpression( string $expression, bool $isMonthField, @@ -179,12 +179,12 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider normalizeMonthAndWeekdayFieldInvalidDataProvider * @param string $expression Cron command partial expression for month and weekday fields (invalid) * @param bool $isMonthField Flag to designate month field or not * @param int $expectedExceptionCode Expected exception code from provider */ + #[DataProvider('normalizeMonthAndWeekdayFieldInvalidDataProvider')] + #[Test] public function normalizeMonthAndWeekdayFieldThrowsExceptionForInvalidExpression( string $expression, bool $isMonthField, @@ -215,11 +215,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider normalizeIntegerFieldValidDataProvider * @param string|int $expression Cron command partial integer expression * @param string $expected Expected result (normalized integer or integer list) */ + #[DataProvider('normalizeIntegerFieldValidDataProvider')] + #[Test] public function normalizeIntegerFieldReturnsNormalizedListForValidExpression($expression, string $expected): void { $result = NormalizeCommandAccessibleProxy::normalizeIntegerField($expression); @@ -243,13 +243,13 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider normalizeIntegerFieldInvalidDataProvider * @param string $expression Cron command partial integer expression (invalid) * @param int $lowerBound Lower limit * @param int $upperBound Upper limit * @param int $expectedExceptionCode Expected exception code */ + #[DataProvider('normalizeIntegerFieldInvalidDataProvider')] + #[Test] public function normalizeIntegerFieldThrowsExceptionForInvalidExpressions( string $expression, int $lowerBound, @@ -262,9 +262,7 @@ final class NormalizeCommandTest extends UnitTestCase NormalizeCommandAccessibleProxy::normalizeIntegerField($expression, $lowerBound, $upperBound); } - /** - * @test - */ + #[Test] public function splitFieldsReturnsIntegerArrayWithFieldsSplitByWhitespace(): void { $result = NormalizeCommandAccessibleProxy::splitFields('12,13 * 1-12/2,14 jan fri'); @@ -290,10 +288,10 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider invalidCronCommandFieldsDataProvider * @param string|int $cronCommand Invalid cron command */ + #[DataProvider('invalidCronCommandFieldsDataProvider')] + #[Test] public function splitFieldsThrowsExceptionIfCronCommandDoesNotContainFiveFields($cronCommand): void { $this->expectException(\InvalidArgumentException::class); @@ -314,11 +312,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validRangeDataProvider * @param string|int $range Cron command range expression * @param string $expected Expected result (normalized range) */ + #[DataProvider('validRangeDataProvider')] + #[Test] public function convertRangeToListOfValuesReturnsCorrectListForValidRanges($range, string $expected): void { $result = NormalizeCommandAccessibleProxy::convertRangeToListOfValues($range); @@ -342,11 +340,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider invalidRangeDataProvider * @param string $range Cron command range expression (invalid) * @param int $expectedExceptionCode Expected exception code from provider */ + #[DataProvider('invalidRangeDataProvider')] + #[Test] public function convertRangeToListOfValuesThrowsExceptionForInvalidRanges(string $range, int $expectedExceptionCode): void { $this->expectException(\InvalidArgumentException::class); @@ -365,11 +363,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validStepsDataProvider * @param string $stepExpression Cron command step expression * @param string $expected Expected result (normalized range) */ + #[DataProvider('validStepsDataProvider')] + #[Test] public function reduceListOfValuesByStepValueReturnsCorrectListOfValues(string $stepExpression, string $expected): void { $result = NormalizeCommandAccessibleProxy::reduceListOfValuesByStepValue($stepExpression); @@ -392,11 +390,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider invalidStepsDataProvider * @param string $stepExpression Cron command step expression (invalid) * @param int $expectedExceptionCode Expected exception code */ + #[DataProvider('invalidStepsDataProvider')] + #[Test] public function reduceListOfValuesByStepValueThrowsExceptionForInvalidStepExpressions( string $stepExpression, int $expectedExceptionCode @@ -407,27 +405,21 @@ final class NormalizeCommandTest extends UnitTestCase NormalizeCommandAccessibleProxy::reduceListOfValuesByStepValue($stepExpression); } - /** - * @test - */ + #[Test] public function normalizeMonthAndWeekdayNormalizesAMonth(): void { $result = NormalizeCommandAccessibleProxy::normalizeMonthAndWeekday('feb', true); self::assertSame('2', $result); } - /** - * @test - */ + #[Test] public function normalizeMonthAndWeekdayNormalizesAWeekday(): void { $result = NormalizeCommandAccessibleProxy::normalizeMonthAndWeekday('fri', false); self::assertSame('5', $result); } - /** - * @test - */ + #[Test] public function normalizeMonthAndWeekdayLeavesValueUnchanged(): void { $result = NormalizeCommandAccessibleProxy::normalizeMonthAndWeekday('2'); @@ -457,11 +449,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validMonthNamesDataProvider * @param string|int $monthName Month name * @param int $expectedInteger Number of the month */ + #[DataProvider('validMonthNamesDataProvider')] + #[Test] public function normalizeMonthConvertsName($monthName, int $expectedInteger): void { $result = NormalizeCommandAccessibleProxy::normalizeMonth($monthName); @@ -469,10 +461,10 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validMonthNamesDataProvider * @param string|int $monthName Month name */ + #[DataProvider('validMonthNamesDataProvider')] + #[Test] public function normalizeMonthReturnsInteger($monthName): void { $result = NormalizeCommandAccessibleProxy::normalizeMonth($monthName); @@ -505,11 +497,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider invalidMonthNamesDataProvider * @param string|int $invalidMonthName Month name (invalid) * @param int $expectedExceptionCode Expected exception code */ + #[DataProvider('invalidMonthNamesDataProvider')] + #[Test] public function normalizeMonthThrowsExceptionForInvalidMonthRepresentation( $invalidMonthName, int $expectedExceptionCode @@ -553,11 +545,11 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validWeekdayDataProvider * @param string|int $weekday Weekday expression * @param int $expectedInteger Number of weekday */ + #[DataProvider('validWeekdayDataProvider')] + #[Test] public function normalizeWeekdayConvertsName($weekday, int $expectedInteger): void { $result = NormalizeCommandAccessibleProxy::normalizeWeekday($weekday); @@ -565,10 +557,10 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider validWeekdayDataProvider * @param string|int $weekday Weekday expression */ + #[DataProvider('validWeekdayDataProvider')] + #[Test] public function normalizeWeekdayReturnsInteger($weekday): void { $result = NormalizeCommandAccessibleProxy::normalizeWeekday($weekday); @@ -599,10 +591,10 @@ final class NormalizeCommandTest extends UnitTestCase } /** - * @test - * @dataProvider invalidWeekdayDataProvider * @param string|int $weekday Weekday expression (invalid) */ + #[DataProvider('invalidWeekdayDataProvider')] + #[Test] public function normalizeWeekdayThrowsExceptionForInvalidWeekdayRepresentation($weekday): void { $this->expectException(\InvalidArgumentException::class); diff --git a/typo3/sysext/scheduler/Tests/Unit/Task/CachingFrameworkGarbageCollectionTest.php b/typo3/sysext/scheduler/Tests/Unit/Task/CachingFrameworkGarbageCollectionTest.php index 90d52995b318..14dbcef87510 100644 --- a/typo3/sysext/scheduler/Tests/Unit/Task/CachingFrameworkGarbageCollectionTest.php +++ b/typo3/sysext/scheduler/Tests/Unit/Task/CachingFrameworkGarbageCollectionTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Scheduler\Tests\Unit\Task; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Cache\Backend\AbstractBackend; use TYPO3\CMS\Core\Cache\Backend\NullBackend; use TYPO3\CMS\Core\Cache\CacheManager; @@ -29,9 +30,7 @@ final class CachingFrameworkGarbageCollectionTest extends UnitTestCase { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function executeCallsCollectGarbageOfConfiguredBackend(): void { $cache = $this->createMock(VariableFrontend::class); @@ -54,9 +53,7 @@ final class CachingFrameworkGarbageCollectionTest extends UnitTestCase $subject->execute(); } - /** - * @test - */ + #[Test] public function executeDoesNotCallCollectGarbageOfNotConfiguredBackend(): void { $cache = $this->createMock(VariableFrontend::class); diff --git a/typo3/sysext/scheduler/Tests/Unit/Task/ExecuteSchedulableCommandAdditionalFieldProviderTest.php b/typo3/sysext/scheduler/Tests/Unit/Task/ExecuteSchedulableCommandAdditionalFieldProviderTest.php index 9dc656f40edd..45f675337d6c 100644 --- a/typo3/sysext/scheduler/Tests/Unit/Task/ExecuteSchedulableCommandAdditionalFieldProviderTest.php +++ b/typo3/sysext/scheduler/Tests/Unit/Task/ExecuteSchedulableCommandAdditionalFieldProviderTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Scheduler\Tests\Unit\Task; +use PHPUnit\Framework\Attributes\Test; use Symfony\Component\Console\Command\Command; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Console\CommandRegistry; @@ -36,9 +37,7 @@ final class ExecuteSchedulableCommandAdditionalFieldProviderTest extends UnitTes { protected bool $resetSingletonInstances = true; - /** - * @test - */ + #[Test] public function argumentsAndOptionsWithSameNameAreAdded(): void { $GLOBALS['BE_USER'] = new BackendUserAuthentication(); diff --git a/typo3/sysext/scheduler/Tests/Unit/Task/TaskSerializerTest.php b/typo3/sysext/scheduler/Tests/Unit/Task/TaskSerializerTest.php index f30d66e47620..0fe9be99dab6 100644 --- a/typo3/sysext/scheduler/Tests/Unit/Task/TaskSerializerTest.php +++ b/typo3/sysext/scheduler/Tests/Unit/Task/TaskSerializerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Scheduler\Tests\Unit\Task; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Log\Writer\NullWriter; use TYPO3\CMS\Scheduler\Exception\InvalidTaskException; use TYPO3\CMS\Scheduler\Task\TaskSerializer; @@ -45,10 +47,8 @@ final class TaskSerializerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider dataIsDeserializedDataProvider - */ + #[DataProvider('dataIsDeserializedDataProvider')] + #[Test] public function dataIsDeserialized(string $data, $expectation): void { $taskSerializer = new TaskSerializer(); @@ -85,10 +85,8 @@ final class TaskSerializerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider deserializationThrowsExceptionDataProvider - */ + #[DataProvider('deserializationThrowsExceptionDataProvider')] + #[Test] public function deserializationThrowsException(string $data, int $exceptionCode): void { $this->expectException(InvalidTaskException::class); @@ -114,10 +112,8 @@ final class TaskSerializerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider classNameIsResolvedDataProvider - */ + #[DataProvider('classNameIsResolvedDataProvider')] + #[Test] public function classNameIsResolved(?object $task, ?string $expectation): void { $taskSerializer = new TaskSerializer(); @@ -142,10 +138,8 @@ final class TaskSerializerTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider classNameIsExtractedDataProvider - */ + #[DataProvider('classNameIsExtractedDataProvider')] + #[Test] public function classNameIsExtracted(string $serializedTask, ?string $expectation): void { $taskSerializer = new TaskSerializer(); diff --git a/typo3/sysext/scheduler/Tests/Unit/Validation/Validator/TaskValidatorTest.php b/typo3/sysext/scheduler/Tests/Unit/Validation/Validator/TaskValidatorTest.php index 09ea011490b5..5e89f560e099 100644 --- a/typo3/sysext/scheduler/Tests/Unit/Validation/Validator/TaskValidatorTest.php +++ b/typo3/sysext/scheduler/Tests/Unit/Validation/Validator/TaskValidatorTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Scheduler\Tests\Unit\Validation\Validator; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Scheduler\Execution; use TYPO3\CMS\Scheduler\Task\AbstractTask; use TYPO3\CMS\Scheduler\Validation\Validator\TaskValidator; @@ -24,18 +25,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TaskValidatorTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function isValidReturnsFalseWithClassNotExtendingAbstractTask(): void { $subject = new TaskValidator(); self::assertFalse($subject->isValid($subject)); } - /** - * @test - */ + #[Test] public function isValidReturnsFalseWithClassNotProperlyImplementingGetExecution(): void { $subject = new TaskValidator(); @@ -49,9 +46,7 @@ final class TaskValidatorTest extends UnitTestCase self::assertFalse($subject->isValid($input)); } - /** - * @test - */ + #[Test] public function isValidReturnsTrueWithClassProperlyImplementingAbstractTask(): void { $subject = new TaskValidator(); diff --git a/typo3/sysext/seo/Tests/Unit/Event/ModifyUrlForCanonicalTagEventTest.php b/typo3/sysext/seo/Tests/Unit/Event/ModifyUrlForCanonicalTagEventTest.php index 0607b423feaa..62433e1f692a 100644 --- a/typo3/sysext/seo/Tests/Unit/Event/ModifyUrlForCanonicalTagEventTest.php +++ b/typo3/sysext/seo/Tests/Unit/Event/ModifyUrlForCanonicalTagEventTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Seo\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Domain\Page; use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Http\Uri; @@ -25,9 +26,7 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class ModifyUrlForCanonicalTagEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $url = (string)new Uri('https://example.com'); diff --git a/typo3/sysext/seo/Tests/Unit/HrefLang/HrefLangGeneratorTest.php b/typo3/sysext/seo/Tests/Unit/HrefLang/HrefLangGeneratorTest.php index ff17349e7575..3b6ee3735818 100644 --- a/typo3/sysext/seo/Tests/Unit/HrefLang/HrefLangGeneratorTest.php +++ b/typo3/sysext/seo/Tests/Unit/HrefLang/HrefLangGeneratorTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Seo\Tests\Unit\HrefLang; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use Psr\Http\Message\UriInterface; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; @@ -65,10 +67,8 @@ final class HrefLangGeneratorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider urlPathWithoutHostDataProvider - */ + #[DataProvider('urlPathWithoutHostDataProvider')] + #[Test] public function checkIfSiteLanguageGetBaseIsCalledForUrlsWithoutHost(string $url): void { $mockUriInterface = $this->getMockBuilder(UriInterface::class)->getMock(); @@ -95,10 +95,8 @@ final class HrefLangGeneratorTest extends UnitTestCase ]; } - /** - * @test - * @dataProvider urlPathWithHostDataProvider - */ + #[DataProvider('urlPathWithHostDataProvider')] + #[Test] public function checkIfSiteLanguageGetBaseIsNotCalledForUrlsWithHost(string $url): void { $mockUriInterface = $this->getMockBuilder(UriInterface::class)->getMock(); diff --git a/typo3/sysext/seo/Tests/Unit/MetaTag/OpenGraphMetaTagManagerTest.php b/typo3/sysext/seo/Tests/Unit/MetaTag/OpenGraphMetaTagManagerTest.php index 95235ed872f9..de29b9d0d0c1 100644 --- a/typo3/sysext/seo/Tests/Unit/MetaTag/OpenGraphMetaTagManagerTest.php +++ b/typo3/sysext/seo/Tests/Unit/MetaTag/OpenGraphMetaTagManagerTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Seo\Tests\Unit\MetaTag; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Seo\MetaTag\OpenGraphMetaTagManager; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class OpenGraphMetaTagManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function checkIfGetAllHandledPropertiesReturnsNonEmptyArray(): void { $manager = new OpenGraphMetaTagManager(); @@ -33,11 +33,8 @@ final class OpenGraphMetaTagManagerTest extends UnitTestCase self::assertNotEmpty($handledProperties); } - /** - * @dataProvider propertiesProvider - * - * @test - */ + #[DataProvider('propertiesProvider')] + #[Test] public function checkIfPropertyIsStoredAfterAddingProperty(array $property, array $expected, string $expectedRenderedTag): void { $manager = new OpenGraphMetaTagManager(); @@ -51,9 +48,7 @@ final class OpenGraphMetaTagManagerTest extends UnitTestCase self::assertEquals($expectedRenderedTag, $manager->renderProperty($property['property'])); } - /** - * @test - */ + #[Test] public function checkIfAddingOnlySubPropertyAndNoMainPropertyIsReturningException(): void { $manager = new OpenGraphMetaTagManager(); @@ -62,9 +57,7 @@ final class OpenGraphMetaTagManagerTest extends UnitTestCase $manager->addProperty('og:image:width', '400'); } - /** - * @test - */ + #[Test] public function checkRenderAllPropertiesRendersCorrectMetaTags(): void { $properties = [ @@ -127,9 +120,7 @@ final class OpenGraphMetaTagManagerTest extends UnitTestCase self::assertEquals($expected, $manager->renderAllProperties()); } - /** - * @test - */ + #[Test] public function checkIfRemovePropertyReallyRemovesProperty(): void { $manager = new OpenGraphMetaTagManager(); diff --git a/typo3/sysext/seo/Tests/Unit/MetaTag/TwitterCardMetaTagManagerTest.php b/typo3/sysext/seo/Tests/Unit/MetaTag/TwitterCardMetaTagManagerTest.php index d8ab1ea6108e..7676723bb9db 100644 --- a/typo3/sysext/seo/Tests/Unit/MetaTag/TwitterCardMetaTagManagerTest.php +++ b/typo3/sysext/seo/Tests/Unit/MetaTag/TwitterCardMetaTagManagerTest.php @@ -17,14 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Seo\Tests\Unit\MetaTag; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Seo\MetaTag\TwitterCardMetaTagManager; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class TwitterCardMetaTagManagerTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function checkIfGetAllHandledPropertiesReturnsNonEmptyArray(): void { $manager = new TwitterCardMetaTagManager(); @@ -33,11 +33,8 @@ final class TwitterCardMetaTagManagerTest extends UnitTestCase self::assertNotEmpty($handledProperties); } - /** - * @dataProvider propertiesProvider - * - * @test - */ + #[DataProvider('propertiesProvider')] + #[Test] public function checkIfPropertyIsStoredAfterAddingProperty(array $property, array $expected, string $expectedRenderedTag): void { $manager = new TwitterCardMetaTagManager(); @@ -116,9 +113,7 @@ final class TwitterCardMetaTagManagerTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function checkIfAddingOnlySubPropertyAndNoMainPropertyIsReturningException(): void { $manager = new TwitterCardMetaTagManager(); @@ -127,9 +122,7 @@ final class TwitterCardMetaTagManagerTest extends UnitTestCase $manager->addProperty('og:image:width', '400'); } - /** - * @test - */ + #[Test] public function checkRenderAllPropertiesRendersCorrectMetaTags(): void { $properties = [ @@ -182,9 +175,7 @@ final class TwitterCardMetaTagManagerTest extends UnitTestCase self::assertEquals($expected, $manager->renderAllProperties()); } - /** - * @test - */ + #[Test] public function checkIfRemovePropertyReallyRemovesProperty(): void { $manager = new TwitterCardMetaTagManager(); diff --git a/typo3/sysext/seo/Tests/Unit/XmlSitemap/PagesXmlSitemapDataProviderTest.php b/typo3/sysext/seo/Tests/Unit/XmlSitemap/PagesXmlSitemapDataProviderTest.php index 2e34aad403f5..288a9473f607 100644 --- a/typo3/sysext/seo/Tests/Unit/XmlSitemap/PagesXmlSitemapDataProviderTest.php +++ b/typo3/sysext/seo/Tests/Unit/XmlSitemap/PagesXmlSitemapDataProviderTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Seo\Tests\Unit\XmlSitemap; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; use TYPO3\CMS\Seo\XmlSitemap\PagesXmlSitemapDataProvider; @@ -51,9 +53,7 @@ final class PagesXmlSitemapDataProviderTest extends UnitTestCase ]; } - /** - * @test - */ + #[Test] public function checkIfCorrectKeyIsGivenAfterConstruct(): void { $key = 'dummyKey'; @@ -69,10 +69,8 @@ final class PagesXmlSitemapDataProviderTest extends UnitTestCase self::assertEquals($key, $subject->getKey()); } - /** - * @dataProvider numberOfItemsPerPageProvider - * @test - */ + #[DataProvider('numberOfItemsPerPageProvider')] + #[Test] public function checkGetItemsReturnsDefinedItems(int $numberOfItemsPerPage): void { $key = 'dummyKey'; @@ -103,9 +101,7 @@ final class PagesXmlSitemapDataProviderTest extends UnitTestCase self::assertEquals($expectedReturnedItems, $returnedItems); } - /** - * @test - */ + #[Test] public function checkGetLastModReturnsRightDate(): void { $key = 'dummyKey'; diff --git a/typo3/sysext/t3editor/Tests/Unit/Registry/AddonRegistryTest.php b/typo3/sysext/t3editor/Tests/Unit/Registry/AddonRegistryTest.php index 6a7417324a0d..180484532c38 100644 --- a/typo3/sysext/t3editor/Tests/Unit/Registry/AddonRegistryTest.php +++ b/typo3/sysext/t3editor/Tests/Unit/Registry/AddonRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\T3editor\Tests\Unit\Registry; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\T3editor\Addon; use TYPO3\CMS\T3editor\Registry\AddonRegistry; @@ -64,9 +65,7 @@ final class AddonRegistryTest extends UnitTestCase ); } - /** - * @test - */ + #[Test] public function globalAddonsGetReturned(): void { $expected = [ @@ -84,9 +83,7 @@ final class AddonRegistryTest extends UnitTestCase self::assertSame($expected, $actual); } - /** - * @test - */ + #[Test] public function settingsAreProperlyCompiled(): void { $expected = [ diff --git a/typo3/sysext/t3editor/Tests/Unit/Registry/ModeRegistryTest.php b/typo3/sysext/t3editor/Tests/Unit/Registry/ModeRegistryTest.php index 930b1f5df323..e6bff59f67fb 100644 --- a/typo3/sysext/t3editor/Tests/Unit/Registry/ModeRegistryTest.php +++ b/typo3/sysext/t3editor/Tests/Unit/Registry/ModeRegistryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\T3editor\Tests\Unit\Registry; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Page\JavaScriptModuleInstruction; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\T3editor\Mode; @@ -36,9 +37,7 @@ final class ModeRegistryTest extends UnitTestCase $this->subject = new ModeRegistry(); } - /** - * @test - */ + #[Test] public function latestDefaultModeIsReturned(): void { $module = JavaScriptModuleInstruction::create('@test/foo', 'bar')->invoke(); @@ -50,9 +49,7 @@ final class ModeRegistryTest extends UnitTestCase self::assertSame($expected, $actual); } - /** - * @test - */ + #[Test] public function formatCodeReturnsCorrectMode(): void { $module = JavaScriptModuleInstruction::create('@test/mode', 'formatCode')->invoke(); @@ -63,9 +60,7 @@ final class ModeRegistryTest extends UnitTestCase self::assertSame($expected, $actual); } - /** - * @test - */ + #[Test] public function modeIsFetchedByFileExtension(): void { $module = JavaScriptModuleInstruction::create('@test/mode', 'extension')->invoke(); diff --git a/typo3/sysext/webhooks/Tests/Unit/Factory/WebhookInstructionFactoryTest.php b/typo3/sysext/webhooks/Tests/Unit/Factory/WebhookInstructionFactoryTest.php index 1f4d9ff0de90..6967cc4423e8 100644 --- a/typo3/sysext/webhooks/Tests/Unit/Factory/WebhookInstructionFactoryTest.php +++ b/typo3/sysext/webhooks/Tests/Unit/Factory/WebhookInstructionFactoryTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Webhooks\Tests\Unit\Factory; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Webhooks\Factory\WebhookInstructionFactory; use TYPO3\CMS\Webhooks\Model\WebhookType; @@ -52,9 +53,7 @@ final class WebhookInstructionFactoryTest extends UnitTestCase $this->webhookType = new WebhookType('typo3/test-webhook', 'My WebhookType description', 'My\Webhook\Type', 'myFactoryMethod'); } - /** - * @test - */ + #[Test] public function createWebhookInstructionWithMinimalData(): void { $webhookInstruction = WebhookInstructionFactory::create( @@ -74,9 +73,7 @@ final class WebhookInstructionFactoryTest extends UnitTestCase self::assertSame([], $webhookInstruction->getRow()); } - /** - * @test - */ + #[Test] public function createWebhookInstructionWithAllData(): void { $this->mockRecord['webhook_type'] = $this->webhookType; @@ -107,9 +104,7 @@ final class WebhookInstructionFactoryTest extends UnitTestCase self::assertSame([], $webhookInstruction->getRow()); } - /** - * @test - */ + #[Test] public function createWebhookInstructionFromRow(): void { $webhookTypesRegistryMock = $this->createMock(WebhookTypesRegistry::class); diff --git a/typo3/sysext/workspaces/Tests/Unit/Controller/Remote/RemoteServerTest.php b/typo3/sysext/workspaces/Tests/Unit/Controller/Remote/RemoteServerTest.php index c32b9885932f..291692a5735c 100644 --- a/typo3/sysext/workspaces/Tests/Unit/Controller/Remote/RemoteServerTest.php +++ b/typo3/sysext/workspaces/Tests/Unit/Controller/Remote/RemoteServerTest.php @@ -17,6 +17,8 @@ declare(strict_types=1); namespace TYPO3\CMS\Workspaces\Tests\Unit\Controller\Remote; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FileReference; @@ -94,9 +96,9 @@ final class RemoteServerTest extends UnitTestCase /** * @param array|null $expected - * @dataProvider prepareFileReferenceDifferencesAreCorrectDataProvider - * @test */ + #[DataProvider('prepareFileReferenceDifferencesAreCorrectDataProvider')] + #[Test] public function prepareFileReferenceDifferencesAreCorrect(string $fileFileReferenceList, string $versionFileReferenceList, bool $useThumbnails, array $expected = null): void { $liveFileReferences = $this->getFileReferenceMocks($fileFileReferenceList); diff --git a/typo3/sysext/workspaces/Tests/Unit/Domain/Model/WorkspaceRecordTest.php b/typo3/sysext/workspaces/Tests/Unit/Domain/Model/WorkspaceRecordTest.php index 324cce5f98a5..44b99d365eca 100644 --- a/typo3/sysext/workspaces/Tests/Unit/Domain/Model/WorkspaceRecordTest.php +++ b/typo3/sysext/workspaces/Tests/Unit/Domain/Model/WorkspaceRecordTest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Workspaces\Tests\Unit\Domain\Model; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Workspaces\Domain\Record\AbstractRecord; use TYPO3\CMS\Workspaces\Domain\Record\WorkspaceRecord; @@ -36,9 +37,7 @@ final class WorkspaceRecordTest extends UnitTestCase parent::tearDown(); } - /** - * @test - */ + #[Test] public function isAbstractRecord(): void { $subject = new WorkspaceRecord([]); @@ -46,9 +45,7 @@ final class WorkspaceRecordTest extends UnitTestCase self::assertInstanceOf(AbstractRecord::class, $subject); } - /** - * @test - */ + #[Test] public function getReturnsWorkspaceRecordInstance(): void { $instance = WorkspaceRecord::get(1, ['title' => '']); @@ -56,9 +53,7 @@ final class WorkspaceRecordTest extends UnitTestCase self::assertInstanceOf(WorkspaceRecord::class, $instance); } - /** - * @test - */ + #[Test] public function getWithNonZeroUidAndNonEmptyDataReturnsInstanceWithTheProvidedData(): void { $title = 'some record title'; @@ -68,9 +63,7 @@ final class WorkspaceRecordTest extends UnitTestCase self::assertSame($title, $instance->getTitle()); } - /** - * @test - */ + #[Test] public function getCalledTwoTimesWithTheSameUidAndDataDataReturnsDifferentInstancesForEachCall(): void { $uid = 1; @@ -82,9 +75,7 @@ final class WorkspaceRecordTest extends UnitTestCase self::assertNotSame($instance1, $instance2); } - /** - * @test - */ + #[Test] public function getForConfiguredXclassReturnsInstanceOfXclass(): void { $xclassInstance = new class ([]) extends WorkspaceRecord {}; diff --git a/typo3/sysext/workspaces/Tests/Unit/Event/AfterRecordPublishedEventTest.php b/typo3/sysext/workspaces/Tests/Unit/Event/AfterRecordPublishedEventTest.php index 7b6def29f08d..881298d0fa4d 100644 --- a/typo3/sysext/workspaces/Tests/Unit/Event/AfterRecordPublishedEventTest.php +++ b/typo3/sysext/workspaces/Tests/Unit/Event/AfterRecordPublishedEventTest.php @@ -17,14 +17,13 @@ declare(strict_types=1); namespace TYPO3\CMS\Workspaces\Tests\Unit\Event; +use PHPUnit\Framework\Attributes\Test; use TYPO3\CMS\Workspaces\Event\AfterRecordPublishedEvent; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AfterRecordPublishedEventTest extends UnitTestCase { - /** - * @test - */ + #[Test] public function gettersReturnInitializedObjects(): void { $table = 'some_table'; -- GitLab