diff --git a/.claude/skills/fix-issue/SKILL.md b/.claude/skills/fix-issue/SKILL.md index 0992747ca6..ff074c54cd 100644 --- a/.claude/skills/fix-issue/SKILL.md +++ b/.claude/skills/fix-issue/SKILL.md @@ -137,7 +137,7 @@ Skip the gate for a contained single-file fix whose cause is proven and whose fi - **The CHANGELOG entry is a fragment, not a sentence.** You will have just finished a deep investigation, and the pull to write it all down lands here, on the one artifact that has no room for it. Name the bug you fixed or the thing you added, one line, aiming under 120 characters: `Empty grid on a background tab whose rows were freed.` Never `X now does Y instead of Z`, and never a trailing `so ...` clause. The cause, the mechanism and the before-and-after go in the PR body, which is where a reviewer looks for them anyway. Add one entry per change, under one existing `### ` heading, and never open a second heading of a type the version already has. Entries written to this rule survive the release untouched; 0.67.0's did not, and all 211 were rewritten at release time. - **Read `docs/STYLE.md` before you write a docs page, and write the page last.** It is the spec, it is 341 lines, and nothing else names it. Two failure modes it exists to stop both survive a green local run: a page that restates its own frontmatter description, repeats a caption as its alt text, argues design rationale at the reader, or makes the product the subject; and a capability table that was true when it was typed and false by the time the branch was pushed, because a later commit changed the code and nobody re-read the page. `.claude/rules/docs-authoring.md` carries the full list. - **A docs page that describes UI carries a screenshot.** Prose alone does not show a user what a pane looks like, and every existing feature page in `docs/features/` pairs its description with one. When the change adds a screen, pane, tab, dialog or toolbar, add a `` with the light and dark pair the docs use, `docs/images/.png` and `docs/images/-dark.png`, referenced as `className="block dark:hidden"` and `className="hidden dark:block"`. When the change alters a screen an existing page already pictures, the old shot is now wrong: re-capture it or say in the PR that it needs re-capturing. Real shots come from a running Debug build driven with `osascript` and captured with `screencapture`, launched with `TABLEPRO_UI_TEST_SANDBOX` pointed at a throwaway directory so it never touches your own connections; Screen Recording has to be granted to whatever runs it. When you cannot capture one, still add the `` and commit a placeholder at the same 1560x960 the other shots use so the page renders, and call it out in the PR body as pending. Never leave the markup pointing at a file that does not exist; a broken image ships to the docs site. -- **Write the tests the blueprint specified**, unit and UI both. UI suites subclass `UITestCase`; a bare `XCUIApplication()` or `: XCTestCase` under `TableProUITests/` fails a source-scanning guard test, because storage isolation depends on the launch path. When a test fails, fix the source. Never bend a test to match wrong output. +- **Write the tests the blueprint specified**, unit and UI both. UI suites subclass `UITestCase`; a bare `XCUIApplication()` or `: XCTestCase` under `TableProUITests/` fails a source-scanning guard test, because storage isolation depends on the launch path. A unit test type in `TableProTests` gets no `@Suite` unless it needs a trait such as `.serialized`: each top-level `@Suite` adds compile time to the test module quadratically, and Repo Hygiene rejects one without a trait. When a test fails, fix the source. Never bend a test to match wrong output. - **Run `Skill(swiftui-pro)`** when the change adds or reworks SwiftUI views, before you consider the code done. ## Phase 4: Verify diff --git a/.github/workflows/repo-hygiene.yml b/.github/workflows/repo-hygiene.yml index f42afe599f..3ca8fbc2a6 100644 --- a/.github/workflows/repo-hygiene.yml +++ b/.github/workflows/repo-hygiene.yml @@ -18,6 +18,7 @@ on: - "Plugins/**/*.swift" - "TablePro/**/*.swift" - "Packages/**/*.swift" + - "TableProTests/**/*.swift" - "project.yml" - "TablePro.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved" - "TablePro/Resources/ThirdPartyLicenses/licenses.yml" @@ -34,6 +35,7 @@ on: - "Plugins/**/*.swift" - "TablePro/**/*.swift" - "Packages/**/*.swift" + - "TableProTests/**/*.swift" - "project.yml" - "TablePro.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved" - "TablePro/Resources/ThirdPartyLicenses/licenses.yml" @@ -118,6 +120,16 @@ jobs: - name: Validate the log privacy check run: python3 scripts/ci/test_check_log_privacy.py + # Every top-level @Suite is a peer macro the compiler files in module-scope lookup, and each + # @Suite expansion walks all of them, so the test module's compile time grows with the square + # of their count. 2,336 of them held TableProTests' emit-module job at 544 to 626 seconds on the + # build runner, and 2,200 of those only renamed their type. Only a @Suite with a trait is kept. + - name: Check no top-level test type carries a @Suite without a trait + run: python3 scripts/ci/check-test-suite-attributes.py + + - name: Validate the test suite attribute check + run: python3 scripts/ci/test_check_test_suite_attributes.py + # A plugin's String(localized:) resolves against Bundle.main, which is the host app, so its # strings live in the app's catalog. Xcode extracts per target and the plugin targets are not # the app target, so nothing puts them there: 537 strings had never reached a translator. diff --git a/CLAUDE.md b/CLAUDE.md index 036b6f0ed1..6f059affe2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -372,6 +372,7 @@ These have caused real production bugs: - **Never call `ensureLayout(forCharacterRange:)`**: defeats `allowsNonContiguousLayout`. Let layout manager queries trigger lazy local layout. - **SQL dumps can have single lines with millions of characters**: cap regex/highlight ranges at 10k chars. - **Tab persistence**: a query longer than `TabQueryContent.maxPersistableQuerySize` (500,000 UTF-16 units) is blanked by `QueryTab.toPersistedTab()` to prevent a JSON freeze, and the full text moves to `TabQueryOverflowStore`. `RecentlyClosedTabStore` applies the same cap. +- **Never put a top-level `@Suite` on a test type in `TableProTests` unless it carries a trait**: Swift Testing finds a type's `@Test` functions without one, so `@Suite("Some name")` only renames the type in the test navigator, and it costs the test module compile time quadratically in that module's own count of top-level suites. `@Suite` is a peer macro, the compiler files every top-level one under a single module-scope placeholder for macro-generated unique names, and each `@Suite` expansion resolves its own unique names through that placeholder, expanding every other top-level `@Suite` in the module to do it. Measured on the macOS Tests build job: 2,336 of them, 2,200 carrying only a display name, held the `TableProTests` emit-module job at 544 to 626 seconds, the longest compile job in the build; dropping 2,173 of those 2,200 took it to 290 seconds on the same runner and the target's compile batches from 3,958 to 2,373 seconds summed. Keep `@Suite` for a trait (`.serialized`, `.enabled(if:)`). Nesting a suite to keep its name is not free either: it avoids the quadratic term but still adds emit-module time that grows linearly, about 60% more at 2,000 suites in a standalone reproducer, so leave the type unannotated. A display name on `@Test` adds nothing, since the `@Test` expands either way. The other test modules hold 108 top-level suites or fewer, where the quadratic term is under a second, which is why `scripts/ci/check-test-suite-attributes.py` fails Repo Hygiene on a new one in `TableProTests` only (swiftlang/swift#92638). ## Writing Style diff --git a/TableProTests/AWS/AWSConfigFileTests.swift b/TableProTests/AWS/AWSConfigFileTests.swift index 2c1ac82cf6..581e4f3755 100644 --- a/TableProTests/AWS/AWSConfigFileTests.swift +++ b/TableProTests/AWS/AWSConfigFileTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS config and credentials file resolution") struct AWSConfigFileTests { private let config = """ [default] diff --git a/TableProTests/AWS/AWSIAMAuthTests.swift b/TableProTests/AWS/AWSIAMAuthTests.swift index d1d370214f..e048cb2b3d 100644 --- a/TableProTests/AWS/AWSIAMAuthTests.swift +++ b/TableProTests/AWS/AWSIAMAuthTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro -@Suite("AWS SigV4 primitives") struct AWSSigV4Tests { @Test("SHA-256 matches NIST vectors") func sha256Vectors() { @@ -38,7 +37,6 @@ struct AWSSigV4Tests { } } -@Suite("RDS auth token") struct RDSAuthTokenGeneratorTests { private let credentials = AWSCredentials( accessKeyId: "AKIDEXAMPLE", @@ -90,7 +88,6 @@ struct RDSAuthTokenGeneratorTests { } } -@Suite("RDS endpoint region") struct RDSEndpointTests { @Test("Derives region from cluster hostname") func clusterHostname() { @@ -114,7 +111,6 @@ struct RDSEndpointTests { } } -@Suite("RDS signing endpoint") struct RDSSigningEndpointResolverTests { private func resolve( host: String = "mydb.abc123.us-east-1.rds.amazonaws.com", @@ -255,7 +251,6 @@ struct RDSSigningEndpointResolverTests { } } -@Suite("AWS credential resolver") struct AWSCredentialResolverTests { @Test("Resolves static access-key credentials") func staticCredentials() async throws { @@ -285,7 +280,6 @@ struct AWSCredentialResolverTests { } } -@Suite("AWS config INI parsing") struct AWSSSOParsingTests { private let config = """ [default] @@ -335,7 +329,6 @@ struct AWSSSOParsingTests { } } -@Suite("AWS IAM connection fields in the plugin metadata registry") @MainActor struct RegistryAWSIAMFieldsTests { private func fieldIds(forTypeId typeId: String) -> [String] { @@ -387,7 +380,6 @@ struct RegistryAWSIAMFieldsTests { } } -@Suite("AWS credential_process") struct AWSCredentialProcessTests { @Test("Tokenizes a plain command into arguments") func tokenizePlain() { diff --git a/TableProTests/AWS/AWSProfileResolutionTests.swift b/TableProTests/AWS/AWSProfileResolutionTests.swift index f1493bed97..d5febbc534 100644 --- a/TableProTests/AWS/AWSProfileResolutionTests.swift +++ b/TableProTests/AWS/AWSProfileResolutionTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS profile credential source") struct AWSProfileResolutionTests { @Test("A profile resolves by what it declares, in the AWS SDK's order") func credentialSourceOrder() { diff --git a/TableProTests/AWS/AWSQueryRequestTests.swift b/TableProTests/AWS/AWSQueryRequestTests.swift index e11591eddc..b3fef5b685 100644 --- a/TableProTests/AWS/AWSQueryRequestTests.swift +++ b/TableProTests/AWS/AWSQueryRequestTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS query request signing") struct AWSQueryRequestTests { private static let credentials = AWSCredentials( accessKeyId: "AKIAIOSFODNN7EXAMPLE", diff --git a/TableProTests/AWS/AWSSSOLoginTests.swift b/TableProTests/AWS/AWSSSOLoginTests.swift index bf0ed6b688..3c70843873 100644 --- a/TableProTests/AWS/AWSSSOLoginTests.swift +++ b/TableProTests/AWS/AWSSSOLoginTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS SSO device login") struct AWSSSOLoginTests { @Test("Parses a device authorization response, defaulting the poll interval") func parsesDeviceAuthorization() throws { diff --git a/TableProTests/AWS/AWSSSOResolutionTests.swift b/TableProTests/AWS/AWSSSOResolutionTests.swift index 5feb129cc0..ad3a116467 100644 --- a/TableProTests/AWS/AWSSSOResolutionTests.swift +++ b/TableProTests/AWS/AWSSSOResolutionTests.swift @@ -26,7 +26,6 @@ sso_account_id = 222222222222 sso_role_name = LegacyRole """ -@Suite("AWSSSO - INI parsing") struct AWSSSOIniParsingTests { @Test("comment lines and empty lines are skipped") func skipsCommentsAndEmptyLines() { @@ -57,7 +56,6 @@ struct AWSSSOIniParsingTests { } } -@Suite("AWSSSO - parseProfileSettings") struct AWSSSOProfileSettingsTests { @Test("modern profile resolves all fields from sso-session block") func resolvesModernProfile() throws { @@ -118,7 +116,6 @@ struct AWSSSOProfileSettingsTests { } } -@Suite("AWSSSO - readAccessToken") struct AWSSSOTokenCacheTests { private func makeCacheDirectory() throws -> String { let dir = NSTemporaryDirectory() + "AWSSSOTokenCacheTests_\(UUID().uuidString)/" @@ -258,7 +255,6 @@ private final class AWSSSOStubProtocol: URLProtocol, @unchecked Sendable { } } -@Suite("AWSSSO - fetchRoleCredentials") struct AWSSSOFetchTests { private let settings = AWSSSOProfileSettings( accountId: "111111111111", diff --git a/TableProTests/AWS/AWSSSOTokenCacheWritingTests.swift b/TableProTests/AWS/AWSSSOTokenCacheWritingTests.swift index b054981c83..60692250ff 100644 --- a/TableProTests/AWS/AWSSSOTokenCacheWritingTests.swift +++ b/TableProTests/AWS/AWSSSOTokenCacheWritingTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS SSO token cache writing") struct AWSSSOTokenCacheWritingTests { private func makeCacheDirectory() throws -> String { let directory = FileManager.default.temporaryDirectory diff --git a/TableProTests/AWS/AWSSTSTests.swift b/TableProTests/AWS/AWSSTSTests.swift index eec01cd813..91b6f46bf6 100644 --- a/TableProTests/AWS/AWSSTSTests.swift +++ b/TableProTests/AWS/AWSSTSTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS STS AssumeRole response parsing") struct AWSSTSTests { private let validResponse = """ diff --git a/TableProTests/AWS/ElastiCacheAuthTokenTests.swift b/TableProTests/AWS/ElastiCacheAuthTokenTests.swift index ff50c4eadf..1fcac5b74e 100644 --- a/TableProTests/AWS/ElastiCacheAuthTokenTests.swift +++ b/TableProTests/AWS/ElastiCacheAuthTokenTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ElastiCache IAM auth token") struct ElastiCacheAuthTokenTests { private let credentials = AWSCredentials( accessKeyId: "AKIDEXAMPLE", diff --git a/TableProTests/AWS/KeyspacesSigV4Tests.swift b/TableProTests/AWS/KeyspacesSigV4Tests.swift index a03d29d643..af28f65a35 100644 --- a/TableProTests/AWS/KeyspacesSigV4Tests.swift +++ b/TableProTests/AWS/KeyspacesSigV4Tests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AWS Keyspaces SigV4 authentication") struct KeyspacesSigV4Tests { private let credentials = AWSCredentials( accessKeyId: "AKIDEXAMPLE", diff --git a/TableProTests/AWS/RDSConnectionBuilderTests.swift b/TableProTests/AWS/RDSConnectionBuilderTests.swift index eb8161ef26..b3f93bf3fe 100644 --- a/TableProTests/AWS/RDSConnectionBuilderTests.swift +++ b/TableProTests/AWS/RDSConnectionBuilderTests.swift @@ -4,7 +4,6 @@ import TableProImport import TableProPluginKit import Testing -@Suite("RDS connection building") struct RDSConnectionBuilderTests { private static let iamAuthentication = AWSDiscoveryAuthentication( mode: .iam, diff --git a/TableProTests/AWS/RDSDescribeResponseParserTests.swift b/TableProTests/AWS/RDSDescribeResponseParserTests.swift index 18a33d33c0..58e2f31653 100644 --- a/TableProTests/AWS/RDSDescribeResponseParserTests.swift +++ b/TableProTests/AWS/RDSDescribeResponseParserTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("RDS describe response parsing") struct RDSDescribeResponseParserTests { static let instancesXML = """ diff --git a/TableProTests/AWS/RDSDiscoveryPlanTests.swift b/TableProTests/AWS/RDSDiscoveryPlanTests.swift index db739e5ecf..fe251a62da 100644 --- a/TableProTests/AWS/RDSDiscoveryPlanTests.swift +++ b/TableProTests/AWS/RDSDiscoveryPlanTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("RDS discovery plan") struct RDSDiscoveryPlanTests { private func instance( identifier: String, diff --git a/TableProTests/AWS/RDSDiscoveryReconcilerTests.swift b/TableProTests/AWS/RDSDiscoveryReconcilerTests.swift index 0e078769f3..06443c097b 100644 --- a/TableProTests/AWS/RDSDiscoveryReconcilerTests.swift +++ b/TableProTests/AWS/RDSDiscoveryReconcilerTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProImport import Testing -@Suite("RDS discovery reconciliation") struct RDSDiscoveryReconcilerTests { private func exportable( name: String = "orders", diff --git a/TableProTests/Accessibility/AccessibleControlNameTests.swift b/TableProTests/Accessibility/AccessibleControlNameTests.swift index 58c56f752e..d817392770 100644 --- a/TableProTests/Accessibility/AccessibleControlNameTests.swift +++ b/TableProTests/Accessibility/AccessibleControlNameTests.swift @@ -17,7 +17,6 @@ import Testing /// reads hints only after a delay, if the user has not turned them off. So a button carrying a /// perfectly good localized string in `.help()` and nothing in `.accessibilityLabel()` announces /// its SF Symbol name, or nothing at all. -@Suite("Accessible control names") struct AccessibleControlNameTests { /// Every one of these had a name in `.help()` and none in `.accessibilityLabel()`. The pairs /// are (file, the label string that must appear in it), so the test fails if a label is dropped @@ -106,7 +105,6 @@ struct AccessibleControlNameTests { /// measured, so a sorted column is announced only when its header cell is told directly. The plan /// outline gives every column a `sortDescriptorPrototype`, so all of them are click-sortable, and /// none of them said which way it was sorted. -@Suite("Query plan sort direction") @MainActor struct QueryPlanSortDirectionTests { @Test("The sorted column publishes its direction and the others publish none") diff --git a/TableProTests/CloudSQL/CloudSQLProxyBinaryManagerTests.swift b/TableProTests/CloudSQL/CloudSQLProxyBinaryManagerTests.swift index 12a2d7bad6..b5a35ec9bf 100644 --- a/TableProTests/CloudSQL/CloudSQLProxyBinaryManagerTests.swift +++ b/TableProTests/CloudSQL/CloudSQLProxyBinaryManagerTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Cloud SQL Auth Proxy binary manager") struct CloudSQLProxyBinaryManagerTests { private func makeTempDirectory() throws -> URL { let url = FileManager.default.temporaryDirectory diff --git a/TableProTests/CloudSQL/CloudSQLProxyModelTests.swift b/TableProTests/CloudSQL/CloudSQLProxyModelTests.swift index 9464ec8a9f..0b35fa182f 100644 --- a/TableProTests/CloudSQL/CloudSQLProxyModelTests.swift +++ b/TableProTests/CloudSQL/CloudSQLProxyModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Cloud SQL Auth Proxy model") struct CloudSQLProxyModelTests { @Test("CloudSQLProxyConfiguration round-trips through Codable") func configurationRoundTrip() throws { diff --git a/TableProTests/CloudSQL/CloudSQLProxyPaneViewModelTests.swift b/TableProTests/CloudSQL/CloudSQLProxyPaneViewModelTests.swift index a73a9b33e0..6b300b9d52 100644 --- a/TableProTests/CloudSQL/CloudSQLProxyPaneViewModelTests.swift +++ b/TableProTests/CloudSQL/CloudSQLProxyPaneViewModelTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Cloud SQL Auth Proxy pane view model") struct CloudSQLProxyPaneViewModelTests { @Test("disabled reports no issues") func disabledNoIssues() { diff --git a/TableProTests/Cloudflare/CloudflareModelTests.swift b/TableProTests/Cloudflare/CloudflareModelTests.swift index 9807ea1694..f7cd2a803e 100644 --- a/TableProTests/Cloudflare/CloudflareModelTests.swift +++ b/TableProTests/Cloudflare/CloudflareModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Cloudflare tunnel model") struct CloudflareModelTests { @Test("CloudflareConfiguration round-trips through Codable") func configurationRoundTrip() throws { diff --git a/TableProTests/Cloudflare/CloudflareTunnelPaneViewModelTests.swift b/TableProTests/Cloudflare/CloudflareTunnelPaneViewModelTests.swift index ad266ca7d3..8bb0047a02 100644 --- a/TableProTests/Cloudflare/CloudflareTunnelPaneViewModelTests.swift +++ b/TableProTests/Cloudflare/CloudflareTunnelPaneViewModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Cloudflare tunnel pane validation") @MainActor struct CloudflareTunnelPaneViewModelTests { @Test("disabled tunnel reports no validation issues") diff --git a/TableProTests/Core/AI/AIChatInlineSourceTests.swift b/TableProTests/Core/AI/AIChatInlineSourceTests.swift index 06715cc049..8cd1fb14e1 100644 --- a/TableProTests/Core/AI/AIChatInlineSourceTests.swift +++ b/TableProTests/Core/AI/AIChatInlineSourceTests.swift @@ -40,7 +40,6 @@ private final class RecordingTransport: ChatTransport, @unchecked Sendable { func testConnection() async throws -> Bool { true } } -@Suite("AI chat inline source honours the connection's AI policy") @MainActor internal struct AIChatInlineSourceTests { private let connectionId = UUID() @@ -161,7 +160,6 @@ internal struct AIChatInlineSourceTests { } } -@Suite("Inline suggestion source kind") internal struct InlineSuggestionSourceKindTests { private func settings(providerType: AIProviderType, inlineEnabled: Bool = true) -> AISettings { let provider = AIProviderConfig(name: "Test", type: providerType) diff --git a/TableProTests/Core/AI/AIConnectionAccessGateTests.swift b/TableProTests/Core/AI/AIConnectionAccessGateTests.swift index 114c971823..c3c157e2c3 100644 --- a/TableProTests/Core/AI/AIConnectionAccessGateTests.swift +++ b/TableProTests/Core/AI/AIConnectionAccessGateTests.swift @@ -17,7 +17,6 @@ private final class PolicyBox { } } -@Suite("AI connection access gate") @MainActor internal struct AIConnectionAccessGateTests { private func makeGate(_ box: PolicyBox, approvals: AIAccessApprovals) -> AIConnectionAccessGate { @@ -90,7 +89,6 @@ internal struct AIConnectionAccessGateTests { } } -@Suite("AI connection access gate reading the saved connection") @MainActor internal struct AIConnectionAccessGateSavedPolicyTests { private let storage: ConnectionStorage @@ -195,7 +193,6 @@ internal struct AIConnectionAccessGateSavedPolicyTests { } } -@Suite("AI access approvals across the chat and the session") @MainActor internal struct AIAccessApprovalsSessionTests { @Test("Ending a connection's session revokes its approval and leaves the others") diff --git a/TableProTests/Core/AI/AIEndpointTests.swift b/TableProTests/Core/AI/AIEndpointTests.swift index f793b73467..d26511eb54 100644 --- a/TableProTests/Core/AI/AIEndpointTests.swift +++ b/TableProTests/Core/AI/AIEndpointTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("AI Endpoint Resolution") struct AIEndpointTests { private func chatURL(_ configured: String, _ style: AIEndpointStyle, model: String = "m") -> String? { AIEndpoint(configured, style: style)?.chatURL(model: model, style: style)?.absoluteString diff --git a/TableProTests/Core/AI/AIModelCatalogTests.swift b/TableProTests/Core/AI/AIModelCatalogTests.swift index eb3fa48c30..94eb8e6769 100644 --- a/TableProTests/Core/AI/AIModelCatalogTests.swift +++ b/TableProTests/Core/AI/AIModelCatalogTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AI model catalog") struct AIModelCatalogTests { private let claude = AIProviderType.claude.rawValue diff --git a/TableProTests/Core/AI/AIModelListFetchGateTests.swift b/TableProTests/Core/AI/AIModelListFetchGateTests.swift index 88d2d3e965..9e2fcecbcc 100644 --- a/TableProTests/Core/AI/AIModelListFetchGateTests.swift +++ b/TableProTests/Core/AI/AIModelListFetchGateTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("AI model list fetch gate") struct AIModelListFetchGateTests { @Test("A provider that cannot fetch a model list is blocked whatever the key") func blocksWhenNotFetchable() { diff --git a/TableProTests/Core/AI/AIProviderCapabilitiesTests.swift b/TableProTests/Core/AI/AIProviderCapabilitiesTests.swift index 715fd7a391..91d6327897 100644 --- a/TableProTests/Core/AI/AIProviderCapabilitiesTests.swift +++ b/TableProTests/Core/AI/AIProviderCapabilitiesTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AIProviderDescriptor capabilities") struct AIProviderCapabilitiesTests { init() { AIProviderRegistration.registerAll() diff --git a/TableProTests/Core/AI/AIProviderErrorTests.swift b/TableProTests/Core/AI/AIProviderErrorTests.swift index f0590c1925..35e3e30d10 100644 --- a/TableProTests/Core/AI/AIProviderErrorTests.swift +++ b/TableProTests/Core/AI/AIProviderErrorTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("AIProviderError.isRetryable") struct AIProviderErrorTests { @Test("Transient transport failures are retryable") func transientErrorsAreRetryable() { diff --git a/TableProTests/Core/AI/AIProviderFactoryCacheTests.swift b/TableProTests/Core/AI/AIProviderFactoryCacheTests.swift index c9affcc364..c67588ae1c 100644 --- a/TableProTests/Core/AI/AIProviderFactoryCacheTests.swift +++ b/TableProTests/Core/AI/AIProviderFactoryCacheTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("AIProviderFactory cache") @MainActor struct AIProviderFactoryCacheTests { private func makeConfig( diff --git a/TableProTests/Core/AI/AIProviderFactoryResolveTests.swift b/TableProTests/Core/AI/AIProviderFactoryResolveTests.swift index 6f8346df53..38621ed64f 100644 --- a/TableProTests/Core/AI/AIProviderFactoryResolveTests.swift +++ b/TableProTests/Core/AI/AIProviderFactoryResolveTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AIProviderFactory.resolve") @MainActor struct AIProviderFactoryResolveTests { /// Each test uses a unique provider id so the factory cache (keyed by id) diff --git a/TableProTests/Core/AI/AIQueryActionSupportTests.swift b/TableProTests/Core/AI/AIQueryActionSupportTests.swift index b69ee9b9d7..bef3a5ff97 100644 --- a/TableProTests/Core/AI/AIQueryActionSupportTests.swift +++ b/TableProTests/Core/AI/AIQueryActionSupportTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AIQueryActionAvailability") struct AIQueryActionAvailabilityTests { private func availability( aiEnabled: Bool = true, @@ -62,7 +61,6 @@ struct AIQueryActionAvailabilityTests { } } -@Suite("AIQueryTarget") struct AIQueryTargetTests { @Test("A word the right-click selected sends the statement around it") func contextClickWordUsesStatement() { @@ -79,7 +77,6 @@ struct AIQueryTargetTests { } } -@Suite("WalkthroughApplyPlan") struct WalkthroughApplyPlanTests { private let tabId = UUID() private let text = "SELECT 1;\nSELECT * FROM t WHERE a = 1;\nSELECT 3;" @@ -128,7 +125,6 @@ struct WalkthroughApplyPlanTests { } } -@Suite("Query context attachment") struct QueryContextAttachmentTests { private func attachment() -> QueryContextAttachment { QueryContextAttachment(connectionId: UUID(), database: "shop", schema: "public", statement: "SELECT * FROM orders") @@ -177,7 +173,6 @@ struct QueryContextAttachmentTests { } } -@Suite("AI query action shortcuts") struct AIQueryActionShortcutTests { @Test("Every AI query shortcut is an editor-context command, Review on Option-Shift-Command-L") func shortcuts() { diff --git a/TableProTests/Core/AI/AnthropicModelCapabilitiesTests.swift b/TableProTests/Core/AI/AnthropicModelCapabilitiesTests.swift index d5215ed81f..e3fd6f1a3d 100644 --- a/TableProTests/Core/AI/AnthropicModelCapabilitiesTests.swift +++ b/TableProTests/Core/AI/AnthropicModelCapabilitiesTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Anthropic model capabilities") struct AnthropicModelCapabilitiesTests { init() { AIProviderRegistration.registerAll() diff --git a/TableProTests/Core/AI/AnthropicProviderEncodingTests.swift b/TableProTests/Core/AI/AnthropicProviderEncodingTests.swift index 593d8a2c5b..cdea57f739 100644 --- a/TableProTests/Core/AI/AnthropicProviderEncodingTests.swift +++ b/TableProTests/Core/AI/AnthropicProviderEncodingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AnthropicProvider wire encoding") struct AnthropicProviderEncodingTests { @Test("Tool spec encodes with input_schema (snake_case)") func toolSpecKeyCasing() throws { diff --git a/TableProTests/Core/AI/AnthropicProviderParserTests.swift b/TableProTests/Core/AI/AnthropicProviderParserTests.swift index 34a3a3abf9..99c04e04ac 100644 --- a/TableProTests/Core/AI/AnthropicProviderParserTests.swift +++ b/TableProTests/Core/AI/AnthropicProviderParserTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("AnthropicProvider stream parser") struct AnthropicProviderParserTests { private func parse(_ json: [String: Any], state: inout AnthropicStreamState) throws -> [ChatStreamEvent] { try AnthropicProvider.parseChunk(json, state: &state) diff --git a/TableProTests/Core/AI/AssembleToolUseBlocksTests.swift b/TableProTests/Core/AI/AssembleToolUseBlocksTests.swift index 3e55539d7b..79b1ae30ee 100644 --- a/TableProTests/Core/AI/AssembleToolUseBlocksTests.swift +++ b/TableProTests/Core/AI/AssembleToolUseBlocksTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("AIChatViewModel.assembleToolUseBlocks") struct AssembleToolUseBlocksTests { @Test("Empty inputs produce empty objects") func emptyInputs() { diff --git a/TableProTests/Core/AI/Chat/ChatToolTargetTests.swift b/TableProTests/Core/AI/Chat/ChatToolTargetTests.swift index ddaf8ca414..38846b4376 100644 --- a/TableProTests/Core/AI/Chat/ChatToolTargetTests.swift +++ b/TableProTests/Core/AI/Chat/ChatToolTargetTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatToolTarget") @MainActor struct ChatToolTargetTests { private static let sessionConnection = UUID() diff --git a/TableProTests/Core/AI/Chat/ToolApprovalOrderingTests.swift b/TableProTests/Core/AI/Chat/ToolApprovalOrderingTests.swift index 317d93d530..438e002a2a 100644 --- a/TableProTests/Core/AI/Chat/ToolApprovalOrderingTests.swift +++ b/TableProTests/Core/AI/Chat/ToolApprovalOrderingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ToolApprovalCenter ordering") @MainActor struct ToolApprovalOrderingTests { private let session = UUID() diff --git a/TableProTests/Core/AI/ChatContentBlockWireWalkthroughTests.swift b/TableProTests/Core/AI/ChatContentBlockWireWalkthroughTests.swift index 8dde4cb2a2..6aed643c21 100644 --- a/TableProTests/Core/AI/ChatContentBlockWireWalkthroughTests.swift +++ b/TableProTests/Core/AI/ChatContentBlockWireWalkthroughTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatContentBlockWire SQL walkthrough") struct ChatContentBlockWireWalkthroughTests { private func sampleBlock() -> SqlWalkthroughBlock { SqlWalkthroughBlock( diff --git a/TableProTests/Core/AI/ChatGPTCodexJWTTests.swift b/TableProTests/Core/AI/ChatGPTCodexJWTTests.swift index ff6492812b..44a5170581 100644 --- a/TableProTests/Core/AI/ChatGPTCodexJWTTests.swift +++ b/TableProTests/Core/AI/ChatGPTCodexJWTTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatGPTCodexJWT") struct ChatGPTCodexJWTTests { private func makeIDToken( accountID: String?, diff --git a/TableProTests/Core/AI/ChatGPTCodexPKCETests.swift b/TableProTests/Core/AI/ChatGPTCodexPKCETests.swift index c18b73e8dc..baf0fcc576 100644 --- a/TableProTests/Core/AI/ChatGPTCodexPKCETests.swift +++ b/TableProTests/Core/AI/ChatGPTCodexPKCETests.swift @@ -8,7 +8,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatGPTCodexPKCE") struct ChatGPTCodexPKCETests { @Test("Verifier length is within the RFC 7636 range") func verifierLength() { diff --git a/TableProTests/Core/AI/ChatGPTCodexProviderEncodingTests.swift b/TableProTests/Core/AI/ChatGPTCodexProviderEncodingTests.swift index 59d27a5fa5..b9d2a1fb66 100644 --- a/TableProTests/Core/AI/ChatGPTCodexProviderEncodingTests.swift +++ b/TableProTests/Core/AI/ChatGPTCodexProviderEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatGPTCodexProvider request encoding") struct ChatGPTCodexProviderEncodingTests { @Test("Headers carry bearer token, account id, and Codex originator") func headersIncludeAccountAndOriginator() { diff --git a/TableProTests/Core/AI/ChatGPTCodexRegistrationTests.swift b/TableProTests/Core/AI/ChatGPTCodexRegistrationTests.swift index ad037e6866..186c936882 100644 --- a/TableProTests/Core/AI/ChatGPTCodexRegistrationTests.swift +++ b/TableProTests/Core/AI/ChatGPTCodexRegistrationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatGPTCodex provider registration") struct ChatGPTCodexRegistrationTests { @Test("ChatGPT Codex uses the OAuth auth style") func authStyleIsOAuth() { diff --git a/TableProTests/Core/AI/ChatGPTCodexTokenStoreTests.swift b/TableProTests/Core/AI/ChatGPTCodexTokenStoreTests.swift index f0c8de42ed..213b9abb68 100644 --- a/TableProTests/Core/AI/ChatGPTCodexTokenStoreTests.swift +++ b/TableProTests/Core/AI/ChatGPTCodexTokenStoreTests.swift @@ -26,7 +26,6 @@ private actor FakeRefresher: ChatGPTCodexTokenRefreshing { } } -@Suite("ChatGPTCodexTokenStore") struct ChatGPTCodexTokenStoreTests { private func tokens( refresh: String = "r", diff --git a/TableProTests/Core/AI/ChatPreflightTests.swift b/TableProTests/Core/AI/ChatPreflightTests.swift index 74b67f7ef5..b59745ec02 100644 --- a/TableProTests/Core/AI/ChatPreflightTests.swift +++ b/TableProTests/Core/AI/ChatPreflightTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Chat preflight") struct ChatPreflightTests { private func text(_ length: Int) -> String { String(repeating: "a", count: length) diff --git a/TableProTests/Core/AI/ChatToolArgumentDecoderTests.swift b/TableProTests/Core/AI/ChatToolArgumentDecoderTests.swift index 3e7213a2e6..d23d42f2e4 100644 --- a/TableProTests/Core/AI/ChatToolArgumentDecoderTests.swift +++ b/TableProTests/Core/AI/ChatToolArgumentDecoderTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ChatToolArgumentDecoder") struct ChatToolArgumentDecoderTests { @Test("requireString returns value when key exists and is a string") func requireStringPresent() throws { diff --git a/TableProTests/Core/AI/ChatToolRegistryModeTests.swift b/TableProTests/Core/AI/ChatToolRegistryModeTests.swift index e80b4e78a2..490605fac7 100644 --- a/TableProTests/Core/AI/ChatToolRegistryModeTests.swift +++ b/TableProTests/Core/AI/ChatToolRegistryModeTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ChatToolRegistry mode gating") @MainActor struct ChatToolRegistryModeTests { private struct StubTool: ChatTool { diff --git a/TableProTests/Core/AI/ChatToolRegistryTests.swift b/TableProTests/Core/AI/ChatToolRegistryTests.swift index 28eda11461..85f7fad26f 100644 --- a/TableProTests/Core/AI/ChatToolRegistryTests.swift +++ b/TableProTests/Core/AI/ChatToolRegistryTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ChatToolRegistry") @MainActor struct ChatToolRegistryTests { private struct StubTool: ChatTool { diff --git a/TableProTests/Core/AI/ChatToolScopeParameterTests.swift b/TableProTests/Core/AI/ChatToolScopeParameterTests.swift index 3698c6b8b3..aca62437c2 100644 --- a/TableProTests/Core/AI/ChatToolScopeParameterTests.swift +++ b/TableProTests/Core/AI/ChatToolScopeParameterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Chat tool scope parameters") struct ChatToolScopeParameterTests { private static func nullableTypes(_ schema: JsonValue?, property: String) -> [String] { let type = schema?["properties"]?[property]?["type"] diff --git a/TableProTests/Core/AI/ChatToolSpecCopilotTests.swift b/TableProTests/Core/AI/ChatToolSpecCopilotTests.swift index bd86edafaf..42434b22e6 100644 --- a/TableProTests/Core/AI/ChatToolSpecCopilotTests.swift +++ b/TableProTests/Core/AI/ChatToolSpecCopilotTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ChatToolSpec.asCopilotToolInformation") struct ChatToolSpecCopilotTests { @Test("a schema with no required array keeps none") func addsRequiredWhenMissing() throws { diff --git a/TableProTests/Core/AI/ChatTurnInterleavingTests.swift b/TableProTests/Core/AI/ChatTurnInterleavingTests.swift index 7d688a3c97..711fd22699 100644 --- a/TableProTests/Core/AI/ChatTurnInterleavingTests.swift +++ b/TableProTests/Core/AI/ChatTurnInterleavingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChatTurn streaming + block interleaving") @MainActor struct ChatTurnInterleavingTests { @Test("appendStreamingToken creates a streaming text block on first token") diff --git a/TableProTests/Core/AI/ChatTurnObservationTests.swift b/TableProTests/Core/AI/ChatTurnObservationTests.swift index 084bac748e..0b9f383edc 100644 --- a/TableProTests/Core/AI/ChatTurnObservationTests.swift +++ b/TableProTests/Core/AI/ChatTurnObservationTests.swift @@ -12,7 +12,6 @@ import Testing /// The granularity these assert is now `objectWillChange` per object rather than /// `@Observable`'s per property: a mutation inside a block must not wake the turn or the /// view model, or the whole chat re-renders on every streamed token. -@Suite("ChatTurn observation granularity") @MainActor struct ChatTurnObservationTests { private func makeStreamingTurn() -> (ChatTurn, ChatContentBlock) { diff --git a/TableProTests/Core/AI/ClaudeAgentProviderTests.swift b/TableProTests/Core/AI/ClaudeAgentProviderTests.swift index 8e238fa1c2..67514cc184 100644 --- a/TableProTests/Core/AI/ClaudeAgentProviderTests.swift +++ b/TableProTests/Core/AI/ClaudeAgentProviderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ClaudeAgentProvider") struct ClaudeAgentProviderTests { @Test("Inference arguments constrain the CLI to a chat backend and end with the prompt") func inferenceArgumentsConstrainTheAgent() { @@ -116,7 +115,6 @@ struct ClaudeAgentProviderTests { } } -@Suite("ClaudeAgentCLI") struct ClaudeAgentCLITests { @Test("Auth status decodes a signed-in subscription account") func authStatusDecodesSubscription() { @@ -157,7 +155,6 @@ struct ClaudeAgentCLITests { } } -@Suite("ClaudeAgentDisclosure") struct ClaudeAgentDisclosureTests { @Test("Every note carries text and a unique identifier") func notesAreWellFormed() { @@ -191,7 +188,6 @@ struct ClaudeAgentDisclosureTests { } } -@Suite("AgentCLIDiscovery") struct AgentCLIDiscoveryTests { @Test("The first executable candidate wins") func firstExecutableCandidateWins() { @@ -231,7 +227,6 @@ struct AgentCLIDiscoveryTests { } } -@Suite("ClaudeAgentMCPBridge") struct ClaudeAgentMCPBridgeTests { @Test("The MCP config carries the bearer token and TablePro's server name") func configCarriesScopedToken() throws { @@ -249,7 +244,6 @@ struct ClaudeAgentMCPBridgeTests { } } -@Suite("ClaudeAgent registration") struct ClaudeAgentRegistrationTests { @Test("Claude Agent needs no API key, so the settings sheet shows no key field") func claudeAgentUsesNoAPIKey() { diff --git a/TableProTests/Core/AI/ContextItemSavedQueryCodableTests.swift b/TableProTests/Core/AI/ContextItemSavedQueryCodableTests.swift index 460afe1ab4..4e36d3393e 100644 --- a/TableProTests/Core/AI/ContextItemSavedQueryCodableTests.swift +++ b/TableProTests/Core/AI/ContextItemSavedQueryCodableTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ContextItem.savedQuery Codable migration") struct ContextItemSavedQueryCodableTests { @Test("Decodes legacy payload missing the name field") func decodesLegacyMissingName() throws { diff --git a/TableProTests/Core/AI/CopilotBinaryManagerTests.swift b/TableProTests/Core/AI/CopilotBinaryManagerTests.swift index d65ec505d0..c32eb64401 100644 --- a/TableProTests/Core/AI/CopilotBinaryManagerTests.swift +++ b/TableProTests/Core/AI/CopilotBinaryManagerTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Copilot binary manager") struct CopilotBinaryManagerTests { private func makeTempDirectory() throws -> URL { let url = FileManager.default.temporaryDirectory diff --git a/TableProTests/Core/AI/CopilotIdleStopControllerTests.swift b/TableProTests/Core/AI/CopilotIdleStopControllerTests.swift index 8ca024b42a..b69cfe8ad4 100644 --- a/TableProTests/Core/AI/CopilotIdleStopControllerTests.swift +++ b/TableProTests/Core/AI/CopilotIdleStopControllerTests.swift @@ -21,7 +21,6 @@ private final class TestState { } } -@Suite("CopilotIdleStopController") @MainActor struct CopilotIdleStopControllerTests { private static let timeout: Duration = .milliseconds(40) diff --git a/TableProTests/Core/AI/CopilotPreambleBuilderTests.swift b/TableProTests/Core/AI/CopilotPreambleBuilderTests.swift index 7588a54c32..027662991b 100644 --- a/TableProTests/Core/AI/CopilotPreambleBuilderTests.swift +++ b/TableProTests/Core/AI/CopilotPreambleBuilderTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Copilot schema preamble") @MainActor struct CopilotPreambleBuilderTests { /// The preamble fetched every table's columns with no schema and keyed them by the bare name, diff --git a/TableProTests/Core/AI/CopilotSchemaSanitizationTests.swift b/TableProTests/Core/AI/CopilotSchemaSanitizationTests.swift index 963f4f75ec..5329b7711c 100644 --- a/TableProTests/Core/AI/CopilotSchemaSanitizationTests.swift +++ b/TableProTests/Core/AI/CopilotSchemaSanitizationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Copilot schema sanitization") struct CopilotSchemaSanitizationTests { @Test("Converts type:[X,null] to type:X and drops the field from required") func rewritesOptionalScalar() { diff --git a/TableProTests/Core/AI/CursorAgentProviderTests.swift b/TableProTests/Core/AI/CursorAgentProviderTests.swift index c5b882c232..1a8b01babe 100644 --- a/TableProTests/Core/AI/CursorAgentProviderTests.swift +++ b/TableProTests/Core/AI/CursorAgentProviderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CursorAgentProvider") struct CursorAgentProviderTests { @Test("Inference arguments stream JSON, pass model and workspace, and end with the prompt") func inferenceArgumentsFull() { diff --git a/TableProTests/Core/AI/CursorProviderEncodingTests.swift b/TableProTests/Core/AI/CursorProviderEncodingTests.swift index b7dc79ff2f..02d029f1dd 100644 --- a/TableProTests/Core/AI/CursorProviderEncodingTests.swift +++ b/TableProTests/Core/AI/CursorProviderEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CursorProvider request encoding") struct CursorProviderEncodingTests { @Test("Prompt renders the system prompt and the role-tagged conversation") func renderPrompt() { diff --git a/TableProTests/Core/AI/CursorProviderStreamParserTests.swift b/TableProTests/Core/AI/CursorProviderStreamParserTests.swift index 93b3930127..d5b4563268 100644 --- a/TableProTests/Core/AI/CursorProviderStreamParserTests.swift +++ b/TableProTests/Core/AI/CursorProviderStreamParserTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CursorProvider SSE stream parsing") struct CursorProviderStreamParserTests { private func deltas(from lines: [String]) -> [CursorProvider.StreamParser.Output] { var parser = CursorProvider.StreamParser() diff --git a/TableProTests/Core/AI/CursorRegistrationTests.swift b/TableProTests/Core/AI/CursorRegistrationTests.swift index 3db5d5faa3..deaeb0f03c 100644 --- a/TableProTests/Core/AI/CursorRegistrationTests.swift +++ b/TableProTests/Core/AI/CursorRegistrationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Cursor provider registration") struct CursorRegistrationTests { init() { AIProviderRegistration.registerAll() diff --git a/TableProTests/Core/AI/CustomProviderRegistrationTests.swift b/TableProTests/Core/AI/CustomProviderRegistrationTests.swift index 7f8f167f5b..ed64b666d0 100644 --- a/TableProTests/Core/AI/CustomProviderRegistrationTests.swift +++ b/TableProTests/Core/AI/CustomProviderRegistrationTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Custom provider registration") struct CustomProviderRegistrationTests { private func descriptor() -> AIProviderDescriptor? { AIProviderRegistration.registerAll() diff --git a/TableProTests/Core/AI/CustomSlashCommandRendererTests.swift b/TableProTests/Core/AI/CustomSlashCommandRendererTests.swift index 5e0d0cd7bc..50a9324e5d 100644 --- a/TableProTests/Core/AI/CustomSlashCommandRendererTests.swift +++ b/TableProTests/Core/AI/CustomSlashCommandRendererTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("CustomSlashCommandRenderer") struct CustomSlashCommandRendererTests { private func makeCommand(template: String) -> CustomSlashCommand { CustomSlashCommand(name: "test", description: "", promptTemplate: template) diff --git a/TableProTests/Core/AI/DestructiveToolApprovalTests.swift b/TableProTests/Core/AI/DestructiveToolApprovalTests.swift index 072a9ea22d..c36a8d598b 100644 --- a/TableProTests/Core/AI/DestructiveToolApprovalTests.swift +++ b/TableProTests/Core/AI/DestructiveToolApprovalTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Destructive tool approval contract") struct DestructiveToolApprovalTests { @Test("ConfirmDestructiveOperationChatTool is agentOnly mode") func toolIsAgentOnly() { diff --git a/TableProTests/Core/AI/ExecuteToolUsesTests.swift b/TableProTests/Core/AI/ExecuteToolUsesTests.swift index 7ca81fe1e0..f04750ed97 100644 --- a/TableProTests/Core/AI/ExecuteToolUsesTests.swift +++ b/TableProTests/Core/AI/ExecuteToolUsesTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AIChatViewModel.executeToolUses") @MainActor struct ExecuteToolUsesTests { /// Stub tool that returns a fixed response when invoked. Tracks invocation diff --git a/TableProTests/Core/AI/GeminiProviderEncodingTests.swift b/TableProTests/Core/AI/GeminiProviderEncodingTests.swift index 3b75ce8b7c..09eb0f5066 100644 --- a/TableProTests/Core/AI/GeminiProviderEncodingTests.swift +++ b/TableProTests/Core/AI/GeminiProviderEncodingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("GeminiProvider wire encoding") struct GeminiProviderEncodingTests { private func makeProvider() -> GeminiProvider { GeminiProvider( @@ -122,7 +121,6 @@ struct GeminiProviderEncodingTests { } } -@Suite("GeminiProvider schema sanitization") struct GeminiProviderSchemaSanitizationTests { @Test("Strips additionalProperties at any depth") func stripsAdditionalProperties() { diff --git a/TableProTests/Core/AI/GeminiProviderParserTests.swift b/TableProTests/Core/AI/GeminiProviderParserTests.swift index cd66a0a712..743fe34b82 100644 --- a/TableProTests/Core/AI/GeminiProviderParserTests.swift +++ b/TableProTests/Core/AI/GeminiProviderParserTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("GeminiProvider stream parser") struct GeminiProviderParserTests { private let stableID = "stable-id" diff --git a/TableProTests/Core/AI/InlineSuggestionManagerCompositionTests.swift b/TableProTests/Core/AI/InlineSuggestionManagerCompositionTests.swift index effa344b6c..f52b0b6e1c 100644 --- a/TableProTests/Core/AI/InlineSuggestionManagerCompositionTests.swift +++ b/TableProTests/Core/AI/InlineSuggestionManagerCompositionTests.swift @@ -53,7 +53,6 @@ private final class RecordingInlineSource: InlineSuggestionSource { } } -@Suite("Inline suggestions during an input method composition") @MainActor internal struct InlineSuggestionManagerCompositionTests { @MainActor diff --git a/TableProTests/Core/AI/InlineSuggestionManagerFocusTests.swift b/TableProTests/Core/AI/InlineSuggestionManagerFocusTests.swift index f6fb6c1c9f..3af3332127 100644 --- a/TableProTests/Core/AI/InlineSuggestionManagerFocusTests.swift +++ b/TableProTests/Core/AI/InlineSuggestionManagerFocusTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("InlineSuggestionManager Focus Lifecycle") @MainActor struct InlineSuggestionManagerFocusTests { @Test("Initial state: isEditorFocused is false") diff --git a/TableProTests/Core/AI/LocalProviderRegistrationTests.swift b/TableProTests/Core/AI/LocalProviderRegistrationTests.swift index 5e8d3e541b..4dd77045ea 100644 --- a/TableProTests/Core/AI/LocalProviderRegistrationTests.swift +++ b/TableProTests/Core/AI/LocalProviderRegistrationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Local OpenAI-compatible provider registration") struct LocalProviderRegistrationTests { init() { AIProviderRegistration.registerAll() diff --git a/TableProTests/Core/AI/MentionDetectorTests.swift b/TableProTests/Core/AI/MentionDetectorTests.swift index d212f3e446..80c41b0acf 100644 --- a/TableProTests/Core/AI/MentionDetectorTests.swift +++ b/TableProTests/Core/AI/MentionDetectorTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MentionDetector") struct MentionDetectorTests { @Test("Empty text returns nil") func emptyText() { diff --git a/TableProTests/Core/AI/MentionPopoverStateTests.swift b/TableProTests/Core/AI/MentionPopoverStateTests.swift index ab280b33c9..ffdf5d1d2a 100644 --- a/TableProTests/Core/AI/MentionPopoverStateTests.swift +++ b/TableProTests/Core/AI/MentionPopoverStateTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MentionPopoverState") @MainActor struct MentionPopoverStateTests { private func candidate(_ name: String) -> MentionCandidate { diff --git a/TableProTests/Core/AI/OAuthProviderServiceTests.swift b/TableProTests/Core/AI/OAuthProviderServiceTests.swift index 0c8fedd43c..8edc1574ec 100644 --- a/TableProTests/Core/AI/OAuthProviderServiceTests.swift +++ b/TableProTests/Core/AI/OAuthProviderServiceTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("OAuth provider abstraction") @MainActor struct OAuthProviderServiceTests { @Test("Registry dispatches OAuth providers to a service and others to nil") diff --git a/TableProTests/Core/AI/OpenAICompatibleProviderEncodingTests.swift b/TableProTests/Core/AI/OpenAICompatibleProviderEncodingTests.swift index 4f03d5fa7a..415578e1bf 100644 --- a/TableProTests/Core/AI/OpenAICompatibleProviderEncodingTests.swift +++ b/TableProTests/Core/AI/OpenAICompatibleProviderEncodingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("OpenAICompatibleProvider wire encoding") struct OpenAICompatibleProviderEncodingTests { private func makeProvider() -> OpenAICompatibleProvider { OpenAICompatibleProvider( diff --git a/TableProTests/Core/AI/OpenAICompatibleProviderParserTests.swift b/TableProTests/Core/AI/OpenAICompatibleProviderParserTests.swift index 391509477e..da5f8338bb 100644 --- a/TableProTests/Core/AI/OpenAICompatibleProviderParserTests.swift +++ b/TableProTests/Core/AI/OpenAICompatibleProviderParserTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("OpenAICompatibleProvider stream parser") struct OpenAICompatibleProviderParserTests { @Test("delta.content yields textDelta") func textDelta() { diff --git a/TableProTests/Core/AI/OpenAIResponsesProviderEncodingTests.swift b/TableProTests/Core/AI/OpenAIResponsesProviderEncodingTests.swift index 050ba26780..034ff6cfd5 100644 --- a/TableProTests/Core/AI/OpenAIResponsesProviderEncodingTests.swift +++ b/TableProTests/Core/AI/OpenAIResponsesProviderEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("OpenAIResponsesProvider request encoding") struct OpenAIResponsesProviderEncodingTests { @Test("encodeToolSpec emits flat shape with strict at top level") func toolSpecShape() throws { diff --git a/TableProTests/Core/AI/OpenAIResponsesProviderParserTests.swift b/TableProTests/Core/AI/OpenAIResponsesProviderParserTests.swift index a0e2c5e72e..c1b17836bc 100644 --- a/TableProTests/Core/AI/OpenAIResponsesProviderParserTests.swift +++ b/TableProTests/Core/AI/OpenAIResponsesProviderParserTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("OpenAIResponsesProvider stream parser") struct OpenAIResponsesProviderParserTests { private func parse(_ json: [String: Any], state: inout ResponsesStreamState) throws -> [ChatStreamEvent] { try OpenAIResponsesProvider.parseEvent(json, state: &state) diff --git a/TableProTests/Core/AI/QueryContextBuilderTests.swift b/TableProTests/Core/AI/QueryContextBuilderTests.swift index bba305e5f1..e0ac4a4ec8 100644 --- a/TableProTests/Core/AI/QueryContextBuilderTests.swift +++ b/TableProTests/Core/AI/QueryContextBuilderTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("QueryContextBuilder") @MainActor struct QueryContextBuilderTests { private let connectionId = UUID() diff --git a/TableProTests/Core/AI/QueryContextRendererTests.swift b/TableProTests/Core/AI/QueryContextRendererTests.swift index 1ea79caeb9..15311578c3 100644 --- a/TableProTests/Core/AI/QueryContextRendererTests.swift +++ b/TableProTests/Core/AI/QueryContextRendererTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryContextRenderer") struct QueryContextRendererTests { private let orders = QueryContextTable( name: "orders", @@ -135,7 +134,6 @@ struct QueryContextRendererTests { } } -@Suite("MarkdownFence") struct MarkdownFenceTests { @Test("Plain text gets a three-backtick fence") func plainFence() { diff --git a/TableProTests/Core/AI/QueryTableReferenceResolverTests.swift b/TableProTests/Core/AI/QueryTableReferenceResolverTests.swift index 1bd76b9577..19cabf3cec 100644 --- a/TableProTests/Core/AI/QueryTableReferenceResolverTests.swift +++ b/TableProTests/Core/AI/QueryTableReferenceResolverTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProSQLGrammar import Testing -@Suite("QueryTableReferenceResolver") struct QueryTableReferenceResolverTests { private func names(_ sql: String, grammar: SQLLexicalGrammar = .ansi) -> [String] { QueryTableReferenceResolver.sqlReferences(in: sql, grammar: grammar).map(\.displayName) diff --git a/TableProTests/Core/AI/ResponsesDialectTests.swift b/TableProTests/Core/AI/ResponsesDialectTests.swift index 2a95241d34..b24da0d02d 100644 --- a/TableProTests/Core/AI/ResponsesDialectTests.swift +++ b/TableProTests/Core/AI/ResponsesDialectTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ResponsesDialect") struct ResponsesDialectTests { @Test("Each dialect has its own default test model") func defaultTestModels() { diff --git a/TableProTests/Core/AI/SSEEventStreamTests.swift b/TableProTests/Core/AI/SSEEventStreamTests.swift index 133909fc98..371545932b 100644 --- a/TableProTests/Core/AI/SSEEventStreamTests.swift +++ b/TableProTests/Core/AI/SSEEventStreamTests.swift @@ -76,7 +76,6 @@ private final class MockSSEProtocol: URLProtocol, @unchecked Sendable { } } -@Suite("SSEEventStream") struct SSEEventStreamTests { private func makeSession() -> URLSession { let config = URLSessionConfiguration.ephemeral diff --git a/TableProTests/Core/AI/SchemaContextForAITests.swift b/TableProTests/Core/AI/SchemaContextForAITests.swift index 74de242ec0..09c007acb6 100644 --- a/TableProTests/Core/AI/SchemaContextForAITests.swift +++ b/TableProTests/Core/AI/SchemaContextForAITests.swift @@ -14,7 +14,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AI schema context") struct SchemaContextForAITests { private static func provider(tables: [TableInfo], columns: [String: [ColumnInfo]]) -> SQLSchemaProvider { let source = SQLSchemaProvider.ColumnMetadataSource( diff --git a/TableProTests/Core/AI/SlashCommandTests.swift b/TableProTests/Core/AI/SlashCommandTests.swift index ced3bbbec8..aee2134259 100644 --- a/TableProTests/Core/AI/SlashCommandTests.swift +++ b/TableProTests/Core/AI/SlashCommandTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SlashCommand") struct SlashCommandTests { @Test("parse recognizes known commands at the start of input") func parsesKnownCommand() { diff --git a/TableProTests/Core/AI/SqlWalkthroughAnchorTests.swift b/TableProTests/Core/AI/SqlWalkthroughAnchorTests.swift index 584ae815e7..b994503609 100644 --- a/TableProTests/Core/AI/SqlWalkthroughAnchorTests.swift +++ b/TableProTests/Core/AI/SqlWalkthroughAnchorTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SqlWalkthroughAnchor") struct SqlWalkthroughAnchorTests { @Test("An in-range before anchor is valid") func validBefore() { diff --git a/TableProTests/Core/AI/SqlWalkthroughPresentationTests.swift b/TableProTests/Core/AI/SqlWalkthroughPresentationTests.swift index 0269312779..736de6d031 100644 --- a/TableProTests/Core/AI/SqlWalkthroughPresentationTests.swift +++ b/TableProTests/Core/AI/SqlWalkthroughPresentationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SqlWalkthroughPresentation") struct SqlWalkthroughPresentationTests { private func sql(lines count: Int, prefix: String) -> String { (1...count).map { "\(prefix)\($0)" }.joined(separator: "\n") diff --git a/TableProTests/Core/AI/StreamTextBufferTests.swift b/TableProTests/Core/AI/StreamTextBufferTests.swift index 1339e1365e..7d6df65c5b 100644 --- a/TableProTests/Core/AI/StreamTextBufferTests.swift +++ b/TableProTests/Core/AI/StreamTextBufferTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("StreamTextBuffer") @MainActor struct StreamTextBufferTests { @Test("Text appends accumulate and drain once") diff --git a/TableProTests/Core/AI/StrictToolSchemaTests.swift b/TableProTests/Core/AI/StrictToolSchemaTests.swift index 160d2507a1..fd262df1de 100644 --- a/TableProTests/Core/AI/StrictToolSchemaTests.swift +++ b/TableProTests/Core/AI/StrictToolSchemaTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Strict tool schema audit") struct StrictToolSchemaTests { private let tools: [any ChatTool] = [ ListConnectionsChatTool(), diff --git a/TableProTests/Core/AI/SynthesizeResultsTests.swift b/TableProTests/Core/AI/SynthesizeResultsTests.swift index 53c8836d91..3a4e427529 100644 --- a/TableProTests/Core/AI/SynthesizeResultsTests.swift +++ b/TableProTests/Core/AI/SynthesizeResultsTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AIChatViewModel.synthesizeResults") struct SynthesizeResultsTests { private func block(_ id: String, _ approval: ToolApprovalState) -> ToolUseBlock { ToolUseBlock(id: id, name: "execute_query", input: .object([:]), approvalState: approval) diff --git a/TableProTests/Core/AI/ToolApprovalCenterTests.swift b/TableProTests/Core/AI/ToolApprovalCenterTests.swift index 118c890742..bd1f71f15e 100644 --- a/TableProTests/Core/AI/ToolApprovalCenterTests.swift +++ b/TableProTests/Core/AI/ToolApprovalCenterTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ToolApprovalCenter") @MainActor struct ToolApprovalCenterTests { private let session = UUID() diff --git a/TableProTests/Core/AI/WalkthroughEnvelopeParserTests.swift b/TableProTests/Core/AI/WalkthroughEnvelopeParserTests.swift index 393aadc215..70bd6410e1 100644 --- a/TableProTests/Core/AI/WalkthroughEnvelopeParserTests.swift +++ b/TableProTests/Core/AI/WalkthroughEnvelopeParserTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("WalkthroughEnvelopeParser") struct WalkthroughEnvelopeParserTests { private let open = WalkthroughEnvelopeParser.openFence private let close = WalkthroughEnvelopeParser.closeFence diff --git a/TableProTests/Core/AI/XAIGrokProviderEncodingTests.swift b/TableProTests/Core/AI/XAIGrokProviderEncodingTests.swift index 790764f45a..38d485b5ba 100644 --- a/TableProTests/Core/AI/XAIGrokProviderEncodingTests.swift +++ b/TableProTests/Core/AI/XAIGrokProviderEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("XAIGrokProvider request encoding") struct XAIGrokProviderEncodingTests { @Test("Requests carry the Grok CLI identity headers and the model override") func requestHeaders() { diff --git a/TableProTests/Core/AI/XAIOAuthClientTests.swift b/TableProTests/Core/AI/XAIOAuthClientTests.swift index a1521632f5..6ede98d792 100644 --- a/TableProTests/Core/AI/XAIOAuthClientTests.swift +++ b/TableProTests/Core/AI/XAIOAuthClientTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("XAIOAuthClient") struct XAIOAuthClientTests { private func queryItems(_ url: URL?) -> [String: String] { guard let url, let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { diff --git a/TableProTests/Core/AI/XAIPKCETests.swift b/TableProTests/Core/AI/XAIPKCETests.swift index 0873a73298..79241d4525 100644 --- a/TableProTests/Core/AI/XAIPKCETests.swift +++ b/TableProTests/Core/AI/XAIPKCETests.swift @@ -8,7 +8,6 @@ import Foundation @testable import TablePro import Testing -@Suite("XAIPKCE") struct XAIPKCETests { @Test("Verifier length is within the RFC 7636 range") func verifierLength() { diff --git a/TableProTests/Core/AI/XAIRegistrationTests.swift b/TableProTests/Core/AI/XAIRegistrationTests.swift index 25439b7aa4..adddecafbc 100644 --- a/TableProTests/Core/AI/XAIRegistrationTests.swift +++ b/TableProTests/Core/AI/XAIRegistrationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("xAI provider registration") struct XAIRegistrationTests { init() { AIProviderRegistration.registerAll() diff --git a/TableProTests/Core/AI/XAITokenStoreTests.swift b/TableProTests/Core/AI/XAITokenStoreTests.swift index 8321b56a94..54f6766aac 100644 --- a/TableProTests/Core/AI/XAITokenStoreTests.swift +++ b/TableProTests/Core/AI/XAITokenStoreTests.swift @@ -26,7 +26,6 @@ private actor FakeXAIRefresher: XAITokenRefreshing { } } -@Suite("XAITokenStore") struct XAITokenStoreTests { private func tokens(refresh: String = "r", expiresIn: TimeInterval) -> XAITokens { XAITokens( diff --git a/TableProTests/Core/Autocomplete/CachedColumnOrderTests.swift b/TableProTests/Core/Autocomplete/CachedColumnOrderTests.swift index 90e018daa8..a221bcfcc2 100644 --- a/TableProTests/Core/Autocomplete/CachedColumnOrderTests.swift +++ b/TableProTests/Core/Autocomplete/CachedColumnOrderTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Cached column emission order") struct CachedColumnOrderTests { private func loadedProvider( tables: [(name: String, schema: String?, columns: [String])] diff --git a/TableProTests/Core/Autocomplete/DerivedTableParserTests.swift b/TableProTests/Core/Autocomplete/DerivedTableParserTests.swift index 772eb73dd2..0e642ef42c 100644 --- a/TableProTests/Core/Autocomplete/DerivedTableParserTests.swift +++ b/TableProTests/Core/Autocomplete/DerivedTableParserTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Derived Table Parser") struct DerivedTableParserTests { let parser = DerivedTableParser() diff --git a/TableProTests/Core/Autocomplete/KeywordVocabularyParityTests.swift b/TableProTests/Core/Autocomplete/KeywordVocabularyParityTests.swift index 3e8337960c..34f526c7af 100644 --- a/TableProTests/Core/Autocomplete/KeywordVocabularyParityTests.swift +++ b/TableProTests/Core/Autocomplete/KeywordVocabularyParityTests.swift @@ -13,7 +13,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Keyword vocabulary parity") struct KeywordVocabularyParityTests { /// The uppercaser only ever looks at one word at a time, so a multi-word entry such as /// `ORDER BY` can never match and is not expected in the set. diff --git a/TableProTests/Core/Autocomplete/MongoCompletionCaseTests.swift b/TableProTests/Core/Autocomplete/MongoCompletionCaseTests.swift index d9941a30df..8dad278842 100644 --- a/TableProTests/Core/Autocomplete/MongoCompletionCaseTests.swift +++ b/TableProTests/Core/Autocomplete/MongoCompletionCaseTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MongoDB completion case") @MainActor struct MongoCompletionCaseTests { private func service() -> MongoCompletionService { diff --git a/TableProTests/Core/Autocomplete/MongoContextAnalyzerTests.swift b/TableProTests/Core/Autocomplete/MongoContextAnalyzerTests.swift index eb9e0fc997..e436b3a943 100644 --- a/TableProTests/Core/Autocomplete/MongoContextAnalyzerTests.swift +++ b/TableProTests/Core/Autocomplete/MongoContextAnalyzerTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("MongoDB Context Analyzer") struct MongoContextAnalyzerTests { private func analyze(_ text: String) -> MongoContext { let ns = text as NSString diff --git a/TableProTests/Core/Autocomplete/RawSQLFilterCompletionTriggerTests.swift b/TableProTests/Core/Autocomplete/RawSQLFilterCompletionTriggerTests.swift index dfb8fbc311..95afb1cd95 100644 --- a/TableProTests/Core/Autocomplete/RawSQLFilterCompletionTriggerTests.swift +++ b/TableProTests/Core/Autocomplete/RawSQLFilterCompletionTriggerTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Raw SQL Filter Completion Trigger") struct RawSQLFilterCompletionTriggerTests { private static func dialect(identifierQuote: String, dataTypes: Set) -> SQLDialectDescriptor { SQLDialectDescriptor( diff --git a/TableProTests/Core/Autocomplete/SQLClauseDetectionTests.swift b/TableProTests/Core/Autocomplete/SQLClauseDetectionTests.swift index 536ae77e91..4a2f53f662 100644 --- a/TableProTests/Core/Autocomplete/SQLClauseDetectionTests.swift +++ b/TableProTests/Core/Autocomplete/SQLClauseDetectionTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Clause Detection") struct SQLClauseDetectionTests { private let analyzer = SQLContextAnalyzer() diff --git a/TableProTests/Core/Autocomplete/SQLCompletionCasingTests.swift b/TableProTests/Core/Autocomplete/SQLCompletionCasingTests.swift index 7c706d2c28..a68c69cd5b 100644 --- a/TableProTests/Core/Autocomplete/SQLCompletionCasingTests.swift +++ b/TableProTests/Core/Autocomplete/SQLCompletionCasingTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQLCompletionCasing") struct SQLCompletionCasingTests { private func applied(_ items: [SQLCompletionItem], _ prefix: String, _ policy: SQLKeywordCase = .default) -> [SQLCompletionItem] { diff --git a/TableProTests/Core/Autocomplete/SQLCompletionInsertionTests.swift b/TableProTests/Core/Autocomplete/SQLCompletionInsertionTests.swift index ef771028ab..3fc80e5dc3 100644 --- a/TableProTests/Core/Autocomplete/SQLCompletionInsertionTests.swift +++ b/TableProTests/Core/Autocomplete/SQLCompletionInsertionTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLCompletionInsertion") struct SQLCompletionInsertionTests { @Test("Favorite with a marker inserts stripped text with the caret at the marker") func favoriteWithMarker() { diff --git a/TableProTests/Core/Autocomplete/SQLCompletionProviderTests.swift b/TableProTests/Core/Autocomplete/SQLCompletionProviderTests.swift index a8791c6f15..d121e2cbd0 100644 --- a/TableProTests/Core/Autocomplete/SQLCompletionProviderTests.swift +++ b/TableProTests/Core/Autocomplete/SQLCompletionProviderTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Completion Provider") struct SQLCompletionProviderTests { private let schemaProvider: SQLSchemaProvider private let provider: SQLCompletionProvider diff --git a/TableProTests/Core/Autocomplete/SQLCompletionServiceEmptyPrefixTests.swift b/TableProTests/Core/Autocomplete/SQLCompletionServiceEmptyPrefixTests.swift index e6e56523fe..0a3b6ac1b9 100644 --- a/TableProTests/Core/Autocomplete/SQLCompletionServiceEmptyPrefixTests.swift +++ b/TableProTests/Core/Autocomplete/SQLCompletionServiceEmptyPrefixTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Completion Service Empty Prefix") struct SQLCompletionServiceEmptyPrefixTests { private static func dialect(dataTypes: Set) -> SQLDialectDescriptor { SQLDialectDescriptor( diff --git a/TableProTests/Core/Autocomplete/SQLContextAnalyzerCaseInsensitiveTests.swift b/TableProTests/Core/Autocomplete/SQLContextAnalyzerCaseInsensitiveTests.swift index adfe0d8fc3..0ccf98e588 100644 --- a/TableProTests/Core/Autocomplete/SQLContextAnalyzerCaseInsensitiveTests.swift +++ b/TableProTests/Core/Autocomplete/SQLContextAnalyzerCaseInsensitiveTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLContextAnalyzer Case-Insensitive Clause Detection") struct SQLContextAnalyzerCaseInsensitiveTests { private let analyzer = SQLContextAnalyzer() diff --git a/TableProTests/Core/Autocomplete/SQLContextAnalyzerTests.swift b/TableProTests/Core/Autocomplete/SQLContextAnalyzerTests.swift index 386a98f71a..cff631c635 100644 --- a/TableProTests/Core/Autocomplete/SQLContextAnalyzerTests.swift +++ b/TableProTests/Core/Autocomplete/SQLContextAnalyzerTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Context Analyzer") struct SQLContextAnalyzerTests { let analyzer = SQLContextAnalyzer() diff --git a/TableProTests/Core/Autocomplete/SQLContextAnalyzerWindowingTests.swift b/TableProTests/Core/Autocomplete/SQLContextAnalyzerWindowingTests.swift index 7f60be7d22..dcb98c2fb6 100644 --- a/TableProTests/Core/Autocomplete/SQLContextAnalyzerWindowingTests.swift +++ b/TableProTests/Core/Autocomplete/SQLContextAnalyzerWindowingTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLContextAnalyzer Windowing") struct SQLContextAnalyzerWindowingTests { private let analyzer = SQLContextAnalyzer() diff --git a/TableProTests/Core/Autocomplete/SQLKeywordsTests.swift b/TableProTests/Core/Autocomplete/SQLKeywordsTests.swift index aee17bd9c8..00c8d3d152 100644 --- a/TableProTests/Core/Autocomplete/SQLKeywordsTests.swift +++ b/TableProTests/Core/Autocomplete/SQLKeywordsTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("SQL Keywords") struct SQLKeywordsTests { @Test("Keywords collection not empty") diff --git a/TableProTests/Core/Autocomplete/SQLSchemaProviderTests.swift b/TableProTests/Core/Autocomplete/SQLSchemaProviderTests.swift index 2bed9ee544..d2f02dc3e9 100644 --- a/TableProTests/Core/Autocomplete/SQLSchemaProviderTests.swift +++ b/TableProTests/Core/Autocomplete/SQLSchemaProviderTests.swift @@ -264,7 +264,6 @@ final class MockDatabaseDriver: DatabaseDriver, SchemaSwitchable, @unchecked Sen // MARK: - Tests -@Suite("SQLSchemaProvider") @MainActor struct SQLSchemaProviderTests { @Test("loadSchema fetches tables without bulk column loading") diff --git a/TableProTests/Core/Autocomplete/SQLSchemaProviderUnqualifiedScopeTests.swift b/TableProTests/Core/Autocomplete/SQLSchemaProviderUnqualifiedScopeTests.swift index 95bf414ae3..c596232de1 100644 --- a/TableProTests/Core/Autocomplete/SQLSchemaProviderUnqualifiedScopeTests.swift +++ b/TableProTests/Core/Autocomplete/SQLSchemaProviderUnqualifiedScopeTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQLSchemaProvider unqualified scope") struct SQLSchemaProviderUnqualifiedScopeTests { private static func postgresDriver() -> MockDatabaseDriver { let driver = MockDatabaseDriver(connection: TestFixtures.makeConnection(type: .postgresql)) diff --git a/TableProTests/Core/Autocomplete/SQLSnippetMarkerTests.swift b/TableProTests/Core/Autocomplete/SQLSnippetMarkerTests.swift index d38b2cda99..e43e9d8901 100644 --- a/TableProTests/Core/Autocomplete/SQLSnippetMarkerTests.swift +++ b/TableProTests/Core/Autocomplete/SQLSnippetMarkerTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLSnippetMarker") struct SQLSnippetMarkerTests { @Test("Query without a marker expands to nil") func noMarkerReturnsNil() { diff --git a/TableProTests/Core/Autocomplete/SQLTokenBoundaryTests.swift b/TableProTests/Core/Autocomplete/SQLTokenBoundaryTests.swift index 7dcdf88b32..4378ea679f 100644 --- a/TableProTests/Core/Autocomplete/SQLTokenBoundaryTests.swift +++ b/TableProTests/Core/Autocomplete/SQLTokenBoundaryTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLTokenBoundary") struct SQLTokenBoundaryTests { @Test("Segment start covers the whole typed word") func segmentStartPlainWord() { diff --git a/TableProTests/Core/ChangeTracking/AnyChangeManagerTests.swift b/TableProTests/Core/ChangeTracking/AnyChangeManagerTests.swift index 5ece352754..90907710aa 100644 --- a/TableProTests/Core/ChangeTracking/AnyChangeManagerTests.swift +++ b/TableProTests/Core/ChangeTracking/AnyChangeManagerTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("AnyChangeManager") struct AnyChangeManagerTests { // MARK: - DataChangeManager Wrapper Tests diff --git a/TableProTests/Core/ChangeTracking/BulkDeleteConfirmationTests.swift b/TableProTests/Core/ChangeTracking/BulkDeleteConfirmationTests.swift index 41c201a5f9..f5e1e7042d 100644 --- a/TableProTests/Core/ChangeTracking/BulkDeleteConfirmationTests.swift +++ b/TableProTests/Core/ChangeTracking/BulkDeleteConfirmationTests.swift @@ -6,7 +6,6 @@ @testable import TablePro import Testing -@Suite("Bulk Delete Confirmation") struct BulkDeleteConfirmationTests { @Test("No confirmation when nothing is being deleted") func testNotRequiredWithoutDeletes() { diff --git a/TableProTests/Core/ChangeTracking/DataChangeManagerClickHouseTests.swift b/TableProTests/Core/ChangeTracking/DataChangeManagerClickHouseTests.swift index 8ad21e2df3..8b93720f45 100644 --- a/TableProTests/Core/ChangeTracking/DataChangeManagerClickHouseTests.swift +++ b/TableProTests/Core/ChangeTracking/DataChangeManagerClickHouseTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("DataChangeManager ClickHouse UPDATE Validation") struct DataChangeManagerClickHouseTests { @Test("ClickHouse ALTER TABLE UPDATE passes validation without throwing") func alterTableUpdatePassesValidation() async { diff --git a/TableProTests/Core/ChangeTracking/DataChangeManagerExtendedTests.swift b/TableProTests/Core/ChangeTracking/DataChangeManagerExtendedTests.swift index 73fb6b5c4f..9d871bc233 100644 --- a/TableProTests/Core/ChangeTracking/DataChangeManagerExtendedTests.swift +++ b/TableProTests/Core/ChangeTracking/DataChangeManagerExtendedTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Data Change Manager Extended") struct DataChangeManagerExtendedTests { private func makeManager( columns: [String] = ["id", "name", "email"], diff --git a/TableProTests/Core/ChangeTracking/DataChangeManagerTests.swift b/TableProTests/Core/ChangeTracking/DataChangeManagerTests.swift index c3bdedbd34..5d0232bd08 100644 --- a/TableProTests/Core/ChangeTracking/DataChangeManagerTests.swift +++ b/TableProTests/Core/ChangeTracking/DataChangeManagerTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Data Change Manager") struct DataChangeManagerTests { private func makeManagerWithUndo() -> DataChangeManager { let manager = DataChangeManager() @@ -596,7 +595,6 @@ struct DataChangeManagerTests { /// the grid's own writability check. A server-owned column could be staged there, silently filtered /// out during statement generation, and then cleared by a save that reported success. @MainActor -@Suite("Data Change Manager - non-writable columns") struct DataChangeManagerNonWritableTests { private func makeManager(generatedColumns: Set) -> DataChangeManager { let manager = DataChangeManager() @@ -658,7 +656,6 @@ struct DataChangeManagerNonWritableTests { /// `immutableColumns` is the driver's own list, such as MongoDB's `_id`. The grid consults it and /// the model boundary did not, so the row inspector could still stage a change the backend rejects. @MainActor -@Suite("Data Change Manager - immutable columns") struct DataChangeManagerImmutableColumnTests { @Test("A writable column with no generated set is accepted") func writableColumnAccepted() { diff --git a/TableProTests/Core/ChangeTracking/DataChangeModelsTests.swift b/TableProTests/Core/ChangeTracking/DataChangeModelsTests.swift index 0a91f01c0b..4640a24a54 100644 --- a/TableProTests/Core/ChangeTracking/DataChangeModelsTests.swift +++ b/TableProTests/Core/ChangeTracking/DataChangeModelsTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Data Change Models") struct DataChangeModelsTests { @Test("ChangeType equality - matching types") diff --git a/TableProTests/Core/ChangeTracking/PendingChangesRowIdentityTests.swift b/TableProTests/Core/ChangeTracking/PendingChangesRowIdentityTests.swift index 7d4976a946..62228325d1 100644 --- a/TableProTests/Core/ChangeTracking/PendingChangesRowIdentityTests.swift +++ b/TableProTests/Core/ChangeTracking/PendingChangesRowIdentityTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("PendingChanges - row identity") struct PendingChangesRowIdentityTests { @Test("Undoing one row of a batch leaves the survivors' values on their own rows") func partialBatchUndoKeepsSurvivorValues() { @@ -96,7 +95,6 @@ struct PendingChangesRowIdentityTests { } } -@Suite("PendingChanges - change order") struct PendingChangesSequenceTests { @Test("Every recorded change gets a rising sequence number") func sequenceRises() { diff --git a/TableProTests/Core/ChangeTracking/PendingChangesTests.swift b/TableProTests/Core/ChangeTracking/PendingChangesTests.swift index 3b2cb5b1a4..73caf20ea5 100644 --- a/TableProTests/Core/ChangeTracking/PendingChangesTests.swift +++ b/TableProTests/Core/ChangeTracking/PendingChangesTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("PendingChanges - record") struct PendingChangesRecordTests { @Test("Empty by default") func emptyByDefault() { @@ -108,7 +107,6 @@ struct PendingChangesRecordTests { } } -@Suite("PendingChanges - undo") struct PendingChangesUndoTests { @Test("Undo row deletion clears delete state") func undoRowDeletion() { @@ -163,7 +161,6 @@ struct PendingChangesUndoTests { } } -@Suite("PendingChanges - replay") struct PendingChangesReplayTests { @Test("Reapply cell change with no existing change") func reapplyCellWithoutExisting() { @@ -204,7 +201,6 @@ struct PendingChangesReplayTests { } } -@Suite("PendingChanges - snapshot") struct PendingChangesSnapshotTests { @Test("Snapshot round-trip preserves state") func snapshotRoundTrip() { @@ -228,7 +224,6 @@ struct PendingChangesSnapshotTests { } } -@Suite("PendingChanges - clear and consume") struct PendingChangesLifecycleTests { @Test("Clear empties all internal state") func clearResets() { diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBatchDeleteScaleTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBatchDeleteScaleTests.swift index 16b1458d5c..2c13f6db07 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBatchDeleteScaleTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBatchDeleteScaleTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator: Batch Delete Scale") struct SQLStatementGeneratorBatchDeleteScaleTests { private func makeGenerator( columns: [String], diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBinaryTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBinaryTests.swift index 5b385dcdd7..43292990f8 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBinaryTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorBinaryTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator - binary cells") struct SQLStatementGeneratorBinaryTests { private func makeGenerator( databaseType: DatabaseType = .postgresql diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorCompositePKTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorCompositePKTests.swift index f3ca375caa..6b52758b79 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorCompositePKTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorCompositePKTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQL Statement Generator — Composite Primary Key") struct SQLStatementGeneratorCompositePKTests { // MARK: - Helpers diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorGeneratedColumnTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorGeneratedColumnTests.swift index 2435f22728..81a1f56d5e 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorGeneratedColumnTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorGeneratedColumnTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator generated columns") struct SQLStatementGeneratorGeneratedColumnTests { private func makeGenerator( generatedColumns: Set = ["full_name"] diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorImportTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorImportTests.swift index 908e193061..2b2bf3df07 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorImportTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorImportTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator - row import") struct SQLStatementGeneratorImportTests { private func makeGenerator( table: String = "users", diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorMSSQLTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorMSSQLTests.swift index 577bfe1781..65c8aadeb6 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorMSSQLTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorMSSQLTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQL Statement Generator MSSQL") struct SQLStatementGeneratorMSSQLTests { // MARK: - Helpers diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorNoPKTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorNoPKTests.swift index 241324199b..d857d0115e 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorNoPKTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorNoPKTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator — No Primary Key") struct SQLStatementGeneratorNoPKTests { // MARK: - Helper Methods diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorOrderingTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorOrderingTests.swift index c8ca8510cb..5293d57789 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorOrderingTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorOrderingTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("SQL statement ordering") struct SQLStatementGeneratorOrderingTests { private let columns = ["id", "email"] diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorPKRegressionTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorPKRegressionTests.swift index 1436bedfdf..9e4b3294b1 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorPKRegressionTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorPKRegressionTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQL Statement Generator PK Regression") struct SQLStatementGeneratorPKRegressionTests { private func makeGenerator( tableName: String = "users", diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorParameterStyleTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorParameterStyleTests.swift index e48fae3fc4..e3f6fea796 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorParameterStyleTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorParameterStyleTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro @testable import TableProPluginKit -@Suite("SQL Statement Generator - Parameter Style") struct SQLStatementGeneratorParameterStyleTests { // MARK: - Helper Methods diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTests.swift index 276e8c1123..44d6a863ef 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator: keyless row match exclusions") @MainActor struct SQLStatementGeneratorRowMatchTests { private let columns = ["id", "name", "payload", "tags"] diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTextTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTextTests.swift index 12ec1828dd..542c7af35e 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTextTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorRowMatchTextTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Statement Generator: keyless row match on text") @MainActor struct SQLStatementGeneratorRowMatchTextTests { private let columns = ["price", "ratio", "doc", "qty"] diff --git a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorTests.swift b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorTests.swift index 3a040746f7..4e1c7df618 100644 --- a/TableProTests/Core/ChangeTracking/SQLStatementGeneratorTests.swift +++ b/TableProTests/Core/ChangeTracking/SQLStatementGeneratorTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("SQL Statement Generator") struct SQLStatementGeneratorTests { // MARK: - Helper Methods diff --git a/TableProTests/Core/ClickHouse/ClickHouseConnectionTests.swift b/TableProTests/Core/ClickHouse/ClickHouseConnectionTests.swift index e41d9e4540..8dceed6625 100644 --- a/TableProTests/Core/ClickHouse/ClickHouseConnectionTests.swift +++ b/TableProTests/Core/ClickHouse/ClickHouseConnectionTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouse Connection") struct ClickHouseConnectionTests { private static func unescapeTsvField(_ field: String) -> String { ClickHouseResponseClassifier.unescapeTsvField(field) diff --git a/TableProTests/Core/ClickHouse/ClickHouseDMLStatementTests.swift b/TableProTests/Core/ClickHouse/ClickHouseDMLStatementTests.swift index 32328620a5..8bf4a4aa98 100644 --- a/TableProTests/Core/ClickHouse/ClickHouseDMLStatementTests.swift +++ b/TableProTests/Core/ClickHouse/ClickHouseDMLStatementTests.swift @@ -16,7 +16,6 @@ import Testing /// Three cases used to assert the ClickHouse shape through `DataChangeManager` with no driver /// connected, which the app layer cannot produce and never could, so they sat in the quarantine /// file. Asserted here against the driver, they hold. -@Suite("ClickHouse DML statements") struct ClickHouseDMLStatementTests { private let table = "users" private let columns = ["id", "name"] diff --git a/TableProTests/Core/ClickHouse/ClickHouseDialectTests.swift b/TableProTests/Core/ClickHouse/ClickHouseDialectTests.swift index 4a4206b115..4853c91c34 100644 --- a/TableProTests/Core/ClickHouse/ClickHouseDialectTests.swift +++ b/TableProTests/Core/ClickHouse/ClickHouseDialectTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro import TableProPluginKit -@Suite("ClickHouse Dialect") struct ClickHouseDialectTests { @Test("SQLDialectDescriptor with ClickHouse-style config") diff --git a/TableProTests/Core/CloudflareD1/CloudflareD1DriverHelperTests.swift b/TableProTests/Core/CloudflareD1/CloudflareD1DriverHelperTests.swift index f3c00d98c6..0eafd7a97a 100644 --- a/TableProTests/Core/CloudflareD1/CloudflareD1DriverHelperTests.swift +++ b/TableProTests/Core/CloudflareD1/CloudflareD1DriverHelperTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cloudflare D1 Driver Helpers") struct CloudflareD1DriverHelperTests { // MARK: - Local copies of helper functions for testing diff --git a/TableProTests/Core/CloudflareD1/CloudflareD1PluginMetadataTests.swift b/TableProTests/Core/CloudflareD1/CloudflareD1PluginMetadataTests.swift index 519746b030..2a09508ab3 100644 --- a/TableProTests/Core/CloudflareD1/CloudflareD1PluginMetadataTests.swift +++ b/TableProTests/Core/CloudflareD1/CloudflareD1PluginMetadataTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro import TableProPluginKit -@Suite("Cloudflare D1 Plugin Metadata") struct CloudflareD1PluginMetadataTests { // MARK: - DatabaseType diff --git a/TableProTests/Core/CloudflareD1/D1ResponseParsingTests.swift b/TableProTests/Core/CloudflareD1/D1ResponseParsingTests.swift index d61fc9ed27..f5d00ccc8b 100644 --- a/TableProTests/Core/CloudflareD1/D1ResponseParsingTests.swift +++ b/TableProTests/Core/CloudflareD1/D1ResponseParsingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("D1 API Response Parsing") struct D1ResponseParsingTests { // MARK: - Local copies of Codable types for testing diff --git a/TableProTests/Core/CloudflareD1/D1ValueDecodingTests.swift b/TableProTests/Core/CloudflareD1/D1ValueDecodingTests.swift index 409050a065..4df5ce6838 100644 --- a/TableProTests/Core/CloudflareD1/D1ValueDecodingTests.swift +++ b/TableProTests/Core/CloudflareD1/D1ValueDecodingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("D1Value JSON Decoding") struct D1ValueDecodingTests { // MARK: - Local copy of D1Value for testing diff --git a/TableProTests/Core/Compare/CompareCapabilityDeclarationTests.swift b/TableProTests/Core/Compare/CompareCapabilityDeclarationTests.swift index 7f8e5f03ef..748ba0b954 100644 --- a/TableProTests/Core/Compare/CompareCapabilityDeclarationTests.swift +++ b/TableProTests/Core/Compare/CompareCapabilityDeclarationTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("Compare capability declaration") struct CompareCapabilityDeclarationTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/Compare/CompareReportUnreadableTests.swift b/TableProTests/Core/Compare/CompareReportUnreadableTests.swift index 4f232e2c5f..01d9d6a46f 100644 --- a/TableProTests/Core/Compare/CompareReportUnreadableTests.swift +++ b/TableProTests/Core/Compare/CompareReportUnreadableTests.swift @@ -11,7 +11,6 @@ import Testing /// only and suggests dropping it, while the row carrying the reason sits beside it under Could Not /// Compare. Generating a script from that state wrote `DROP TABLE` against the target for a table /// the comparison never managed to read. -@Suite("Compare report over an unreadable object") struct CompareReportUnreadableTests { private func identity(_ name: String) -> CompareObjectIdentity { CompareObjectIdentity(kind: .table, schema: nil, name: name) diff --git a/TableProTests/Core/Compare/ForeignKeyTopologicalSortTests.swift b/TableProTests/Core/Compare/ForeignKeyTopologicalSortTests.swift index 65e6c70951..8c82856694 100644 --- a/TableProTests/Core/Compare/ForeignKeyTopologicalSortTests.swift +++ b/TableProTests/Core/Compare/ForeignKeyTopologicalSortTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ForeignKeyTopologicalSort") struct ForeignKeyTopologicalSortTests { private func table(_ name: String, _ schema: String? = nil) -> ForeignKeyTopologicalSort.Table { ForeignKeyTopologicalSort.Table(name: name, schema: schema) diff --git a/TableProTests/Core/Compare/StructureCollationSpellingTests.swift b/TableProTests/Core/Compare/StructureCollationSpellingTests.swift index 5e772c937b..10e52c908d 100644 --- a/TableProTests/Core/Compare/StructureCollationSpellingTests.swift +++ b/TableProTests/Core/Compare/StructureCollationSpellingTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Structure collation spelling") struct StructureCollationSpellingTests { private func column( _ name: String, diff --git a/TableProTests/Core/Compare/StructureDeclaredTypeCompareTests.swift b/TableProTests/Core/Compare/StructureDeclaredTypeCompareTests.swift index ac6ac0cf4e..41602dc92c 100644 --- a/TableProTests/Core/Compare/StructureDeclaredTypeCompareTests.swift +++ b/TableProTests/Core/Compare/StructureDeclaredTypeCompareTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Declared types in a structure comparison") struct StructureDeclaredTypeCompareTests { private func column( _ name: String, @@ -257,7 +256,6 @@ struct StructureDeclaredTypeCompareTests { } } -@Suite("Schema-relative spelling") struct SchemaRelativeSpellingTests { @Test("A name qualified with the table's own schema loses the qualifier") func ownSchemaQualifierGoes() { diff --git a/TableProTests/Core/Compare/StructureDiffEngineIndexTypeTests.swift b/TableProTests/Core/Compare/StructureDiffEngineIndexTypeTests.swift index c9eea7c366..b9d435caec 100644 --- a/TableProTests/Core/Compare/StructureDiffEngineIndexTypeTests.swift +++ b/TableProTests/Core/Compare/StructureDiffEngineIndexTypeTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Structure diff index types") struct StructureDiffEngineIndexTypeTests { private static let table = PluginTableInfo(name: "items", schema: "public", comment: nil) diff --git a/TableProTests/Core/Compare/TableStructureIndexReplayTests.swift b/TableProTests/Core/Compare/TableStructureIndexReplayTests.swift index ab61bcde74..592534d412 100644 --- a/TableProTests/Core/Compare/TableStructureIndexReplayTests.swift +++ b/TableProTests/Core/Compare/TableStructureIndexReplayTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Table structure index replay") struct TableStructureIndexReplayTests { private static let table = PluginTableInfo(name: "users", schema: "src", comment: nil) diff --git a/TableProTests/Core/Compare/TableStructureSnapshotColumnTests.swift b/TableProTests/Core/Compare/TableStructureSnapshotColumnTests.swift index 3d7773e675..d11a530a57 100644 --- a/TableProTests/Core/Compare/TableStructureSnapshotColumnTests.swift +++ b/TableProTests/Core/Compare/TableStructureSnapshotColumnTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableStructureSnapshot columns") struct TableStructureSnapshotColumnTests { @Test("A column read keeps the server's spellings all the way to the CREATE TABLE definition") func snapshotCarriesDDLSpellingToCreateTableDefinition() { diff --git a/TableProTests/Core/Compare/TableStructureSnapshotIndexValidityTests.swift b/TableProTests/Core/Compare/TableStructureSnapshotIndexValidityTests.swift index f13686ecdf..6f74f622a1 100644 --- a/TableProTests/Core/Compare/TableStructureSnapshotIndexValidityTests.swift +++ b/TableProTests/Core/Compare/TableStructureSnapshotIndexValidityTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Invalid indexes in Compare and Object Copy") struct TableStructureSnapshotIndexValidityTests { private static let table = PluginTableInfo(name: "orders", type: "TABLE", schema: "public", comment: nil) diff --git a/TableProTests/Core/Compare/TableStructureSnapshotKeyTests.swift b/TableProTests/Core/Compare/TableStructureSnapshotKeyTests.swift index f2e7aac340..fc2afdec04 100644 --- a/TableProTests/Core/Compare/TableStructureSnapshotKeyTests.swift +++ b/TableProTests/Core/Compare/TableStructureSnapshotKeyTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableStructureSnapshot indexes and foreign keys") struct TableStructureSnapshotKeyTests { private func snapshot( indexes: [PluginIndexInfo] = [], diff --git a/TableProTests/Core/Compare/TypeWidthComparisonTests.swift b/TableProTests/Core/Compare/TypeWidthComparisonTests.swift index f003a219ca..ad9d164b33 100644 --- a/TableProTests/Core/Compare/TypeWidthComparisonTests.swift +++ b/TableProTests/Core/Compare/TypeWidthComparisonTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Type width comparison") struct TypeWidthComparisonTests { private func postgres(_ old: String, _ new: String) -> TypeWidthComparison.Outcome { TypeWidthComparison.classify(from: old, to: new, family: .postgres) diff --git a/TableProTests/Core/Concurrency/CatalogFreshnessTests.swift b/TableProTests/Core/Concurrency/CatalogFreshnessTests.swift index c422ea0398..4516a4b4fe 100644 --- a/TableProTests/Core/Concurrency/CatalogFreshnessTests.swift +++ b/TableProTests/Core/Concurrency/CatalogFreshnessTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CatalogFreshness") struct CatalogFreshnessTests { @Test("A key never fetched is not current") func neverFetched() { diff --git a/TableProTests/Core/Concurrency/CommitFenceTests.swift b/TableProTests/Core/Concurrency/CommitFenceTests.swift index 4c24cfbd5b..529dd38984 100644 --- a/TableProTests/Core/Concurrency/CommitFenceTests.swift +++ b/TableProTests/Core/Concurrency/CommitFenceTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CommitFence") struct CommitFenceTests { @Test("a load that started before its key was superseded may not commit") func supersededTokenIsRefused() { diff --git a/TableProTests/Core/Concurrency/OffMainActorHandlerGuardTests.swift b/TableProTests/Core/Concurrency/OffMainActorHandlerGuardTests.swift index b3ccd1af2a..6174b586d0 100644 --- a/TableProTests/Core/Concurrency/OffMainActorHandlerGuardTests.swift +++ b/TableProTests/Core/Concurrency/OffMainActorHandlerGuardTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("Off-main-actor callback isolation") struct OffMainActorHandlerGuardTests { @Test("Every Dispatch source handler declares its own isolation") func dispatchSourceHandlersDeclareTheirIsolation() throws { diff --git a/TableProTests/Core/Concurrency/SessionDriverGateTests.swift b/TableProTests/Core/Concurrency/SessionDriverGateTests.swift index 02e4548816..b65eb7a3fc 100644 --- a/TableProTests/Core/Concurrency/SessionDriverGateTests.swift +++ b/TableProTests/Core/Concurrency/SessionDriverGateTests.swift @@ -72,7 +72,6 @@ private func waitForWaiters(_ count: Int, on gate: SessionDriverGate, _ connecti } } -@Suite("SessionDriverGate") @MainActor struct SessionDriverGateTests { @Test("A second caller for the same connection runs only after the first completes") diff --git a/TableProTests/Core/Concurrency/TaskCancellationShieldTests.swift b/TableProTests/Core/Concurrency/TaskCancellationShieldTests.swift index bec9f8465f..3fa6d3b7d3 100644 --- a/TableProTests/Core/Concurrency/TaskCancellationShieldTests.swift +++ b/TableProTests/Core/Concurrency/TaskCancellationShieldTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Task cancellation shield") struct TaskCancellationShieldTests { /// What the shield exists for. A driver reads `Task.isCancelled` or installs a /// `withTaskCancellationHandler`, and a COMMIT sent from an already-cancelled task would be diff --git a/TableProTests/Core/ConnectionLibrary/ConnectionLibraryStorageTests.swift b/TableProTests/Core/ConnectionLibrary/ConnectionLibraryStorageTests.swift index 8a63949c95..3a7136fa13 100644 --- a/TableProTests/Core/ConnectionLibrary/ConnectionLibraryStorageTests.swift +++ b/TableProTests/Core/ConnectionLibrary/ConnectionLibraryStorageTests.swift @@ -11,7 +11,6 @@ import TableProSyncTransport import Testing @MainActor -@Suite("Connection library storage") struct ConnectionLibraryStorageTests { private let defaults: UserDefaults private let fileURL: URL diff --git a/TableProTests/Core/ConnectionLibrary/RecentConnectionsRecorderTests.swift b/TableProTests/Core/ConnectionLibrary/RecentConnectionsRecorderTests.swift index 0d31d1fde6..2b856182d8 100644 --- a/TableProTests/Core/ConnectionLibrary/RecentConnectionsRecorderTests.swift +++ b/TableProTests/Core/ConnectionLibrary/RecentConnectionsRecorderTests.swift @@ -10,7 +10,6 @@ import TableProSyncTransport import Testing @MainActor -@Suite("Recent connections recorder") struct RecentConnectionsRecorderTests { private let defaults: UserDefaults private let appEvents = AppEvents() diff --git a/TableProTests/Core/Coordinators/CellFilterStateTests.swift b/TableProTests/Core/Coordinators/CellFilterStateTests.swift index 49f2347514..608c89b446 100644 --- a/TableProTests/Core/Coordinators/CellFilterStateTests.swift +++ b/TableProTests/Core/Coordinators/CellFilterStateTests.swift @@ -10,7 +10,6 @@ import Testing /// A cell's Filter item narrows what the grid shows by one condition, so the next state has to run /// exactly the rows that were running plus the new one, and has to say so in the panel's checkboxes, /// which is also what the saved state restores. -@Suite("Cell filter state") @MainActor struct CellFilterStateTests { private let added = TestFixtures.makeTableFilter(column: "status", op: .equal, value: "paid") diff --git a/TableProTests/Core/Coordinators/ExactCountOutcomeTests.swift b/TableProTests/Core/Coordinators/ExactCountOutcomeTests.swift index 5ef93fa6a6..09ab0e2a53 100644 --- a/TableProTests/Core/Coordinators/ExactCountOutcomeTests.swift +++ b/TableProTests/Core/Coordinators/ExactCountOutcomeTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing @MainActor -@Suite("Count Exactly outcome") struct ExactCountOutcomeTests { private struct Throttled: LocalizedError { var errorDescription: String? { "Rate exceeded" } diff --git a/TableProTests/Core/Coordinators/ExactRowCounterTests.swift b/TableProTests/Core/Coordinators/ExactRowCounterTests.swift index 89e8c103ce..ad687e50ba 100644 --- a/TableProTests/Core/Coordinators/ExactRowCounterTests.swift +++ b/TableProTests/Core/Coordinators/ExactRowCounterTests.swift @@ -71,7 +71,6 @@ private final class CountStubDriver: PluginDatabaseDriver, @unchecked Sendable { } } -@Suite("Exact row count routing") struct ExactRowCounterTests { private static let countSQL = "SELECT COUNT(*) FROM `Orders`" diff --git a/TableProTests/Core/Coordinators/FilterMoveTests.swift b/TableProTests/Core/Coordinators/FilterMoveTests.swift index 5211c7088c..1d5936f627 100644 --- a/TableProTests/Core/Coordinators/FilterMoveTests.swift +++ b/TableProTests/Core/Coordinators/FilterMoveTests.swift @@ -9,7 +9,6 @@ import SwiftUI import TableProPluginKit import Testing -@Suite("Filter Move") @MainActor struct FilterMoveTests { private static let mysqlDialect = SQLDialectDescriptor( diff --git a/TableProTests/Core/Coordinators/FindMatcherTests.swift b/TableProTests/Core/Coordinators/FindMatcherTests.swift index 112812c877..fa5b6e686d 100644 --- a/TableProTests/Core/Coordinators/FindMatcherTests.swift +++ b/TableProTests/Core/Coordinators/FindMatcherTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("FindMatcher") struct FindMatcherTests { private let grid: [[String?]] = [ ["active", "Alice", nil], @@ -106,7 +105,6 @@ struct FindMatcherTests { } } -@Suite("TabFindState") struct TabFindStateTests { private func state(matchCount: Int) -> TabFindState { var value = TabFindState(isVisible: true) @@ -170,7 +168,6 @@ struct TabFindStateTests { /// The find bar renders only on table tabs, and a table tab pages through `currentPage`, never /// through `hasMoreRows`, which is the query-tab truncation flag. Reading the wrong one made every /// table tab report its page as the whole table. -@Suite("FindScopeFromPagination") struct FindScopeFromPaginationTests { private func hasUnloadedRows(_ state: PaginationState, loadedRowCount: Int) -> Bool { state.hasMoreRows || state.canGoToNextPage(loadedRowCount: loadedRowCount) @@ -218,7 +215,6 @@ struct FindScopeFromPaginationTests { } } -@Suite("FindCounterText") struct FindCounterTextTests { @Test("a paged result always names its scope") func pagedCounter() { diff --git a/TableProTests/Core/Coordinators/RowCountPlanTests.swift b/TableProTests/Core/Coordinators/RowCountPlanTests.swift index f9323ce43e..cf704b362e 100644 --- a/TableProTests/Core/Coordinators/RowCountPlanTests.swift +++ b/TableProTests/Core/Coordinators/RowCountPlanTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("RowCountPlan") @MainActor struct RowCountPlanTests { private func filtered() -> TabFilterState { @@ -108,7 +107,6 @@ struct RowCountPlanTests { } } -@Suite("RowCountOutcome") struct RowCountOutcomeTests { @Test("A positive estimate is applied and stays marked approximate") func positiveEstimateApplies() throws { diff --git a/TableProTests/Core/Coordinators/RowEditingCoordinatorCopyTests.swift b/TableProTests/Core/Coordinators/RowEditingCoordinatorCopyTests.swift index 336a6117cb..ad83f322f1 100644 --- a/TableProTests/Core/Coordinators/RowEditingCoordinatorCopyTests.swift +++ b/TableProTests/Core/Coordinators/RowEditingCoordinatorCopyTests.swift @@ -38,7 +38,6 @@ private final class RowEditingCopyLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("RowEditingCoordinator copy as JSON") @MainActor struct RowEditingCoordinatorCopyTests { private func makeCoordinator(tableRows: TableRows? = nil) -> MainContentCoordinator { diff --git a/TableProTests/Core/Coordinators/RowEditingCoordinatorJsonModeTests.swift b/TableProTests/Core/Coordinators/RowEditingCoordinatorJsonModeTests.swift index 8fb7a7eb0b..5d7ca61dce 100644 --- a/TableProTests/Core/Coordinators/RowEditingCoordinatorJsonModeTests.swift +++ b/TableProTests/Core/Coordinators/RowEditingCoordinatorJsonModeTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("RowEditingCoordinator in JSON mode") @MainActor struct RowEditingCoordinatorJsonModeTests { private func makeCoordinator(mode: ResultsViewMode) -> MainContentCoordinator { diff --git a/TableProTests/Core/Coordinators/RowEditingCoordinatorValueFilterTests.swift b/TableProTests/Core/Coordinators/RowEditingCoordinatorValueFilterTests.swift index f071e73068..d79d1a368f 100644 --- a/TableProTests/Core/Coordinators/RowEditingCoordinatorValueFilterTests.swift +++ b/TableProTests/Core/Coordinators/RowEditingCoordinatorValueFilterTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("RowEditingCoordinator under a value filter") @MainActor struct RowEditingCoordinatorValueFilterTests { private func makeCoordinator() -> MainContentCoordinator { diff --git a/TableProTests/Core/CrossEngine/CrossEngineCollationSpellingTests.swift b/TableProTests/Core/CrossEngine/CrossEngineCollationSpellingTests.swift index d2bb2a026d..74ae0cd66e 100644 --- a/TableProTests/Core/CrossEngine/CrossEngineCollationSpellingTests.swift +++ b/TableProTests/Core/CrossEngine/CrossEngineCollationSpellingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cross-engine collation spelling") struct CrossEngineCollationSpellingTests { private func snapshot(ddlCollation: String?) -> TableStructureSnapshot { let code = EditableColumnDefinition( diff --git a/TableProTests/Core/CrossEngine/CrossEngineIndexExpressionTests.swift b/TableProTests/Core/CrossEngine/CrossEngineIndexExpressionTests.swift index 598da10094..6ef7dd52a9 100644 --- a/TableProTests/Core/CrossEngine/CrossEngineIndexExpressionTests.swift +++ b/TableProTests/Core/CrossEngine/CrossEngineIndexExpressionTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cross-engine index expressions and spellings") struct CrossEngineIndexExpressionTests { private static func column(_ name: String, _ type: String = "integer") -> EditableColumnDefinition { EditableColumnDefinition( diff --git a/TableProTests/Core/CrossEngine/CrossEngineIndexTypeTests.swift b/TableProTests/Core/CrossEngine/CrossEngineIndexTypeTests.swift index 85200460c6..8a04459f24 100644 --- a/TableProTests/Core/CrossEngine/CrossEngineIndexTypeTests.swift +++ b/TableProTests/Core/CrossEngine/CrossEngineIndexTypeTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cross-engine index types") struct CrossEngineIndexTypeTests { private typealias IndexType = EditableIndexDefinition.IndexType diff --git a/TableProTests/Core/DataFiles/DataFileControllerTests.swift b/TableProTests/Core/DataFiles/DataFileControllerTests.swift index 97dc04423b..d7cebacd5e 100644 --- a/TableProTests/Core/DataFiles/DataFileControllerTests.swift +++ b/TableProTests/Core/DataFiles/DataFileControllerTests.swift @@ -11,7 +11,6 @@ import TableProTabularIO import Testing @MainActor -@Suite("Data file controller") struct DataFileControllerTests { private let undoManager = UndoManager() diff --git a/TableProTests/Core/DataFiles/DataFileKindTests.swift b/TableProTests/Core/DataFiles/DataFileKindTests.swift index 4356a0a84f..719928f845 100644 --- a/TableProTests/Core/DataFiles/DataFileKindTests.swift +++ b/TableProTests/Core/DataFiles/DataFileKindTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Data file kinds") struct DataFileKindTests { private func kind(_ name: String) -> DataFileKind? { DataFileKind.classify(URL(fileURLWithPath: "/tmp/\(name)")) diff --git a/TableProTests/Core/DataGrid/DataGridPrewarmWindowTests.swift b/TableProTests/Core/DataGrid/DataGridPrewarmWindowTests.swift index 9b741107bc..528af895d1 100644 --- a/TableProTests/Core/DataGrid/DataGridPrewarmWindowTests.swift +++ b/TableProTests/Core/DataGrid/DataGridPrewarmWindowTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Data grid prewarm window") struct DataGridPrewarmWindowTests { @Test("The window is bounded by the margin, not by the number of loaded rows") func windowDoesNotGrowWithRowCount() { diff --git a/TableProTests/Core/DataGrid/GridViewportResolverTests.swift b/TableProTests/Core/DataGrid/GridViewportResolverTests.swift index bcea87c641..2a7e84dd0e 100644 --- a/TableProTests/Core/DataGrid/GridViewportResolverTests.swift +++ b/TableProTests/Core/DataGrid/GridViewportResolverTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Grid viewport resolver") struct GridViewportResolverTests { private static let keyColumns = ["id"] diff --git a/TableProTests/Core/DataGrid/RowDisplayCacheTests.swift b/TableProTests/Core/DataGrid/RowDisplayCacheTests.swift index ae2b3a0286..0710c71a8e 100644 --- a/TableProTests/Core/DataGrid/RowDisplayCacheTests.swift +++ b/TableProTests/Core/DataGrid/RowDisplayCacheTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("RowDisplayCache") @MainActor struct RowDisplayCacheTests { private func makeBox(_ values: [String?]) -> RowDisplayBox { diff --git a/TableProTests/Core/DataWrite/DataWriteExecutorTests.swift b/TableProTests/Core/DataWrite/DataWriteExecutorTests.swift index ee8f4c83fd..16812a7f50 100644 --- a/TableProTests/Core/DataWrite/DataWriteExecutorTests.swift +++ b/TableProTests/Core/DataWrite/DataWriteExecutorTests.swift @@ -87,7 +87,6 @@ private final class CountingDriver: PluginDatabaseDriver, @unchecked Sendable { } } -@Suite("Data write execution") struct DataWriteExecutorTests { private func plan( expectedRowCount: Int?, @@ -352,7 +351,6 @@ struct DataWriteExecutorTests { } } -@Suite("Data write transaction ownership") struct WriteTransactionOwnerTests { @Test("An engine without transactions is nobody's to wrap") func withoutTransactionsNobodyOwnsOne() { diff --git a/TableProTests/Core/DataWrite/PluginKeyedChangesTests.swift b/TableProTests/Core/DataWrite/PluginKeyedChangesTests.swift index c6c82f4a3d..7caf4ec79f 100644 --- a/TableProTests/Core/DataWrite/PluginKeyedChangesTests.swift +++ b/TableProTests/Core/DataWrite/PluginKeyedChangesTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Plugin keyed changes") struct PluginKeyedChangesTests { @Test("Every row gets its own key, and the key agrees across the changes and the sets") func keysAgreeAcrossCollections() { diff --git a/TableProTests/Core/DataWrite/RewindCipherTests.swift b/TableProTests/Core/DataWrite/RewindCipherTests.swift index 7c2102fa20..4387506f95 100644 --- a/TableProTests/Core/DataWrite/RewindCipherTests.swift +++ b/TableProTests/Core/DataWrite/RewindCipherTests.swift @@ -31,7 +31,6 @@ private final class LockedKeychain: KeychainStoring, @unchecked Sendable { func delete(forKey key: String) {} } -@Suite("Rewind record protection") struct RewindCipherTests { private func record() -> RewindRecord { RewindRecord( diff --git a/TableProTests/Core/DataWrite/RewindPlannerTests.swift b/TableProTests/Core/DataWrite/RewindPlannerTests.swift index 149dd63012..9df0e8188b 100644 --- a/TableProTests/Core/DataWrite/RewindPlannerTests.swift +++ b/TableProTests/Core/DataWrite/RewindPlannerTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Rewind planning") @MainActor struct RewindPlannerTests { private let columns = ["id", "name"] diff --git a/TableProTests/Core/DataWrite/RowWriteOperationBuilderTests.swift b/TableProTests/Core/DataWrite/RowWriteOperationBuilderTests.swift index 7d1e075d67..4da0c05f76 100644 --- a/TableProTests/Core/DataWrite/RowWriteOperationBuilderTests.swift +++ b/TableProTests/Core/DataWrite/RowWriteOperationBuilderTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Row write operation capture") struct RowWriteOperationBuilderTests { private let columns = ["id", "name", "updated_at"] private let target = DataWriteTarget(database: "shop", schema: nil, table: "users") diff --git a/TableProTests/Core/Database/BoundedQueryTests.swift b/TableProTests/Core/Database/BoundedQueryTests.swift index afd9f16099..0e394dafe5 100644 --- a/TableProTests/Core/Database/BoundedQueryTests.swift +++ b/TableProTests/Core/Database/BoundedQueryTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Bounded query reads stop at the row cap") struct BoundedQueryTests { @Test("Stops the producer once the cap is exceeded instead of draining the whole result") @@ -105,7 +104,6 @@ struct BoundedQueryTests { } } -@Suite("PluginBoundedStream collector") struct PluginBoundedStreamTests { @Test("Treats a zero or negative cap as one row") diff --git a/TableProTests/Core/Database/CLIExecutableFinderTests.swift b/TableProTests/Core/Database/CLIExecutableFinderTests.swift index 4c66b74379..6e6d831683 100644 --- a/TableProTests/Core/Database/CLIExecutableFinderTests.swift +++ b/TableProTests/Core/Database/CLIExecutableFinderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CLIExecutableFinder") struct CLIExecutableFinderTests { @Test("findExecutable returns nil for a nonexistent binary") func findExecutableNonexistent() { diff --git a/TableProTests/Core/Database/CatalogTableListingTests.swift b/TableProTests/Core/Database/CatalogTableListingTests.swift index 3b06ea1f36..22abb18f2c 100644 --- a/TableProTests/Core/Database/CatalogTableListingTests.swift +++ b/TableProTests/Core/Database/CatalogTableListingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("CatalogTableListing") @MainActor struct CatalogTableListingTests { private struct ListingFailed: Error {} diff --git a/TableProTests/Core/Database/ConnectionAttemptRegistryTests.swift b/TableProTests/Core/Database/ConnectionAttemptRegistryTests.swift index a6f414e609..f3fe8def4e 100644 --- a/TableProTests/Core/Database/ConnectionAttemptRegistryTests.swift +++ b/TableProTests/Core/Database/ConnectionAttemptRegistryTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection attempt registry") struct ConnectionAttemptRegistryTests { @Test("The only attempt for a connection is current") func singleAttemptIsCurrent() { diff --git a/TableProTests/Core/Database/ConnectionHealthCheckTests.swift b/TableProTests/Core/Database/ConnectionHealthCheckTests.swift index 77bc37d47f..d9673d838d 100644 --- a/TableProTests/Core/Database/ConnectionHealthCheckTests.swift +++ b/TableProTests/Core/Database/ConnectionHealthCheckTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection health check setting") struct ConnectionHealthCheckTests { @Test("on demand schedules nothing") func onDemandHasNoInterval() { diff --git a/TableProTests/Core/Database/ConnectionSignInRegistryTests.swift b/TableProTests/Core/Database/ConnectionSignInRegistryTests.swift index f78cb7b488..3245d9c7d5 100644 --- a/TableProTests/Core/Database/ConnectionSignInRegistryTests.swift +++ b/TableProTests/Core/Database/ConnectionSignInRegistryTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("Connection sign-in providers") struct ConnectionSignInRegistryTests { private let ssoFields = ["awsAuth": "sso", "awsProfileName": "engineering"] private let entraFields = [ diff --git a/TableProTests/Core/Database/DatabaseAccessBridgeStatementTests.swift b/TableProTests/Core/Database/DatabaseAccessBridgeStatementTests.swift index 4d3cc8ccca..34d93a9709 100644 --- a/TableProTests/Core/Database/DatabaseAccessBridgeStatementTests.swift +++ b/TableProTests/Core/Database/DatabaseAccessBridgeStatementTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("Database access bridge statement text") struct DatabaseAccessBridgeStatementTests { @Test( "Invisible characters and trailing semicolons come off an external statement", diff --git a/TableProTests/Core/Database/DatabaseConnectionExternalAccessTests.swift b/TableProTests/Core/Database/DatabaseConnectionExternalAccessTests.swift index bb1b550e17..7100314ed1 100644 --- a/TableProTests/Core/Database/DatabaseConnectionExternalAccessTests.swift +++ b/TableProTests/Core/Database/DatabaseConnectionExternalAccessTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("DatabaseConnection externalAccess") struct DatabaseConnectionExternalAccessTests { @Test("Default value is readOnly") func defaultValueIsReadOnly() { diff --git a/TableProTests/Core/Database/DatabaseManagerObserverTests.swift b/TableProTests/Core/Database/DatabaseManagerObserverTests.swift index a386ce7108..31b9373a4a 100644 --- a/TableProTests/Core/Database/DatabaseManagerObserverTests.swift +++ b/TableProTests/Core/Database/DatabaseManagerObserverTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("DatabaseManager Observer Management") @MainActor struct DatabaseManagerObserverTests { @Test("DatabaseManager singleton is accessible") diff --git a/TableProTests/Core/Database/DatabaseManagerTests.swift b/TableProTests/Core/Database/DatabaseManagerTests.swift index 5f01bbda84..08b77b1d32 100644 --- a/TableProTests/Core/Database/DatabaseManagerTests.swift +++ b/TableProTests/Core/Database/DatabaseManagerTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseManager Session-Scoped Accessors") @MainActor struct DatabaseManagerSessionTests { @Test("driver(for:) returns nil for unknown connection ID") @@ -140,7 +139,6 @@ private final class DatabaseSwitchingDriver: DatabaseSwitchBaseDriver, PluginDat } } -@Suite("DatabaseManager database switch") @MainActor struct DatabaseManagerDatabaseSwitchTests { @Test("bySchema engines move the driver to the plugin default and record what it is using") diff --git a/TableProTests/Core/Database/DatabaseManagerTunnelTests.swift b/TableProTests/Core/Database/DatabaseManagerTunnelTests.swift index b13ec68613..a78e60624e 100644 --- a/TableProTests/Core/Database/DatabaseManagerTunnelTests.swift +++ b/TableProTests/Core/Database/DatabaseManagerTunnelTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseManager tunnel rewrite") @MainActor struct DatabaseManagerTunnelTests { @Test("Tunneled connection rewrites the endpoint and keeps the password source") diff --git a/TableProTests/Core/Database/DatabaseWriteRejectionDiagnosisTests.swift b/TableProTests/Core/Database/DatabaseWriteRejectionDiagnosisTests.swift index 68f1a8b2b5..74e98d3d1c 100644 --- a/TableProTests/Core/Database/DatabaseWriteRejectionDiagnosisTests.swift +++ b/TableProTests/Core/Database/DatabaseWriteRejectionDiagnosisTests.swift @@ -18,7 +18,6 @@ private struct PlainError: Error, LocalizedError { var errorDescription: String? { "Something else went wrong" } } -@Suite("DatabaseWriteRejectionDiagnosis") struct DatabaseWriteRejectionDiagnosisTests { @Test("MySQL 1792 in a read-only transaction is recognised by its portable SQLSTATE") func recognisesMySQLReadOnlyTransaction() { diff --git a/TableProTests/Core/Database/DriverPurposeTests.swift b/TableProTests/Core/Database/DriverPurposeTests.swift index b8c0e7dc43..23ef3c6d23 100644 --- a/TableProTests/Core/Database/DriverPurposeTests.swift +++ b/TableProTests/Core/Database/DriverPurposeTests.swift @@ -9,7 +9,6 @@ import Testing /// The app and the libpq plugin agree on these values only by spelling, the way they already do for /// `connectionId` and `queryTimeoutSeconds`, so a rename on either side is caught here. -@Suite("DriverPurpose") struct DriverPurposeTests { @Test("Each purpose the app sends is the one the libpq plugin names") func pluginNamesEachPurpose() { diff --git a/TableProTests/Core/Database/ExecuteUserQueryTests.swift b/TableProTests/Core/Database/ExecuteUserQueryTests.swift index 0d39958596..b7045bfc0a 100644 --- a/TableProTests/Core/Database/ExecuteUserQueryTests.swift +++ b/TableProTests/Core/Database/ExecuteUserQueryTests.swift @@ -8,7 +8,6 @@ import Testing import TableProPluginKit @testable import TablePro -@Suite("executeUserQuery applies row cap and respects user SQL") struct ExecuteUserQueryTests { @Test("Caps result at rowCap and marks isTruncated when there are more rows than the cap") diff --git a/TableProTests/Core/Database/FilterCaseSensitivityPersistenceTests.swift b/TableProTests/Core/Database/FilterCaseSensitivityPersistenceTests.swift index fa51a60c75..f29da0b5d8 100644 --- a/TableProTests/Core/Database/FilterCaseSensitivityPersistenceTests.swift +++ b/TableProTests/Core/Database/FilterCaseSensitivityPersistenceTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Filter Case Sensitivity Persistence") struct FilterCaseSensitivityPersistenceTests { private func decode(_ json: String) throws -> TableFilter { diff --git a/TableProTests/Core/Database/FilterSQLGeneratorCaseSensitivityTests.swift b/TableProTests/Core/Database/FilterSQLGeneratorCaseSensitivityTests.swift index 71cbd77551..9f43ecc279 100644 --- a/TableProTests/Core/Database/FilterSQLGeneratorCaseSensitivityTests.swift +++ b/TableProTests/Core/Database/FilterSQLGeneratorCaseSensitivityTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Filter SQL Generator Case Sensitivity") struct FilterSQLGeneratorCaseSensitivityTests { private static let postgresql = SQLDialectDescriptor( diff --git a/TableProTests/Core/Database/FilterSQLGeneratorColumnTypeTests.swift b/TableProTests/Core/Database/FilterSQLGeneratorColumnTypeTests.swift index 4edf461c12..149418076b 100644 --- a/TableProTests/Core/Database/FilterSQLGeneratorColumnTypeTests.swift +++ b/TableProTests/Core/Database/FilterSQLGeneratorColumnTypeTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Filter SQL Generator Column Types") struct FilterSQLGeneratorColumnTypeTests { private static let mysqlDialect = SQLDialectDescriptor( diff --git a/TableProTests/Core/Database/FilterSQLGeneratorMSSQLTests.swift b/TableProTests/Core/Database/FilterSQLGeneratorMSSQLTests.swift index 6ae2760d0e..59d7e79325 100644 --- a/TableProTests/Core/Database/FilterSQLGeneratorMSSQLTests.swift +++ b/TableProTests/Core/Database/FilterSQLGeneratorMSSQLTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Filter SQL Generator MSSQL") struct FilterSQLGeneratorMSSQLTests { private static let mssqlDialect = SQLDialectDescriptor( identifierQuote: "[", keywords: [], functions: [], dataTypes: [], diff --git a/TableProTests/Core/Database/FilterSQLGeneratorTests.swift b/TableProTests/Core/Database/FilterSQLGeneratorTests.swift index 46a973bc75..9b8a1289dd 100644 --- a/TableProTests/Core/Database/FilterSQLGeneratorTests.swift +++ b/TableProTests/Core/Database/FilterSQLGeneratorTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Filter SQL Generator") struct FilterSQLGeneratorTests { private static let mysqlDialect = SQLDialectDescriptor( diff --git a/TableProTests/Core/Database/ForeignKeyConstraintSpanTests.swift b/TableProTests/Core/Database/ForeignKeyConstraintSpanTests.swift index 263cd3a441..1b1f8492ab 100644 --- a/TableProTests/Core/Database/ForeignKeyConstraintSpanTests.swift +++ b/TableProTests/Core/Database/ForeignKeyConstraintSpanTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyConstraintSpan") struct ForeignKeyConstraintSpanTests { private func info( name: String, diff --git a/TableProTests/Core/Database/ForeignKeyLookupQueryTests.swift b/TableProTests/Core/Database/ForeignKeyLookupQueryTests.swift index 250da81bd6..5e5fa8869d 100644 --- a/TableProTests/Core/Database/ForeignKeyLookupQueryTests.swift +++ b/TableProTests/Core/Database/ForeignKeyLookupQueryTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyLookupQuery") struct ForeignKeyLookupQueryTests { private let key = ForeignKeyLookupColumn(name: "ArtistId", type: .integer(rawType: "INTEGER")) private let label = ForeignKeyLookupColumn(name: "Name", type: .text(rawType: "NVARCHAR(120)")) diff --git a/TableProTests/Core/Database/ForeignKeyPreviewQueryTests.swift b/TableProTests/Core/Database/ForeignKeyPreviewQueryTests.swift index d6db671339..6d5818cb9f 100644 --- a/TableProTests/Core/Database/ForeignKeyPreviewQueryTests.swift +++ b/TableProTests/Core/Database/ForeignKeyPreviewQueryTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyPreviewQuery") struct ForeignKeyPreviewQueryTests { private func dialect( paginationStyle: SQLDialectDescriptor.PaginationStyle, diff --git a/TableProTests/Core/Database/GeometryWKBParserTests.swift b/TableProTests/Core/Database/GeometryWKBParserTests.swift index 4c10a4a4d4..572c8a6070 100644 --- a/TableProTests/Core/Database/GeometryWKBParserTests.swift +++ b/TableProTests/Core/Database/GeometryWKBParserTests.swift @@ -75,7 +75,6 @@ private func wkbPolygon(_ rings: [[(Double, Double)]]) -> [UInt8] { // MARK: - Tests -@Suite("GeometryWKBParser") struct GeometryWKBParserTests { @Test("Point: little-endian binary produces WKT") func testPoint() { diff --git a/TableProTests/Core/Database/GoogleSignInServiceTests.swift b/TableProTests/Core/Database/GoogleSignInServiceTests.swift index e5e215a2b5..cdc24b5aa7 100644 --- a/TableProTests/Core/Database/GoogleSignInServiceTests.swift +++ b/TableProTests/Core/Database/GoogleSignInServiceTests.swift @@ -5,7 +5,6 @@ import Testing @testable import TablePro -@Suite("Google OAuth sign-in") struct GoogleSignInServiceTests { private struct StubDriverError: PluginDriverError { let pluginErrorMessage = "Request had invalid authentication credentials." diff --git a/TableProTests/Core/Database/LoadableExtensionGateTests.swift b/TableProTests/Core/Database/LoadableExtensionGateTests.swift index c4ea89cdbd..6569dae3b1 100644 --- a/TableProTests/Core/Database/LoadableExtensionGateTests.swift +++ b/TableProTests/Core/Database/LoadableExtensionGateTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Loadable extension gate") @MainActor struct LoadableExtensionGateTests { private let approvals: LoadableExtensionApprovalStore diff --git a/TableProTests/Core/Database/LostConnectionReportingTests.swift b/TableProTests/Core/Database/LostConnectionReportingTests.swift index ba532338b1..759671bd2b 100644 --- a/TableProTests/Core/Database/LostConnectionReportingTests.swift +++ b/TableProTests/Core/Database/LostConnectionReportingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Plugin driver adapter and a lost connection") struct PluginDriverAdapterLostConnectionTests { @Test("the adapter forwards the driver's lost connection and leaves its own status alone") func forwardsTheFactWithoutRewritingStatus() async throws { diff --git a/TableProTests/Core/Database/MSSQLDriverTests.swift b/TableProTests/Core/Database/MSSQLDriverTests.swift index 3da327f943..7aac9ddb2a 100644 --- a/TableProTests/Core/Database/MSSQLDriverTests.swift +++ b/TableProTests/Core/Database/MSSQLDriverTests.swift @@ -70,7 +70,6 @@ private final class MockMSSQLPluginDriver: PluginDatabaseDriver, @unchecked Send } @MainActor -@Suite("MSSQL Driver") struct MSSQLDriverTests { // MARK: - Helpers diff --git a/TableProTests/Core/Database/MultiConnectionTests.swift b/TableProTests/Core/Database/MultiConnectionTests.swift index 31ed97efb8..4449b6a4f9 100644 --- a/TableProTests/Core/Database/MultiConnectionTests.swift +++ b/TableProTests/Core/Database/MultiConnectionTests.swift @@ -171,7 +171,6 @@ struct DatabaseManagerMultiSessionTests { // MARK: - Coordinator Connection Isolation -@Suite("Coordinator Connection Isolation") @MainActor struct CoordinatorConnectionIsolationTests { @Test("connectionId matches the connection's id") diff --git a/TableProTests/Core/Database/PluginStreamAbortTests.swift b/TableProTests/Core/Database/PluginStreamAbortTests.swift index 12089bffd4..ec98a1218d 100644 --- a/TableProTests/Core/Database/PluginStreamAbortTests.swift +++ b/TableProTests/Core/Database/PluginStreamAbortTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Row stream abort reaches a producer that polls it") struct PluginStreamAbortTests { @Test("Terminating the stream sets the flag, and a serial-queue producer stops early") func serialQueueProducerStopsEarly() async throws { diff --git a/TableProTests/Core/Database/PostgreSQLDriverTests.swift b/TableProTests/Core/Database/PostgreSQLDriverTests.swift index d0926d368a..03c8f1940a 100644 --- a/TableProTests/Core/Database/PostgreSQLDriverTests.swift +++ b/TableProTests/Core/Database/PostgreSQLDriverTests.swift @@ -14,7 +14,6 @@ import Testing // MARK: - SQL Escaping Correctness -@Suite("PostgreSQL SQL Escaping Correctness") struct PostgreSQLSQLEscapingCorrectness { @Test("ANSI escaping preserves backslashes") @@ -51,7 +50,6 @@ struct PostgreSQLSQLEscapingCorrectness { // MARK: - DDL Assembly -@Suite("PostgreSQL DDL Assembly") struct PostgreSQLDDLAssembly { /// Mirrors how `PostgreSQLPluginDriver.fetchTableDDL` assembles its statement. Indexes are no @@ -215,7 +213,6 @@ private final class MockPostgreSQLDriver: DatabaseDriver, @unchecked Sendable { func rollbackTransaction() async throws {} } -@Suite("DDL Loading Flow with Mock Driver") struct DDLLoadingFlowTests { private func loadDDL(using driver: MockPostgreSQLDriver, table: String) async throws -> String { diff --git a/TableProTests/Core/Database/PostgreSQLDumpToolLocatorTests.swift b/TableProTests/Core/Database/PostgreSQLDumpToolLocatorTests.swift index a782e5e7ad..925277b8cd 100644 --- a/TableProTests/Core/Database/PostgreSQLDumpToolLocatorTests.swift +++ b/TableProTests/Core/Database/PostgreSQLDumpToolLocatorTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("PostgreSQLDumpToolLocator") struct PostgreSQLDumpToolLocatorTests { private func makeInstall(root: URL, name: String, binary: String, fileManager: FileManager) throws { let bin = root.appendingPathComponent("\(name)/bin", isDirectory: true) diff --git a/TableProTests/Core/Database/PostgreSQLServerVersionTests.swift b/TableProTests/Core/Database/PostgreSQLServerVersionTests.swift index 84935ad085..813066c3ee 100644 --- a/TableProTests/Core/Database/PostgreSQLServerVersionTests.swift +++ b/TableProTests/Core/Database/PostgreSQLServerVersionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("PostgreSQLServerVersion") struct PostgreSQLServerVersionTests { @Test( "Parses the strings drivers and tools report into server_version_num form", @@ -57,7 +56,6 @@ struct PostgreSQLServerVersionTests { } } -@Suite("PostgreSQLDumpToolCompatibility") struct PostgreSQLDumpToolCompatibilityTests { private func version(_ text: String) throws -> PostgreSQLServerVersion { try #require(PostgreSQLServerVersion(text)) diff --git a/TableProTests/Core/Database/RemoteDatabaseFileTests.swift b/TableProTests/Core/Database/RemoteDatabaseFileTests.swift index 6c45a07f8a..242507e717 100644 --- a/TableProTests/Core/Database/RemoteDatabaseFileTests.swift +++ b/TableProTests/Core/Database/RemoteDatabaseFileTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Remote database file") struct RemoteDatabaseFileTests { // MARK: - Identity diff --git a/TableProTests/Core/Database/ResultSetBatchAdapterTests.swift b/TableProTests/Core/Database/ResultSetBatchAdapterTests.swift index c25c339aa0..03440e9bc7 100644 --- a/TableProTests/Core/Database/ResultSetBatchAdapterTests.swift +++ b/TableProTests/Core/Database/ResultSetBatchAdapterTests.swift @@ -77,7 +77,6 @@ private final class BatchAnsweringDriver: PluginDatabaseDriver, @unchecked Senda } } -@Suite("A batch sent whole reaches the app with every result set") struct ResultSetBatchAdapterTests { private func makeAdapter(declaresBatches: Bool) -> (PluginDriverAdapter, BatchAnsweringDriver) { let driver = BatchAnsweringDriver(declaresBatches: declaresBatches) diff --git a/TableProTests/Core/Database/SQLBoundaryValidatorTests.swift b/TableProTests/Core/Database/SQLBoundaryValidatorTests.swift index 25a5416061..07a01f0b2d 100644 --- a/TableProTests/Core/Database/SQLBoundaryValidatorTests.swift +++ b/TableProTests/Core/Database/SQLBoundaryValidatorTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLBoundaryValidator") struct SQLBoundaryValidatorTests { @Test("Plain filter conditions are allowed") func allowsPlainConditions() { diff --git a/TableProTests/Core/Database/SQLEscapingTests.swift b/TableProTests/Core/Database/SQLEscapingTests.swift index c0866f3d3b..6f400f62e6 100644 --- a/TableProTests/Core/Database/SQLEscapingTests.swift +++ b/TableProTests/Core/Database/SQLEscapingTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("SQL Escaping") struct SQLEscapingTests { // MARK: - escapeStringLiteral Tests (ANSI SQL) diff --git a/TableProTests/Core/Database/SQLStringLiteralPrefixTests.swift b/TableProTests/Core/Database/SQLStringLiteralPrefixTests.swift index 757388cc3e..cabc20956e 100644 --- a/TableProTests/Core/Database/SQLStringLiteralPrefixTests.swift +++ b/TableProTests/Core/Database/SQLStringLiteralPrefixTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQL String Literal Prefix") struct SQLStringLiteralPrefixTests { @Test("SQL Server asks for a national literal") func sqlServerAsksForANationalLiteral() { diff --git a/TableProTests/Core/Database/SchemaCompositionGuardTests.swift b/TableProTests/Core/Database/SchemaCompositionGuardTests.swift index 108abe1463..fe119cf013 100644 --- a/TableProTests/Core/Database/SchemaCompositionGuardTests.swift +++ b/TableProTests/Core/Database/SchemaCompositionGuardTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("Schema composition guard") struct SchemaCompositionGuardTests { private static let appDirectory: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/Database/SessionSwitchOperationTrackingTests.swift b/TableProTests/Core/Database/SessionSwitchOperationTrackingTests.swift index 4579bce24e..0c52b2a0df 100644 --- a/TableProTests/Core/Database/SessionSwitchOperationTrackingTests.swift +++ b/TableProTests/Core/Database/SessionSwitchOperationTrackingTests.swift @@ -34,7 +34,6 @@ private final class Latch { } } -@Suite("Session switches count as in-flight work") @MainActor struct SessionSwitchOperationTrackingTests { @Test("A schema switch is in flight while the driver is running it") diff --git a/TableProTests/Core/Database/StatementTextValidatorTests.swift b/TableProTests/Core/Database/StatementTextValidatorTests.swift index 480d43c866..ea91e9ba9d 100644 --- a/TableProTests/Core/Database/StatementTextValidatorTests.swift +++ b/TableProTests/Core/Database/StatementTextValidatorTests.swift @@ -46,7 +46,6 @@ private final class ExecutionRecordingDriver: PluginDatabaseDriver, @unchecked S } } -@Suite("A statement holding a NUL character is never sent") struct StatementTextValidatorTests { private let truncatingDelete = "DELETE FROM t\u{0} WHERE id = 1" diff --git a/TableProTests/Core/Database/TableDDLComposerTests.swift b/TableProTests/Core/Database/TableDDLComposerTests.swift index 3f54e745f5..c99b5798b3 100644 --- a/TableProTests/Core/Database/TableDDLComposerTests.swift +++ b/TableProTests/Core/Database/TableDDLComposerTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Table DDL composition") struct TableDDLComposerTests { private let tableDDL = "CREATE TABLE \"app\".\"orders\" (\n id integer\n)" private let comment = "COMMENT ON TABLE \"app\".\"orders\" IS 'Orders table'" diff --git a/TableProTests/Core/Database/TableOperationSQLBuilderTests.swift b/TableProTests/Core/Database/TableOperationSQLBuilderTests.swift index ab0e0b3b6a..5797cb4351 100644 --- a/TableProTests/Core/Database/TableOperationSQLBuilderTests.swift +++ b/TableProTests/Core/Database/TableOperationSQLBuilderTests.swift @@ -72,7 +72,6 @@ private final class StubForeignKeyDriver: PluginDatabaseDriver, @unchecked Senda func foreignKeyEnableStatements() -> [String]? { ["SET FOREIGN_KEY_CHECKS=1"] } } -@Suite("TableOperationSQLBuilder") @MainActor struct TableOperationSQLBuilderTests { private func ref( diff --git a/TableProTests/Core/Database/TriggerInfoMappingTests.swift b/TableProTests/Core/Database/TriggerInfoMappingTests.swift index fd8b71e1a0..28d8c7e5cc 100644 --- a/TableProTests/Core/Database/TriggerInfoMappingTests.swift +++ b/TableProTests/Core/Database/TriggerInfoMappingTests.swift @@ -59,7 +59,6 @@ private final class StubTriggerDriver: PluginDatabaseDriver, @unchecked Sendable } } -@Suite("Trigger info mapping") struct TriggerInfoMappingTests { @Test("PluginTriggerInfo encodes and decodes") func codableRoundTrip() throws { @@ -117,7 +116,6 @@ struct TriggerInfoMappingTests { } } -@Suite("StructureTab triggers") struct StructureTabTriggersTests { @Test("Triggers tab is part of the canonical tab set") func triggersInAllCases() { @@ -130,7 +128,6 @@ struct StructureTabTriggersTests { } } -@Suite("Trigger apply strategy") struct TriggerApplyStrategyTests { @Test("MySQL edit drops then recreates (no replace, non-transactional)") func mysqlEdit() { @@ -159,7 +156,6 @@ struct TriggerApplyStrategyTests { } } -@Suite("Trigger editing bridge") struct TriggerEditingBridgeTests { private func makeAdapter(_ configure: (StubTriggerDriver) -> Void) -> PluginDriverAdapter { let driver = StubTriggerDriver() @@ -199,7 +195,6 @@ struct TriggerEditingBridgeTests { } @MainActor -@Suite("Trigger apply execution") struct TriggerApplyExecutionTests { private func makeStubAndAdapter() -> (StubTriggerDriver, PluginDriverAdapter) { let stub = StubTriggerDriver() diff --git a/TableProTests/Core/Diagnostics/LogRedactionTests.swift b/TableProTests/Core/Diagnostics/LogRedactionTests.swift index 5fe50f2a41..0b4686d0df 100644 --- a/TableProTests/Core/Diagnostics/LogRedactionTests.swift +++ b/TableProTests/Core/Diagnostics/LogRedactionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Log redaction") struct LogRedactionTests { private static let serverText = "ERROR: duplicate key value violates unique constraint \"users_email_key\" Key (email)=(a@b.com) already exists." diff --git a/TableProTests/Core/Diagnostics/MongoDiagnosticsProducerTests.swift b/TableProTests/Core/Diagnostics/MongoDiagnosticsProducerTests.swift index c79a99e989..0c507febe7 100644 --- a/TableProTests/Core/Diagnostics/MongoDiagnosticsProducerTests.swift +++ b/TableProTests/Core/Diagnostics/MongoDiagnosticsProducerTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("MongoDiagnosticsProducer") struct MongoDiagnosticsProducerTests { private let producer = MongoDiagnosticsProducer() @@ -77,7 +76,6 @@ struct MongoDiagnosticsProducerTests { } } -@Suite("MongoShellCommandRecognizer") struct MongoShellCommandRecognizerTests { @Test("The two shell lines are recognised") func shellLines() { @@ -98,7 +96,6 @@ struct MongoShellCommandRecognizerTests { } } -@Suite("JavaScriptSyntaxChecker") struct JavaScriptSyntaxCheckerTests { @Test("Valid JavaScript reports nothing") func valid() { diff --git a/TableProTests/Core/Diagnostics/QueryDiagnosticsTests.swift b/TableProTests/Core/Diagnostics/QueryDiagnosticsTests.swift index db36c4139f..92178fed7a 100644 --- a/TableProTests/Core/Diagnostics/QueryDiagnosticsTests.swift +++ b/TableProTests/Core/Diagnostics/QueryDiagnosticsTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Query Diagnostics") struct QueryDiagnosticsTests { private let sql = SQLDiagnosticsProducer() private let mql = MongoDiagnosticsProducer() diff --git a/TableProTests/Core/Diagnostics/SQLConfusableCharacterScannerTests.swift b/TableProTests/Core/Diagnostics/SQLConfusableCharacterScannerTests.swift index 2ea280adaf..f8ca279324 100644 --- a/TableProTests/Core/Diagnostics/SQLConfusableCharacterScannerTests.swift +++ b/TableProTests/Core/Diagnostics/SQLConfusableCharacterScannerTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("Confusable SQL characters") struct SQLConfusableCharacterScannerTests { private func scan(_ text: String, _ grammar: SQLLexicalGrammar) -> [ConfusableSQLCharacterMatch] { SQLConfusableCharacterScanner.scan(text as NSString, grammar: grammar) @@ -282,7 +281,6 @@ struct SQLConfusableCharacterScannerTests { } @MainActor -@Suite("Confusable SQL characters in the editor's diagnostics") struct SQLConfusableCharacterDiagnosticsTests { @Test("A confusable character is a warning, and a stray closer is still an error") func severities() { diff --git a/TableProTests/Core/Diagnostics/TableLoadHistoryStoreTests.swift b/TableProTests/Core/Diagnostics/TableLoadHistoryStoreTests.swift index 2bbcbf1d20..0dd2cc5d14 100644 --- a/TableProTests/Core/Diagnostics/TableLoadHistoryStoreTests.swift +++ b/TableProTests/Core/Diagnostics/TableLoadHistoryStoreTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TableLoadHistoryStore") struct TableLoadHistoryStoreTests { private static let stamp = TableLoadRuntimeStamp( appVersion: "0.68.0", diff --git a/TableProTests/Core/Diagnostics/TableLoadPerformanceRecordTests.swift b/TableProTests/Core/Diagnostics/TableLoadPerformanceRecordTests.swift index 12b2a82cb3..8ded01bc54 100644 --- a/TableProTests/Core/Diagnostics/TableLoadPerformanceRecordTests.swift +++ b/TableProTests/Core/Diagnostics/TableLoadPerformanceRecordTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableLoadPerformanceRecord") struct TableLoadPerformanceRecordTests { private static let stamp = TableLoadRuntimeStamp( appVersion: "0.68.0", diff --git a/TableProTests/Core/Diagnostics/TableLoadTraceRecorderTests.swift b/TableProTests/Core/Diagnostics/TableLoadTraceRecorderTests.swift index 5627e320e4..06766efec3 100644 --- a/TableProTests/Core/Diagnostics/TableLoadTraceRecorderTests.swift +++ b/TableProTests/Core/Diagnostics/TableLoadTraceRecorderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TableLoadTraceRecorder") struct TableLoadTraceRecorderTests { private let base = ContinuousClock.now diff --git a/TableProTests/Core/Diagnostics/TableLoadTraceSummaryTests.swift b/TableProTests/Core/Diagnostics/TableLoadTraceSummaryTests.swift index 1a7a65a68c..63cf60e98b 100644 --- a/TableProTests/Core/Diagnostics/TableLoadTraceSummaryTests.swift +++ b/TableProTests/Core/Diagnostics/TableLoadTraceSummaryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TableLoadTraceSummary") struct TableLoadTraceSummaryTests { private let base = ContinuousClock.now diff --git a/TableProTests/Core/Diagnostics/TableLoadTracerSinkTests.swift b/TableProTests/Core/Diagnostics/TableLoadTracerSinkTests.swift index 33bc98770f..e726c64734 100644 --- a/TableProTests/Core/Diagnostics/TableLoadTracerSinkTests.swift +++ b/TableProTests/Core/Diagnostics/TableLoadTracerSinkTests.swift @@ -25,7 +25,6 @@ private final class RecordingSink: TableLoadSummarySink, @unchecked Sendable { } @MainActor -@Suite("TableLoadTracer sink") struct TableLoadTracerSinkTests { private func makeTracer() -> (tracer: TableLoadTracer, sink: RecordingSink) { let sink = RecordingSink() diff --git a/TableProTests/Core/Diff/FileConflictDiffTests.swift b/TableProTests/Core/Diff/FileConflictDiffTests.swift index 8de4415cd7..91aacb5afb 100644 --- a/TableProTests/Core/Diff/FileConflictDiffTests.swift +++ b/TableProTests/Core/Diff/FileConflictDiffTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("FileConflictDiff") struct FileConflictDiffTests { private func linePairs(mine: String, disk: String) -> [DiffPair]? { guard case .lineDiff(let pairs) = FileConflictDiff.comparison(mine: mine, disk: disk) else { diff --git a/TableProTests/Core/Diff/FileConflictPresentationTests.swift b/TableProTests/Core/Diff/FileConflictPresentationTests.swift index 9663b9fe2b..5d7dff4ead 100644 --- a/TableProTests/Core/Diff/FileConflictPresentationTests.swift +++ b/TableProTests/Core/Diff/FileConflictPresentationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("FileConflictPresentation") struct FileConflictPresentationTests { @Test("an unchanged line is plain on both sides") func unchangedIsPlain() { diff --git a/TableProTests/Core/Diff/SplitDiffMarkerTests.swift b/TableProTests/Core/Diff/SplitDiffMarkerTests.swift index b46c9b6a8a..f59f4f0c8f 100644 --- a/TableProTests/Core/Diff/SplitDiffMarkerTests.swift +++ b/TableProTests/Core/Diff/SplitDiffMarkerTests.swift @@ -6,7 +6,6 @@ @testable import TablePro import Testing -@Suite("Split diff marker") struct SplitDiffMarkerTests { @Test("A removed line is marked only on the before side") func removedMarksBeforeOnly() { diff --git a/TableProTests/Core/Diff/SqlDiffTests.swift b/TableProTests/Core/Diff/SqlDiffTests.swift index 0f8fc93e75..65fb77ffb1 100644 --- a/TableProTests/Core/Diff/SqlDiffTests.swift +++ b/TableProTests/Core/Diff/SqlDiffTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SqlDiff") struct SqlDiffTests { @Test("computeSplit marks unchanged lines") func splitUnchanged() { diff --git a/TableProTests/Core/Diff/StructureDefinitionDiffPresentationTests.swift b/TableProTests/Core/Diff/StructureDefinitionDiffPresentationTests.swift index 232568e2cc..b8221b069c 100644 --- a/TableProTests/Core/Diff/StructureDefinitionDiffPresentationTests.swift +++ b/TableProTests/Core/Diff/StructureDefinitionDiffPresentationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("StructureDefinitionDiffPresentation") struct StructureDefinitionDiffPresentationTests { @Test("the target is the before side and the source is the after side") func targetIsBeforeAndSourceIsAfter() { diff --git a/TableProTests/Core/EllipsisConventionTests.swift b/TableProTests/Core/EllipsisConventionTests.swift index f43824436e..3ee6541d77 100644 --- a/TableProTests/Core/EllipsisConventionTests.swift +++ b/TableProTests/Core/EllipsisConventionTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("Ellipsis convention") struct EllipsisConventionTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/Events/KeyWindowCommandSubscriptionTests.swift b/TableProTests/Core/Events/KeyWindowCommandSubscriptionTests.swift index 2a612133ba..835e441d44 100644 --- a/TableProTests/Core/Events/KeyWindowCommandSubscriptionTests.swift +++ b/TableProTests/Core/Events/KeyWindowCommandSubscriptionTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("Key window command subscription") @MainActor struct KeyWindowCommandSubscriptionTests { private final class Received { diff --git a/TableProTests/Core/Execution/CancelledExecutionOwnershipTests.swift b/TableProTests/Core/Execution/CancelledExecutionOwnershipTests.swift index 3ae5bd3963..c91f719e67 100644 --- a/TableProTests/Core/Execution/CancelledExecutionOwnershipTests.swift +++ b/TableProTests/Core/Execution/CancelledExecutionOwnershipTests.swift @@ -16,7 +16,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Cancelled execution ownership") @MainActor struct CancelledExecutionOwnershipTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Core/Execution/ExternalStatementGateLexicalTests.swift b/TableProTests/Core/Execution/ExternalStatementGateLexicalTests.swift index 36cd3591ea..b60d930dc9 100644 --- a/TableProTests/Core/Execution/ExternalStatementGateLexicalTests.swift +++ b/TableProTests/Core/Execution/ExternalStatementGateLexicalTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("External statement gate lexing") struct ExternalStatementGateLexicalTests { private func refusal( _ sql: String, diff --git a/TableProTests/Core/Execution/ExternalStatementGateTests.swift b/TableProTests/Core/Execution/ExternalStatementGateTests.swift index 6a8f9cca8e..98cee2917c 100644 --- a/TableProTests/Core/Execution/ExternalStatementGateTests.swift +++ b/TableProTests/Core/Execution/ExternalStatementGateTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("External statement gate") struct ExternalStatementGateTests { private func statement( _ sql: String, diff --git a/TableProTests/Core/Execution/TabExecutionRegistryTests.swift b/TableProTests/Core/Execution/TabExecutionRegistryTests.swift index fec966fc4b..716da884ca 100644 --- a/TableProTests/Core/Execution/TabExecutionRegistryTests.swift +++ b/TableProTests/Core/Execution/TabExecutionRegistryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TabExecutionRegistry") struct TabExecutionRegistryTests { @Test("A fresh claim is current") func freshClaimIsCurrent() { diff --git a/TableProTests/Core/Execution/TabExecutionSettleGuardTests.swift b/TableProTests/Core/Execution/TabExecutionSettleGuardTests.swift index 5df9790306..ead7e42d97 100644 --- a/TableProTests/Core/Execution/TabExecutionSettleGuardTests.swift +++ b/TableProTests/Core/Execution/TabExecutionSettleGuardTests.swift @@ -17,7 +17,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Execution claim settle guard") struct TabExecutionSettleGuardTests { @Test("Every settle call consumes the ownership answer it returns") func noSettleCallDiscardsItsAnswer() throws { diff --git a/TableProTests/Core/Execution/TabQueryTaskGuardTests.swift b/TableProTests/Core/Execution/TabQueryTaskGuardTests.swift index dd835da778..b8239258c9 100644 --- a/TableProTests/Core/Execution/TabQueryTaskGuardTests.swift +++ b/TableProTests/Core/Execution/TabQueryTaskGuardTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("Per-tab cancellation guard") struct TabQueryTaskGuardTests { /// The window's single handle is gone. A reintroduced one is the bug: every start path cancels /// whatever it holds, so tab B's Run kills tab A's batch and rolls it back. diff --git a/TableProTests/Core/Execution/TabQueryTasksTests.swift b/TableProTests/Core/Execution/TabQueryTasksTests.swift index 322a7299b9..7575c6217d 100644 --- a/TableProTests/Core/Execution/TabQueryTasksTests.swift +++ b/TableProTests/Core/Execution/TabQueryTasksTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Tab query tasks") struct TabQueryTasksTests { @Test("Installing on an idle tab displaces nothing") func installOnIdleTabDisplacesNothing() { diff --git a/TableProTests/Core/Execution/TabRetargetInvalidationTests.swift b/TableProTests/Core/Execution/TabRetargetInvalidationTests.swift index b8f93e8fd4..8df159115c 100644 --- a/TableProTests/Core/Execution/TabRetargetInvalidationTests.swift +++ b/TableProTests/Core/Execution/TabRetargetInvalidationTests.swift @@ -9,7 +9,6 @@ import Testing /// Pins the confirmed race: clicking table B while table A's query is in flight used to block B's /// query entirely and then paint A's rows into the tab that had already become B. -@Suite("Tab retarget invalidates in-flight execution") struct TabRetargetInvalidationTests { @Test("A result that started before the retarget is not current after it") func retargetInvalidatesInFlightResult() { @@ -119,7 +118,6 @@ struct TabRetargetInvalidationTests { } } -@Suite("DriverCancellationPolicy") struct DriverCancellationPolicyTests { @Test("Only untracked leases stay invisible to cancellation") func trackingReflectsPolicy() { diff --git a/TableProTests/Core/Execution/WindowBusyStateGuardTests.swift b/TableProTests/Core/Execution/WindowBusyStateGuardTests.swift index 4e1dbb8c75..2144fa9862 100644 --- a/TableProTests/Core/Execution/WindowBusyStateGuardTests.swift +++ b/TableProTests/Core/Execution/WindowBusyStateGuardTests.swift @@ -15,7 +15,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Window busy state guard") struct WindowBusyStateGuardTests { @Test("Nothing stores or writes a second copy of whether the window is busy") func noStoredWindowExecutionFlag() throws { diff --git a/TableProTests/Core/Export/DataSourceExportTests.swift b/TableProTests/Core/Export/DataSourceExportTests.swift index 735072e845..67a5937b6f 100644 --- a/TableProTests/Core/Export/DataSourceExportTests.swift +++ b/TableProTests/Core/Export/DataSourceExportTests.swift @@ -48,7 +48,6 @@ private final class StubMQLFormat: StubFormat, @unchecked Sendable { init() {} } -@Suite("Data source export") @MainActor struct DataSourceExportTests { private func request( diff --git a/TableProTests/Core/Export/ExportFormatCatalogTests.swift b/TableProTests/Core/Export/ExportFormatCatalogTests.swift index 0ee44d8644..77baf70430 100644 --- a/TableProTests/Core/Export/ExportFormatCatalogTests.swift +++ b/TableProTests/Core/Export/ExportFormatCatalogTests.swift @@ -72,7 +72,6 @@ private final class StubAardvark: StubExportFormat, @unchecked Sendable { init() {} } -@Suite("Export format catalog") struct ExportFormatCatalogTests { private func ids(_ plugins: [any ExportFormatPlugin]) -> [String] { diff --git a/TableProTests/Core/Export/ExportProfileStorageTests.swift b/TableProTests/Core/Export/ExportProfileStorageTests.swift index 196c69ac04..553be89fb9 100644 --- a/TableProTests/Core/Export/ExportProfileStorageTests.swift +++ b/TableProTests/Core/Export/ExportProfileStorageTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Export profiles") struct ExportProfileStorageTests { private func databases() -> [ExportDatabaseItem] { @@ -166,7 +165,6 @@ struct ExportProfileStorageTests { } } -@Suite("Import error report") struct ImportErrorReportTests { private let errors = [ diff --git a/TableProTests/Core/Export/ExportServiceDataSourceTests.swift b/TableProTests/Core/Export/ExportServiceDataSourceTests.swift index bf4eb6e9d2..9f9e1f2124 100644 --- a/TableProTests/Core/Export/ExportServiceDataSourceTests.swift +++ b/TableProTests/Core/Export/ExportServiceDataSourceTests.swift @@ -88,7 +88,6 @@ private final class LineWritingFormat: ExportFormatPlugin, @unchecked Sendable { } } -@Suite("Export service data source entry") @MainActor struct ExportServiceDataSourceTests { private func temporaryURL() -> URL { diff --git a/TableProTests/Core/Export/TableTransferServiceTests.swift b/TableProTests/Core/Export/TableTransferServiceTests.swift index 45fca3c868..7372ddffc6 100644 --- a/TableProTests/Core/Export/TableTransferServiceTests.swift +++ b/TableProTests/Core/Export/TableTransferServiceTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Table transfer") struct TableTransferServiceTests { @Test("A row is keyed by its header's column names, in order") diff --git a/TableProTests/Core/Git/GitOutputParserTests.swift b/TableProTests/Core/Git/GitOutputParserTests.swift index 5991315b47..7f65a43ebf 100644 --- a/TableProTests/Core/Git/GitOutputParserTests.swift +++ b/TableProTests/Core/Git/GitOutputParserTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Git output parsers") struct GitOutputParserTests { private func bytes(_ string: String) -> Data { Data(string.utf8) @@ -154,7 +153,6 @@ struct GitOutputParserTests { } } -@Suite("GitFileStatus") struct GitFileStatusTests { @Test("Badge letters follow the change, with conflict and untracked first") func badges() { @@ -200,7 +198,6 @@ struct GitFileStatusTests { } } -@Suite("Git executable and command hardening") struct GitCommandHardeningTests { @Test("The locator never offers the installer shim, and reads the developer directory without running anything") func locatorSkipsShim() { @@ -286,7 +283,6 @@ struct GitCommandHardeningTests { } } -@Suite("FileTextLoader.decode") struct FileTextLoaderDecodeTests { @Test("Byte order marks pick the encoding, UTF-32 before the UTF-16 prefix it shares") func byteOrderMarks() throws { diff --git a/TableProTests/Core/MCP/Auth/MCPBearerTokenAuthenticatorTests.swift b/TableProTests/Core/MCP/Auth/MCPBearerTokenAuthenticatorTests.swift index bebddd4914..231e67a2bb 100644 --- a/TableProTests/Core/MCP/Auth/MCPBearerTokenAuthenticatorTests.swift +++ b/TableProTests/Core/MCP/Auth/MCPBearerTokenAuthenticatorTests.swift @@ -52,7 +52,6 @@ actor FakeMCPTokenStore: MCPTokenStoreProtocol { } } -@Suite("MCP Bearer Token Authenticator") struct MCPBearerTokenAuthenticatorTests { private func makeValidated( label: String = "test", diff --git a/TableProTests/Core/MCP/Auth/MCPCompositeAuthenticatorTests.swift b/TableProTests/Core/MCP/Auth/MCPCompositeAuthenticatorTests.swift index 321bfecfdf..383e27e08e 100644 --- a/TableProTests/Core/MCP/Auth/MCPCompositeAuthenticatorTests.swift +++ b/TableProTests/Core/MCP/Auth/MCPCompositeAuthenticatorTests.swift @@ -14,7 +14,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MCP Composite Authenticator") struct MCPCompositeAuthenticatorTests { private func makeValidated( label: String = "test", diff --git a/TableProTests/Core/MCP/Completions/MCPCompletionProviderTests.swift b/TableProTests/Core/MCP/Completions/MCPCompletionProviderTests.swift index 1b6308b6db..1aa4938a85 100644 --- a/TableProTests/Core/MCP/Completions/MCPCompletionProviderTests.swift +++ b/TableProTests/Core/MCP/Completions/MCPCompletionProviderTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCPCompletionProvider") struct MCPCompletionProviderTests { @Test("Completing a prompt connection argument offers the readable connection names") func completesConnectionNames() async { @@ -351,7 +350,6 @@ struct MCPCompletionProviderTests { } } -@Suite("MCPCompletionReference") struct MCPCompletionReferenceTests { @Test("A prompt reference decodes from its type and name") func decodesPromptReference() throws { @@ -422,7 +420,6 @@ struct MCPCompletionReferenceTests { } } -@Suite("MCPCompletionResult") struct MCPCompletionResultTests { @Test("A result serialises values, total, and hasMore") func jsonShape() { @@ -455,7 +452,6 @@ struct MCPCompletionResultTests { } } -@Suite("CompletionCompleteHandler") struct CompletionCompleteHandlerTests { @Test("Handler declares completion/complete and the resources read scope") func metadata() { diff --git a/TableProTests/Core/MCP/Elicitation/MCPInputRequiredTests.swift b/TableProTests/Core/MCP/Elicitation/MCPInputRequiredTests.swift index d22b40c6b4..1db4e9e409 100644 --- a/TableProTests/Core/MCP/Elicitation/MCPInputRequiredTests.swift +++ b/TableProTests/Core/MCP/Elicitation/MCPInputRequiredTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPInputRequired result shape") struct MCPInputRequiredTests { private let serverInfo = MCPImplementation(name: "TablePro", version: "1.0") @@ -95,7 +94,6 @@ struct MCPInputRequiredTests { } } -@Suite("MCPInputResponses parsing") struct MCPInputResponsesTests { @Test("An empty requestState is treated as absent") func emptyRequestStateIsAbsent() { diff --git a/TableProTests/Core/MCP/Elicitation/MCPRequestStateTests.swift b/TableProTests/Core/MCP/Elicitation/MCPRequestStateTests.swift index 57b28de2fa..9d6f9fefcb 100644 --- a/TableProTests/Core/MCP/Elicitation/MCPRequestStateTests.swift +++ b/TableProTests/Core/MCP/Elicitation/MCPRequestStateTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPRequestState") struct MCPRequestStateTests { private func principal(fingerprint: String = "fp-1", tokenId: UUID? = nil) -> MCPPrincipal { MCPPrincipal( @@ -145,7 +144,6 @@ struct MCPRequestStateTests { } } -@Suite("MCPRequestState replay resistance") struct MCPRequestStateReplayTests { private let now = Date(timeIntervalSince1970: 1_700_000_000) diff --git a/TableProTests/Core/MCP/Identity/MCPIdentityLedgerTests.swift b/TableProTests/Core/MCP/Identity/MCPIdentityLedgerTests.swift index 84e2905b83..de5ca852d7 100644 --- a/TableProTests/Core/MCP/Identity/MCPIdentityLedgerTests.swift +++ b/TableProTests/Core/MCP/Identity/MCPIdentityLedgerTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("MCP Identity Ledgers") struct MCPIdentityLedgerTests { private func principal(tokenId: UUID?, fingerprint: String = "fp") -> MCPPrincipal { MCPPrincipal( diff --git a/TableProTests/Core/MCP/Legacy/InitializeHandlerTests.swift b/TableProTests/Core/MCP/Legacy/InitializeHandlerTests.swift index 4a1ceb8c8b..e735260979 100644 --- a/TableProTests/Core/MCP/Legacy/InitializeHandlerTests.swift +++ b/TableProTests/Core/MCP/Legacy/InitializeHandlerTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Legacy initialize handler") struct LegacyInitializeHandlerTests { @Test("The handler answers initialize for legacy clients only, and needs no scope") func handlerIdentity() { diff --git a/TableProTests/Core/MCP/Legacy/MCPLegacyEraAdapterTests.swift b/TableProTests/Core/MCP/Legacy/MCPLegacyEraAdapterTests.swift index e72b564c1b..510c75351a 100644 --- a/TableProTests/Core/MCP/Legacy/MCPLegacyEraAdapterTests.swift +++ b/TableProTests/Core/MCP/Legacy/MCPLegacyEraAdapterTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCP legacy era adapter") struct MCPLegacyEraAdapterTests { @Test("A request whose _meta declares a protocol version is served by the modern era") func modernMetaSelectsTheModernEra() async throws { diff --git a/TableProTests/Core/MCP/Legacy/MCPLegacySessionStoreTests.swift b/TableProTests/Core/MCP/Legacy/MCPLegacySessionStoreTests.swift index f6f9ae6e22..82c0eba5ee 100644 --- a/TableProTests/Core/MCP/Legacy/MCPLegacySessionStoreTests.swift +++ b/TableProTests/Core/MCP/Legacy/MCPLegacySessionStoreTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCP legacy session store") struct MCPLegacySessionStoreTests { @Test("A minted session id is printable, unique and well formed") func mintedSessionIdsAreWellFormed() { diff --git a/TableProTests/Core/MCP/Legacy/PingHandlerTests.swift b/TableProTests/Core/MCP/Legacy/PingHandlerTests.swift index b357ba22c4..9855abe831 100644 --- a/TableProTests/Core/MCP/Legacy/PingHandlerTests.swift +++ b/TableProTests/Core/MCP/Legacy/PingHandlerTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Legacy ping handler") struct LegacyPingHandlerTests { @Test("The handler answers ping for legacy clients only, and needs no scope") func handlerIdentity() { diff --git a/TableProTests/Core/MCP/MCPAuditChainTests.swift b/TableProTests/Core/MCP/MCPAuditChainTests.swift index 7b1779fb17..732eaaecfd 100644 --- a/TableProTests/Core/MCP/MCPAuditChainTests.swift +++ b/TableProTests/Core/MCP/MCPAuditChainTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("MCP Audit Chain") struct MCPAuditChainTests { private func entry(action: String, details: String? = nil) -> AuditEntry { AuditEntry( diff --git a/TableProTests/Core/MCP/MCPAuthPolicyTests.swift b/TableProTests/Core/MCP/MCPAuthPolicyTests.swift index abaa6278f7..0db86a426e 100644 --- a/TableProTests/Core/MCP/MCPAuthPolicyTests.swift +++ b/TableProTests/Core/MCP/MCPAuthPolicyTests.swift @@ -15,7 +15,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MCP Auth Policy") struct MCPAuthPolicyTests { private let connectionA = UUID() private let connectionB = UUID() diff --git a/TableProTests/Core/MCP/MCPConnectionApprovalTests.swift b/TableProTests/Core/MCP/MCPConnectionApprovalTests.swift index a22553d308..c892c07543 100644 --- a/TableProTests/Core/MCP/MCPConnectionApprovalTests.swift +++ b/TableProTests/Core/MCP/MCPConnectionApprovalTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MCP connection approval") struct MCPConnectionApprovalTests { private let connectionA = UUID() diff --git a/TableProTests/Core/MCP/MCPExplainStatementTests.swift b/TableProTests/Core/MCP/MCPExplainStatementTests.swift index 5152d79a04..72e2da45af 100644 --- a/TableProTests/Core/MCP/MCPExplainStatementTests.swift +++ b/TableProTests/Core/MCP/MCPExplainStatementTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("MCP explain statement") struct MCPExplainStatementTests { private func message(of attempt: () throws -> String) -> String? { do { diff --git a/TableProTests/Core/MCP/MCPPairingServiceTests.swift b/TableProTests/Core/MCP/MCPPairingServiceTests.swift index 189de44d44..e7b68cc8c7 100644 --- a/TableProTests/Core/MCP/MCPPairingServiceTests.swift +++ b/TableProTests/Core/MCP/MCPPairingServiceTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro -@Suite("MCP Pairing Exchange Store") struct MCPPairingServiceTests { private func challenge(for verifier: String) -> String { PairingExchangeStore.sha256Base64Url(of: verifier) diff --git a/TableProTests/Core/MCP/MCPPairingValidationTests.swift b/TableProTests/Core/MCP/MCPPairingValidationTests.swift index a96f7890dc..87b2e7f911 100644 --- a/TableProTests/Core/MCP/MCPPairingValidationTests.swift +++ b/TableProTests/Core/MCP/MCPPairingValidationTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro -@Suite("MCP Pairing Validation") struct MCPPairingValidationTests { private func url(_ value: String) throws -> URL { try #require(URL(string: value)) diff --git a/TableProTests/Core/MCP/MCPReportedStatusTests.swift b/TableProTests/Core/MCP/MCPReportedStatusTests.swift index b58e39e2fe..5d5ad600ed 100644 --- a/TableProTests/Core/MCP/MCPReportedStatusTests.swift +++ b/TableProTests/Core/MCP/MCPReportedStatusTests.swift @@ -16,7 +16,6 @@ import Foundation import Testing -@Suite("MCP connection health reporting") struct MCPReportedStatusTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/MCP/MCPSchemaSearchTests.swift b/TableProTests/Core/MCP/MCPSchemaSearchTests.swift index 8f73d96b0c..3a5615174d 100644 --- a/TableProTests/Core/MCP/MCPSchemaSearchTests.swift +++ b/TableProTests/Core/MCP/MCPSchemaSearchTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("search_schema reach") @MainActor struct MCPSchemaSearchTests { private struct ReadFailed: Error {} @@ -246,7 +245,6 @@ struct MCPSchemaSearchTests { } } -@Suite("search_schema payload") struct MCPSchemaSearchPayloadTests { @Test("A blank schema is not a named one, and any other string is") func namedSchemaFollowsTheScope() throws { diff --git a/TableProTests/Core/MCP/MCPServerDashboardPayloadTests.swift b/TableProTests/Core/MCP/MCPServerDashboardPayloadTests.swift index f1eb5e854d..d7e3a0a2ec 100644 --- a/TableProTests/Core/MCP/MCPServerDashboardPayloadTests.swift +++ b/TableProTests/Core/MCP/MCPServerDashboardPayloadTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("get_server_dashboard payload") struct MCPServerDashboardPayloadTests { @Test("Panels that all read come back without an errors object") func noFailures() throws { diff --git a/TableProTests/Core/MCP/MCPSettingsTests.swift b/TableProTests/Core/MCP/MCPSettingsTests.swift index 71d209dc82..60046a8f20 100644 --- a/TableProTests/Core/MCP/MCPSettingsTests.swift +++ b/TableProTests/Core/MCP/MCPSettingsTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCP settings") struct MCPSettingsTests { @Test("The server is off until the user turns it on") func defaultIsDisabled() { diff --git a/TableProTests/Core/MCP/MCPTokenStoreTests.swift b/TableProTests/Core/MCP/MCPTokenStoreTests.swift index 55237e964c..429070ad08 100644 --- a/TableProTests/Core/MCP/MCPTokenStoreTests.swift +++ b/TableProTests/Core/MCP/MCPTokenStoreTests.swift @@ -51,7 +51,6 @@ private final class InMemoryCredentialStore: MCPTokenCredentialStoring, @uncheck } } -@Suite("MCP Token Store") struct MCPTokenStoreTests { private func makeStore( _ credentialStore: InMemoryCredentialStore = InMemoryCredentialStore() diff --git a/TableProTests/Core/MCP/Meta/MCPRequestMetaTests.swift b/TableProTests/Core/MCP/Meta/MCPRequestMetaTests.swift index 0e0b21da99..dd6f57dacb 100644 --- a/TableProTests/Core/MCP/Meta/MCPRequestMetaTests.swift +++ b/TableProTests/Core/MCP/Meta/MCPRequestMetaTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCPRequestMeta") struct MCPRequestMetaTests { @Test("A request without _meta at all is invalid params") func missingMetaObject() throws { @@ -265,7 +264,6 @@ struct MCPRequestMetaTests { } } -@Suite("MCPMetaKeys") struct MCPMetaKeysTests { @Test("The reserved protocol keys carry the io.modelcontextprotocol prefix") func reservedKeySpellings() { diff --git a/TableProTests/Core/MCP/Outside/MCPClientSessionDecodingTests.swift b/TableProTests/Core/MCP/Outside/MCPClientSessionDecodingTests.swift index 62d04ddc64..8c51a3d9f8 100644 --- a/TableProTests/Core/MCP/Outside/MCPClientSessionDecodingTests.swift +++ b/TableProTests/Core/MCP/Outside/MCPClientSessionDecodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPClientSession content") struct MCPClientSessionDecodingTests { @Test("Text parts are joined in order") func textPartsAreJoined() { diff --git a/TableProTests/Core/MCP/Outside/MCPRemoteToolScopeTests.swift b/TableProTests/Core/MCP/Outside/MCPRemoteToolScopeTests.swift index f4d96ae9f7..8df7c9c5c3 100644 --- a/TableProTests/Core/MCP/Outside/MCPRemoteToolScopeTests.swift +++ b/TableProTests/Core/MCP/Outside/MCPRemoteToolScopeTests.swift @@ -35,7 +35,6 @@ private struct StubChatTool: ChatTool { } } -@Suite("Outside MCP tool scope") @MainActor struct MCPRemoteToolScopeTests { private func makeStore() -> MCPServerStore { diff --git a/TableProTests/Core/MCP/Outside/MCPServerConfigurationTests.swift b/TableProTests/Core/MCP/Outside/MCPServerConfigurationTests.swift index 7f9c4acfc3..24b4fdf549 100644 --- a/TableProTests/Core/MCP/Outside/MCPServerConfigurationTests.swift +++ b/TableProTests/Core/MCP/Outside/MCPServerConfigurationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPServerConfiguration") struct MCPServerConfigurationTests { private func url(_ string: String) -> URL? { URL(string: string) } diff --git a/TableProTests/Core/MCP/Outside/MCPServerStoreTests.swift b/TableProTests/Core/MCP/Outside/MCPServerStoreTests.swift index d2e394497b..3b87404798 100644 --- a/TableProTests/Core/MCP/Outside/MCPServerStoreTests.swift +++ b/TableProTests/Core/MCP/Outside/MCPServerStoreTests.swift @@ -32,7 +32,6 @@ private final class LockedKeychain: KeychainStoring, @unchecked Sendable { func delete(forKey key: String) {} } -@Suite("MCPServerStore") @MainActor struct MCPServerStoreTests { private func makeDefaults() -> UserDefaults { diff --git a/TableProTests/Core/MCP/Prompts/MCPPromptCatalogTests.swift b/TableProTests/Core/MCP/Prompts/MCPPromptCatalogTests.swift index b5d65ddd7f..03be2384f4 100644 --- a/TableProTests/Core/MCP/Prompts/MCPPromptCatalogTests.swift +++ b/TableProTests/Core/MCP/Prompts/MCPPromptCatalogTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCPPromptCatalog") struct MCPPromptCatalogTests { @Test("The catalog advertises at least one prompt") func catalogIsNotEmpty() { diff --git a/TableProTests/Core/MCP/Prompts/PromptsHandlerTests.swift b/TableProTests/Core/MCP/Prompts/PromptsHandlerTests.swift index 6dd562646c..68795c39d7 100644 --- a/TableProTests/Core/MCP/Prompts/PromptsHandlerTests.swift +++ b/TableProTests/Core/MCP/Prompts/PromptsHandlerTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("PromptsGetHandler") struct PromptsHandlerTests { @Test("Handler declares prompts/get and the resources read scope") func metadata() { @@ -154,7 +153,6 @@ struct PromptsHandlerTests { } } -@Suite("MCPPromptSchemaReader connection resolution") struct MCPPromptSchemaReaderTests { private static let alpha = MCPConnectionDescriptor( id: UUID(uuidString: "AAAAAAAA-0000-4000-8000-000000000001") ?? UUID(), diff --git a/TableProTests/Core/MCP/Protocol/Handlers/DiscoverHandlerTests.swift b/TableProTests/Core/MCP/Protocol/Handlers/DiscoverHandlerTests.swift index 639f2c7c75..4b4c329d44 100644 --- a/TableProTests/Core/MCP/Protocol/Handlers/DiscoverHandlerTests.swift +++ b/TableProTests/Core/MCP/Protocol/Handlers/DiscoverHandlerTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("DiscoverHandler") struct DiscoverHandlerTests { @Test("The handler answers server/discover") func methodName() { diff --git a/TableProTests/Core/MCP/Protocol/Handlers/ToolsCallHandlerTests.swift b/TableProTests/Core/MCP/Protocol/Handlers/ToolsCallHandlerTests.swift index 2738c10115..90b6d65ac1 100644 --- a/TableProTests/Core/MCP/Protocol/Handlers/ToolsCallHandlerTests.swift +++ b/TableProTests/Core/MCP/Protocol/Handlers/ToolsCallHandlerTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ToolsCallHandler") struct ToolsCallHandlerTests { @Test("The handler answers tools/call and requires the tools read scope") func methodAndScopes() { diff --git a/TableProTests/Core/MCP/Protocol/Handlers/ToolsListHandlerTests.swift b/TableProTests/Core/MCP/Protocol/Handlers/ToolsListHandlerTests.swift index 6cda930de6..65b1af1ec7 100644 --- a/TableProTests/Core/MCP/Protocol/Handlers/ToolsListHandlerTests.swift +++ b/TableProTests/Core/MCP/Protocol/Handlers/ToolsListHandlerTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ToolsListHandler") struct ToolsListHandlerTests { @Test("The handler answers tools/list and requires the tools read scope") func methodAndScopes() { diff --git a/TableProTests/Core/MCP/Protocol/MCPArgumentDecoderTests.swift b/TableProTests/Core/MCP/Protocol/MCPArgumentDecoderTests.swift index b32fa409be..7bdbb588fc 100644 --- a/TableProTests/Core/MCP/Protocol/MCPArgumentDecoderTests.swift +++ b/TableProTests/Core/MCP/Protocol/MCPArgumentDecoderTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("MCPArgumentDecoder") struct MCPArgumentDecoderTests { private func expectInvalidParams(_ body: () throws -> some Any) { #expect(throws: MCPProtocolError.self) { _ = try body() } diff --git a/TableProTests/Core/MCP/Protocol/Tools/ConfirmDestructiveOperationToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ConfirmDestructiveOperationToolTests.swift index 67cabb55f4..c4695f6034 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ConfirmDestructiveOperationToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ConfirmDestructiveOperationToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ConfirmDestructiveOperationTool") struct ConfirmDestructiveOperationToolTests { private let tool = ConfirmDestructiveOperationTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ConnectToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ConnectToolTests.swift index 9d1854b4df..eca9fa08f5 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ConnectToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ConnectToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ConnectTool") struct ConnectToolTests { private let tool = ConnectTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/DescribeTableToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/DescribeTableToolTests.swift index 1df64391cc..025fb35e69 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/DescribeTableToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/DescribeTableToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("DescribeTableTool") struct DescribeTableToolTests { private let tool = DescribeTableTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/DisconnectToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/DisconnectToolTests.swift index a1aac47ce1..818ca75c8e 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/DisconnectToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/DisconnectToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("DisconnectTool") struct DisconnectToolTests { private let tool = DisconnectTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ExecuteQueryToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ExecuteQueryToolTests.swift index ee2f826526..bfc6329cba 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ExecuteQueryToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ExecuteQueryToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ExecuteQueryTool") struct ExecuteQueryToolTests { private let tool = ExecuteQueryTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ExportDataToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ExportDataToolTests.swift index 71b01ba93f..132cd7fbb5 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ExportDataToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ExportDataToolTests.swift @@ -17,7 +17,6 @@ private actor SettingsProviderProbe { } } -@Suite("ExportDataTool arguments") struct ExportDataToolArgumentTests { private let tool = ExportDataTool() @@ -186,7 +185,6 @@ struct ExportDataToolArgumentTests { } } -@Suite("ExportDataTool statement building") struct ExportDataToolStatementTests { @Test("A plain read exports on Redis, MongoDB and etcd without needing a SQL dialect") func plainReadsExportOnNonSqlEngines() async throws { diff --git a/TableProTests/Core/MCP/Protocol/Tools/FocusQueryTabToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/FocusQueryTabToolTests.swift index 0bf58f5297..08013eb78b 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/FocusQueryTabToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/FocusQueryTabToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("FocusQueryTabTool") struct FocusQueryTabToolTests { private let tool = FocusQueryTabTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/GetConnectionStatusToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/GetConnectionStatusToolTests.swift index 32771b5971..62dd81e253 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/GetConnectionStatusToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/GetConnectionStatusToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("GetConnectionStatusTool") struct GetConnectionStatusToolTests { private let tool = GetConnectionStatusTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/GetTableDdlToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/GetTableDdlToolTests.swift index ee6106f7a4..a715b07376 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/GetTableDdlToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/GetTableDdlToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("GetTableDdlTool") struct GetTableDdlToolTests { private let tool = GetTableDdlTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ListConnectionsToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ListConnectionsToolTests.swift index f4bbce4a55..0a5b78677c 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ListConnectionsToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ListConnectionsToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ListConnectionsTool") struct ListConnectionsToolTests { private let tool = ListConnectionsTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ListDatabasesToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ListDatabasesToolTests.swift index 494bafa0e4..1c28125ad2 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ListDatabasesToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ListDatabasesToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ListDatabasesTool") struct ListDatabasesToolTests { private let tool = ListDatabasesTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ListRecentTabsToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ListRecentTabsToolTests.swift index 012997d42d..d6f44a3813 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ListRecentTabsToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ListRecentTabsToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ListRecentTabsTool") struct ListRecentTabsToolTests { private let tool = ListRecentTabsTool() private let granted = UUID() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ListSchemasToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ListSchemasToolTests.swift index 9f845aed1a..e42171ef24 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ListSchemasToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ListSchemasToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ListSchemasTool") struct ListSchemasToolTests { private let tool = ListSchemasTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/ListTablesToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/ListTablesToolTests.swift index 2dcc98fb5d..3194af48e5 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/ListTablesToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/ListTablesToolTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ListTablesTool") struct ListTablesToolTests { private let tool = ListTablesTool() @@ -111,7 +110,6 @@ struct ListTablesToolTests { } } -@Suite("ListTablesTool row counts") struct ListTablesRowCountTests { private func table( name: String, diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPCatalogToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPCatalogToolTests.swift index 0cd1dc450f..5bb59a7df3 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPCatalogToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPCatalogToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Enumerated tool arguments are checked, never guessed") struct MCPEnumeratedArgumentTests { private func call( _ tool: any MCPToolImplementation, diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPDataToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPDataToolTests.swift index b2dab69888..05863251ce 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPDataToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPDataToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPFilterArguments") struct MCPFilterArgumentsTests { private func arguments(_ filters: [JsonValue]) -> JsonValue { .object(["filters": .array(filters)]) @@ -134,7 +133,6 @@ struct MCPFilterArgumentsTests { } } -@Suite("CountRowsTool") struct CountRowsToolTests { private let tool = CountRowsTool() @@ -196,7 +194,6 @@ struct CountRowsToolTests { } } -@Suite("InsertRowsTool") struct InsertRowsToolTests { private let tool = InsertRowsTool() @@ -278,7 +275,6 @@ struct InsertRowsToolTests { } } -@Suite("QuoteIdentifiersTool") struct QuoteIdentifiersToolTests { private let tool = QuoteIdentifiersTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPExportWriterTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPExportWriterTests.swift index b6a72f17ce..6cabe7e3cc 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPExportWriterTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPExportWriterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MCP CSV export") struct MCPCsvExportTests { @Test("CSV quotes a bare carriage return so a cell never splits a row") func csvQuotesCarriageReturn() { @@ -68,7 +67,6 @@ struct MCPCsvExportTests { } } -@Suite("MCP SQL export follows the connection dialect") struct MCPSqlExportDialectTests { private let postgres = MCPSqlExportDialect( identifierQuote: "\"", @@ -178,7 +176,6 @@ struct MCPSqlExportDialectTests { } } -@Suite("MCP JSON export") struct MCPJsonExportTests { @Test("Each row becomes an object keyed by column name") func rowsBecomeObjects() throws { @@ -203,7 +200,6 @@ struct MCPJsonExportTests { } } -@Suite("MCP export destination") struct MCPExportDestinationTests { private func downloadsRoot() throws -> URL { let root = try #require( diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPIndexEncodingTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPIndexEncodingTests.swift index 4c75e244fc..fd1541d0eb 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPIndexEncodingTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPIndexEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCP index encoding") struct MCPIndexEncodingTests { @Test("Expressions and INCLUDE columns are listed when an index has them") func expressionsAndIncludedColumnsAreEncoded() { diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPLimitResolverTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPLimitResolverTests.swift index df3897db72..bd3aff9c44 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPLimitResolverTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPLimitResolverTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPLimitResolver") struct MCPLimitResolverTests { private func settings( defaultRowLimit: Int = 500, diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPStatementConsentGuardTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPStatementConsentGuardTests.swift index de73e8483d..07e0de1320 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPStatementConsentGuardTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPStatementConsentGuardTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCP statement consent guard") struct MCPStatementConsentGuardTests { private static let gateSource: String = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPStatementGateTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPStatementGateTests.swift index 87b294e842..444f920bb3 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPStatementGateTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPStatementGateTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPStatementGate refuses before it runs anything") struct MCPStatementGateRefusalTests { private func refusal( sql: String, @@ -154,7 +153,6 @@ struct MCPStatementGateRefusalTests { } } -@Suite("MCPStatementGate consent policy") struct MCPStatementGateConsentPolicyTests { private func metadata( safeMode: SafeModeLevel, diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPTabIdentityTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPTabIdentityTests.swift index 1eedda2df1..46fff58a9a 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPTabIdentityTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPTabIdentityTests.swift @@ -8,7 +8,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCP tab and window identity") struct MCPTabIdentityTests { private let tabId = UUID() private let connectionId = UUID() diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPToolCancellationTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPToolCancellationTests.swift index 79a0acc986..294a3cc6e3 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPToolCancellationTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPToolCancellationTests.swift @@ -19,7 +19,6 @@ private actor CancellationWitness { } } -@Suite("Cancellation reaches the running statement") struct MCPToolCancellationTests { private let scope = DatabaseScope(connectionId: UUID(), database: "shop", schema: "public") diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPToolConsentTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPToolConsentTests.swift index 47422d0fde..bb025fe7af 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPToolConsentTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPToolConsentTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPToolConsent elicitation round trip") struct MCPToolConsentTests { private static let key = "approve_statement" private static let now = Date(timeIntervalSince1970: 1_700_000_000) diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPToolErrorSurfaceTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPToolErrorSurfaceTests.swift index 724763e504..bcd8a7c196 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPToolErrorSurfaceTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPToolErrorSurfaceTests.swift @@ -29,7 +29,6 @@ private struct TestOnlyFailure: Error { let detail: String } -@Suite("Tool errors reach the model as results, protocol errors stay errors") struct MCPToolErrorSurfaceTests { private func result(for error: Error) async throws -> MCPToolCallResult { try await ThrowingTool(error: error).call( @@ -117,7 +116,6 @@ struct MCPToolErrorSurfaceTests { } } -@Suite("tools/call error surface") struct ToolsCallErrorSurfaceTests { private func handle(_ params: JsonValue?) async throws -> MCPResult { try await ToolsCallHandler(services: MCPToolTestHarness.services()) @@ -195,7 +193,6 @@ struct ToolsCallErrorSurfaceTests { } } -@Suite("MCPErrorRedactor") struct MCPErrorRedactorTests { @Test("A host and port are stripped from a driver message") func hostsAndPortsAreStripped() { diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPToolRegistryGuardTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPToolRegistryGuardTests.swift index 46f1b45497..6b0561da20 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPToolRegistryGuardTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPToolRegistryGuardTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MCPToolRegistry contract") struct MCPToolRegistryGuardTests { private static let nameCharacters = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.") diff --git a/TableProTests/Core/MCP/Protocol/Tools/MCPWorkspaceToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/MCPWorkspaceToolTests.swift index 67f2d4a903..4f2e5f9a29 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/MCPWorkspaceToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/MCPWorkspaceToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace listings honour the connection grant") struct MCPWorkspaceToolTests { private let granted = UUID() private let withheld = UUID() diff --git a/TableProTests/Core/MCP/Protocol/Tools/OpenTableTabToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/OpenTableTabToolTests.swift index 5855801c14..e78595b08e 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/OpenTableTabToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/OpenTableTabToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("OpenTableTabTool") struct OpenTableTabToolTests { private let tool = OpenTableTabTool() @@ -78,7 +77,6 @@ struct OpenTableTabToolTests { } } -@Suite("OpenConnectionWindowTool") struct OpenConnectionWindowToolTests { private let tool = OpenConnectionWindowTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/RoutineAndTriggerToolSchemaTests.swift b/TableProTests/Core/MCP/Protocol/Tools/RoutineAndTriggerToolSchemaTests.swift index 74a1f82671..ea4546e2c8 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/RoutineAndTriggerToolSchemaTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/RoutineAndTriggerToolSchemaTests.swift @@ -11,7 +11,6 @@ import Testing /// schema never declares is a silent disagreement: the tool answers with keys the client was told /// would not be there. `list_routines` shipped exactly that, emitting `return_type` and `language` /// against a schema that declared neither. -@Suite("Routine and trigger tool schemas") struct RoutineAndTriggerToolSchemaTests { private func itemProperties(_ schema: JsonValue?, array: String) throws -> Set { let output = try #require(schema) diff --git a/TableProTests/Core/MCP/Protocol/Tools/SearchQueryHistoryToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/SearchQueryHistoryToolTests.swift index 3f37f67ea9..e1488c0d8b 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/SearchQueryHistoryToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/SearchQueryHistoryToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SearchQueryHistoryTool") struct SearchQueryHistoryToolTests { private let tool = SearchQueryHistoryTool() private let granted = UUID() diff --git a/TableProTests/Core/MCP/Protocol/Tools/SwitchDatabaseToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/SwitchDatabaseToolTests.swift index 7038efa731..7b05abf4da 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/SwitchDatabaseToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/SwitchDatabaseToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SwitchDatabaseTool") struct SwitchDatabaseToolTests { private let tool = SwitchDatabaseTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/SwitchSchemaToolTests.swift b/TableProTests/Core/MCP/Protocol/Tools/SwitchSchemaToolTests.swift index 29e0fdb017..832b70596c 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/SwitchSchemaToolTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/SwitchSchemaToolTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SwitchSchemaTool") struct SwitchSchemaToolTests { private let tool = SwitchSchemaTool() diff --git a/TableProTests/Core/MCP/Protocol/Tools/UserDefinedTypeToolSchemaTests.swift b/TableProTests/Core/MCP/Protocol/Tools/UserDefinedTypeToolSchemaTests.swift index 361dbe208e..8c3a1dca53 100644 --- a/TableProTests/Core/MCP/Protocol/Tools/UserDefinedTypeToolSchemaTests.swift +++ b/TableProTests/Core/MCP/Protocol/Tools/UserDefinedTypeToolSchemaTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("list_types tool schema") struct UserDefinedTypeToolSchemaTests { @Test("list_types declares every field the bridge emits") func outputSchemaIsComplete() throws { diff --git a/TableProTests/Core/MCP/RateLimit/MCPRateLimiterTests.swift b/TableProTests/Core/MCP/RateLimit/MCPRateLimiterTests.swift index aa26da299c..7a73c9aacb 100644 --- a/TableProTests/Core/MCP/RateLimit/MCPRateLimiterTests.swift +++ b/TableProTests/Core/MCP/RateLimit/MCPRateLimiterTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("MCP Rate Limiter") struct MCPRateLimiterTests { private let attacker = MCPRateLimitKey.authFailure(address: .remote("203.0.113.9")) diff --git a/TableProTests/Core/MCP/RateLimit/MCPRequestRateLimitTests.swift b/TableProTests/Core/MCP/RateLimit/MCPRequestRateLimitTests.swift index 7e5e414265..809e2d8b4a 100644 --- a/TableProTests/Core/MCP/RateLimit/MCPRequestRateLimitTests.swift +++ b/TableProTests/Core/MCP/RateLimit/MCPRequestRateLimitTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("MCP Request Rate Limits") struct MCPRequestRateLimitTests { @Test("Failures from one address share a bucket whatever token was guessed") func wrongGuessesShareTheAddressBucket() async { diff --git a/TableProTests/Core/MCP/Results/MCPCacheHintTests.swift b/TableProTests/Core/MCP/Results/MCPCacheHintTests.swift index d94ba92293..0666f214fa 100644 --- a/TableProTests/Core/MCP/Results/MCPCacheHintTests.swift +++ b/TableProTests/Core/MCP/Results/MCPCacheHintTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCPCacheHint") struct MCPCacheHintTests { private let serverInfo = MCPImplementation(name: "tablepro", version: "1.2.3") diff --git a/TableProTests/Core/MCP/Results/MCPResultTests.swift b/TableProTests/Core/MCP/Results/MCPResultTests.swift index e524ae58bc..692d809f6a 100644 --- a/TableProTests/Core/MCP/Results/MCPResultTests.swift +++ b/TableProTests/Core/MCP/Results/MCPResultTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCPResult") struct MCPResultTests { private let serverInfo = MCPImplementation(name: "tablepro", title: "TablePro", version: "1.2.3") diff --git a/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionRegistryTests.swift b/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionRegistryTests.swift index 95a49a20fa..2e7ec284c6 100644 --- a/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionRegistryTests.swift +++ b/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionRegistryTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCPSubscriptionFilter") struct MCPSubscriptionFilterTests { @Test("Params without a notifications object are invalid") func notificationsIsRequired() { @@ -129,7 +128,6 @@ struct MCPSubscriptionFilterTests { } } -@Suite("MCPSubscriptionRegistry") struct MCPSubscriptionRegistryTests { @Test("Opening a subscription answers with the subset the server honours") func openReturnsHonouredFilter() async { @@ -398,7 +396,6 @@ struct MCPSubscriptionRegistryTests { } } -@Suite("MCPSubscriptionNotification") struct MCPSubscriptionNotificationTests { @Test("Every notification method is namespaced under notifications/") func methodNames() { diff --git a/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionsListenTests.swift b/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionsListenTests.swift index a4e6b78d18..340f4138f8 100644 --- a/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionsListenTests.swift +++ b/TableProTests/Core/MCP/Subscriptions/MCPSubscriptionsListenTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SubscriptionsListenHandler") struct MCPSubscriptionsListenTests { @Test("Handler declares subscriptions/listen and is modern only") func metadata() { diff --git a/TableProTests/Core/MCP/Support/MCPBase64SentinelTests.swift b/TableProTests/Core/MCP/Support/MCPBase64SentinelTests.swift index 77b600cf7e..fe037c00f3 100644 --- a/TableProTests/Core/MCP/Support/MCPBase64SentinelTests.swift +++ b/TableProTests/Core/MCP/Support/MCPBase64SentinelTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCP Base64 Sentinel") struct MCPBase64SentinelTests { @Test("Spec encoding examples round-trip exactly") func specEncodingExamples() { diff --git a/TableProTests/Core/MCP/Transport/MCPCorsHeadersTests.swift b/TableProTests/Core/MCP/Transport/MCPCorsHeadersTests.swift index 63147bbefb..6d99b9455a 100644 --- a/TableProTests/Core/MCP/Transport/MCPCorsHeadersTests.swift +++ b/TableProTests/Core/MCP/Transport/MCPCorsHeadersTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCP CORS Headers") struct MCPCorsHeadersTests { private func value(_ headers: [(String, String)], _ name: String) -> String? { headers.first { $0.0.lowercased() == name.lowercased() }?.1 diff --git a/TableProTests/Core/MCP/Transport/MCPHttpHeaderValidatorTests.swift b/TableProTests/Core/MCP/Transport/MCPHttpHeaderValidatorTests.swift index febcff85a8..83459ef1df 100644 --- a/TableProTests/Core/MCP/Transport/MCPHttpHeaderValidatorTests.swift +++ b/TableProTests/Core/MCP/Transport/MCPHttpHeaderValidatorTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MCP HTTP Header Validator") struct MCPHttpHeaderValidatorTests { private func makeHead(_ pairs: [(String, String)]) -> HttpRequestHead { HttpRequestHead(method: .post, path: "/mcp", httpVersion: "HTTP/1.1", headers: HttpHeaders(pairs)) diff --git a/TableProTests/Core/MCP/Wire/HttpRequestStreamParserTests.swift b/TableProTests/Core/MCP/Wire/HttpRequestStreamParserTests.swift index 5c6f31ad0d..4e24ef7f98 100644 --- a/TableProTests/Core/MCP/Wire/HttpRequestStreamParserTests.swift +++ b/TableProTests/Core/MCP/Wire/HttpRequestStreamParserTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("HTTP Request Stream Parser") struct HttpRequestStreamParserTests { private func drain(_ parser: inout HttpRequestStreamParser) throws -> [HttpParsedRequest] { var requests: [HttpParsedRequest] = [] diff --git a/TableProTests/Core/Menu/CloseCommandTests.swift b/TableProTests/Core/Menu/CloseCommandTests.swift index 6978e31337..9fae461f7f 100644 --- a/TableProTests/Core/Menu/CloseCommandTests.swift +++ b/TableProTests/Core/Menu/CloseCommandTests.swift @@ -27,7 +27,6 @@ private func fileMenu() -> NSMenu { return menu.items.first { $0.title == String(localized: "File") }?.submenu ?? NSMenu() } -@Suite("Close command binding") @MainActor struct CloseCommandBindingTests { @Test("Command W is bound to the close command every window implements") @@ -87,7 +86,6 @@ struct CloseCommandBindingTests { } } -@Suite("Close command title resolution") @MainActor struct CloseCommandTitleResolverTests { @Test("The responder that takes the command names it") diff --git a/TableProTests/Core/Menu/FindMenuItemsTests.swift b/TableProTests/Core/Menu/FindMenuItemsTests.swift index f42f96367b..21af7a3456 100644 --- a/TableProTests/Core/Menu/FindMenuItemsTests.swift +++ b/TableProTests/Core/Menu/FindMenuItemsTests.swift @@ -11,7 +11,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Edit > Find") @MainActor struct FindMenuItemsTests { private func findSubmenu() throws -> NSMenu { diff --git a/TableProTests/Core/Menu/FocusCommandMenuTests.swift b/TableProTests/Core/Menu/FocusCommandMenuTests.swift index db7f2317b9..91a6a44c83 100644 --- a/TableProTests/Core/Menu/FocusCommandMenuTests.swift +++ b/TableProTests/Core/Menu/FocusCommandMenuTests.swift @@ -18,7 +18,6 @@ private func focusSubmenu() throws -> NSMenu { return try #require(view.items.first { $0.title == String(localized: "Focus") }?.submenu) } -@Suite("Focus commands") @MainActor struct FocusCommandMenuTests { /// The HIG asks that every function be reachable from the menu bar, and a focus command that diff --git a/TableProTests/Core/Menu/MainMenuBuilderTests.swift b/TableProTests/Core/Menu/MainMenuBuilderTests.swift index 7561e73374..16bebd2b03 100644 --- a/TableProTests/Core/Menu/MainMenuBuilderTests.swift +++ b/TableProTests/Core/Menu/MainMenuBuilderTests.swift @@ -27,7 +27,6 @@ private func flatten(_ menu: NSMenu) -> [NSMenuItem] { } } -@Suite("Main menu structure") @MainActor struct MainMenuStructureTests { @Test("What's New stays reachable from Help without an active connection") @@ -132,7 +131,6 @@ struct MainMenuStructureTests { } } -@Suite("Main menu shortcut coverage") @MainActor struct MainMenuShortcutCoverageTests { @Test("Every customizable action reaches exactly one menu item") @@ -318,7 +316,6 @@ struct MainMenuShortcutCoverageTests { /// Agent mode's sessions and the assistant's conversations had no menu-bar home at all: the rail's /// buttons and the trailing pane's header menu were the only routes, so none of the seven commands /// could be found by search, rebound, or reached with the rail collapsed or the pane closed. -@Suite("File > Session") @MainActor struct FileSessionMenuTests { private func sessionMenu() -> NSMenu? { @@ -397,7 +394,6 @@ struct FileSessionMenuTests { } } -@Suite("Main menu validation") @MainActor struct MainMenuValidationTests { private func enabled(_ selector: Selector, _ context: MenuValidationContext) -> Bool { @@ -916,7 +912,6 @@ struct MainMenuValidationTests { } } -@Suite("Database menu commands") @MainActor struct DatabaseMenuCommandTests { private func databaseMenu() -> NSMenu? { diff --git a/TableProTests/Core/Menu/MaintenanceMenuDelegateTests.swift b/TableProTests/Core/Menu/MaintenanceMenuDelegateTests.swift index ea2846c71f..004157f720 100644 --- a/TableProTests/Core/Menu/MaintenanceMenuDelegateTests.swift +++ b/TableProTests/Core/Menu/MaintenanceMenuDelegateTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Maintenance submenu population") @MainActor struct MaintenanceMenuDelegateTests { private func keyDownEvent() -> NSEvent? { @@ -56,7 +55,6 @@ struct MaintenanceMenuDelegateTests { } } -@Suite("New tab responder chain") @MainActor struct NewWindowForTabResponderTests { @Test("AppDelegate does not claim newWindowForTab, so AppKit disables it off editor windows") diff --git a/TableProTests/Core/Menu/SafeModeMenuDelegateTests.swift b/TableProTests/Core/Menu/SafeModeMenuDelegateTests.swift index ba1e107b4d..6fb9ba143a 100644 --- a/TableProTests/Core/Menu/SafeModeMenuDelegateTests.swift +++ b/TableProTests/Core/Menu/SafeModeMenuDelegateTests.swift @@ -12,7 +12,6 @@ import Testing /// It used to list every level whatever held the connection, with nothing saying why a weaker one /// changed nothing: Agent mode raised the floor to Alert silently, and a pick of Silent was stored /// while the level on screen stayed put. -@Suite("Safe Mode list") @MainActor struct SafeModeMenuDelegateTests { private static let agentFloor = SafeModeFloor(level: .alert, reason: .agentMode) diff --git a/TableProTests/Core/Menu/SchemaMenuModelTests.swift b/TableProTests/Core/Menu/SchemaMenuModelTests.swift index a9bb1ca18d..219cad2b5b 100644 --- a/TableProTests/Core/Menu/SchemaMenuModelTests.swift +++ b/TableProTests/Core/Menu/SchemaMenuModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Schema menu model") struct SchemaMenuModelTests { @Test("System schemas are separated from the ones a user works in") func splitsSystemSchemas() { diff --git a/TableProTests/Core/Menu/SessionMenuDelegateTests.swift b/TableProTests/Core/Menu/SessionMenuDelegateTests.swift index ae90e22399..ee43093780 100644 --- a/TableProTests/Core/Menu/SessionMenuDelegateTests.swift +++ b/TableProTests/Core/Menu/SessionMenuDelegateTests.swift @@ -9,7 +9,6 @@ import Testing /// The two lists under File > Session are filled when they open, so what they put in the menu is /// never seen by the suites that walk the built menu bar. These ask the delegates directly. -@Suite("File > Session lists") @MainActor struct SessionMenuDelegateTests { private func makeRegistry() -> AgentSessionRegistry { diff --git a/TableProTests/Core/Menu/WindowMenuTabCommandsTests.swift b/TableProTests/Core/Menu/WindowMenuTabCommandsTests.swift index 2ebb4de944..215099c133 100644 --- a/TableProTests/Core/Menu/WindowMenuTabCommandsTests.swift +++ b/TableProTests/Core/Menu/WindowMenuTabCommandsTests.swift @@ -20,7 +20,6 @@ private final class FiringTarget: NSObject { @objc func fire(_ sender: Any?) { fired += 1 } } -@Suite("Window menu tab commands") @MainActor struct WindowMenuTabCommandsTests { private func windowItems(_ keyboard: KeyboardSettings = KeyboardSettings()) throws -> [NSMenuItem] { @@ -130,7 +129,6 @@ struct WindowMenuTabCommandsTests { } } -@Suite("Recent tab switching menu validation") struct RecentTabMenuValidationTests { private let selectors = [ #selector(MainSplitViewController.switchToRecentTab(_:)), @@ -199,7 +197,6 @@ struct RecentTabMenuValidationTests { /// Show Previous and Next Tab and Select Tab 1 to 9 move a strip's selection. Validated on /// `isConnected` alone they stayed lit in Agent mode, where no strip is drawn, and with a tab count /// that left them nothing to do. -@Suite("Tab navigation menu validation") struct TabNavigationMenuValidationTests { private func context(tabs: Int, agent: Bool = false, number: Int? = nil) -> MenuValidationContext { var context = MenuValidationContext() diff --git a/TableProTests/Core/MongoDB/BsonDocumentFlattenerTests.swift b/TableProTests/Core/MongoDB/BsonDocumentFlattenerTests.swift index a01079a35e..7e089bda8a 100644 --- a/TableProTests/Core/MongoDB/BsonDocumentFlattenerTests.swift +++ b/TableProTests/Core/MongoDB/BsonDocumentFlattenerTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("BSON Document Flattener") struct BsonDocumentFlattenerTests { // MARK: - unionColumns(from:) diff --git a/TableProTests/Core/MongoDB/BsonFieldPathArrayTests.swift b/TableProTests/Core/MongoDB/BsonFieldPathArrayTests.swift index 8deeb7ee6a..6383692399 100644 --- a/TableProTests/Core/MongoDB/BsonFieldPathArrayTests.swift +++ b/TableProTests/Core/MongoDB/BsonFieldPathArrayTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("BSON Field Path Arrays") struct BsonFieldPathArrayTests { private func paths(_ documents: [[String: Any]], maxDepth: Int = 4) -> [PluginFieldPath] { BsonDocumentFlattener.fieldPaths(from: documents, representation: .unspecified, maxDepth: maxDepth) diff --git a/TableProTests/Core/MongoDB/BsonFieldPathTests.swift b/TableProTests/Core/MongoDB/BsonFieldPathTests.swift index 73ee6a636d..e621ba8557 100644 --- a/TableProTests/Core/MongoDB/BsonFieldPathTests.swift +++ b/TableProTests/Core/MongoDB/BsonFieldPathTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("BSON Field Paths") struct BsonFieldPathTests { private func paths(_ documents: [[String: Any]], maxDepth: Int = 4) -> [PluginFieldPath] { BsonDocumentFlattener.fieldPaths(from: documents, representation: .unspecified, maxDepth: maxDepth) diff --git a/TableProTests/Core/MongoDB/MongoDBExtendedJsonTests.swift b/TableProTests/Core/MongoDB/MongoDBExtendedJsonTests.swift index 42de56008d..0863a86aa6 100644 --- a/TableProTests/Core/MongoDB/MongoDBExtendedJsonTests.swift +++ b/TableProTests/Core/MongoDB/MongoDBExtendedJsonTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("MongoDB Extended JSON Unwrapping") struct MongoDBExtendedJsonTests { // MARK: - $oid diff --git a/TableProTests/Core/MongoDB/MongoDBFindLimitPolicyTests.swift b/TableProTests/Core/MongoDB/MongoDBFindLimitPolicyTests.swift index 0c4944a61e..d272e2d4fd 100644 --- a/TableProTests/Core/MongoDB/MongoDBFindLimitPolicyTests.swift +++ b/TableProTests/Core/MongoDB/MongoDBFindLimitPolicyTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Find Limit Policy") struct MongoDBFindLimitPolicyTests { @Suite("fetchLimit") struct FetchLimitTests { diff --git a/TableProTests/Core/MongoDB/MongoDBSrvHostTests.swift b/TableProTests/Core/MongoDB/MongoDBSrvHostTests.swift index 51eccaa02b..b48eb9e10e 100644 --- a/TableProTests/Core/MongoDB/MongoDBSrvHostTests.swift +++ b/TableProTests/Core/MongoDB/MongoDBSrvHostTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MongoDBConnection.stripPort(fromSrvHost:)") struct MongoDBSrvHostTests { @Test("strips trailing :port from SRV host") func stripsTrailingPort() { diff --git a/TableProTests/Core/MongoDB/MongoDBTimeoutPolicyTests.swift b/TableProTests/Core/MongoDB/MongoDBTimeoutPolicyTests.swift index 85fce77886..65580a319e 100644 --- a/TableProTests/Core/MongoDB/MongoDBTimeoutPolicyTests.swift +++ b/TableProTests/Core/MongoDB/MongoDBTimeoutPolicyTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("MongoDB Timeout Policy") struct MongoDBTimeoutPolicyTests { @Suite("resolveMaxTimeMS") struct ResolveMaxTimeMSTests { diff --git a/TableProTests/Core/MongoDB/MongoDBUuidCodecTests.swift b/TableProTests/Core/MongoDB/MongoDBUuidCodecTests.swift index 6ab2d88fe2..7e82047792 100644 --- a/TableProTests/Core/MongoDB/MongoDBUuidCodecTests.swift +++ b/TableProTests/Core/MongoDB/MongoDBUuidCodecTests.swift @@ -29,7 +29,6 @@ enum BsonUuidFixture { } } -@Suite("MongoDB UUID Codec") struct MongoDBUuidCodecTests { /// Vectors from the MongoDB BSON Binary UUID specification test plan. @Suite("Specification vectors") diff --git a/TableProTests/Core/MongoDB/MongoScriptCommandTests.swift b/TableProTests/Core/MongoDB/MongoScriptCommandTests.swift index 5c64627028..6fcd19fb9d 100644 --- a/TableProTests/Core/MongoDB/MongoScriptCommandTests.swift +++ b/TableProTests/Core/MongoDB/MongoScriptCommandTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("MongoScriptJson") struct MongoScriptJsonTests { @Test("Members come back in the order the document carries them, as text") func membersKeepOrder() { @@ -60,7 +59,6 @@ struct MongoScriptJsonTests { } } -@Suite("MongoScriptCursorOptions") struct MongoScriptCursorOptionsTests { @Test("A sort written in shell syntax reaches the find options instead of being dropped") func sortSurvives() throws { @@ -165,7 +163,6 @@ struct MongoScriptCursorOptionsTests { } } -@Suite("MongoScriptCommandBuilder") struct MongoScriptCommandBuilderTests { @Test("updateMany becomes an update command with multi set") func updateMany() { @@ -287,7 +284,6 @@ struct MongoScriptCommandBuilderTests { } } -@Suite("MongoScriptObjectId") struct MongoScriptObjectIdTests { @Test("A generated id is 24 lowercase hex characters") func shape() { @@ -316,7 +312,6 @@ struct MongoScriptObjectIdTests { } } -@Suite("MongoShellCommandLine") struct MongoShellCommandLineTests { @Test("use becomes a call") func useBecomesCall() { diff --git a/TableProTests/Core/MongoDB/MongoScriptPreludeTests.swift b/TableProTests/Core/MongoDB/MongoScriptPreludeTests.swift index 32764f9680..38199b552c 100644 --- a/TableProTests/Core/MongoDB/MongoScriptPreludeTests.swift +++ b/TableProTests/Core/MongoDB/MongoScriptPreludeTests.swift @@ -12,7 +12,6 @@ import Testing /// This is where the reported bug is pinned: `db.dt_DispatchRule.find()` worked and /// `db.dt_DispatchRule.find({status: 1})` did not, because the condition was a JavaScript object /// literal and the old path handed its text straight to libbson's strict JSON parser. -@Suite("MongoScriptPrelude") struct MongoScriptPreludeTests { /// A stand-in for the driver: records every request and answers from a script of replies. final class RecordingHost { diff --git a/TableProTests/Core/MongoDB/MongoShellParserChainedMethodTests.swift b/TableProTests/Core/MongoDB/MongoShellParserChainedMethodTests.swift index 295edb9541..37cc6bbdfc 100644 --- a/TableProTests/Core/MongoDB/MongoShellParserChainedMethodTests.swift +++ b/TableProTests/Core/MongoDB/MongoShellParserChainedMethodTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("MongoDB Shell Parser Chained Methods") struct MongoShellParserChainedMethodTests { @Test("aggregate keeps a chained limit as a pipeline stage") func testAggregateChainedLimitBecomesStage() throws { diff --git a/TableProTests/Core/MongoDB/MongoShellParserTests.swift b/TableProTests/Core/MongoDB/MongoShellParserTests.swift index 1448ec4fa5..8284639995 100644 --- a/TableProTests/Core/MongoDB/MongoShellParserTests.swift +++ b/TableProTests/Core/MongoDB/MongoShellParserTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("MongoDB Shell Parser") struct MongoShellParserTests { // MARK: - Find Operations diff --git a/TableProTests/Core/MongoDB/MongoShellValueTranslatorTests.swift b/TableProTests/Core/MongoDB/MongoShellValueTranslatorTests.swift index e6808a7d99..dc3e4abfb8 100644 --- a/TableProTests/Core/MongoDB/MongoShellValueTranslatorTests.swift +++ b/TableProTests/Core/MongoDB/MongoShellValueTranslatorTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Shell Value Translator") struct MongoShellValueTranslatorTests { private static let oid = "507f1f77bcf86cd799439011" private static let uuid = "8cd003eb-4a25-4324-9332-88fce2da0d1a" diff --git a/TableProTests/Core/ObjectCopy/ObjectCopyTransactionTests.swift b/TableProTests/Core/ObjectCopy/ObjectCopyTransactionTests.swift index edd97ed5d2..ee3cff4293 100644 --- a/TableProTests/Core/ObjectCopy/ObjectCopyTransactionTests.swift +++ b/TableProTests/Core/ObjectCopy/ObjectCopyTransactionTests.swift @@ -80,7 +80,6 @@ private final class RecordingCopyDriver: PluginDatabaseDriver, @unchecked Sendab } } -@Suite("Object copy transactions") @MainActor struct ObjectCopyTransactionTests { private func endpoint(_ database: String) -> DatabaseEndpoint { diff --git a/TableProTests/Core/Operations/AppSettingsCategoryParityTests.swift b/TableProTests/Core/Operations/AppSettingsCategoryParityTests.swift index 32ea661b4a..b3b7145f60 100644 --- a/TableProTests/Core/Operations/AppSettingsCategoryParityTests.swift +++ b/TableProTests/Core/Operations/AppSettingsCategoryParityTests.swift @@ -13,7 +13,6 @@ import Testing /// seed list that runs when sync is switched on, and the encode and decode switches. A category /// in the first and missing from the rest is marked dirty, never encodes, never clears, and never /// reaches the user's other Mac, with nothing reporting a problem. -@Suite("AppSettingsCategory parity") struct AppSettingsCategoryParityTests { private static let managerSource = sourceFile("TablePro/Core/Storage/AppSettingsManager.swift") private static let syncSource = sourceFile("TablePro/Core/Sync/Extensions/SyncCoordinator+Settings.swift") diff --git a/TableProTests/Core/Operations/OperationCompletionPolicyTests.swift b/TableProTests/Core/Operations/OperationCompletionPolicyTests.swift index 15d4f9debe..a26ba5238d 100644 --- a/TableProTests/Core/Operations/OperationCompletionPolicyTests.swift +++ b/TableProTests/Core/Operations/OperationCompletionPolicyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("OperationCompletionPolicy") struct OperationCompletionPolicyTests { private let connectionId = UUID() private let tabId = UUID() diff --git a/TableProTests/Core/Operations/OperationCompletionReporterTests.swift b/TableProTests/Core/Operations/OperationCompletionReporterTests.swift index 6db3000796..974125b724 100644 --- a/TableProTests/Core/Operations/OperationCompletionReporterTests.swift +++ b/TableProTests/Core/Operations/OperationCompletionReporterTests.swift @@ -34,7 +34,6 @@ private final class FakeNotificationPresenter: UserNotificationPresenting { /// The real notification centre has no authorization on CI and drops everything silently, so a /// test written against it passes whether or not the code works. -@Suite("OperationCompletionReporter") @MainActor struct OperationCompletionReporterTests { private func makeReporter( diff --git a/TableProTests/Core/Operations/OperationDurationFormatterTests.swift b/TableProTests/Core/Operations/OperationDurationFormatterTests.swift index a6d657fd18..7b465ae1eb 100644 --- a/TableProTests/Core/Operations/OperationDurationFormatterTests.swift +++ b/TableProTests/Core/Operations/OperationDurationFormatterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("OperationDurationFormatter") struct OperationDurationFormatterTests { @Test("Under a minute reads in seconds") func secondsOnly() { diff --git a/TableProTests/Core/Operations/ResultVisibilityTests.swift b/TableProTests/Core/Operations/ResultVisibilityTests.swift index a38dc837cf..2f091e5266 100644 --- a/TableProTests/Core/Operations/ResultVisibilityTests.swift +++ b/TableProTests/Core/Operations/ResultVisibilityTests.swift @@ -8,7 +8,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Result visibility") struct ResultVisibilityTests { @Test("A result counts as on screen only when all three axes agree") func allThreeAxesMustAgree() { diff --git a/TableProTests/Core/Operations/TabExecutionEndReasonTests.swift b/TableProTests/Core/Operations/TabExecutionEndReasonTests.swift index 0ae4bed1fe..f741c45150 100644 --- a/TableProTests/Core/Operations/TabExecutionEndReasonTests.swift +++ b/TableProTests/Core/Operations/TabExecutionEndReasonTests.swift @@ -10,7 +10,6 @@ import Testing /// The reason is a required parameter rather than a defaulted one on purpose: a new way to end an /// execution is then a compile error at the new call site instead of a silent gap. The list of /// cancel sites this replaced was already incomplete when it was written. -@Suite("Execution end reasons") struct TabExecutionEndReasonTests { @Test("Invalidating a claimed tab reports what was ended and why") func invalidateReportsTheEndedExecution() { diff --git a/TableProTests/Core/Plugins/AuthFieldOrderTests.swift b/TableProTests/Core/Plugins/AuthFieldOrderTests.swift index 34d133a06d..0d7a56d045 100644 --- a/TableProTests/Core/Plugins/AuthFieldOrderTests.swift +++ b/TableProTests/Core/Plugins/AuthFieldOrderTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Auth field ordering") struct AuthFieldOrderTests { private func selector(_ id: String, hidesPassword: Bool = false) -> ConnectionField { ConnectionField( diff --git a/TableProTests/Core/Plugins/ClickHouseDialectParityTests.swift b/TableProTests/Core/Plugins/ClickHouseDialectParityTests.swift index dbc39c21db..b45fc2d23b 100644 --- a/TableProTests/Core/Plugins/ClickHouseDialectParityTests.swift +++ b/TableProTests/Core/Plugins/ClickHouseDialectParityTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouse dialect parity") struct ClickHouseDialectParityTests { /// Measured on ClickHouse 26.9.1.52 with `SELECT name, case_insensitive FROM system.functions`. /// Only the `case_insensitive = 1` rows tolerate any other spelling, and the plugin declares diff --git a/TableProTests/Core/Plugins/ConnectionFieldIntegerEntryTests.swift b/TableProTests/Core/Plugins/ConnectionFieldIntegerEntryTests.swift index d1e4fab0b8..9933790081 100644 --- a/TableProTests/Core/Plugins/ConnectionFieldIntegerEntryTests.swift +++ b/TableProTests/Core/Plugins/ConnectionFieldIntegerEntryTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Connection field integer entry") struct ConnectionFieldIntegerEntryTests { private let redisIndexes = ConnectionField.IntRange(0...2_147_483_646) private let signed = ConnectionField.IntRange(-10...10) diff --git a/TableProTests/Core/Plugins/ConnectionFieldTests.swift b/TableProTests/Core/Plugins/ConnectionFieldTests.swift index d89864145b..7f47d63c79 100644 --- a/TableProTests/Core/Plugins/ConnectionFieldTests.swift +++ b/TableProTests/Core/Plugins/ConnectionFieldTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ConnectionField") struct ConnectionFieldTests { @Test("Default values: placeholder, isRequired, defaultValue, fieldType") func defaultValues() { diff --git a/TableProTests/Core/Plugins/ContainerEntityNameTests.swift b/TableProTests/Core/Plugins/ContainerEntityNameTests.swift index f472495528..9cadbb315b 100644 --- a/TableProTests/Core/Plugins/ContainerEntityNameTests.swift +++ b/TableProTests/Core/Plugins/ContainerEntityNameTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Container entity name and switch target") struct ContainerEntityNameTests { private func snapshot(forRegisteredTypeId typeId: String) -> PluginMetadataSnapshot? { PluginMetadataRegistry.shared.snapshot(forRegisteredTypeId: typeId) diff --git a/TableProTests/Core/Plugins/ContainerSwitchPlannerTests.swift b/TableProTests/Core/Plugins/ContainerSwitchPlannerTests.swift index dda2df04bd..0f353ea105 100644 --- a/TableProTests/Core/Plugins/ContainerSwitchPlannerTests.swift +++ b/TableProTests/Core/Plugins/ContainerSwitchPlannerTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Container switch planner") struct ContainerSwitchPlannerTests { // MARK: - Engines with both dimensions diff --git a/TableProTests/Core/Plugins/DatabaseTreeCapabilityTests.swift b/TableProTests/Core/Plugins/DatabaseTreeCapabilityTests.swift index 883450d8ef..0378dd6de1 100644 --- a/TableProTests/Core/Plugins/DatabaseTreeCapabilityTests.swift +++ b/TableProTests/Core/Plugins/DatabaseTreeCapabilityTests.swift @@ -11,7 +11,6 @@ import Testing /// `supportsDatabaseTree` decides whether the sidebar can show a database level at all. /// Nothing pinned it before, so relaxing its connection-mode guard was unobservable. @MainActor -@Suite("Database tree capability") struct DatabaseTreeCapabilityTests { private func snapshot(forRegisteredTypeId typeId: String) -> PluginMetadataSnapshot? { PluginMetadataRegistry.shared.snapshot(forRegisteredTypeId: typeId) diff --git a/TableProTests/Core/Plugins/DocumentTypeDeclarationTests.swift b/TableProTests/Core/Plugins/DocumentTypeDeclarationTests.swift index 060c5f7261..44d2c5121a 100644 --- a/TableProTests/Core/Plugins/DocumentTypeDeclarationTests.swift +++ b/TableProTests/Core/Plugins/DocumentTypeDeclarationTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing @MainActor -@Suite("Bundle document type declarations") struct DocumentTypeDeclarationTests { private func infoPlist() throws -> [String: Any] { let plistURL = Bundle(for: AppDelegate.self) diff --git a/TableProTests/Core/Plugins/DriverPluginMetadataTests.swift b/TableProTests/Core/Plugins/DriverPluginMetadataTests.swift index 609c52a0eb..22eb03d54f 100644 --- a/TableProTests/Core/Plugins/DriverPluginMetadataTests.swift +++ b/TableProTests/Core/Plugins/DriverPluginMetadataTests.swift @@ -67,7 +67,6 @@ private final class MockCustomPlugin: NSObject, TableProPlugin, DriverPlugin { // MARK: - ConnectionMode Tests -@Suite("ConnectionMode Enum") struct ConnectionModeTests { @Test("Raw values match expected strings") func rawValues() { @@ -87,7 +86,6 @@ struct ConnectionModeTests { // MARK: - EditorLanguage Tests -@Suite("EditorLanguage Enum") struct EditorLanguageTests { @Test("Equatable for known cases") func equatable() { @@ -118,7 +116,6 @@ struct EditorLanguageTests { // MARK: - GroupingStrategy Tests -@Suite("GroupingStrategy Enum") struct GroupingStrategyTests { @Test("Raw values match expected strings") func rawValues() { @@ -140,7 +137,6 @@ struct GroupingStrategyTests { // MARK: - DriverPlugin Protocol Defaults -@Suite("DriverPlugin Protocol Defaults") struct DriverPluginDefaultsTests { @Test("Default requiresAuthentication is true") func requiresAuthentication() { @@ -247,7 +243,6 @@ struct DriverPluginDefaultsTests { // MARK: - Custom Override Verification -@Suite("DriverPlugin Custom Overrides") struct DriverPluginCustomOverridesTests { @Test("Custom plugin overrides all defaults correctly") func customOverrides() { @@ -288,7 +283,6 @@ struct DriverPluginCustomOverridesTests { // because .tableplugin bundles are loaded at runtime by the main app, not the test runner. // The protocol defaults and override mechanism are fully covered by the mock-based tests above. -@Suite("Registry defaults auto-limit styles") struct RegistryAutoLimitStyleTests { private var defaults: [String: PluginMetadataSnapshot] { Dictionary( diff --git a/TableProTests/Core/Plugins/ExplainQueryPluginTests.swift b/TableProTests/Core/Plugins/ExplainQueryPluginTests.swift index 6c1293309e..812410da08 100644 --- a/TableProTests/Core/Plugins/ExplainQueryPluginTests.swift +++ b/TableProTests/Core/Plugins/ExplainQueryPluginTests.swift @@ -48,7 +48,6 @@ private final class StubExplainDriver: PluginDatabaseDriver, @unchecked Sendable } } -@Suite("buildExplainQuery plugin protocol") struct ExplainQueryPluginTests { @Test("Default implementation returns nil") func defaultReturnsNil() { diff --git a/TableProTests/Core/Plugins/ExplainVariantFormatTests.swift b/TableProTests/Core/Plugins/ExplainVariantFormatTests.swift index 2afcd10bdb..2cbe45a1bc 100644 --- a/TableProTests/Core/Plugins/ExplainVariantFormatTests.swift +++ b/TableProTests/Core/Plugins/ExplainVariantFormatTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Explain Variant Format") struct ExplainVariantFormatTests { @Test("The legacy initializer still compiles and defaults to plain text") func legacyInitializerDefaultsToPlainText() { diff --git a/TableProTests/Core/Plugins/ExportDataSourceAdapterImplicitSchemaTests.swift b/TableProTests/Core/Plugins/ExportDataSourceAdapterImplicitSchemaTests.swift index 18739d12cc..5e59db4296 100644 --- a/TableProTests/Core/Plugins/ExportDataSourceAdapterImplicitSchemaTests.swift +++ b/TableProTests/Core/Plugins/ExportDataSourceAdapterImplicitSchemaTests.swift @@ -47,7 +47,6 @@ private final class SchemaLessStubDriver: PluginDatabaseDriver, @unchecked Senda } } -@Suite("Export data source and the implicit schema") struct ExportDataSourceAdapterImplicitSchemaTests { private func adapter(for type: DatabaseType) -> ExportDataSourceAdapter { let driver = PluginDriverAdapter( diff --git a/TableProTests/Core/Plugins/ExportDataSourceAdapterScriptTextTests.swift b/TableProTests/Core/Plugins/ExportDataSourceAdapterScriptTextTests.swift index cbec041ea0..779f093277 100644 --- a/TableProTests/Core/Plugins/ExportDataSourceAdapterScriptTextTests.swift +++ b/TableProTests/Core/Plugins/ExportDataSourceAdapterScriptTextTests.swift @@ -27,7 +27,6 @@ private final class ScriptTextStubDriver: PluginDatabaseDriver, @unchecked Senda } } -@Suite("Export data source script text") struct ExportDataSourceAdapterScriptTextTests { private func adapter(for type: DatabaseType) -> ExportDataSourceAdapter { let driver = PluginDriverAdapter( diff --git a/TableProTests/Core/Plugins/HealthMonitorOptOutParityTests.swift b/TableProTests/Core/Plugins/HealthMonitorOptOutParityTests.swift index dd6e630e4d..1e2c0a5139 100644 --- a/TableProTests/Core/Plugins/HealthMonitorOptOutParityTests.swift +++ b/TableProTests/Core/Plugins/HealthMonitorOptOutParityTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Health monitor opt-out parity") struct HealthMonitorOptOutParityTests { /// Reads the curated table, not the live registry. Other suites register synthetic engines /// into the same shared registry, several with the monitor off, and none of them has a plugin diff --git a/TableProTests/Core/Plugins/ImportDataSinkAdapterMappingTests.swift b/TableProTests/Core/Plugins/ImportDataSinkAdapterMappingTests.swift index c3aa01e1d5..2bf3fb7b61 100644 --- a/TableProTests/Core/Plugins/ImportDataSinkAdapterMappingTests.swift +++ b/TableProTests/Core/Plugins/ImportDataSinkAdapterMappingTests.swift @@ -12,7 +12,6 @@ import Testing /// silence and still counted as inserted, so "Import completed" reported more rows than reached the /// database. Refusing it makes the count honest: Skip and Continue records the row against its /// line, and the stop modes halt on a mapping that matches nothing. -@Suite("Import sink column mapping") @MainActor struct ImportDataSinkAdapterMappingTests { private func adapter(mapping: [String: String]) -> ImportDataSinkAdapter { diff --git a/TableProTests/Core/Plugins/ImportTypeMapperTests.swift b/TableProTests/Core/Plugins/ImportTypeMapperTests.swift index 72c028dbd5..19a0cff954 100644 --- a/TableProTests/Core/Plugins/ImportTypeMapperTests.swift +++ b/TableProTests/Core/Plugins/ImportTypeMapperTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Import Type Mapper") struct ImportTypeMapperTests { @Test("PostgreSQL maps inferred types to native SQL types") func testPostgres() { diff --git a/TableProTests/Core/Plugins/MySQLProtocolVariantParityTests.swift b/TableProTests/Core/Plugins/MySQLProtocolVariantParityTests.swift index fd596d0a47..7ff255a4f5 100644 --- a/TableProTests/Core/Plugins/MySQLProtocolVariantParityTests.swift +++ b/TableProTests/Core/Plugins/MySQLProtocolVariantParityTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL-protocol variants agree across the family lists") @MainActor struct MySQLProtocolVariantParityTests { nonisolated private static let variants: [DatabaseType] = [.mariadb, .tidb, .databend, .oceanbase] diff --git a/TableProTests/Core/Plugins/PasswordHidingTests.swift b/TableProTests/Core/Plugins/PasswordHidingTests.swift index e5d3044a85..5e1d5c3eab 100644 --- a/TableProTests/Core/Plugins/PasswordHidingTests.swift +++ b/TableProTests/Core/Plugins/PasswordHidingTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Password hiding from connection fields") struct PasswordHidingTests { private func dropdown(default defaultValue: String, _ values: [String]) -> ConnectionField { ConnectionField( @@ -117,7 +116,6 @@ struct PasswordHidingTests { } } -@Suite("Username hiding from connection fields") struct UsernameHidingTests { private func mssqlAuthFields() -> [ConnectionField] { [ @@ -172,7 +170,6 @@ struct UsernameHidingTests { } } -@Suite("Password hiding resolved from plugin metadata") @MainActor struct PluginManagerPasswordHidingTests { private func connection(type: DatabaseType, fields: [String: String]) -> DatabaseConnection { diff --git a/TableProTests/Core/Plugins/PingNeverReconnectsTests.swift b/TableProTests/Core/Plugins/PingNeverReconnectsTests.swift index 5d8d313b76..1fdfa8fe7b 100644 --- a/TableProTests/Core/Plugins/PingNeverReconnectsTests.swift +++ b/TableProTests/Core/Plugins/PingNeverReconnectsTests.swift @@ -15,7 +15,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Ping never reconnects") struct PingNeverReconnectsTests { /// Snowflake is the one deliberate exception. Its probe goes through `withReauthentication`, /// and an expired token is ordinary rather than a fault, so failing the ping would rebuild the diff --git a/TableProTests/Core/Plugins/PluginBundleLoaderTests.swift b/TableProTests/Core/Plugins/PluginBundleLoaderTests.swift index dea7a3a988..833fd7b6b2 100644 --- a/TableProTests/Core/Plugins/PluginBundleLoaderTests.swift +++ b/TableProTests/Core/Plugins/PluginBundleLoaderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("PluginBundleLoader.describeLoadFailure") struct PluginBundleLoaderDescribeLoadFailureTests { private func makeError(_ code: Int, debug: String? = nil, failureReason: String? = nil) -> NSError { var userInfo: [String: Any] = [:] diff --git a/TableProTests/Core/Plugins/PluginCreateTableStatementsTests.swift b/TableProTests/Core/Plugins/PluginCreateTableStatementsTests.swift index 1d7633288d..337143a3bd 100644 --- a/TableProTests/Core/Plugins/PluginCreateTableStatementsTests.swift +++ b/TableProTests/Core/Plugins/PluginCreateTableStatementsTests.swift @@ -37,7 +37,6 @@ private final class SingleStringDDLDriver: PluginDatabaseDriver, @unchecked Send } } -@Suite("Create table statements") struct PluginCreateTableStatementsTests { private let definition = PluginCreateTableDefinition( tableName: "t", diff --git a/TableProTests/Core/Plugins/PluginDeveloperTrustStoreTests.swift b/TableProTests/Core/Plugins/PluginDeveloperTrustStoreTests.swift index faa09a3433..a835d7834d 100644 --- a/TableProTests/Core/Plugins/PluginDeveloperTrustStoreTests.swift +++ b/TableProTests/Core/Plugins/PluginDeveloperTrustStoreTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("PluginDeveloperTrustStore") struct PluginDeveloperTrustStoreTests { private func makeStore() -> PluginDeveloperTrustStore { let suiteName = "com.TablePro.tests.pluginTrust.\(UUID().uuidString)" @@ -80,7 +79,6 @@ struct PluginDeveloperTrustStoreTests { } } -@Suite("PluginSignatureTrust") struct PluginSignatureTrustTests { @Test("a first-party bundle needs no consent, a third-party one does") func consentRequirement() { diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterConcurrencyTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterConcurrencyTests.swift index 11a03726c7..fa43172611 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterConcurrencyTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterConcurrencyTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginDriverAdapter shares one instance per connection across tabs and windows") struct PluginDriverAdapterConcurrencyTests { private static let columnTypeNames = [ "VARCHAR(255)", "INT", "BIGINT", "DECIMAL(10,2)", "DATE", "TIMESTAMP", diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterCreateTableFormTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterCreateTableFormTests.swift index f4bf62d252..308283c767 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterCreateTableFormTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterCreateTableFormTests.swift @@ -64,7 +64,6 @@ private final class FormDriver: BaseFormDriver, PluginDatabaseDriver, @unchecked } } -@Suite("Create Table form bridge") struct PluginDriverAdapterCreateTableFormTests { private func makeAdapter(driver: any PluginDatabaseDriver) -> PluginDriverAdapter { PluginDriverAdapter(connection: DatabaseConnection(name: "Test", type: .redis), pluginDriver: driver) diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterParameterTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterParameterTests.swift index 1d75034cb2..86d0759b60 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterParameterTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterParameterTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Plugin Driver Adapter Parameters") struct PluginDriverAdapterParameterTests { @Test("A non-finite number binds SQL null, not the text NULL") func nonFiniteBindsNull() { diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterPartitionDefaultTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterPartitionDefaultTests.swift index df09677345..907a29ffb5 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterPartitionDefaultTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterPartitionDefaultTests.swift @@ -77,7 +77,6 @@ private final class LegacyPartitionDriver: PluginDatabaseDriver, @unchecked Send } } -@Suite("Partition support stays optional for plugins") struct PluginDriverAdapterPartitionDefaultTests { @Test("A driver that implements neither partition method resolves through the protocol default") func unimplementedFetchPartitionsReturnsEmpty() async throws { diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterPingTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterPingTests.swift index f30033b5b4..9d49ebdbd4 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterPingTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterPingTests.swift @@ -50,7 +50,6 @@ private final class PingOverrideDriver: BasePingDriver, PluginDatabaseDriver, @u } } -@Suite("PluginDriverAdapter ping") struct PluginDriverAdapterPingTests { private func makeAdapter(driver: any PluginDatabaseDriver) -> PluginDriverAdapter { let connection = DatabaseConnection(name: "Test", type: .redis) diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterQueryCompletionProfileTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterQueryCompletionProfileTests.swift index 8b1f8161ae..9d1383483c 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterQueryCompletionProfileTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterQueryCompletionProfileTests.swift @@ -47,7 +47,6 @@ private final class OverrideQueryCompletionProfileDriver: QueryCompletionProfile } } -@Suite("PluginDriverAdapter query completion profile") struct PluginDriverAdapterQueryCompletionProfileTests { private func connection() -> DatabaseConnection { DatabaseConnection( diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterSessionTransactionTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterSessionTransactionTests.swift index e0d55585d3..c8c9032ce1 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterSessionTransactionTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterSessionTransactionTests.swift @@ -51,7 +51,6 @@ private final class ReportingSessionDriver: BaseSessionDriver, PluginDatabaseDri func sessionTransactionState() async -> PluginSessionTransactionState { state } } -@Suite("PluginDriverAdapter session transaction state") struct PluginDriverAdapterSessionTransactionTests { private func makeAdapter(driver: any PluginDatabaseDriver) -> PluginDriverAdapter { PluginDriverAdapter( diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterStructureMappingTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterStructureMappingTests.swift index fd65499ac3..2a9b9b6e9e 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterStructureMappingTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterStructureMappingTests.swift @@ -60,7 +60,6 @@ private final class StubStructureDriver: PluginDatabaseDriver, @unchecked Sendab } } -@Suite("PluginDriverAdapter structure mapping") struct PluginDriverAdapterStructureMappingTests { private func makeAdapter() -> PluginDriverAdapter { PluginDriverAdapter( diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterSystemDatabaseTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterSystemDatabaseTests.swift index 5af2756601..fe00511eaf 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterSystemDatabaseTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterSystemDatabaseTests.swift @@ -49,7 +49,6 @@ private final class StubDatabaseMetadataDriver: PluginDatabaseDriver, @unchecked /// SQL Server and ClickHouse never set `isSystemDatabase`, so the switcher's metadata pass listed /// `master`, `model`, `msdb` and `tempdb` as ordinary databases once it landed, while the sidebar, /// classifying by the connection type's own list, kept them apart. -@Suite("PluginDriverAdapter system databases") struct PluginDriverAdapterSystemDatabaseTests { private func makeAdapter(type: DatabaseType, metadata: [PluginDatabaseMetadata]) -> PluginDriverAdapter { PluginDriverAdapter( diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterTableOpsTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterTableOpsTests.swift index 213a89d838..619ec9a2f8 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterTableOpsTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterTableOpsTests.swift @@ -48,7 +48,6 @@ private final class StubTableOpsDriver: PluginDatabaseDriver, @unchecked Sendabl } } -@Suite("PluginDriverAdapter table operations") struct PluginDriverAdapterTableOpsTests { private func makeAdapter(driver: StubTableOpsDriver) -> PluginDriverAdapter { let connection = DatabaseConnection(name: "Test", type: .postgresql) diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterTableTypeMappingTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterTableTypeMappingTests.swift index e9d338911c..5d49e5a5a9 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterTableTypeMappingTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterTableTypeMappingTests.swift @@ -53,7 +53,6 @@ private final class StubTableTypeDriver: PluginDatabaseDriver, @unchecked Sendab } } -@Suite("PluginDriverAdapter table type mapping") struct PluginDriverAdapterTableTypeMappingTests { private func makeAdapter(driver: StubTableTypeDriver) -> PluginDriverAdapter { let connection = DatabaseConnection(name: "Test", type: .postgresql) diff --git a/TableProTests/Core/Plugins/PluginDriverAdapterTransactionTests.swift b/TableProTests/Core/Plugins/PluginDriverAdapterTransactionTests.swift index 60faa338e9..df6230946c 100644 --- a/TableProTests/Core/Plugins/PluginDriverAdapterTransactionTests.swift +++ b/TableProTests/Core/Plugins/PluginDriverAdapterTransactionTests.swift @@ -44,7 +44,6 @@ private final class ModeAwareTransactionDriver: TransactionDriverBase, PluginDat } } -@Suite("PluginDriverAdapter transaction access mode") struct PluginDriverAdapterTransactionTests { private func connection() -> DatabaseConnection { DatabaseConnection( diff --git a/TableProTests/Core/Plugins/PluginIndexMappingCoverageTests.swift b/TableProTests/Core/Plugins/PluginIndexMappingCoverageTests.swift index d397277b1a..9c480b464a 100644 --- a/TableProTests/Core/Plugins/PluginIndexMappingCoverageTests.swift +++ b/TableProTests/Core/Plugins/PluginIndexMappingCoverageTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Plugin index mapping coverage") struct PluginIndexMappingCoverageTests { @Test("Index fixtures built with the published initializer are caught") func fixturesFromThePublishedInitializerAreCaught() { diff --git a/TableProTests/Core/Plugins/PluginKitABIResilienceTests.swift b/TableProTests/Core/Plugins/PluginKitABIResilienceTests.swift index 9e4fdccaee..a788ed548d 100644 --- a/TableProTests/Core/Plugins/PluginKitABIResilienceTests.swift +++ b/TableProTests/Core/Plugins/PluginKitABIResilienceTests.swift @@ -16,7 +16,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginKit ABI resilience") struct PluginKitABIResilienceTests { private func makeMinimalDriver() -> any PluginDatabaseDriver { FakeMSSQLPluginDriver() diff --git a/TableProTests/Core/Plugins/PluginManagerEditorMetadataTests.swift b/TableProTests/Core/Plugins/PluginManagerEditorMetadataTests.swift index d035d6cbb8..e7fa5e289d 100644 --- a/TableProTests/Core/Plugins/PluginManagerEditorMetadataTests.swift +++ b/TableProTests/Core/Plugins/PluginManagerEditorMetadataTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginManager editor metadata") @MainActor struct PluginManagerEditorMetadataTests { @Test("a variant type resolves its own dialect rather than the primary plugin's") diff --git a/TableProTests/Core/Plugins/PluginManagerVariantAccessorTests.swift b/TableProTests/Core/Plugins/PluginManagerVariantAccessorTests.swift index 2862772f06..5cb366a42d 100644 --- a/TableProTests/Core/Plugins/PluginManagerVariantAccessorTests.swift +++ b/TableProTests/Core/Plugins/PluginManagerVariantAccessorTests.swift @@ -21,7 +21,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginManager variant accessors") @MainActor struct PluginManagerVariantAccessorTests { private var manager: PluginManager { PluginManager.shared } diff --git a/TableProTests/Core/Plugins/PluginMetadataRegistryBrandingTests.swift b/TableProTests/Core/Plugins/PluginMetadataRegistryBrandingTests.swift index cd256cacc4..1db3508d41 100644 --- a/TableProTests/Core/Plugins/PluginMetadataRegistryBrandingTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataRegistryBrandingTests.swift @@ -15,7 +15,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("PluginMetadataSnapshot branding preservation") struct PluginMetadataRegistryBrandingTests { private static let pluginField = ConnectionField( id: "newPluginField", diff --git a/TableProTests/Core/Plugins/PluginMetadataRegistryDownloadableTests.swift b/TableProTests/Core/Plugins/PluginMetadataRegistryDownloadableTests.swift index 25de4bd734..c3059dd00a 100644 --- a/TableProTests/Core/Plugins/PluginMetadataRegistryDownloadableTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataRegistryDownloadableTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("PluginMetadataRegistry isDownloadable preservation") struct PluginMetadataRegistryDownloadableTests { @Test("register preserves isDownloadable from registry default for downloadable types") func registerPreservesDownloadable() { diff --git a/TableProTests/Core/Plugins/PluginMetadataRegistrySchemaSwitchingTests.swift b/TableProTests/Core/Plugins/PluginMetadataRegistrySchemaSwitchingTests.swift index d2a00c8d85..1dcb85852e 100644 --- a/TableProTests/Core/Plugins/PluginMetadataRegistrySchemaSwitchingTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataRegistrySchemaSwitchingTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("PluginMetadataRegistry schema switching") struct PluginMetadataRegistrySchemaSwitchingTests { private func snapshot(forRegisteredTypeId typeId: String) -> PluginMetadataSnapshot? { PluginMetadataRegistry.shared.snapshot(forRegisteredTypeId: typeId) diff --git a/TableProTests/Core/Plugins/PluginMetadataRegistrySystemDatabaseTests.swift b/TableProTests/Core/Plugins/PluginMetadataRegistrySystemDatabaseTests.swift index 5ede1c91e0..cd8b7228f0 100644 --- a/TableProTests/Core/Plugins/PluginMetadataRegistrySystemDatabaseTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataRegistrySystemDatabaseTests.swift @@ -14,7 +14,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("PluginMetadataRegistry system databases") struct PluginMetadataRegistrySystemDatabaseTests { private func systemDatabaseNames(forTypeId typeId: String) -> [String]? { PluginMetadataRegistry.shared.snapshot(forRegisteredTypeId: typeId)?.schema.systemDatabaseNames diff --git a/TableProTests/Core/Plugins/PluginMetadataRegistrySystemNameAdoptionTests.swift b/TableProTests/Core/Plugins/PluginMetadataRegistrySystemNameAdoptionTests.swift index a8b5f10a21..e6346834b8 100644 --- a/TableProTests/Core/Plugins/PluginMetadataRegistrySystemNameAdoptionTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataRegistrySystemNameAdoptionTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginMetadataRegistry system name adoption") struct PluginMetadataRegistrySystemNameAdoptionTests { private func curated(_ typeId: String) -> PluginMetadataSnapshot? { PluginMetadataRegistry.shared.snapshot(forRegisteredTypeId: typeId) diff --git a/TableProTests/Core/Plugins/PluginMetadataRegistryTypeCountTests.swift b/TableProTests/Core/Plugins/PluginMetadataRegistryTypeCountTests.swift index 22290af1e4..0b5692f605 100644 --- a/TableProTests/Core/Plugins/PluginMetadataRegistryTypeCountTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataRegistryTypeCountTests.swift @@ -27,7 +27,6 @@ import Testing /// Both answer 35 under XCTest, where no plugin bundle ever loads, but the registry is a /// process-global singleton and suites that register a synthetic type run alongside this one. @MainActor -@Suite("PluginMetadataRegistry engine count") struct PluginMetadataRegistryTypeCountTests { private static let expectedTypeIds: Set = [ "Beancount", "BigQuery", "Cassandra", "ClickHouse", "Cloudflare D1", "Cloudflare R2 SQL", diff --git a/TableProTests/Core/Plugins/PluginMetadataSnapshotCopyTests.swift b/TableProTests/Core/Plugins/PluginMetadataSnapshotCopyTests.swift index dffbdaa8a4..db70e176a4 100644 --- a/TableProTests/Core/Plugins/PluginMetadataSnapshotCopyTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataSnapshotCopyTests.swift @@ -15,7 +15,6 @@ import Testing /// /// These hold the helpers to carrying the structure-editing capabilities across, which is what /// decides whether the Structure tab offers a foreign key edit at all. -@Suite("Plugin Metadata Snapshot Copying") struct PluginMetadataSnapshotCopyTests { private var sqliteType: DatabaseType { .sqlite } diff --git a/TableProTests/Core/Plugins/PluginMetadataSwitchRoutingTests.swift b/TableProTests/Core/Plugins/PluginMetadataSwitchRoutingTests.swift index 9a34eb13d6..1f2a2e0f5c 100644 --- a/TableProTests/Core/Plugins/PluginMetadataSwitchRoutingTests.swift +++ b/TableProTests/Core/Plugins/PluginMetadataSwitchRoutingTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Plugin metadata switch-routing normalization") struct PluginMetadataSwitchRoutingTests { private var oracleDefault: PluginMetadataSnapshot? { PluginMetadataRegistry.shared.snapshot(for: .oracle) diff --git a/TableProTests/Core/Plugins/PluginModelsTests.swift b/TableProTests/Core/Plugins/PluginModelsTests.swift index 504b74fd62..e9ef68ff7f 100644 --- a/TableProTests/Core/Plugins/PluginModelsTests.swift +++ b/TableProTests/Core/Plugins/PluginModelsTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("PluginEntry Computed Properties") struct PluginEntryTests { private func makeEntry( @@ -67,7 +66,6 @@ struct PluginEntryTests { } } -@Suite("PluginSource Enum") struct PluginSourceTests { @Test("PluginSource has builtIn and userInstalled cases") @@ -79,7 +77,6 @@ struct PluginSourceTests { } } -@Suite("PluginEntry Identity") struct PluginEntryIdentityTests { @Test("id property serves as the Identifiable conformance") diff --git a/TableProTests/Core/Plugins/PluginParameterEscapingTests.swift b/TableProTests/Core/Plugins/PluginParameterEscapingTests.swift index 40601bc261..7305803ec1 100644 --- a/TableProTests/Core/Plugins/PluginParameterEscapingTests.swift +++ b/TableProTests/Core/Plugins/PluginParameterEscapingTests.swift @@ -64,7 +64,6 @@ private final class SqlStandardStubDriver: PluginDatabaseDriver, @unchecked Send // MARK: - isNumericLiteral -@Suite("isNumericLiteral") struct IsNumericLiteralTests { @Test("Integers") @@ -110,7 +109,6 @@ struct IsNumericLiteralTests { // MARK: - escapedParameterValue -@Suite("escapedParameterValue (MySQL-style)") struct EscapedParameterValueTests { private let driver = StubDriver() @@ -166,7 +164,6 @@ struct EscapedParameterValueTests { } } -@Suite("escapedParameterValue (SQL-standard, no backslash escape)") struct SqlStandardEscapeTests { private let driver = SqlStandardStubDriver() diff --git a/TableProTests/Core/Plugins/PluginResultColumnHintsTests.swift b/TableProTests/Core/Plugins/PluginResultColumnHintsTests.swift index bef9d5c14a..fd51435f1c 100644 --- a/TableProTests/Core/Plugins/PluginResultColumnHintsTests.swift +++ b/TableProTests/Core/Plugins/PluginResultColumnHintsTests.swift @@ -36,7 +36,6 @@ private final class ResultStubDriver: PluginDatabaseDriver, @unchecked Sendable } } -@Suite("Result column classification hints") struct PluginResultColumnHintsTests { private func column(_ name: String, declared: String, hint: String?) -> PluginColumnInfo { PluginColumnInfo( diff --git a/TableProTests/Core/Plugins/PluginSettingsTests.swift b/TableProTests/Core/Plugins/PluginSettingsTests.swift index 0f43943fa8..de09adf954 100644 --- a/TableProTests/Core/Plugins/PluginSettingsTests.swift +++ b/TableProTests/Core/Plugins/PluginSettingsTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("PluginSettingsStorage") struct PluginSettingsStorageTests { private let testPluginId = "test.settings.\(UUID().uuidString)" @@ -217,7 +216,6 @@ struct SettablePluginSnapshotTests { } } -@Suite("PluginCapability") struct PluginCapabilityTests { @Test("only has 3 cases: databaseDriver, exportFormat, importFormat") diff --git a/TableProTests/Core/Plugins/PluginSignatureGatePlacementTests.swift b/TableProTests/Core/Plugins/PluginSignatureGatePlacementTests.swift index 1d5db8212a..16069a6967 100644 --- a/TableProTests/Core/Plugins/PluginSignatureGatePlacementTests.swift +++ b/TableProTests/Core/Plugins/PluginSignatureGatePlacementTests.swift @@ -14,7 +14,6 @@ import Testing /// code, so a check there buys nothing but the Plugins pane's rejected list, which /// `sweepPluginSignatures()` now fills off the main actor after the first frame. The two calls that /// do load code must keep verifying, immediately before `PluginBundleLoader.load`. -@Suite("Plugin signature gate placement") struct PluginSignatureGatePlacementTests { @Test("Discovery and lazy registration do not verify signatures") func launchPathDoesNotVerifySignatures() throws { diff --git a/TableProTests/Core/Plugins/PluginSignatureValidationFlagsTests.swift b/TableProTests/Core/Plugins/PluginSignatureValidationFlagsTests.swift index 6f24f8ea7c..cb858a5643 100644 --- a/TableProTests/Core/Plugins/PluginSignatureValidationFlagsTests.swift +++ b/TableProTests/Core/Plugins/PluginSignatureValidationFlagsTests.swift @@ -12,7 +12,6 @@ import Testing /// signed by other teams, so dyld validates nothing and `SecStaticCodeCheckValidity` is the entire /// load decision. Two of its flags are what make that decision cover a real bundle: nested code, /// and the strict resource envelope. -@Suite("Plugin signature validation flags") struct PluginSignatureValidationFlagsTests { @Test("Nested Mach-O inside a plugin bundle is verified") func flagsCheckNestedCode() { diff --git a/TableProTests/Core/Plugins/PluginStructureMappingTests.swift b/TableProTests/Core/Plugins/PluginStructureMappingTests.swift index 21cd9db6e7..e7348e636c 100644 --- a/TableProTests/Core/Plugins/PluginStructureMappingTests.swift +++ b/TableProTests/Core/Plugins/PluginStructureMappingTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Plugin structure mapping") struct PluginStructureMappingTests { private static let columns = PluginStructureFixtures.columns diff --git a/TableProTests/Core/Plugins/PluginTableKindDecoderTests.swift b/TableProTests/Core/Plugins/PluginTableKindDecoderTests.swift index fab47860f1..b4f17339a3 100644 --- a/TableProTests/Core/Plugins/PluginTableKindDecoderTests.swift +++ b/TableProTests/Core/Plugins/PluginTableKindDecoderTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Plugin table kind decoder") struct PluginTableKindDecoderTests { @Test("Every table-like spelling a driver sends decodes to its own kind") func knownSpellingsDecode() { diff --git a/TableProTests/Core/Plugins/PluginValidationTests.swift b/TableProTests/Core/Plugins/PluginValidationTests.swift index 0c949195bb..cae53f4912 100644 --- a/TableProTests/Core/Plugins/PluginValidationTests.swift +++ b/TableProTests/Core/Plugins/PluginValidationTests.swift @@ -130,7 +130,6 @@ struct ValidateDriverDescriptorTests { // MARK: - PluginError.invalidDescriptor Formatting -@Suite("PluginError.invalidDescriptor") struct PluginErrorInvalidDescriptorTests { @Test("error description includes plugin ID and reason") @@ -159,7 +158,6 @@ struct PluginErrorInvalidDescriptorTests { // MARK: - validateConnectionFields Tests -@Suite("PluginManager.validateConnectionFields") struct ValidateConnectionFieldsTests { @Test("duplicate field IDs are detected") diff --git a/TableProTests/Core/Plugins/RegistryBinarySelectionTests.swift b/TableProTests/Core/Plugins/RegistryBinarySelectionTests.swift index 7e4aac2603..bffd4750c1 100644 --- a/TableProTests/Core/Plugins/RegistryBinarySelectionTests.swift +++ b/TableProTests/Core/Plugins/RegistryBinarySelectionTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("RegistryPlugin.resolvedBinary v2 selection") struct RegistryBinarySelectionTests { private func makePlugin(binaries: [RegistryBinary]) -> RegistryPlugin { @@ -144,7 +143,6 @@ struct RegistryBinarySelectionTests { } } -@Suite("RegistryPlugin.resolvedBinary reports a stale app truthfully") struct RegistryStaleAppTests { private func makePlugin(kits: [Int]) -> RegistryPlugin { diff --git a/TableProTests/Core/Plugins/SchemaOnlyContainerRoutingTests.swift b/TableProTests/Core/Plugins/SchemaOnlyContainerRoutingTests.swift index 2e70cdd453..78fabb32cc 100644 --- a/TableProTests/Core/Plugins/SchemaOnlyContainerRoutingTests.swift +++ b/TableProTests/Core/Plugins/SchemaOnlyContainerRoutingTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Schema-only container routing") struct SchemaOnlyContainerRoutingTests { private func switchable(_ type: DatabaseType) -> [ContainerSwitchTarget] { PluginManager.shared.switchableContainers(for: type) diff --git a/TableProTests/Core/Plugins/SocketPathPlaceholderTests.swift b/TableProTests/Core/Plugins/SocketPathPlaceholderTests.swift index 676094c2aa..8d7e7bbfa7 100644 --- a/TableProTests/Core/Plugins/SocketPathPlaceholderTests.swift +++ b/TableProTests/Core/Plugins/SocketPathPlaceholderTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Default Unix socket path per database type") struct SocketPathPlaceholderTests { @Test("MySQL and MariaDB use the mysqld socket") func mysqlFamilyUsesMysqldSocket() { diff --git a/TableProTests/Core/Plugins/StructureEditMatrixCurationTests.swift b/TableProTests/Core/Plugins/StructureEditMatrixCurationTests.swift index 994b62658c..37b65df40e 100644 --- a/TableProTests/Core/Plugins/StructureEditMatrixCurationTests.swift +++ b/TableProTests/Core/Plugins/StructureEditMatrixCurationTests.swift @@ -12,7 +12,6 @@ import Testing /// its struct default the moment a plugin loaded is what silently disabled MongoDB's database-scoped /// authentication (#1970), and the same shape here would put the Structure tab's whole per-kind gate /// back to tables only for every build with the PostgreSQL plugin installed. (#2726) -@Suite("Structure Edit Matrix Curation") @MainActor struct StructureEditMatrixCurationTests { @Test("PostgreSQL is curated with the measured per-kind matrix") diff --git a/TableProTests/Core/Process/StaleProcessReaperTests.swift b/TableProTests/Core/Process/StaleProcessReaperTests.swift index 51b3d7298b..cd989882e6 100644 --- a/TableProTests/Core/Process/StaleProcessReaperTests.swift +++ b/TableProTests/Core/Process/StaleProcessReaperTests.swift @@ -40,7 +40,6 @@ private final class FakeProcessTable: @unchecked Sendable { } } -@Suite("Stale process reaper") struct StaleProcessReaperTests { private static let fast = StaleProcessReaper.Timings( grace: .milliseconds(60), diff --git a/TableProTests/Core/Process/SupervisedProcessRunnerTests.swift b/TableProTests/Core/Process/SupervisedProcessRunnerTests.swift index aa62793300..b98afcbe78 100644 --- a/TableProTests/Core/Process/SupervisedProcessRunnerTests.swift +++ b/TableProTests/Core/Process/SupervisedProcessRunnerTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Supervised process runner") struct SupervisedProcessRunnerTests { private func runner(script: String) throws -> ProcessSupervisedRunner { let runner = ProcessSupervisedRunner() diff --git a/TableProTests/Core/RecentTabs/RecentTabOrderTests.swift b/TableProTests/Core/RecentTabs/RecentTabOrderTests.swift index 57e39b35c8..d01ae5ac9c 100644 --- a/TableProTests/Core/RecentTabs/RecentTabOrderTests.swift +++ b/TableProTests/Core/RecentTabs/RecentTabOrderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Recent tab order across a window's connections") @MainActor struct RecentTabOrderTests { private func source(_ manager: QueryTabManager, connection: UUID) -> RecentTabSource { diff --git a/TableProTests/Core/RecentTabs/RecentTabSwitcherSessionTests.swift b/TableProTests/Core/RecentTabs/RecentTabSwitcherSessionTests.swift index 4350f08962..c54e7ba8ed 100644 --- a/TableProTests/Core/RecentTabs/RecentTabSwitcherSessionTests.swift +++ b/TableProTests/Core/RecentTabs/RecentTabSwitcherSessionTests.swift @@ -19,7 +19,6 @@ private func candidates(_ count: Int) -> [RecentTabCandidate] { } } -@Suite("Recent tab switcher session") struct RecentTabSwitcherSessionTests { @Test("Nothing to switch to with fewer than two tabs") func needsTwoCandidates() { @@ -118,7 +117,6 @@ struct RecentTabSwitcherSessionTests { } } -@Suite("Recent tab switcher keys") struct RecentTabSwitcherKeyCommandTests { private func resolve( _ key: KeyCode, diff --git a/TableProTests/Core/Redis/ColumnTypeBadgeLabelTests.swift b/TableProTests/Core/Redis/ColumnTypeBadgeLabelTests.swift index c9ccea9231..bbc5654d55 100644 --- a/TableProTests/Core/Redis/ColumnTypeBadgeLabelTests.swift +++ b/TableProTests/Core/Redis/ColumnTypeBadgeLabelTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ColumnType Badge Labels") struct ColumnTypeBadgeLabelTests { // MARK: - Redis-Specific Overrides diff --git a/TableProTests/Core/Redis/ExportModelsRedisTests.swift b/TableProTests/Core/Redis/ExportModelsRedisTests.swift index 1eaac72726..6d491f7bdf 100644 --- a/TableProTests/Core/Redis/ExportModelsRedisTests.swift +++ b/TableProTests/Core/Redis/ExportModelsRedisTests.swift @@ -2,7 +2,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Export format filtering for Redis") struct ExportModelsRedisTests { @Test("ExportObjectItem supports optionValues for generic per-object options") diff --git a/TableProTests/Core/Redis/ExportServiceRedisTests.swift b/TableProTests/Core/Redis/ExportServiceRedisTests.swift index 8806d1b4c3..577bb6a046 100644 --- a/TableProTests/Core/Redis/ExportServiceRedisTests.swift +++ b/TableProTests/Core/Redis/ExportServiceRedisTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Export service state") struct ExportServiceRedisTests { @Test("ExportState initializes with correct defaults") diff --git a/TableProTests/Core/Redis/RedisArgumentCodecTests.swift b/TableProTests/Core/Redis/RedisArgumentCodecTests.swift index 7830811f40..4f83329ee1 100644 --- a/TableProTests/Core/Redis/RedisArgumentCodecTests.swift +++ b/TableProTests/Core/Redis/RedisArgumentCodecTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("RedisArgumentCodec - byte round-trip") struct RedisArgumentCodecRoundTripTests { @Test("every byte value survives quote then split") func everyByteSurvives() { @@ -44,7 +43,6 @@ struct RedisArgumentCodecRoundTripTests { } } -@Suite("RedisArgumentCodec - readable output") struct RedisArgumentCodecReadabilityTests { @Test("a simple value is left unquoted") func simpleValueIsBare() { @@ -63,7 +61,6 @@ struct RedisArgumentCodecReadabilityTests { } } -@Suite("RedisArgumentCodec - redis-cli grammar") struct RedisArgumentCodecGrammarTests { @Test("hex escapes decode to raw bytes") func hexEscapes() { diff --git a/TableProTests/Core/Redis/RedisBinaryValueTests.swift b/TableProTests/Core/Redis/RedisBinaryValueTests.swift index f3ae5b3fcc..61aaa700c8 100644 --- a/TableProTests/Core/Redis/RedisBinaryValueTests.swift +++ b/TableProTests/Core/Redis/RedisBinaryValueTests.swift @@ -32,7 +32,6 @@ private func parsedValue(of statement: String) -> Data? { return value } -@Suite("Redis write path - values survive the command round-trip") struct RedisWriteRoundTripTests { @Test("a plain value produces a readable command") func plainValueStaysReadable() { @@ -131,7 +130,6 @@ struct RedisWriteRoundTripTests { } } -@Suite("RedisCommandParser - binary arguments") struct RedisCommandParserBinaryTests { @Test("SET carries a binary value through") func setCarriesBinary() { diff --git a/TableProTests/Core/Redis/RedisCommandParserTests.swift b/TableProTests/Core/Redis/RedisCommandParserTests.swift index 7dd56ab5a2..5ff466131c 100644 --- a/TableProTests/Core/Redis/RedisCommandParserTests.swift +++ b/TableProTests/Core/Redis/RedisCommandParserTests.swift @@ -9,7 +9,6 @@ import Testing // MARK: - Key Commands -@Suite("RedisCommandParser - Key Commands") struct RedisCommandParserKeyCommandTests { @Test("GET parses key") func getCommand() throws { @@ -275,7 +274,6 @@ struct RedisCommandParserKeyCommandTests { // MARK: - Hash Commands -@Suite("RedisCommandParser - Hash Commands") struct RedisCommandParserHashTests { @Test("HGET parses key and field") func hgetCommand() throws { @@ -334,7 +332,6 @@ struct RedisCommandParserHashTests { // MARK: - List Commands -@Suite("RedisCommandParser - List Commands") struct RedisCommandParserListTests { @Test("LRANGE parses key, start, stop") func lrangeCommand() throws { @@ -392,7 +389,6 @@ struct RedisCommandParserListTests { // MARK: - Set Commands -@Suite("RedisCommandParser - Set Commands") struct RedisCommandParserSetTests { @Test("SMEMBERS parses key") func smembersCommand() throws { @@ -440,7 +436,6 @@ struct RedisCommandParserSetTests { // MARK: - Sorted Set Commands -@Suite("RedisCommandParser - Sorted Set Commands") struct RedisCommandParserSortedSetTests { @Test("ZRANGE parses key, start, stop") func zrangeCommand() throws { @@ -547,7 +542,6 @@ struct RedisCommandParserSortedSetTests { // MARK: - Stream Commands -@Suite("RedisCommandParser - Stream Commands") struct RedisCommandParserStreamTests { @Test("XRANGE parses key, start, end") func xrangeCommand() throws { @@ -585,7 +579,6 @@ struct RedisCommandParserStreamTests { // MARK: - Server Commands -@Suite("RedisCommandParser - Server Commands") struct RedisCommandParserServerTests { @Test("PING") func pingCommand() throws { @@ -722,7 +715,6 @@ struct RedisCommandParserServerTests { // MARK: - Error Cases -@Suite("RedisCommandParser - Error Cases") struct RedisCommandParserErrorTests { @Test("Empty input throws emptySyntax") func emptyInput() { @@ -752,7 +744,6 @@ struct RedisCommandParserErrorTests { // MARK: - Tokenizer -@Suite("RedisCommandParser - Tokenizer") struct RedisCommandParserTokenizerTests { @Test("Double-quoted strings are parsed correctly") func doubleQuotedString() throws { @@ -882,7 +873,6 @@ struct RedisCommandParserTokenizerTests { } } -@Suite("RedisCommandParser - KEYBROWSE round-trip") struct RedisKeyBrowseRoundTripTests { private let builder = RedisQueryBuilder() @@ -927,7 +917,6 @@ struct RedisKeyBrowseRoundTripTests { } } -@Suite("RedisCommandParser - arguments a typed case cannot carry") struct RedisCommandParserVerbatimTests { @Test( "A recognised command with arguments its typed case cannot carry goes out exactly as typed", @@ -993,7 +982,6 @@ struct RedisCommandParserVerbatimTests { } } -@Suite("RedisCommandParser - statements the app builds stay typed") struct RedisCommandParserAppStatementTests { private static let browseColumns = ["Key", "Type", "TTL", "Length", "Value"] diff --git a/TableProTests/Core/Redis/RedisKeySummaryTests.swift b/TableProTests/Core/Redis/RedisKeySummaryTests.swift index 59b96012e1..5f525bdce5 100644 --- a/TableProTests/Core/Redis/RedisKeySummaryTests.swift +++ b/TableProTests/Core/Redis/RedisKeySummaryTests.swift @@ -11,7 +11,6 @@ private func parseJson(_ text: String?) -> Any? { return try? JSONSerialization.jsonObject(with: data, options: [.fragmentsAllowed]) } -@Suite("RedisKeySummary - probe commands") struct RedisKeySummaryCommandTests { @Test("a string key is read with GET so the whole value arrives") func stringPreviewReadsWholeValue() { @@ -46,7 +45,6 @@ struct RedisKeySummaryCommandTests { } } -@Suite("RedisKeySummary - previews are valid JSON") struct RedisKeySummaryJsonTests { @Test("a hash preview parses back to the same fields") func hashRoundTrips() { @@ -102,7 +100,6 @@ struct RedisKeySummaryJsonTests { } } -@Suite("RedisKeySummary - values are never cut") struct RedisKeySummaryLengthTests { @Test("an element far past the old 1,000 character cap survives whole") func longElementSurvives() { diff --git a/TableProTests/Core/Redis/RedisKeyTreeCommandTests.swift b/TableProTests/Core/Redis/RedisKeyTreeCommandTests.swift index c0c45962a9..cc845cf405 100644 --- a/TableProTests/Core/Redis/RedisKeyTreeCommandTests.swift +++ b/TableProTests/Core/Redis/RedisKeyTreeCommandTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("RedisCommandParser - KEYTREE") struct RedisKeyTreeCommandTests { @Test("KEYTREE with a limit parses to a key tree operation") func parsesLimit() throws { @@ -89,7 +88,6 @@ struct RedisKeyTreeCommandTests { } } -@Suite("Redis key tree - the commands the app builds parse as the driver reads them") struct RedisKeyTreeAppCommandTests { @Test("The tree's listing names its database and its limit") func listingRoundTrips() throws { diff --git a/TableProTests/Core/Redis/RedisReplyTests.swift b/TableProTests/Core/Redis/RedisReplyTests.swift index 4e4152ed43..8269d0744c 100644 --- a/TableProTests/Core/Redis/RedisReplyTests.swift +++ b/TableProTests/Core/Redis/RedisReplyTests.swift @@ -15,7 +15,6 @@ import Testing // MARK: - stringValue -@Suite("RedisReply - stringValue") struct RedisReplyStringValueTests { @Test("string case returns the string") func stringCase() { @@ -63,7 +62,6 @@ struct RedisReplyStringValueTests { // MARK: - intValue -@Suite("RedisReply - intValue") struct RedisReplyIntValueTests { @Test("integer case returns the integer") func integerCase() { @@ -110,7 +108,6 @@ struct RedisReplyIntValueTests { // MARK: - stringArrayValue -@Suite("RedisReply - stringArrayValue") struct RedisReplyStringArrayValueTests { @Test("array of strings returns string array") func arrayOfStrings() { @@ -157,7 +154,6 @@ struct RedisReplyStringArrayValueTests { // MARK: - arrayValue -@Suite("RedisReply - arrayValue") struct RedisReplyArrayValueTests { @Test("array returns the inner array") func arrayCase() { diff --git a/TableProTests/Core/Redis/RedisResultBuildingTests.swift b/TableProTests/Core/Redis/RedisResultBuildingTests.swift index 9921418442..454e628bf5 100644 --- a/TableProTests/Core/Redis/RedisResultBuildingTests.swift +++ b/TableProTests/Core/Redis/RedisResultBuildingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis Result Building - displayText") struct RedisReplyDisplayTextTests { @Test("string returns the string") func stringCase() { @@ -58,7 +57,6 @@ struct RedisReplyDisplayTextTests { } } -@Suite("Redis Result Building - Hash") struct RedisHashResultTests { @Test("hash with all string values") func allStrings() { @@ -142,7 +140,6 @@ struct RedisHashResultTests { } } -@Suite("Redis Result Building - List") struct RedisListResultTests { @Test("list with all strings shows correct indices and values") func allStrings() { @@ -185,7 +182,6 @@ struct RedisListResultTests { } } -@Suite("Redis Result Building - Set") struct RedisSetResultTests { @Test("set with all strings shows correct members") func allStrings() { @@ -214,7 +210,6 @@ struct RedisSetResultTests { } } -@Suite("Redis Result Building - Sorted Set") struct RedisSortedSetResultTests { @Test("sorted set with scores shows correct member/score pairs") func withScores() { @@ -265,7 +260,6 @@ struct RedisSortedSetResultTests { } } -@Suite("Redis Result Building - Stream") struct RedisStreamGridTests { @Test("each XRANGE entry becomes its ID and its fields") func entriesBecomeRows() { @@ -295,7 +289,6 @@ struct RedisStreamGridTests { } } -@Suite("Redis Result Building - Config") struct RedisConfigResultTests { @Test("config with all strings shows correct parameter/value pairs") func allStrings() { @@ -325,7 +318,6 @@ struct RedisConfigResultTests { } } -@Suite("Redis Result Building - Generic") struct RedisGenericGridTests { @Test("an integer reply is typed Int64") func integerReply() { diff --git a/TableProTests/Core/SSH/Auth/AgentAuthenticationReportingTests.swift b/TableProTests/Core/SSH/Auth/AgentAuthenticationReportingTests.swift index a71514bdd4..3ae3b731bd 100644 --- a/TableProTests/Core/SSH/Auth/AgentAuthenticationReportingTests.swift +++ b/TableProTests/Core/SSH/Auth/AgentAuthenticationReportingTests.swift @@ -414,7 +414,6 @@ private struct ThrowingAuthenticator: SSHAuthenticator { } } -@Suite("CompositeAuthenticator failure reporting") struct CompositeAuthenticatorFailureReportingTests { private func failureReason( of authenticators: [any SSHAuthenticator], @@ -500,7 +499,6 @@ struct CompositeAuthenticatorFailureReportingTests { } } -@Suite("KeyboardInteractiveContext failure reason") struct KeyboardInteractiveFailureReasonTests { private final class SilentPromptProvider: KeyboardInteractivePromptProvider, @unchecked Sendable { func provideResponses(for challenge: KeyboardInteractiveChallenge, attempt: Int) throws -> [String] { diff --git a/TableProTests/Core/SSH/Auth/AgentIdentityPreferenceTests.swift b/TableProTests/Core/SSH/Auth/AgentIdentityPreferenceTests.swift index 91ddc05d56..de6a68b15a 100644 --- a/TableProTests/Core/SSH/Auth/AgentIdentityPreferenceTests.swift +++ b/TableProTests/Core/SSH/Auth/AgentIdentityPreferenceTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Agent identity preference") struct AgentIdentityPreferenceTests { private static let ed25519 = "ssh-ed25519" private static let certificate = "ssh-ed25519-cert-v01@openssh.com" diff --git a/TableProTests/Core/SSH/Auth/AuthFailureReasonTests.swift b/TableProTests/Core/SSH/Auth/AuthFailureReasonTests.swift index c4a398d1d3..f335e552c5 100644 --- a/TableProTests/Core/SSH/Auth/AuthFailureReasonTests.swift +++ b/TableProTests/Core/SSH/Auth/AuthFailureReasonTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("SSHTunnelError.authenticationFailed reason") struct AuthFailureReasonTests { @Test("Verification-code reason mentions the authenticator, not the password") func verificationCodeMessage() { diff --git a/TableProTests/Core/SSH/Auth/BuildAuthenticatorTests.swift b/TableProTests/Core/SSH/Auth/BuildAuthenticatorTests.swift index 00fb3c922d..6dfb4718ea 100644 --- a/TableProTests/Core/SSH/Auth/BuildAuthenticatorTests.swift +++ b/TableProTests/Core/SSH/Auth/BuildAuthenticatorTests.swift @@ -20,7 +20,6 @@ import Testing @testable import TablePro -@Suite("LibSSH2TunnelFactory.buildAuthenticator") struct BuildAuthenticatorTests { private func resolved( host: String = "ssh.example.com", diff --git a/TableProTests/Core/SSH/Auth/CompositeAuthenticatorTests.swift b/TableProTests/Core/SSH/Auth/CompositeAuthenticatorTests.swift index a1bb758a3e..0d8225c582 100644 --- a/TableProTests/Core/SSH/Auth/CompositeAuthenticatorTests.swift +++ b/TableProTests/Core/SSH/Auth/CompositeAuthenticatorTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("SSHTunnelError.isUserCancelledAuthentication") struct CompositeAuthenticatorCancellationTests { @Test("A cancelled auth failure is recognized as a user cancellation") func cancelledReasonIsUserCancelled() { diff --git a/TableProTests/Core/SSH/Auth/KeyboardInteractiveContextTests.swift b/TableProTests/Core/SSH/Auth/KeyboardInteractiveContextTests.swift index 5d4f8023cd..4b83abc65a 100644 --- a/TableProTests/Core/SSH/Auth/KeyboardInteractiveContextTests.swift +++ b/TableProTests/Core/SSH/Auth/KeyboardInteractiveContextTests.swift @@ -68,7 +68,6 @@ private func prompt(_ text: String, echo: Bool = false) -> KeyboardInteractivePr KeyboardInteractivePrompt(text: text, echo: echo) } -@Suite("KeyboardInteractiveContext TOTP fetch") struct KeyboardInteractiveContextTests { @Test("nextTotpCode returns empty when no provider is configured") func noProviderReturnsEmpty() { @@ -101,7 +100,6 @@ struct KeyboardInteractiveContextTests { } } -@Suite("KeyboardInteractiveContext prompt resolution") struct KeyboardInteractiveResponsesTests { @Test("A password prompt is answered from the fast path without prompting the user") func passwordFastPath() { @@ -203,7 +201,6 @@ struct KeyboardInteractiveResponsesTests { } } -@Suite("KeyboardInteractivePrompt") struct KeyboardInteractivePromptTests { @Test("Length-delimited UTF-8 bytes decode without assuming NUL-termination") func decodesUtf8Bytes() { @@ -223,7 +220,6 @@ struct KeyboardInteractivePromptTests { } } -@Suite("KeyboardInteractiveAuthenticator.classify") struct KeyboardInteractiveClassifyTests { @Test("A password prompt classifies as password") func passwordPrompt() { diff --git a/TableProTests/Core/SSH/Auth/SSHAuthMethodTests.swift b/TableProTests/Core/SSH/Auth/SSHAuthMethodTests.swift index cfb2016363..1b364e77fc 100644 --- a/TableProTests/Core/SSH/Auth/SSHAuthMethodTests.swift +++ b/TableProTests/Core/SSH/Auth/SSHAuthMethodTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SSHAuthMethod form contract") struct SSHAuthMethodTests { @Test("None is the only method without two-factor authentication") func noneHidesTwoFactor() { diff --git a/TableProTests/Core/SSH/HostKeyStoreTests.swift b/TableProTests/Core/SSH/HostKeyStoreTests.swift index 784bb2bc73..0826ef76b8 100644 --- a/TableProTests/Core/SSH/HostKeyStoreTests.swift +++ b/TableProTests/Core/SSH/HostKeyStoreTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("HostKeyStore") struct HostKeyStoreTests { /// Create a temporary file path for test isolation private func makeTempFilePath() -> String { diff --git a/TableProTests/Core/SSH/SSHConfigCacheTests.swift b/TableProTests/Core/SSH/SSHConfigCacheTests.swift index 641c402fb0..b9dedc4881 100644 --- a/TableProTests/Core/SSH/SSHConfigCacheTests.swift +++ b/TableProTests/Core/SSH/SSHConfigCacheTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH config cache") struct SSHConfigCacheTests { @Test("Returns cached document while file unchanged") func cachedReadIsStable() async throws { diff --git a/TableProTests/Core/SSH/SSHConfigParserGrammarTests.swift b/TableProTests/Core/SSH/SSHConfigParserGrammarTests.swift index 0483fa56a6..d133ca5bd9 100644 --- a/TableProTests/Core/SSH/SSHConfigParserGrammarTests.swift +++ b/TableProTests/Core/SSH/SSHConfigParserGrammarTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH config parser grammar") struct SSHConfigParserGrammarTests { private static let env = ResolverEnvironment( runShell: { _ in true }, diff --git a/TableProTests/Core/SSH/SSHConfigParserTests.swift b/TableProTests/Core/SSH/SSHConfigParserTests.swift index 8eb49e3137..97297d01a3 100644 --- a/TableProTests/Core/SSH/SSHConfigParserTests.swift +++ b/TableProTests/Core/SSH/SSHConfigParserTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH Config Parser") struct SSHConfigParserTests { @Test("Empty content returns empty array") func testEmptyContent() { diff --git a/TableProTests/Core/SSH/SSHConfigResolverTests.swift b/TableProTests/Core/SSH/SSHConfigResolverTests.swift index ff734ad62d..16330b7a9b 100644 --- a/TableProTests/Core/SSH/SSHConfigResolverTests.swift +++ b/TableProTests/Core/SSH/SSHConfigResolverTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH config resolver") struct SSHConfigResolverTests { private func makeConfig( host: String, diff --git a/TableProTests/Core/SSH/SSHConfigResolverTokenTests.swift b/TableProTests/Core/SSH/SSHConfigResolverTokenTests.swift index 9c5b700636..477a66589a 100644 --- a/TableProTests/Core/SSH/SSHConfigResolverTokenTests.swift +++ b/TableProTests/Core/SSH/SSHConfigResolverTokenTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH config resolver tokens") struct SSHConfigResolverTokenTests { private static let env = ResolverEnvironment( runShell: { _ in true }, diff --git a/TableProTests/Core/SSH/SSHConfigTokensTests.swift b/TableProTests/Core/SSH/SSHConfigTokensTests.swift index ff541b7f3f..30397d1fc8 100644 --- a/TableProTests/Core/SSH/SSHConfigTokensTests.swift +++ b/TableProTests/Core/SSH/SSHConfigTokensTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SSH config tokens") struct SSHConfigTokensTests { private static let context = SSHTokenContext( originalHost: "tok", @@ -224,7 +223,6 @@ struct SSHConfigTokensTests { } } -@Suite("SSH path utilities") struct SSHPathExpansionTests { @Test("A leading tilde expands to the home directory") func expandsTilde() { diff --git a/TableProTests/Core/SSH/SSHConfigurationTests.swift b/TableProTests/Core/SSH/SSHConfigurationTests.swift index fbd3cc927f..722dd62176 100644 --- a/TableProTests/Core/SSH/SSHConfigurationTests.swift +++ b/TableProTests/Core/SSH/SSHConfigurationTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH Configuration") struct SSHConfigurationTests { @Test("Disabled SSH config is always valid") func testDisabledIsValid() { diff --git a/TableProTests/Core/SSH/SSHForwardDestinationTests.swift b/TableProTests/Core/SSH/SSHForwardDestinationTests.swift index c81b888597..52c88c6954 100644 --- a/TableProTests/Core/SSH/SSHForwardDestinationTests.swift +++ b/TableProTests/Core/SSH/SSHForwardDestinationTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("SSH forward destination") struct SSHForwardDestinationTests { @Test("A connection without a socket path forwards to its host and port") func defaultsToTCP() { diff --git a/TableProTests/Core/SSH/SSHForwardFailureMappingTests.swift b/TableProTests/Core/SSH/SSHForwardFailureMappingTests.swift index f0478e5e50..9f0c0e5371 100644 --- a/TableProTests/Core/SSH/SSHForwardFailureMappingTests.swift +++ b/TableProTests/Core/SSH/SSHForwardFailureMappingTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("SSHForwardFailure to SSHTunnelError") struct SSHForwardFailureMappingTests { private static let tcp = SSHForwardDestination.tcp(host: "db.internal", port: 3_306) private static let socket = SSHForwardDestination.unixSocket(path: "/var/run/mysqld/mysqld.sock") diff --git a/TableProTests/Core/SSH/SSHHostPatternMatcherTests.swift b/TableProTests/Core/SSH/SSHHostPatternMatcherTests.swift index 6e9399cc3e..799d32a1d8 100644 --- a/TableProTests/Core/SSH/SSHHostPatternMatcherTests.swift +++ b/TableProTests/Core/SSH/SSHHostPatternMatcherTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH host pattern matcher") struct SSHHostPatternMatcherTests { @Test("Exact match") func testExactMatch() { diff --git a/TableProTests/Core/SSH/SSHJumpChainTests.swift b/TableProTests/Core/SSH/SSHJumpChainTests.swift index 3dae552644..5bb27f8956 100644 --- a/TableProTests/Core/SSH/SSHJumpChainTests.swift +++ b/TableProTests/Core/SSH/SSHJumpChainTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH jump chain") struct SSHJumpChainTests { private static let env = ResolverEnvironment( runShell: { _ in true }, diff --git a/TableProTests/Core/SSH/SSHJumpHostTests.swift b/TableProTests/Core/SSH/SSHJumpHostTests.swift index 7b7873c425..64b7451cd5 100644 --- a/TableProTests/Core/SSH/SSHJumpHostTests.swift +++ b/TableProTests/Core/SSH/SSHJumpHostTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH Jump Host") struct SSHJumpHostTests { @Test("proxyJumpString formats correctly") func testProxyJumpString() { diff --git a/TableProTests/Core/SSH/SSHKeepAliveResultTests.swift b/TableProTests/Core/SSH/SSHKeepAliveResultTests.swift index 19bd071b72..21ccab1aa0 100644 --- a/TableProTests/Core/SSH/SSHKeepAliveResultTests.swift +++ b/TableProTests/Core/SSH/SSHKeepAliveResultTests.swift @@ -10,7 +10,6 @@ @testable import TablePro import Testing -@Suite("sshKeepAliveDidFail") struct SSHKeepAliveResultTests { @Test("A sent keep-alive is not a failure") func successIsNotFailure() { diff --git a/TableProTests/Core/SSH/SSHMatchExecutorTests.swift b/TableProTests/Core/SSH/SSHMatchExecutorTests.swift index a0d754e366..e9d95556e3 100644 --- a/TableProTests/Core/SSH/SSHMatchExecutorTests.swift +++ b/TableProTests/Core/SSH/SSHMatchExecutorTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSH Match exec") struct SSHMatchExecutorTests { @Test("Exit 0 matches") func exitZeroMatches() { diff --git a/TableProTests/Core/SSH/SSHPublicKeyFileTests.swift b/TableProTests/Core/SSH/SSHPublicKeyFileTests.swift index 94d383560f..6f0f0fcf3f 100644 --- a/TableProTests/Core/SSH/SSHPublicKeyFileTests.swift +++ b/TableProTests/Core/SSH/SSHPublicKeyFileTests.swift @@ -37,7 +37,6 @@ enum SSHPublicKeyFixture { } } -@Suite("SSH public key file") struct SSHPublicKeyFileTests { private static let ed25519 = "ssh-ed25519" private static let certificate = "ssh-ed25519-cert-v01@openssh.com" diff --git a/TableProTests/Core/SSH/SSHTunnelDeadlineMarginTests.swift b/TableProTests/Core/SSH/SSHTunnelDeadlineMarginTests.swift index b1b7edd3c3..aa803fbebf 100644 --- a/TableProTests/Core/SSH/SSHTunnelDeadlineMarginTests.swift +++ b/TableProTests/Core/SSH/SSHTunnelDeadlineMarginTests.swift @@ -13,7 +13,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SSH tunnel deadline margin") struct SSHTunnelDeadlineMarginTests { /// Every bundled driver hardcodes a 10 second connect timeout. private static let driverConnectTimeoutSeconds: TimeInterval = 10 diff --git a/TableProTests/Core/SSH/SSHTunnelErrorTests.swift b/TableProTests/Core/SSH/SSHTunnelErrorTests.swift index 4ccae52aa5..7e023769a0 100644 --- a/TableProTests/Core/SSH/SSHTunnelErrorTests.swift +++ b/TableProTests/Core/SSH/SSHTunnelErrorTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SSHTunnelError") struct SSHTunnelErrorTests { // MARK: - Port Bind Failure Classification diff --git a/TableProTests/Core/SSH/SSHUnsupportedDirectiveTests.swift b/TableProTests/Core/SSH/SSHUnsupportedDirectiveTests.swift index d254fedab9..ceecf2b5d2 100644 --- a/TableProTests/Core/SSH/SSHUnsupportedDirectiveTests.swift +++ b/TableProTests/Core/SSH/SSHUnsupportedDirectiveTests.swift @@ -10,7 +10,6 @@ @testable import TablePro import Testing -@Suite("SSHUnsupportedDirective") struct SSHUnsupportedDirectiveTests { @Test("ProxyCommand is reported") func proxyCommandChangesRouting() { @@ -44,7 +43,6 @@ struct SSHUnsupportedDirectiveTests { } } -@Suite("ProxyCommand parsing") struct SSHProxyCommandParsingTests { @Test("ProxyCommand parses as an unrecognized directive so it can be reported") func proxyCommandIsUnrecognized() { diff --git a/TableProTests/Core/SchemaTracking/CheckConstraintStatementTests.swift b/TableProTests/Core/SchemaTracking/CheckConstraintStatementTests.swift index ffcbbc4089..413b36c0ab 100644 --- a/TableProTests/Core/SchemaTracking/CheckConstraintStatementTests.swift +++ b/TableProTests/Core/SchemaTracking/CheckConstraintStatementTests.swift @@ -58,7 +58,6 @@ private final class ConstraintDDLDriver: PluginDatabaseDriver, @unchecked Sendab } } -@Suite("Check constraint statement generation") struct CheckConstraintStatementTests { private func constraint( name: String, diff --git a/TableProTests/Core/SchemaTracking/PrimaryKeyConstraintLookupTests.swift b/TableProTests/Core/SchemaTracking/PrimaryKeyConstraintLookupTests.swift index 617f855662..972f4c9c3b 100644 --- a/TableProTests/Core/SchemaTracking/PrimaryKeyConstraintLookupTests.swift +++ b/TableProTests/Core/SchemaTracking/PrimaryKeyConstraintLookupTests.swift @@ -56,7 +56,6 @@ private final class LookupDriver: LookupBaseDriver, PluginDatabaseDriver, @unche func switchDatabase(to database: String) async throws {} } -@Suite("Primary key constraint lookup") @MainActor struct PrimaryKeyConstraintLookupTests { private static func adapter(_ driver: LookupDriver) -> PluginDriverAdapter { diff --git a/TableProTests/Core/SchemaTracking/SchemaOperationRefusalTests.swift b/TableProTests/Core/SchemaTracking/SchemaOperationRefusalTests.swift index dfa9782800..8b8c2ec94f 100644 --- a/TableProTests/Core/SchemaTracking/SchemaOperationRefusalTests.swift +++ b/TableProTests/Core/SchemaTracking/SchemaOperationRefusalTests.swift @@ -61,7 +61,7 @@ private enum RefusalReason { static let rename = "Renaming a check constraint needs PostgreSQL 9.2 or later." } -@MainActor @Suite("Schema operation refusal") +@MainActor struct SchemaOperationRefusalTests { private static let generatedReason = RefusalReason.generated private static let brinReason = RefusalReason.brin diff --git a/TableProTests/Core/SchemaTracking/SchemaStatementGeneratorPluginTests.swift b/TableProTests/Core/SchemaTracking/SchemaStatementGeneratorPluginTests.swift index 024cc0514c..12712f672e 100644 --- a/TableProTests/Core/SchemaTracking/SchemaStatementGeneratorPluginTests.swift +++ b/TableProTests/Core/SchemaTracking/SchemaStatementGeneratorPluginTests.swift @@ -84,7 +84,6 @@ private final class MockPluginDriver: PluginDatabaseDriver, @unchecked Sendable } } -@Suite("Schema Statement Generator - Plugin Delegation") struct SchemaStatementGeneratorPluginTests { // MARK: - Helpers diff --git a/TableProTests/Core/SchemaTracking/StructureChangeManagerCatalogSpellingTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeManagerCatalogSpellingTests.swift index c0eb898ee3..977533ff7f 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeManagerCatalogSpellingTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeManagerCatalogSpellingTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Structure Change Manager catalog spellings") struct StructureChangeManagerCatalogSpellingTests { @MainActor private func loadedManager() -> StructureChangeManager { let manager = StructureChangeManager() diff --git a/TableProTests/Core/SchemaTracking/StructureChangeManagerClusteredIndexTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeManagerClusteredIndexTests.swift index 1c7a64f342..61f9eeb345 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeManagerClusteredIndexTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeManagerClusteredIndexTests.swift @@ -10,7 +10,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("Structure change manager clustered index adds") +@MainActor struct StructureChangeManagerClusteredIndexTests { private typealias IndexType = EditableIndexDefinition.IndexType diff --git a/TableProTests/Core/SchemaTracking/StructureChangeManagerForeignKeyLoadTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeManagerForeignKeyLoadTests.swift index 2beaa185bd..1a2636aafb 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeManagerForeignKeyLoadTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeManagerForeignKeyLoadTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Structure Change Manager foreign key load") struct StructureChangeManagerForeignKeyLoadTests { private static let rows = [ ForeignKeyInfo( diff --git a/TableProTests/Core/SchemaTracking/StructureChangeManagerIndexExpressionTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeManagerIndexExpressionTests.swift index a105778320..c3e61c0dd6 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeManagerIndexExpressionTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeManagerIndexExpressionTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Structure Change Manager expression indexes") @MainActor struct StructureChangeManagerIndexExpressionTests { private static let keys = "USING btree (tenant_id, lower(email)) INCLUDE (name)" diff --git a/TableProTests/Core/SchemaTracking/StructureChangeManagerPKTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeManagerPKTests.swift index 3978887083..d8e5a9010e 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeManagerPKTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeManagerPKTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Structure Change Manager Primary Key Detection") struct StructureChangeManagerPKTests { // MARK: - Helpers diff --git a/TableProTests/Core/SchemaTracking/StructureChangeManagerUndoTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeManagerUndoTests.swift index 0737dab87d..f6e4007a47 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeManagerUndoTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeManagerUndoTests.swift @@ -12,7 +12,6 @@ import Testing // MARK: - StructureChangeManager Undo Integration Tests -@Suite("Structure Change Manager Undo/Redo Integration") struct StructureChangeManagerUndoTests { // MARK: - Helpers diff --git a/TableProTests/Core/SchemaTracking/StructureChangeValidationTests.swift b/TableProTests/Core/SchemaTracking/StructureChangeValidationTests.swift index 510996ad61..302e690faf 100644 --- a/TableProTests/Core/SchemaTracking/StructureChangeValidationTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureChangeValidationTests.swift @@ -14,7 +14,6 @@ import Testing /// anything was staged. So the "+" in the Foreign Keys tab, which stages a blank row immediately, /// produced `ADD CONSTRAINT "" FOREIGN KEY () REFERENCES "" ()` on MySQL and PostgreSQL and /// "Unsupported schema operation: Add foreign key ''" on SQLite. -@Suite("Structure Change Validation") @MainActor struct StructureChangeValidationTests { private func loadedManager(foreignKeys: [ForeignKeyInfo] = []) -> StructureChangeManager { diff --git a/TableProTests/Core/SchemaTracking/StructureDeclaredTypeEditTests.swift b/TableProTests/Core/SchemaTracking/StructureDeclaredTypeEditTests.swift index c5802895df..887dd3aaa9 100644 --- a/TableProTests/Core/SchemaTracking/StructureDeclaredTypeEditTests.swift +++ b/TableProTests/Core/SchemaTracking/StructureDeclaredTypeEditTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Editing a declared type") struct StructureDeclaredTypeEditTests { @MainActor private func loadedManager() -> StructureChangeManager { let manager = StructureChangeManager() diff --git a/TableProTests/Core/Scripting/ScriptResultEncoderTests.swift b/TableProTests/Core/Scripting/ScriptResultEncoderTests.swift index a1166b559b..9221a4f06b 100644 --- a/TableProTests/Core/Scripting/ScriptResultEncoderTests.swift +++ b/TableProTests/Core/Scripting/ScriptResultEncoderTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Script result encoding") struct ScriptResultEncoderTests { private func rows(of record: [String: Any]) throws -> [[String]] { let raw = try #require(record[ScriptingKeys.QueryResult.rows] as? [[String: Any]]) diff --git a/TableProTests/Core/Scripting/ScriptingDictionaryTests.swift b/TableProTests/Core/Scripting/ScriptingDictionaryTests.swift index b204d26c3a..a057b014fb 100644 --- a/TableProTests/Core/Scripting/ScriptingDictionaryTests.swift +++ b/TableProTests/Core/Scripting/ScriptingDictionaryTests.swift @@ -15,7 +15,6 @@ import Foundation import Testing @MainActor -@Suite("Scripting dictionary") struct ScriptingDictionaryTests { // MARK: - Loading diff --git a/TableProTests/Core/Scripting/ScriptingPolicyTests.swift b/TableProTests/Core/Scripting/ScriptingPolicyTests.swift index 3bc67200b8..5981d545fc 100644 --- a/TableProTests/Core/Scripting/ScriptingPolicyTests.swift +++ b/TableProTests/Core/Scripting/ScriptingPolicyTests.swift @@ -25,7 +25,6 @@ private actor RecordingExecutionGate: ExecutionGate { var lastRequest: OperationRequest? { requests.last } } -@Suite("Scripting policy") struct ScriptingPolicyTests { private func authorized() -> OperationDecision { .authorized( diff --git a/TableProTests/Core/Scripting/ScriptingVisibilityGuardTests.swift b/TableProTests/Core/Scripting/ScriptingVisibilityGuardTests.swift index 9b5758afed..e2a23f2aa0 100644 --- a/TableProTests/Core/Scripting/ScriptingVisibilityGuardTests.swift +++ b/TableProTests/Core/Scripting/ScriptingVisibilityGuardTests.swift @@ -14,7 +14,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Scripting visibility guard") struct ScriptingVisibilityGuardTests { private static let snapshotSource: String = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/ServerDashboard/PostgreSQLDashboardProviderTests.swift b/TableProTests/Core/ServerDashboard/PostgreSQLDashboardProviderTests.swift index 11f3799e87..fffbfdc1aa 100644 --- a/TableProTests/Core/ServerDashboard/PostgreSQLDashboardProviderTests.swift +++ b/TableProTests/Core/ServerDashboard/PostgreSQLDashboardProviderTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL server dashboard across server versions") struct PostgreSQLDashboardProviderTests { private struct QueryFailure: Error {} diff --git a/TableProTests/Core/ServerDashboard/ServerDashboardQueryProviderFactoryTests.swift b/TableProTests/Core/ServerDashboard/ServerDashboardQueryProviderFactoryTests.swift index 8eca4803b0..2b30aa76c6 100644 --- a/TableProTests/Core/ServerDashboard/ServerDashboardQueryProviderFactoryTests.swift +++ b/TableProTests/Core/ServerDashboard/ServerDashboardQueryProviderFactoryTests.swift @@ -8,7 +8,6 @@ import Testing /// The support question is asked on every toolbar and menu validation pass, so it is answered /// without building a provider. It has to give the answer building one would. -@Suite("Server dashboard provider factory") @MainActor struct ServerDashboardQueryProviderFactoryTests { @Test("Support is answered without a provider, and agrees with building one for every known engine") diff --git a/TableProTests/Core/Services/BlobFormattingServiceTests.swift b/TableProTests/Core/Services/BlobFormattingServiceTests.swift index 394283ef14..011bea2ec7 100644 --- a/TableProTests/Core/Services/BlobFormattingServiceTests.swift +++ b/TableProTests/Core/Services/BlobFormattingServiceTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("BlobFormattingService - compact hex (grid context)") @MainActor struct BlobFormattingServiceCompactHexTests { @Test("Issue #1188 exact value renders as 0xD38CE566...534F") @@ -58,7 +57,6 @@ struct BlobFormattingServiceCompactHexTests { } } -@Suite("BlobFormattingService - byte count") @MainActor struct BlobFormattingServiceByteCountTests { @Test("Issue #1188 exact value reports 48 bytes (not 98)") @@ -82,7 +80,6 @@ struct BlobFormattingServiceByteCountTests { } } -@Suite("BlobFormattingService - hex dump (detail context)") @MainActor struct BlobFormattingServiceHexDumpTests { @Test("Issue #1188 first 16 bytes match expected hex dump line") @@ -113,7 +110,6 @@ struct BlobFormattingServiceHexDumpTests { } } -@Suite("BlobFormattingService - editable hex (edit context)") @MainActor struct BlobFormattingServiceEditableHexTests { @Test("Issue #1188 produces space-separated hex bytes") @@ -140,7 +136,6 @@ struct BlobFormattingServiceEditableHexTests { } } -@Suite("BlobFormattingService - parseHex round-trip") @MainActor struct BlobFormattingServiceParseHexTests { @Test("parseHex round-trips issue #1188 bytes via isoLatin1") diff --git a/TableProTests/Core/Services/CalendarMonthTests.swift b/TableProTests/Core/Services/CalendarMonthTests.swift index 334285ec6b..2edeadf92c 100644 --- a/TableProTests/Core/Services/CalendarMonthTests.swift +++ b/TableProTests/Core/Services/CalendarMonthTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Calendar Month") struct CalendarMonthTests { private func calendar(firstWeekday: Int) -> Calendar { var calendar = Calendar(identifier: .gregorian) diff --git a/TableProTests/Core/Services/CellDisplayFormatterTests.swift b/TableProTests/Core/Services/CellDisplayFormatterTests.swift index 603ec913e8..e1fcfa2592 100644 --- a/TableProTests/Core/Services/CellDisplayFormatterTests.swift +++ b/TableProTests/Core/Services/CellDisplayFormatterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("CellDisplayFormatter") @MainActor struct CellDisplayFormatterTests { @Test("nil input returns nil") diff --git a/TableProTests/Core/Services/ClipboardServiceTests.swift b/TableProTests/Core/Services/ClipboardServiceTests.swift index c3ee7d7a94..8c9f4ff6e8 100644 --- a/TableProTests/Core/Services/ClipboardServiceTests.swift +++ b/TableProTests/Core/Services/ClipboardServiceTests.swift @@ -10,7 +10,6 @@ import Testing import UniformTypeIdentifiers @MainActor -@Suite("ClipboardService pasteboard") struct ClipboardServiceTests { private static let csvType = NSPasteboard.PasteboardType("public.comma-separated-values-text") private static let tsvType = NSPasteboard.PasteboardType("public.utf8-tab-separated-values-text") diff --git a/TableProTests/Core/Services/ColumnFetchScopeTests.swift b/TableProTests/Core/Services/ColumnFetchScopeTests.swift index 5ec009180f..8b81a6f5cd 100644 --- a/TableProTests/Core/Services/ColumnFetchScopeTests.swift +++ b/TableProTests/Core/Services/ColumnFetchScopeTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ColumnFetchScope") struct ColumnFetchScopeTests { private let columns = ["id", "name", "email", "payload"] diff --git a/TableProTests/Core/Services/ColumnTypeClassifierTests.swift b/TableProTests/Core/Services/ColumnTypeClassifierTests.swift index 2b19681b8e..c79ebd05b0 100644 --- a/TableProTests/Core/Services/ColumnTypeClassifierTests.swift +++ b/TableProTests/Core/Services/ColumnTypeClassifierTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Column Type Classifier") struct ColumnTypeClassifierTests { private let classifier = ColumnTypeClassifier() diff --git a/TableProTests/Core/Services/ColumnTypeTests.swift b/TableProTests/Core/Services/ColumnTypeTests.swift index 072acc09d1..ec047451bb 100644 --- a/TableProTests/Core/Services/ColumnTypeTests.swift +++ b/TableProTests/Core/Services/ColumnTypeTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Column Type") struct ColumnTypeTests { // MARK: - isEnumType / isSetType Properties diff --git a/TableProTests/Core/Services/ConnectionImportServiceTests.swift b/TableProTests/Core/Services/ConnectionImportServiceTests.swift index f0421aceac..057fbc8d2d 100644 --- a/TableProTests/Core/Services/ConnectionImportServiceTests.swift +++ b/TableProTests/Core/Services/ConnectionImportServiceTests.swift @@ -5,7 +5,6 @@ import TableProSyncTransport @testable import TablePro -@Suite("Connection Import Service") @MainActor struct ConnectionImportServiceTests { @Test("duplicate matching uses host port database and username case-insensitively") diff --git a/TableProTests/Core/Services/ConnectionMenuPolicyTests.swift b/TableProTests/Core/Services/ConnectionMenuPolicyTests.swift index ba74559e34..cb86d88d66 100644 --- a/TableProTests/Core/Services/ConnectionMenuPolicyTests.swift +++ b/TableProTests/Core/Services/ConnectionMenuPolicyTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection menu policy") struct ConnectionMenuPolicyTests { @Test("Disconnect is offered for a live session") func offeredWhenConnected() { diff --git a/TableProTests/Core/Services/ConnectionSharingTests.swift b/TableProTests/Core/Services/ConnectionSharingTests.swift index 0f55ea1611..9329889a70 100644 --- a/TableProTests/Core/Services/ConnectionSharingTests.swift +++ b/TableProTests/Core/Services/ConnectionSharingTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Connection Sharing") @MainActor struct ConnectionSharingTests { diff --git a/TableProTests/Core/Services/CredentialProfileSharingTests.swift b/TableProTests/Core/Services/CredentialProfileSharingTests.swift index 63d974d4a1..0c35b1eeb1 100644 --- a/TableProTests/Core/Services/CredentialProfileSharingTests.swift +++ b/TableProTests/Core/Services/CredentialProfileSharingTests.swift @@ -11,7 +11,6 @@ import Testing /// A bundle travels between Macs, so a profile in one has to arrive as something the receiving Mac /// can resolve. Names travel; ids and secrets do not. -@Suite("Credential profile sharing") @MainActor struct CredentialProfileSharingTests { @Test("A profile's password never reaches an export bundle") diff --git a/TableProTests/Core/Services/DateEditingServiceTests.swift b/TableProTests/Core/Services/DateEditingServiceTests.swift index 0e10107acb..d775fee9fc 100644 --- a/TableProTests/Core/Services/DateEditingServiceTests.swift +++ b/TableProTests/Core/Services/DateEditingServiceTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("Date Editing") struct DateEditingServiceTests { @Test("MySQL datetime round-trips unchanged") func mysqlDatetimeRoundTrip() throws { diff --git a/TableProTests/Core/Services/DateFormattingServiceTests.swift b/TableProTests/Core/Services/DateFormattingServiceTests.swift index 1faba128de..7b71a6034a 100644 --- a/TableProTests/Core/Services/DateFormattingServiceTests.swift +++ b/TableProTests/Core/Services/DateFormattingServiceTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("DateFormattingService column-type buckets") @MainActor struct DateFormattingServiceTests { @Test("DATE column with datetime wire value formats to date only") @@ -91,7 +90,6 @@ struct DateFormattingServiceTests { /// A wall clock alone does not name an instant, so the offset the database sent is printed with it. /// The offset is the literal text off the value, never a pattern token: a token prints the /// formatter's zone, which for a value carrying none is the reader's own. (#2702) -@Suite("DateFormattingService time zone display") @MainActor struct DateFormattingServiceTimeZoneTests { @Test("An offset-bearing timestamp keeps its offset") diff --git a/TableProTests/Core/Services/EditorTabDetachPolicyTests.swift b/TableProTests/Core/Services/EditorTabDetachPolicyTests.swift index d37a7d039d..6b3c1349be 100644 --- a/TableProTests/Core/Services/EditorTabDetachPolicyTests.swift +++ b/TableProTests/Core/Services/EditorTabDetachPolicyTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Editor tab detach policy") struct EditorTabDetachPolicyTests { @Test("A tab among others, with nothing pending, on a live connection, can be detached") func ordinaryTabDetaches() { diff --git a/TableProTests/Core/Services/Execution/AutocommitOnlyStatementTests.swift b/TableProTests/Core/Services/Execution/AutocommitOnlyStatementTests.swift index a481039381..0cd0f79c01 100644 --- a/TableProTests/Core/Services/Execution/AutocommitOnlyStatementTests.swift +++ b/TableProTests/Core/Services/Execution/AutocommitOnlyStatementTests.swift @@ -34,7 +34,6 @@ private enum AutocommitOnlyFixture { } } -@Suite("Autocommit-only statements, PostgreSQL") struct AutocommitOnlyStatementPostgreSQLTests { @Test( "PostgreSQL 17 refuses these inside a transaction block", @@ -125,7 +124,6 @@ struct AutocommitOnlyStatementPostgreSQLTests { } } -@Suite("Autocommit-only statements, Redshift and CockroachDB") struct AutocommitOnlyStatementWarehouseTests { @Test( "Redshift restricts its own statements as well as PostgreSQL's", @@ -165,7 +163,6 @@ struct AutocommitOnlyStatementWarehouseTests { } } -@Suite("Autocommit-only statements, MySQL") struct AutocommitOnlyStatementMySQLTests { @Test( "MySQL 8.4 and MariaDB 11.4 refuse these inside a transaction", @@ -257,7 +254,6 @@ struct AutocommitOnlyStatementMySQLTests { } } -@Suite("Autocommit-only statements, SQLite and DuckDB") struct AutocommitOnlyStatementEmbeddedTests { @Test( "SQLite refuses or silently ignores these inside a transaction", @@ -337,7 +333,6 @@ struct AutocommitOnlyStatementEmbeddedTests { } } -@Suite("Autocommit-only statements, SQL Server and unknown engines") struct AutocommitOnlyStatementSQLServerTests { @Test( "T-SQL cannot hold these in an explicit transaction", diff --git a/TableProTests/Core/Services/Execution/BatchCommitStatementTests.swift b/TableProTests/Core/Services/Execution/BatchCommitStatementTests.swift index 20ba7251b4..687173ca76 100644 --- a/TableProTests/Core/Services/Execution/BatchCommitStatementTests.swift +++ b/TableProTests/Core/Services/Execution/BatchCommitStatementTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Batch commit statement") struct BatchCommitStatementTests { private static func matches(_ sql: String, type: DatabaseType = .postgresql) -> Bool { BatchCommitStatement.matches(sql, grammar: type.lexicalGrammar) diff --git a/TableProTests/Core/Services/Execution/BatchStatementRunTests.swift b/TableProTests/Core/Services/Execution/BatchStatementRunTests.swift index 5827326e0c..938c15a02a 100644 --- a/TableProTests/Core/Services/Execution/BatchStatementRunTests.swift +++ b/TableProTests/Core/Services/Execution/BatchStatementRunTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Batch statement run") @MainActor struct BatchStatementRunTests { private static let statements = ["INSERT INTO t VALUES (1)", "VACUUM", "SELECT 1"] diff --git a/TableProTests/Core/Services/Execution/BatchTransactionPlanTests.swift b/TableProTests/Core/Services/Execution/BatchTransactionPlanTests.swift index 3588fa3319..185bd773ad 100644 --- a/TableProTests/Core/Services/Execution/BatchTransactionPlanTests.swift +++ b/TableProTests/Core/Services/Execution/BatchTransactionPlanTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Batch transaction plan") struct BatchTransactionPlanTests { private static let textPlans: [BatchTransactionPlan] = [.appTransaction, .scriptTransaction, .autocommit] @@ -63,7 +62,6 @@ struct BatchTransactionPlanTests { } } -@Suite("Session transaction state, as the app reads it") struct SessionTransactionStateTests { @Test( "Nothing the app owns opens a transaction over one the session is holding", diff --git a/TableProTests/Core/Services/Execution/BatchTransactionPolicyTests.swift b/TableProTests/Core/Services/Execution/BatchTransactionPolicyTests.swift index 8851bb5430..f3e3df23bf 100644 --- a/TableProTests/Core/Services/Execution/BatchTransactionPolicyTests.swift +++ b/TableProTests/Core/Services/Execution/BatchTransactionPolicyTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("Batch transaction policy") struct BatchTransactionPolicyTests { private static func plan(_ statements: [String], _ type: DatabaseType) -> BatchTransactionPlan { BatchTransactionPolicy.plan( diff --git a/TableProTests/Core/Services/Execution/CommitOutcomeDiagnosisTests.swift b/TableProTests/Core/Services/Execution/CommitOutcomeDiagnosisTests.swift index 131bfd2cdf..00121bb780 100644 --- a/TableProTests/Core/Services/Execution/CommitOutcomeDiagnosisTests.swift +++ b/TableProTests/Core/Services/Execution/CommitOutcomeDiagnosisTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Commit outcome diagnosis") struct CommitOutcomeDiagnosisTests { /// The sentences the engines actually produce when the socket went before the answer did. @Test( diff --git a/TableProTests/Core/Services/Execution/ExecutionGateTests.swift b/TableProTests/Core/Services/Execution/ExecutionGateTests.swift index 3e80ec9df2..ce1a0b3aa3 100644 --- a/TableProTests/Core/Services/Execution/ExecutionGateTests.swift +++ b/TableProTests/Core/Services/Execution/ExecutionGateTests.swift @@ -46,7 +46,6 @@ final class StubAuthenticating: OperationAuthenticating, @unchecked Sendable { } @MainActor -@Suite("ExecutionGate") struct ExecutionGateTests { private func makeGate( level: SafeModeLevel, diff --git a/TableProTests/Core/Services/Execution/MultiStatementFailureTests.swift b/TableProTests/Core/Services/Execution/MultiStatementFailureTests.swift index 80573df2dc..6b31814b93 100644 --- a/TableProTests/Core/Services/Execution/MultiStatementFailureTests.swift +++ b/TableProTests/Core/Services/Execution/MultiStatementFailureTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Multi-statement failure report") struct MultiStatementFailureTests { private static let syntaxError = "You have an error in your SQL syntax near 'READ WRITE'" diff --git a/TableProTests/Core/Services/Execution/OperationConfirmationPromptTests.swift b/TableProTests/Core/Services/Execution/OperationConfirmationPromptTests.swift index 54ac22f2c3..9af1240f9f 100644 --- a/TableProTests/Core/Services/Execution/OperationConfirmationPromptTests.swift +++ b/TableProTests/Core/Services/Execution/OperationConfirmationPromptTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing import TableProPluginKit -@Suite("Operation confirmation prompt") @MainActor struct OperationConfirmationPromptTests { private static let escape = "\u{1B}" diff --git a/TableProTests/Core/Services/Execution/QueryBatchPlannerTests.swift b/TableProTests/Core/Services/Execution/QueryBatchPlannerTests.swift index 9449ef83bd..f4f10eda77 100644 --- a/TableProTests/Core/Services/Execution/QueryBatchPlannerTests.swift +++ b/TableProTests/Core/Services/Execution/QueryBatchPlannerTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("Query batch planning") @MainActor struct QueryBatchPlannerTests { private static let reporterScript = """ diff --git a/TableProTests/Core/Services/Execution/QueryBatchResultTests.swift b/TableProTests/Core/Services/Execution/QueryBatchResultTests.swift index b7a95648c9..f52a2d2e5d 100644 --- a/TableProTests/Core/Services/Execution/QueryBatchResultTests.swift +++ b/TableProTests/Core/Services/Execution/QueryBatchResultTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Answers of a repeated batch") struct QueryBatchResultTests { private func answer(resultSets: Int, rowsAffected: Int = 0, errorAfter: Int? = nil) -> QueryBatchResult { QueryBatchResult( diff --git a/TableProTests/Core/Services/Execution/TransactionAccessModePolicyTests.swift b/TableProTests/Core/Services/Execution/TransactionAccessModePolicyTests.swift index e17771622a..691d6c6852 100644 --- a/TableProTests/Core/Services/Execution/TransactionAccessModePolicyTests.swift +++ b/TableProTests/Core/Services/Execution/TransactionAccessModePolicyTests.swift @@ -7,7 +7,6 @@ import TableProPluginKit import Testing -@Suite("Transaction access mode policy") struct TransactionAccessModePolicyTests { @Test("Read operations never declare write intent") func readOperationsInheritServerDefault() { diff --git a/TableProTests/Core/Services/Execution/TransactionEngineFamilyTests.swift b/TableProTests/Core/Services/Execution/TransactionEngineFamilyTests.swift index 91e1eb32af..93fa022209 100644 --- a/TableProTests/Core/Services/Execution/TransactionEngineFamilyTests.swift +++ b/TableProTests/Core/Services/Execution/TransactionEngineFamilyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Transaction engine family") struct TransactionEngineFamilyTests { @Test( "Every PostgreSQL-compatible engine reads the PostgreSQL rules", diff --git a/TableProTests/Core/Services/ExecutionAuditRecordTests.swift b/TableProTests/Core/Services/ExecutionAuditRecordTests.swift index 01287cb17e..50470ab3dd 100644 --- a/TableProTests/Core/Services/ExecutionAuditRecordTests.swift +++ b/TableProTests/Core/Services/ExecutionAuditRecordTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("ExecutionAuditRecord") struct ExecutionAuditRecordTests { private func chain(_ count: Int) -> [ExecutionAuditRecord] { var records: [ExecutionAuditRecord] = [] @@ -120,7 +119,6 @@ struct ExecutionAuditRecordTests { } } -@Suite("ExecutionAuditLog") struct ExecutionAuditLogTests { private func makeLog() -> ExecutionAuditLog { let url = FileManager.default.temporaryDirectory diff --git a/TableProTests/Core/Services/Export/ConnectionExportDataTests.swift b/TableProTests/Core/Services/Export/ConnectionExportDataTests.swift index 9b70816678..3c114c62b4 100644 --- a/TableProTests/Core/Services/Export/ConnectionExportDataTests.swift +++ b/TableProTests/Core/Services/Export/ConnectionExportDataTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Connection Export Data") @MainActor struct ConnectionExportDataTests { private func makeConnection(name: String = "Dev") -> DatabaseConnection { @@ -50,7 +49,6 @@ struct ConnectionExportDataTests { } } -@Suite("Connection Export Passphrase State") struct ConnectionExportPassphraseStateTests { @Test("empty passphrase is not exportable") func testEmpty() { diff --git a/TableProTests/Core/Services/Export/ImportFileFormatResolverTests.swift b/TableProTests/Core/Services/Export/ImportFileFormatResolverTests.swift index 55ff913541..d99501537a 100644 --- a/TableProTests/Core/Services/Export/ImportFileFormatResolverTests.swift +++ b/TableProTests/Core/Services/Export/ImportFileFormatResolverTests.swift @@ -10,7 +10,6 @@ import UniformTypeIdentifiers /// The four bundled importers, spelled here rather than read from `PluginManager` because plugins /// never load under XCTest. -@Suite("Import file format resolution") struct ImportFileFormatResolverTests { private let sql = ImportFormatOption(id: "sql", name: "SQL", acceptedFileExtensions: ["sql", "gz"]) private let csv = ImportFormatOption(id: "csv", name: "CSV", acceptedFileExtensions: ["csv", "tsv"]) diff --git a/TableProTests/Core/Services/ExportServiceTimeoutTests.swift b/TableProTests/Core/Services/ExportServiceTimeoutTests.swift index 91ce3a3dcc..723fb6f6d5 100644 --- a/TableProTests/Core/Services/ExportServiceTimeoutTests.swift +++ b/TableProTests/Core/Services/ExportServiceTimeoutTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing @MainActor -@Suite("ExportService Statement Timeout") struct ExportServiceTimeoutTests { private func makeService(driver: MockDatabaseDriver) -> ExportService { ExportService(driver: driver, databaseType: .mysql) diff --git a/TableProTests/Core/Services/ExportStateTests.swift b/TableProTests/Core/Services/ExportStateTests.swift index 06a68c00fb..545880f73f 100644 --- a/TableProTests/Core/Services/ExportStateTests.swift +++ b/TableProTests/Core/Services/ExportStateTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ExportState") struct ExportStateTests { @Test("Default init has correct defaults") func defaultInitHasCorrectDefaults() { diff --git a/TableProTests/Core/Services/FileDropDestinationTests.swift b/TableProTests/Core/Services/FileDropDestinationTests.swift index 9554135116..be065c38d6 100644 --- a/TableProTests/Core/Services/FileDropDestinationTests.swift +++ b/TableProTests/Core/Services/FileDropDestinationTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("File drop destination") @MainActor struct FileDropDestinationTests { @Test("A SQL file is openable") diff --git a/TableProTests/Core/Services/FilterColumnMenuTests.swift b/TableProTests/Core/Services/FilterColumnMenuTests.swift index 64c207e884..840968fa24 100644 --- a/TableProTests/Core/Services/FilterColumnMenuTests.swift +++ b/TableProTests/Core/Services/FilterColumnMenuTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Filter Column Menu") struct FilterColumnMenuTests { private func path(_ path: String, depth: Int, arrays: [String] = [], type: String = "VARCHAR") -> PluginFieldPath { PluginFieldPath(path: path, typeName: type, depth: depth, arrayPrefixes: arrays) diff --git a/TableProTests/Core/Services/Filtering/FilterListOperandPinningTests.swift b/TableProTests/Core/Services/Filtering/FilterListOperandPinningTests.swift index e942afa15e..ab0bb9aa64 100644 --- a/TableProTests/Core/Services/Filtering/FilterListOperandPinningTests.swift +++ b/TableProTests/Core/Services/Filtering/FilterListOperandPinningTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Filter list operand call sites") struct FilterListOperandPinningTests { private static let mysql = SQLDialectDescriptor( identifierQuote: "`", keywords: [], functions: [], dataTypes: [], diff --git a/TableProTests/Core/Services/Filtering/FilterOperandTests.swift b/TableProTests/Core/Services/Filtering/FilterOperandTests.swift index 58a2faf9b8..87bb38816c 100644 --- a/TableProTests/Core/Services/Filtering/FilterOperandTests.swift +++ b/TableProTests/Core/Services/Filtering/FilterOperandTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Filter operand") struct FilterOperandTests { private static let text = ColumnType.text(rawType: "VARCHAR") private static let integer = ColumnType.integer(rawType: "INT") diff --git a/TableProTests/Core/Services/ForeignApp/BeekeeperEncryptorTests.swift b/TableProTests/Core/Services/ForeignApp/BeekeeperEncryptorTests.swift index 518dbb49a7..e455b53b36 100644 --- a/TableProTests/Core/Services/ForeignApp/BeekeeperEncryptorTests.swift +++ b/TableProTests/Core/Services/ForeignApp/BeekeeperEncryptorTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing @testable import TablePro -@Suite("BeekeeperEncryptor") struct BeekeeperEncryptorTests { @Test func decryptsStringEncryptedInSimpleEncryptorFormat() throws { diff --git a/TableProTests/Core/Services/ForeignApp/ForeignAppImporterRegistryTests.swift b/TableProTests/Core/Services/ForeignApp/ForeignAppImporterRegistryTests.swift index a3c03f1002..9f6fe77e75 100644 --- a/TableProTests/Core/Services/ForeignApp/ForeignAppImporterRegistryTests.swift +++ b/TableProTests/Core/Services/ForeignApp/ForeignAppImporterRegistryTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ForeignAppImporterRegistry") struct ForeignAppImporterRegistryTests { @Test("Registry contains all importers") func testRegistryContainsAllImporters() { diff --git a/TableProTests/Core/Services/ForeignApp/JDBCConnectionStringTests.swift b/TableProTests/Core/Services/ForeignApp/JDBCConnectionStringTests.swift index 86c59b267b..0e9874ae6a 100644 --- a/TableProTests/Core/Services/ForeignApp/JDBCConnectionStringTests.swift +++ b/TableProTests/Core/Services/ForeignApp/JDBCConnectionStringTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("JDBCConnectionString") struct JDBCConnectionStringTests { @Test("MySQL with port and database") func mysql() { diff --git a/TableProTests/Core/Services/ForeignApp/KdbxDatabaseTests.swift b/TableProTests/Core/Services/ForeignApp/KdbxDatabaseTests.swift index 7106c386b9..76795b4015 100644 --- a/TableProTests/Core/Services/ForeignApp/KdbxDatabaseTests.swift +++ b/TableProTests/Core/Services/ForeignApp/KdbxDatabaseTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("KdbxDatabase") struct KdbxDatabaseTests { @Test("reads entry and decrypts ChaCha20-protected password") func roundTrip() throws { diff --git a/TableProTests/Core/Services/ForeignApp/KdbxInnerStreamCipherTests.swift b/TableProTests/Core/Services/ForeignApp/KdbxInnerStreamCipherTests.swift index a87d8972ad..b0aa9e662b 100644 --- a/TableProTests/Core/Services/ForeignApp/KdbxInnerStreamCipherTests.swift +++ b/TableProTests/Core/Services/ForeignApp/KdbxInnerStreamCipherTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ChaCha20Cipher") struct ChaCha20CipherTests { /// RFC 8439 A.1 Test Vector #1: key = 0, nonce = 0, counter starts at 0. @Test("RFC 8439 keystream block 0") diff --git a/TableProTests/Core/Services/ForeignApp/NavicatCipherTests.swift b/TableProTests/Core/Services/ForeignApp/NavicatCipherTests.swift index b2065821c0..33bf89d2cc 100644 --- a/TableProTests/Core/Services/ForeignApp/NavicatCipherTests.swift +++ b/TableProTests/Core/Services/ForeignApp/NavicatCipherTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("NavicatCipher") struct NavicatCipherTests { @Test("Decrypts a Navicat 12+ (AES) password") func decryptsV2GoldenVector() { diff --git a/TableProTests/Core/Services/ForeignKeyLabelColumnTests.swift b/TableProTests/Core/Services/ForeignKeyLabelColumnTests.swift index 5ba1d6e3ec..c53abca03f 100644 --- a/TableProTests/Core/Services/ForeignKeyLabelColumnTests.swift +++ b/TableProTests/Core/Services/ForeignKeyLabelColumnTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyLabelColumn") struct ForeignKeyLabelColumnTests { private let key = ForeignKeyLookupColumn(name: "id", type: .integer(rawType: "INTEGER")) diff --git a/TableProTests/Core/Services/ForeignKeyLabelTextTests.swift b/TableProTests/Core/Services/ForeignKeyLabelTextTests.swift index 3cfcd86814..1adcc707eb 100644 --- a/TableProTests/Core/Services/ForeignKeyLabelTextTests.swift +++ b/TableProTests/Core/Services/ForeignKeyLabelTextTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyLabelText") struct ForeignKeyLabelTextTests { @Test("Two values read as one line") func twoValuesJoin() { diff --git a/TableProTests/Core/Services/ForeignKeyTargetScopeTests.swift b/TableProTests/Core/Services/ForeignKeyTargetScopeTests.swift index 610bf63454..ff4b7baa07 100644 --- a/TableProTests/Core/Services/ForeignKeyTargetScopeTests.swift +++ b/TableProTests/Core/Services/ForeignKeyTargetScopeTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Foreign key target scope") struct ForeignKeyTargetScopeTests { private let connectionId = UUID() diff --git a/TableProTests/Core/Services/Formatting/BinaryTextDecoderTests.swift b/TableProTests/Core/Services/Formatting/BinaryTextDecoderTests.swift index 23433ecaf0..1f206eeb70 100644 --- a/TableProTests/Core/Services/Formatting/BinaryTextDecoderTests.swift +++ b/TableProTests/Core/Services/Formatting/BinaryTextDecoderTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("BinaryTextDecoder") struct BinaryTextDecoderTests { @Test("ASCII bytes decode to their text") func asciiDecodes() { diff --git a/TableProTests/Core/Services/Formatting/ByteSizeFormattingTests.swift b/TableProTests/Core/Services/Formatting/ByteSizeFormattingTests.swift index 91552df8bb..0fda505c05 100644 --- a/TableProTests/Core/Services/Formatting/ByteSizeFormattingTests.swift +++ b/TableProTests/Core/Services/Formatting/ByteSizeFormattingTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Byte and duration formatting") struct ByteSizeFormattingTests { @Test("Sizes carry a unit and scale up") func sizesScale() { @@ -63,7 +62,6 @@ struct ByteSizeFormattingTests { } } -@Suite("Date display formatting") @MainActor struct DateDisplayFormattingTests { @Test("A fixed pattern renders in the Gregorian calendar whatever the region is") diff --git a/TableProTests/Core/Services/Formatting/CellImageSnifferTests.swift b/TableProTests/Core/Services/Formatting/CellImageSnifferTests.swift index 6bd4e4602c..8ed7dfccba 100644 --- a/TableProTests/Core/Services/Formatting/CellImageSnifferTests.swift +++ b/TableProTests/Core/Services/Formatting/CellImageSnifferTests.swift @@ -87,7 +87,6 @@ private enum ImageFixtures { } } -@Suite("CellImageSniffer raster formats") struct CellImageSnifferRasterTests { @Test( "an encoder's own output is recognised", @@ -150,7 +149,6 @@ struct CellImageSnifferRasterTests { } } -@Suite("CellImageSniffer SVG documents") struct CellImageSnifferSvgTests { @Test( "a document whose root element is svg is recognised behind any prologue", diff --git a/TableProTests/Core/Services/Formatting/CellValueContentDetectorTests.swift b/TableProTests/Core/Services/Formatting/CellValueContentDetectorTests.swift index aa96906c14..c7f96e41fc 100644 --- a/TableProTests/Core/Services/Formatting/CellValueContentDetectorTests.swift +++ b/TableProTests/Core/Services/Formatting/CellValueContentDetectorTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("CellValueContentDetector") struct CellValueContentDetectorTests { @Test("empty string is plain") func emptyIsPlain() { @@ -89,7 +88,6 @@ struct CellValueContentDetectorTests { } } -@Suite("CellValueContentDetector image content") struct CellValueContentDetectorImageTests { private func encodedPng() -> Data { guard let representation = NSBitmapImageRep( diff --git a/TableProTests/Core/Services/Formatting/DatabaseDateParserTests.swift b/TableProTests/Core/Services/Formatting/DatabaseDateParserTests.swift index cd45c2cef9..226e616582 100644 --- a/TableProTests/Core/Services/Formatting/DatabaseDateParserTests.swift +++ b/TableProTests/Core/Services/Formatting/DatabaseDateParserTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("DatabaseDateParser") struct DatabaseDateParserTests { /// Every spelling TablePro's drivers put on the wire. Display, the chart's time axis and the /// cell editor all read this one list, which is what stops a second grammar drifting from it. diff --git a/TableProTests/Core/Services/Formatting/JsonReindenterTests.swift b/TableProTests/Core/Services/Formatting/JsonReindenterTests.swift index 7a3e7212e3..88fab2ee25 100644 --- a/TableProTests/Core/Services/Formatting/JsonReindenterTests.swift +++ b/TableProTests/Core/Services/Formatting/JsonReindenterTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("JsonReindenter") struct JsonReindenterTests { @Test("Reindent preserves original key order") func reindentPreservesKeyOrder() throws { diff --git a/TableProTests/Core/Services/Formatting/MongoShellFormatterTests.swift b/TableProTests/Core/Services/Formatting/MongoShellFormatterTests.swift index 89aeb7ce4a..b3c66d1d19 100644 --- a/TableProTests/Core/Services/Formatting/MongoShellFormatterTests.swift +++ b/TableProTests/Core/Services/Formatting/MongoShellFormatterTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("MongoShellFormatter") struct MongoShellFormatterTests { private func formatted(_ text: String) throws -> String { try MongoShellFormatter().format(text, cursorOffset: nil).text diff --git a/TableProTests/Core/Services/Formatting/PhpSerializeParserTests.swift b/TableProTests/Core/Services/Formatting/PhpSerializeParserTests.swift index b9696b8d10..754b81c850 100644 --- a/TableProTests/Core/Services/Formatting/PhpSerializeParserTests.swift +++ b/TableProTests/Core/Services/Formatting/PhpSerializeParserTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("PhpSerializeParser - scalar tokens") struct PhpSerializeParserScalarTests { @Test("null token parses to .null") func nullToken() { @@ -68,7 +67,6 @@ struct PhpSerializeParserScalarTests { } } -@Suite("PhpSerializeParser - strings") struct PhpSerializeParserStringTests { @Test("ASCII string parses") func asciiString() { @@ -106,7 +104,6 @@ struct PhpSerializeParserStringTests { } } -@Suite("PhpSerializeParser - arrays") struct PhpSerializeParserArrayTests { @Test("empty array parses") func emptyArray() { @@ -156,7 +153,6 @@ struct PhpSerializeParserArrayTests { } } -@Suite("PhpSerializeParser - objects") struct PhpSerializeParserObjectTests { @Test("object with public property") func publicProperty() { @@ -203,7 +199,6 @@ struct PhpSerializeParserObjectTests { } } -@Suite("PhpSerializeParser - special tokens") struct PhpSerializeParserSpecialTests { @Test("C token returns .serializable with class + payload") func serializableToken() { @@ -251,7 +246,6 @@ struct PhpSerializeParserSpecialTests { } } -@Suite("PhpSerializeParser - depth cap") struct PhpSerializeParserDepthTests { @Test("looksLikePhpSerialized accepts valid PHP-like prefix") func looksLikePositive() { diff --git a/TableProTests/Core/Services/Formatting/ValueDisplayDetectorTests.swift b/TableProTests/Core/Services/Formatting/ValueDisplayDetectorTests.swift index 667cff6668..e0704f81c3 100644 --- a/TableProTests/Core/Services/Formatting/ValueDisplayDetectorTests.swift +++ b/TableProTests/Core/Services/Formatting/ValueDisplayDetectorTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ValueDisplayDetector") @MainActor struct ValueDisplayDetectorTests { private func detect( diff --git a/TableProTests/Core/Services/Formatting/ValueDisplayFormatTests.swift b/TableProTests/Core/Services/Formatting/ValueDisplayFormatTests.swift index a22e58aac2..9f3d44c8e4 100644 --- a/TableProTests/Core/Services/Formatting/ValueDisplayFormatTests.swift +++ b/TableProTests/Core/Services/Formatting/ValueDisplayFormatTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("ValueDisplayFormat") struct ValueDisplayFormatTests { @Test("rawValue strings stay stable") func rawValueStability() { diff --git a/TableProTests/Core/Services/Highlight/HighlightConditionTests.swift b/TableProTests/Core/Services/Highlight/HighlightConditionTests.swift index c18f9d2f9f..c5ed69ea8e 100644 --- a/TableProTests/Core/Services/Highlight/HighlightConditionTests.swift +++ b/TableProTests/Core/Services/Highlight/HighlightConditionTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Highlight condition matching") struct HighlightConditionTests { private func matches( _ value: PluginCellValue, diff --git a/TableProTests/Core/Services/Highlight/HighlightRuleSetTests.swift b/TableProTests/Core/Services/Highlight/HighlightRuleSetTests.swift index 7c78822155..c6ce12c17e 100644 --- a/TableProTests/Core/Services/Highlight/HighlightRuleSetTests.swift +++ b/TableProTests/Core/Services/Highlight/HighlightRuleSetTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Highlight rule set") struct HighlightRuleSetTests { private let columns = ["id", "status", "total"] private let types: [ColumnType] = [.integer(rawType: "INT"), .text(rawType: "VARCHAR"), .decimal(rawType: "DECIMAL")] @@ -82,7 +81,6 @@ struct HighlightRuleSetTests { } } -@Suite("Highlight rule descriptions and quick rules") @MainActor struct HighlightRuleDescriptionTests { @Test("A comparison reads as column, symbol and quoted value") diff --git a/TableProTests/Core/Services/ImportStateTests.swift b/TableProTests/Core/Services/ImportStateTests.swift index a4a5d2b9f9..1167f8c494 100644 --- a/TableProTests/Core/Services/ImportStateTests.swift +++ b/TableProTests/Core/Services/ImportStateTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("ImportState") struct ImportStateTests { @Test("Default init has correct defaults") func defaultInitHasCorrectDefaults() { diff --git a/TableProTests/Core/Services/ImportStatementFormatTests.swift b/TableProTests/Core/Services/ImportStatementFormatTests.swift index 691e0e523a..6fed2a5add 100644 --- a/TableProTests/Core/Services/ImportStatementFormatTests.swift +++ b/TableProTests/Core/Services/ImportStatementFormatTests.swift @@ -9,7 +9,6 @@ import Testing /// The statement dialog runs a file of statements. A format that needs a target table is routed to /// the row mapping sheet instead, so listing one in the statement dialog's picker only ever /// produced "No target table configured for row import" once the user pressed Import. -@Suite("Import statement format availability") struct ImportStatementFormatTests { private func isStatementFormat( requiresTargetTable: Bool = false, diff --git a/TableProTests/Core/Services/Infrastructure/AgentLaunchRoutingTests.swift b/TableProTests/Core/Services/Infrastructure/AgentLaunchRoutingTests.swift index 291bc146dc..9f28639662 100644 --- a/TableProTests/Core/Services/Infrastructure/AgentLaunchRoutingTests.swift +++ b/TableProTests/Core/Services/Infrastructure/AgentLaunchRoutingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Agent launch routing") @MainActor struct AgentLaunchRoutingTests { /// The welcome window's second way in goes through the one chokepoint every connection intent diff --git a/TableProTests/Core/Services/Infrastructure/AgentSessionRegistryTests.swift b/TableProTests/Core/Services/Infrastructure/AgentSessionRegistryTests.swift index 5e22055bbd..f009821b40 100644 --- a/TableProTests/Core/Services/Infrastructure/AgentSessionRegistryTests.swift +++ b/TableProTests/Core/Services/Infrastructure/AgentSessionRegistryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AgentSessionRegistry") @MainActor struct AgentSessionRegistryTests { private func makeStore() -> AgentSessionStore { diff --git a/TableProTests/Core/Services/Infrastructure/AppActivationPolicySourceTests.swift b/TableProTests/Core/Services/Infrastructure/AppActivationPolicySourceTests.swift index f511c2caea..61c7520f7d 100644 --- a/TableProTests/Core/Services/Infrastructure/AppActivationPolicySourceTests.swift +++ b/TableProTests/Core/Services/Infrastructure/AppActivationPolicySourceTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("App activation policy call sites") struct AppActivationPolicySourceTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/Services/Infrastructure/AppActivationPolicyTests.swift b/TableProTests/Core/Services/Infrastructure/AppActivationPolicyTests.swift index 87bd2e04b1..1a0112d6ac 100644 --- a/TableProTests/Core/Services/Infrastructure/AppActivationPolicyTests.swift +++ b/TableProTests/Core/Services/Infrastructure/AppActivationPolicyTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("App activation policy") struct AppActivationPolicyTests { @Test("The bridge's launch flag makes the session a machine's") func launchFlagResolvesOrigin() { diff --git a/TableProTests/Core/Services/Infrastructure/BrowseCollapseStateOwnershipTests.swift b/TableProTests/Core/Services/Infrastructure/BrowseCollapseStateOwnershipTests.swift index 83c8273b29..c0430a305e 100644 --- a/TableProTests/Core/Services/Infrastructure/BrowseCollapseStateOwnershipTests.swift +++ b/TableProTests/Core/Services/Infrastructure/BrowseCollapseStateOwnershipTests.swift @@ -13,7 +13,6 @@ import Testing /// has its own collapsed sidebar and inspector. Keyed by connection id in a static, the second /// window to enter Agent mode overwrote what the first had recorded, and the first then came out of /// the mode with the second window's layout. -@Suite("Browse collapse state ownership") @MainActor struct BrowseCollapseStateOwnershipTests { private static let connectionId = UUID(uuidString: "00000000-0000-0000-0000-0000000000D4") diff --git a/TableProTests/Core/Services/Infrastructure/CommandLineToolInstallerTests.swift b/TableProTests/Core/Services/Infrastructure/CommandLineToolInstallerTests.swift index c187113499..44a3794948 100644 --- a/TableProTests/Core/Services/Infrastructure/CommandLineToolInstallerTests.swift +++ b/TableProTests/Core/Services/Infrastructure/CommandLineToolInstallerTests.swift @@ -30,7 +30,6 @@ private final class CancellingShell: PrivilegedShellRunning { } @MainActor -@Suite("CommandLineToolInstaller") struct CommandLineToolInstallerTests { private func makeDirectory(named name: String = UUID().uuidString) throws -> String { let path = NSTemporaryDirectory().appending("CommandLineToolInstallerTests.\(name)") diff --git a/TableProTests/Core/Services/Infrastructure/ConnectedSessionDirectoryTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectedSessionDirectoryTests.swift index a9faf492d6..0f9dfbd302 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectedSessionDirectoryTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectedSessionDirectoryTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Connected session directory") @MainActor struct ConnectedSessionDirectoryTests { private func session( diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuDelegateTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuDelegateTests.swift index b831a4ca3f..4456b63b2d 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuDelegateTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuDelegateTests.swift @@ -20,7 +20,6 @@ private final class ContextSource { /// What the Actions pull-down draws for a context. The resolver decides the entries and is pinned by /// its own suite; this pins how they become menu items, which is where a target, a missing /// `representedObject` or a lost chord would break the menu without the resolver noticing. -@Suite("Connection actions menu delegate") @MainActor struct ConnectionActionsMenuDelegateTests { private static func context( diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuResolverTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuResolverTests.swift index 026f7a4e9c..c7d1c5db81 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuResolverTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionActionsMenuResolverTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Connection actions menu resolver") struct ConnectionActionsMenuResolverTests { private static let tabKinds: [TabType] = [ .query, .table, .createTable, .erDiagram, .serverDashboard, .usersRoles, .insights, .objectSource, diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionCloseActionTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionCloseActionTests.swift index 89ffe2ea4d..b601e435d4 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionCloseActionTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionCloseActionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection close decision") @MainActor struct ConnectionCloseActionTests { /// The case the old command failed on. A connection the window hosts but that has no session diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionLivenessTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionLivenessTests.swift index 7ea449c376..de0cca8047 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionLivenessTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionLivenessTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection liveness") struct ConnectionLivenessPhaseTests { private static let failure = ConnectionFailureInfo(message: "The connection stopped responding.") @@ -93,7 +92,6 @@ struct ConnectionLivenessPhaseTests { } } -@Suite("Connection liveness reporting") struct ConnectionLivenessReportingTests { private func session(liveness: ConnectionLiveness, status: ConnectionStatus) -> ConnectionSession { var session = ConnectionSession(connection: TestFixtures.makeConnection()) @@ -228,7 +226,6 @@ struct ReconnectDegradationTests { } } -@Suite("Health monitor give-up") struct ConnectionHealthMonitorAbortTests { /// The abort used to leave the state latched mid-reconnect, so the loop woke on every interval /// for the life of the app to fail its own guard and return. diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionWindowIdentityTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionWindowIdentityTests.swift index cc2e72891f..a8017b3b0a 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionWindowIdentityTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionWindowIdentityTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection window identity") struct ConnectionWindowIdentityTests { @Test("The document inspector is not a connection window") func inspectorIsNotAConnectionWindow() { diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionWindowPaneResolverTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionWindowPaneResolverTests.swift index 320f11d675..705262e897 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionWindowPaneResolverTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionWindowPaneResolverTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection window pane resolver") struct ConnectionWindowPaneResolverTests { private static let failure = ConnectionFailureInfo(message: "Could not connect to the server.") diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionWindowPhaseMachineTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionWindowPhaseMachineTests.swift index d1d8c8f8f2..cbc33a5589 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionWindowPhaseMachineTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionWindowPhaseMachineTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection window phase machine") struct ConnectionWindowPhaseMachineTests { private static let failure = ConnectionFailureInfo( message: "Could not connect to the server.", diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceContainersTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceContainersTests.swift index 957484f036..d6d6b7cb4f 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceContainersTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceContainersTests.swift @@ -8,7 +8,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection workspace containers") @MainActor struct ConnectionWorkspaceContainersTests { private func makeWorkspace() -> ConnectionWorkspace { diff --git a/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceRegistryTests.swift b/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceRegistryTests.swift index e3a779fff0..676df39c48 100644 --- a/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceRegistryTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ConnectionWorkspaceRegistryTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection workspace registry") @MainActor struct ConnectionWorkspaceRegistryTests { private static let alpha = UUID(uuidString: "00000000-0000-0000-0000-0000000000A1") diff --git a/TableProTests/Core/Services/Infrastructure/ContentModeTests.swift b/TableProTests/Core/Services/Infrastructure/ContentModeTests.swift index 7867fc649e..fc512c2867 100644 --- a/TableProTests/Core/Services/Infrastructure/ContentModeTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ContentModeTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Agent mode") @MainActor struct ContentModeTests { /// The one field that makes a mode toggle repaint anything. Without it the phase holds, the diff --git a/TableProTests/Core/Services/Infrastructure/DeeplinkPairParsingTests.swift b/TableProTests/Core/Services/Infrastructure/DeeplinkPairParsingTests.swift index 13f5fc6fe9..71f0e552ad 100644 --- a/TableProTests/Core/Services/Infrastructure/DeeplinkPairParsingTests.swift +++ b/TableProTests/Core/Services/Infrastructure/DeeplinkPairParsingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Pairing deep link parsing") @MainActor struct DeeplinkPairParsingTests { private let firstId = UUID() diff --git a/TableProTests/Core/Services/Infrastructure/EditorTabOpenerTests.swift b/TableProTests/Core/Services/Infrastructure/EditorTabOpenerTests.swift index 8f35d3e9c9..9ad1e93003 100644 --- a/TableProTests/Core/Services/Infrastructure/EditorTabOpenerTests.swift +++ b/TableProTests/Core/Services/Infrastructure/EditorTabOpenerTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Editor tab opener") @MainActor struct EditorTabOpenerTests { private func makeConnection() -> DatabaseConnection { diff --git a/TableProTests/Core/Services/Infrastructure/ExternalConnectionGateTests.swift b/TableProTests/Core/Services/Infrastructure/ExternalConnectionGateTests.swift index b9f1d22c04..752fd95211 100644 --- a/TableProTests/Core/Services/Infrastructure/ExternalConnectionGateTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ExternalConnectionGateTests.swift @@ -21,7 +21,6 @@ private final class SpyPrompt: ExternalConnectionPrompting { } @MainActor -@Suite("ExternalConnectionGate") struct ExternalConnectionGateTests { private func makeStore() throws -> ExternalConnectionTrustStore { let suite = "ExternalConnectionGateTests.\(UUID().uuidString)" diff --git a/TableProTests/Core/Services/Infrastructure/ExternalConnectionSSHDisclosureTests.swift b/TableProTests/Core/Services/Infrastructure/ExternalConnectionSSHDisclosureTests.swift index 232a6a459e..520a3d7be9 100644 --- a/TableProTests/Core/Services/Infrastructure/ExternalConnectionSSHDisclosureTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ExternalConnectionSSHDisclosureTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("External connection SSH disclosure") @MainActor struct ExternalConnectionSSHDisclosureTests { private func tunnelled( diff --git a/TableProTests/Core/Services/Infrastructure/JumpToColumnMenuValidationTests.swift b/TableProTests/Core/Services/Infrastructure/JumpToColumnMenuValidationTests.swift index 9dcc059f9e..77d74e0e77 100644 --- a/TableProTests/Core/Services/Infrastructure/JumpToColumnMenuValidationTests.swift +++ b/TableProTests/Core/Services/Infrastructure/JumpToColumnMenuValidationTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Jump to Column menu validation") @MainActor struct JumpToColumnMenuValidationTests { private let selector = #selector(MainSplitViewController.jumpToColumn(_:)) diff --git a/TableProTests/Core/Services/Infrastructure/LaunchIntentFailureOwnershipTests.swift b/TableProTests/Core/Services/Infrastructure/LaunchIntentFailureOwnershipTests.swift index f349924426..c44aac239e 100644 --- a/TableProTests/Core/Services/Infrastructure/LaunchIntentFailureOwnershipTests.swift +++ b/TableProTests/Core/Services/Infrastructure/LaunchIntentFailureOwnershipTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Launch intent failure ownership") @MainActor struct LaunchIntentFailureOwnershipTests { private static let underlying = PluginError.pluginDisabled(pluginId: "com.TablePro.SQLiteDriver", pluginName: "SQLite") diff --git a/TableProTests/Core/Services/Infrastructure/MenuActionSelectorCollisionTests.swift b/TableProTests/Core/Services/Infrastructure/MenuActionSelectorCollisionTests.swift index bc38e3872f..72ea8d9a74 100644 --- a/TableProTests/Core/Services/Infrastructure/MenuActionSelectorCollisionTests.swift +++ b/TableProTests/Core/Services/Infrastructure/MenuActionSelectorCollisionTests.swift @@ -12,7 +12,6 @@ import Testing /// Connection, and the rail sits ahead of the controller in the chain. The menu item validated as /// enabled and then did nothing at all, because the rail's handler reads `representedObject`, which /// only its own items carry. Nothing failed to compile and no test covered it. -@Suite("Menu action selector collisions") @MainActor struct MenuActionSelectorCollisionTests { /// Every nested controller that can sit ahead of `MainSplitViewController` in a window's diff --git a/TableProTests/Core/Services/Infrastructure/MenuContentModeParityTests.swift b/TableProTests/Core/Services/Infrastructure/MenuContentModeParityTests.swift index 548446cba3..d34013c2f3 100644 --- a/TableProTests/Core/Services/Infrastructure/MenuContentModeParityTests.swift +++ b/TableProTests/Core/Services/Infrastructure/MenuContentModeParityTests.swift @@ -19,7 +19,6 @@ import Testing /// The pair table is the contract, and `everyBrowseOnlyItemHasAMenuTwin` derives it back out of the /// toolbar so the table cannot be the only thing that knows: an item made browse-only there without /// an entry here fails rather than ships enabled on the menu bar. -@Suite("Menu and toolbar agree about the content mode") @MainActor struct MenuContentModeParityTests { /// One command, spelled for each surface. diff --git a/TableProTests/Core/Services/Infrastructure/MenuValidationCoverageTests.swift b/TableProTests/Core/Services/Infrastructure/MenuValidationCoverageTests.swift index c35aa8784a..ef38fae0fe 100644 --- a/TableProTests/Core/Services/Infrastructure/MenuValidationCoverageTests.swift +++ b/TableProTests/Core/Services/Infrastructure/MenuValidationCoverageTests.swift @@ -31,7 +31,6 @@ private let liveValidatedSelectors: Set = [ #selector(MainSplitViewController.retryConnection), ] -@Suite("Menu validation coverage") @MainActor struct MenuValidationCoverageTests { /// A command the window implements and the menu carries, with no arm in `resolvedEnablement`, diff --git a/TableProTests/Core/Services/Infrastructure/RecentlyClosedTabReopenerTests.swift b/TableProTests/Core/Services/Infrastructure/RecentlyClosedTabReopenerTests.swift index 88048d65a4..901d9cae36 100644 --- a/TableProTests/Core/Services/Infrastructure/RecentlyClosedTabReopenerTests.swift +++ b/TableProTests/Core/Services/Infrastructure/RecentlyClosedTabReopenerTests.swift @@ -3,7 +3,6 @@ import Foundation import Testing @MainActor -@Suite("RecentlyClosedTabReopener") struct RecentlyClosedTabReopenerTests { private func makeStore() -> RecentlyClosedTabStore { RecentlyClosedTabStore( diff --git a/TableProTests/Core/Services/Infrastructure/SQLFileOpeningTests.swift b/TableProTests/Core/Services/Infrastructure/SQLFileOpeningTests.swift index a7ca371932..40892ab5e1 100644 --- a/TableProTests/Core/Services/Infrastructure/SQLFileOpeningTests.swift +++ b/TableProTests/Core/Services/Infrastructure/SQLFileOpeningTests.swift @@ -7,7 +7,7 @@ import Foundation @testable import TablePro import Testing -@MainActor @Suite("Opening a SQL file from Finder or File > Open") +@MainActor struct SQLFileOpeningTests { private func makeFolder() throws -> URL { let folder = FileManager.default.temporaryDirectory diff --git a/TableProTests/Core/Services/Infrastructure/SidebarContainerChromeTests.swift b/TableProTests/Core/Services/Infrastructure/SidebarContainerChromeTests.swift index 0b54ef768b..a7000501ad 100644 --- a/TableProTests/Core/Services/Infrastructure/SidebarContainerChromeTests.swift +++ b/TableProTests/Core/Services/Infrastructure/SidebarContainerChromeTests.swift @@ -5,7 +5,6 @@ import Testing /// The filter field belongs to the window, not to the connection under it. It used to be hidden /// until a session arrived, so the sidebar was a bare column for the length of every connect and /// the field appeared alongside the object list. -@Suite("Sidebar container chrome") @MainActor struct SidebarContainerChromeTests { @Test("The filter field stands before a connection is up, dimmed") diff --git a/TableProTests/Core/Services/Infrastructure/ToolbarContextResolverTests.swift b/TableProTests/Core/Services/Infrastructure/ToolbarContextResolverTests.swift index 8c9556db42..fb3aaf22bb 100644 --- a/TableProTests/Core/Services/Infrastructure/ToolbarContextResolverTests.swift +++ b/TableProTests/Core/Services/Infrastructure/ToolbarContextResolverTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Toolbar context resolver") struct ToolbarContextResolverTests { /// `TabType` is not `CaseIterable`, so the list is written out. A ninth kind fails the /// exhaustive switch in the resolver before it can fail here. diff --git a/TableProTests/Core/Services/Infrastructure/TrailingPaneCommandTitleTests.swift b/TableProTests/Core/Services/Infrastructure/TrailingPaneCommandTitleTests.swift index fb455eedf8..1d14c4951e 100644 --- a/TableProTests/Core/Services/Infrastructure/TrailingPaneCommandTitleTests.swift +++ b/TableProTests/Core/Services/Infrastructure/TrailingPaneCommandTitleTests.swift @@ -13,7 +13,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Trailing pane command titles") struct TrailingPaneCommandTitleTests { private struct Row { let mode: ConnectionWorkspaceContentMode diff --git a/TableProTests/Core/Services/Infrastructure/WindowHostSelectionTests.swift b/TableProTests/Core/Services/Infrastructure/WindowHostSelectionTests.swift index 6dd5dd8862..36ea0e23c0 100644 --- a/TableProTests/Core/Services/Infrastructure/WindowHostSelectionTests.swift +++ b/TableProTests/Core/Services/Infrastructure/WindowHostSelectionTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Window host selection") struct WindowHostSelectionTests { private static let alpha = UUID() private static let beta = UUID() diff --git a/TableProTests/Core/Services/Infrastructure/WorkspaceCloseActionTests.swift b/TableProTests/Core/Services/Infrastructure/WorkspaceCloseActionTests.swift index ee6c09607f..1cf53e1d03 100644 --- a/TableProTests/Core/Services/Infrastructure/WorkspaceCloseActionTests.swift +++ b/TableProTests/Core/Services/Infrastructure/WorkspaceCloseActionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace close scope") @MainActor struct WorkspaceCloseActionTests { @Test("An entry beside another of the same connection closes its container") diff --git a/TableProTests/Core/Services/LeadingRowsStatementTests.swift b/TableProTests/Core/Services/LeadingRowsStatementTests.swift index 82d3ad50a4..554b328caf 100644 --- a/TableProTests/Core/Services/LeadingRowsStatementTests.swift +++ b/TableProTests/Core/Services/LeadingRowsStatementTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("Leading-rows statements") @MainActor struct LeadingRowsStatementTests { private let grammar = DatabaseType.cloudflareR2SQL.lexicalGrammar diff --git a/TableProTests/Core/Services/Licensing/SupportLinksTests.swift b/TableProTests/Core/Services/Licensing/SupportLinksTests.swift index 2958c81735..84fafc0802 100644 --- a/TableProTests/Core/Services/Licensing/SupportLinksTests.swift +++ b/TableProTests/Core/Services/Licensing/SupportLinksTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SupportLinks") struct SupportLinksTests { private static let everyReferrer: [SupportReferrer] = [.supportWindow, .aboutPanel, .licenseSettings, .activationSheet] diff --git a/TableProTests/Core/Services/ManagedPolicyTests.swift b/TableProTests/Core/Services/ManagedPolicyTests.swift index dd1c93d021..28644d0ad0 100644 --- a/TableProTests/Core/Services/ManagedPolicyTests.swift +++ b/TableProTests/Core/Services/ManagedPolicyTests.swift @@ -18,7 +18,6 @@ private struct StubPolicy: ManagedPolicyReading { func string(_ policy: ManagedPolicy) -> String? { strings[policy.key] } } -@Suite("ManagedPolicyResolver") struct ManagedPolicyResolverTests { private func policy(floor: String?) -> StubPolicy { guard let floor else { return StubPolicy() } @@ -93,7 +92,6 @@ struct ManagedPolicyResolverTests { } } -@Suite("ManagedPolicyReader") struct ManagedPolicyReaderTests { private func makeReader(_ values: [String: Any]) -> ManagedPolicyReader { let suiteName = "com.TablePro.tests.policy.\(UUID().uuidString)" diff --git a/TableProTests/Core/Services/MariaDBJsonDetectionTests.swift b/TableProTests/Core/Services/MariaDBJsonDetectionTests.swift index 97d525bd8f..737eb3ca3d 100644 --- a/TableProTests/Core/Services/MariaDBJsonDetectionTests.swift +++ b/TableProTests/Core/Services/MariaDBJsonDetectionTests.swift @@ -14,7 +14,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("MariaDB JSON Detection") struct MariaDBJsonDetectionTests { private let classifier = ColumnTypeClassifier() diff --git a/TableProTests/Core/Services/NewTableImportPlannerTests.swift b/TableProTests/Core/Services/NewTableImportPlannerTests.swift index 20c0f09872..24c9796cad 100644 --- a/TableProTests/Core/Services/NewTableImportPlannerTests.swift +++ b/TableProTests/Core/Services/NewTableImportPlannerTests.swift @@ -9,7 +9,6 @@ import Testing /// A failed row import into a new table leaves that table behind, so the retry finds the name /// taken. Creating again fails on the name; importing into it as it stands writes the rows the /// first attempt kept a second time. -@Suite("New table import planning") struct NewTableImportPlannerTests { private let createSQL = "CREATE TABLE people (name TEXT)" diff --git a/TableProTests/Core/Services/NewTableNamingTests.swift b/TableProTests/Core/Services/NewTableNamingTests.swift index f39feb2321..109c32778e 100644 --- a/TableProTests/Core/Services/NewTableNamingTests.swift +++ b/TableProTests/Core/Services/NewTableNamingTests.swift @@ -8,7 +8,6 @@ import Testing /// A row import that creates its table used to open with an empty name field, so the name reached /// `CREATE TABLE` unchecked and the server was the first thing to judge it. -@Suite("New table naming") struct NewTableNamingTests { private let postgres = NewTableNameStyle.forDatabaseType(.postgresql) diff --git a/TableProTests/Core/Services/PEMCertificateDecoderTests.swift b/TableProTests/Core/Services/PEMCertificateDecoderTests.swift index 5589e4436a..7a1c27331f 100644 --- a/TableProTests/Core/Services/PEMCertificateDecoderTests.swift +++ b/TableProTests/Core/Services/PEMCertificateDecoderTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PEM certificate decoder") struct PEMCertificateDecoderTests { private static let derBytes = Data([0x30, 0x82, 0x01, 0x0A, 0x02, 0x01, 0x00]) diff --git a/TableProTests/Core/Services/PersistedTabRoundTripTests.swift b/TableProTests/Core/Services/PersistedTabRoundTripTests.swift index f6892c5e43..9591f4d7c0 100644 --- a/TableProTests/Core/Services/PersistedTabRoundTripTests.swift +++ b/TableProTests/Core/Services/PersistedTabRoundTripTests.swift @@ -15,7 +15,6 @@ private struct LegacyPersistedTabWidths: Decodable { let columnWidths: [String: CGFloat]? } -@Suite("PersistedTab round-trip") @MainActor struct PersistedTabRoundTripTests { private func tableTab(query: String = "SELECT 1") -> QueryTab { diff --git a/TableProTests/Core/Services/PostgresArrayDelimiterTests.swift b/TableProTests/Core/Services/PostgresArrayDelimiterTests.swift index 610482992c..1d1dfe5bc5 100644 --- a/TableProTests/Core/Services/PostgresArrayDelimiterTests.swift +++ b/TableProTests/Core/Services/PostgresArrayDelimiterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Postgres Array Delimiter") struct PostgresArrayDelimiterTests { private let classifier = ColumnTypeClassifier() diff --git a/TableProTests/Core/Services/ProjectImport/DotenvConnectionExtractorTests.swift b/TableProTests/Core/Services/ProjectImport/DotenvConnectionExtractorTests.swift index 471a29bf3f..9855d60984 100644 --- a/TableProTests/Core/Services/ProjectImport/DotenvConnectionExtractorTests.swift +++ b/TableProTests/Core/Services/ProjectImport/DotenvConnectionExtractorTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Dotenv Connection Extractor") struct DotenvConnectionExtractorTests { private let directory = URL(fileURLWithPath: "/tmp/project") diff --git a/TableProTests/Core/Services/ProjectImport/DotenvParserTests.swift b/TableProTests/Core/Services/ProjectImport/DotenvParserTests.swift index 864b1bbff5..0660b62498 100644 --- a/TableProTests/Core/Services/ProjectImport/DotenvParserTests.swift +++ b/TableProTests/Core/Services/ProjectImport/DotenvParserTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Dotenv Parser") struct DotenvParserTests { private func value(_ source: String, _ key: String, env: [String: String] = [:]) -> String? { diff --git a/TableProTests/Core/Services/ProjectImport/ProjectConfigExtractorTests.swift b/TableProTests/Core/Services/ProjectImport/ProjectConfigExtractorTests.swift index cc0859b5b6..c2ae52732d 100644 --- a/TableProTests/Core/Services/ProjectImport/ProjectConfigExtractorTests.swift +++ b/TableProTests/Core/Services/ProjectImport/ProjectConfigExtractorTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Scanned URL Normalizer") struct ScannedURLNormalizerTests { @Test("A raw at sign in the password is encoded using the last separator") @@ -55,7 +54,6 @@ struct ScannedURLNormalizerTests { } } -@Suite("Scanned Production Heuristic") struct ScannedProductionHeuristicTests { @Test("Production markers are detected in the file name, host, and database") @@ -79,7 +77,6 @@ struct ScannedProductionHeuristicTests { } } -@Suite("YAML Mapping Support") struct YamlMappingSupportTests { @Test("Merge keys are expanded with the owning mapping winning") @@ -116,7 +113,6 @@ struct YamlMappingSupportTests { } } -@Suite("WordPress Config Extractor") struct WordPressConfigExtractorTests { @Test("Standard define calls produce a MySQL candidate") @@ -175,7 +171,6 @@ struct WordPressConfigExtractorTests { } } -@Suite("Prisma Schema Extractor") struct PrismaSchemaExtractorTests { private let root = URL(fileURLWithPath: "/tmp/prisma-project") @@ -246,7 +241,6 @@ struct PrismaSchemaExtractorTests { } } -@Suite("Spring Properties Extractor") struct SpringPropertiesExtractorTests { @Test("A JDBC datasource URL is parsed with its credentials") @@ -301,7 +295,6 @@ struct SpringPropertiesExtractorTests { } } -@Suite("App Settings JSON Extractor") struct AppSettingsJsonExtractorTests { private func candidate(_ connectionString: String) -> ScannedConnectionCandidate? { diff --git a/TableProTests/Core/Services/ProjectImport/ProjectConfigFileMatcherTests.swift b/TableProTests/Core/Services/ProjectImport/ProjectConfigFileMatcherTests.swift index a7fb2134eb..90d22f2c26 100644 --- a/TableProTests/Core/Services/ProjectImport/ProjectConfigFileMatcherTests.swift +++ b/TableProTests/Core/Services/ProjectImport/ProjectConfigFileMatcherTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Project Config File Matcher") struct ProjectConfigFileMatcherTests { @Test("Real dotenv files are classified with their tier") diff --git a/TableProTests/Core/Services/ProjectImport/ProjectFolderFileWalkerTests.swift b/TableProTests/Core/Services/ProjectImport/ProjectFolderFileWalkerTests.swift index b1d551ac9c..e6c52ccbc7 100644 --- a/TableProTests/Core/Services/ProjectImport/ProjectFolderFileWalkerTests.swift +++ b/TableProTests/Core/Services/ProjectImport/ProjectFolderFileWalkerTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Project Folder File Walker") struct ProjectFolderFileWalkerTests { private let root: URL private let outside: URL diff --git a/TableProTests/Core/Services/ProjectImport/ProjectFolderScannerTests.swift b/TableProTests/Core/Services/ProjectImport/ProjectFolderScannerTests.swift index d0f5158702..29e50c1e9a 100644 --- a/TableProTests/Core/Services/ProjectImport/ProjectFolderScannerTests.swift +++ b/TableProTests/Core/Services/ProjectImport/ProjectFolderScannerTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Project Folder Scanner") struct ProjectFolderScannerTests { private let root: URL diff --git a/TableProTests/Core/Services/ProjectImport/ProjectYamlExtractorTests.swift b/TableProTests/Core/Services/ProjectImport/ProjectYamlExtractorTests.swift index 7570c45fd2..b132cd6035 100644 --- a/TableProTests/Core/Services/ProjectImport/ProjectYamlExtractorTests.swift +++ b/TableProTests/Core/Services/ProjectImport/ProjectYamlExtractorTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Rails Database YAML Extractor") struct RailsDatabaseYamlExtractorTests { private let root = URL(fileURLWithPath: "/tmp/rails-project") @@ -106,7 +105,6 @@ struct RailsDatabaseYamlExtractorTests { } } -@Suite("Docker Compose Extractor") struct DockerComposeExtractorTests { private func extract(_ contents: String, environment: DotenvDocument? = nil) -> [ScannedConnectionCandidate] { @@ -500,7 +498,6 @@ struct DockerComposeExtractorTests { } } -@Suite("Spring YAML Extractor") struct SpringYamlExtractorTests { @Test("A nested datasource block is read") diff --git a/TableProTests/Core/Services/Query/AllSchemaTablesDemandTests.swift b/TableProTests/Core/Services/Query/AllSchemaTablesDemandTests.swift index 8648d29b95..074750a88a 100644 --- a/TableProTests/Core/Services/Query/AllSchemaTablesDemandTests.swift +++ b/TableProTests/Core/Services/Query/AllSchemaTablesDemandTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AllSchemaTablesDemand") @MainActor struct AllSchemaTablesDemandTests { private let service = DatabaseTreeMetadataService.shared diff --git a/TableProTests/Core/Services/Query/CatalogChangeServiceTests.swift b/TableProTests/Core/Services/Query/CatalogChangeServiceTests.swift index 660a500395..d5976aab81 100644 --- a/TableProTests/Core/Services/Query/CatalogChangeServiceTests.swift +++ b/TableProTests/Core/Services/Query/CatalogChangeServiceTests.swift @@ -62,7 +62,6 @@ private final class OrderedCatalogTarget: CatalogChangeTarget { } } -@Suite("CatalogChange") struct CatalogChangeTests { @Test("an empty database or schema reaches everything") func emptyScopeIsConnectionWide() { @@ -99,7 +98,6 @@ struct CatalogChangeTests { } } -@Suite("CatalogChangeService") @MainActor struct CatalogChangeServiceTests { private func makeService( diff --git a/TableProTests/Core/Services/Query/CatalogEditAdoptionTests.swift b/TableProTests/Core/Services/Query/CatalogEditAdoptionTests.swift index 2a2a59751f..f98f7b43b6 100644 --- a/TableProTests/Core/Services/Query/CatalogEditAdoptionTests.swift +++ b/TableProTests/Core/Services/Query/CatalogEditAdoptionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("LoadedBrowseCatalog") struct LoadedBrowseCatalogTests { private func ref(_ name: String, database: String? = nil, schema: String? = nil) -> DatabaseTreeTableRef { DatabaseTreeTableRef(database: database, schema: schema, table: TestFixtures.makeTableInfo(name: name)) @@ -55,7 +54,6 @@ struct LoadedBrowseCatalogTests { } } -@Suite("Restoring staged table operations") struct RestoreStagedTableOperationsTests { private func ref(_ name: String) -> DatabaseTreeTableRef { DatabaseTreeTableRef(database: "shop", schema: nil, table: TestFixtures.makeTableInfo(name: name)) diff --git a/TableProTests/Core/Services/Query/CockroachDBPlanParserTests.swift b/TableProTests/Core/Services/Query/CockroachDBPlanParserTests.swift index bb898106ed..d4668899e3 100644 --- a/TableProTests/Core/Services/Query/CockroachDBPlanParserTests.swift +++ b/TableProTests/Core/Services/Query/CockroachDBPlanParserTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("CockroachDB Plan Parser") struct CockroachDBPlanParserTests { private let parser = CockroachDBPlanParser() diff --git a/TableProTests/Core/Services/Query/DamengPlanParserTests.swift b/TableProTests/Core/Services/Query/DamengPlanParserTests.swift index 73b88556f0..eb3b3b2f17 100644 --- a/TableProTests/Core/Services/Query/DamengPlanParserTests.swift +++ b/TableProTests/Core/Services/Query/DamengPlanParserTests.swift @@ -7,7 +7,6 @@ import TableProPluginKit import Testing -@Suite("Dameng Plan Parser") struct DamengPlanParserTests { private let parser = DamengPlanParser() diff --git a/TableProTests/Core/Services/Query/DatabaseSwitchListTests.swift b/TableProTests/Core/Services/Query/DatabaseSwitchListTests.swift index 9c5997c1a4..0711f0adfa 100644 --- a/TableProTests/Core/Services/Query/DatabaseSwitchListTests.swift +++ b/TableProTests/Core/Services/Query/DatabaseSwitchListTests.swift @@ -1,7 +1,6 @@ @testable import TablePro import Testing -@Suite("DatabaseSwitchList") struct DatabaseSwitchListTests { private let databases: [DatabaseMetadata] = [ .minimal(name: "analytics"), diff --git a/TableProTests/Core/Services/Query/DatabaseTreeAllSchemaTablesTests.swift b/TableProTests/Core/Services/Query/DatabaseTreeAllSchemaTablesTests.swift index 850b309a2e..9379cefa37 100644 --- a/TableProTests/Core/Services/Query/DatabaseTreeAllSchemaTablesTests.swift +++ b/TableProTests/Core/Services/Query/DatabaseTreeAllSchemaTablesTests.swift @@ -10,7 +10,6 @@ import Testing /// Uses PGlite because it cannot open a pooled connection, so every read stays on the injected /// session driver, and because it groups by schema with `pg_catalog` as a system schema. -@Suite("DatabaseTreeMetadataService all-schema tables") @MainActor struct DatabaseTreeAllSchemaTablesTests { private struct ListingFailed: Error {} diff --git a/TableProTests/Core/Services/Query/DatabaseTreeCatalogRefreshPlanTests.swift b/TableProTests/Core/Services/Query/DatabaseTreeCatalogRefreshPlanTests.swift index a7ed3c8cea..50eb147afc 100644 --- a/TableProTests/Core/Services/Query/DatabaseTreeCatalogRefreshPlanTests.swift +++ b/TableProTests/Core/Services/Query/DatabaseTreeCatalogRefreshPlanTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Database tree catalog refresh plan") struct DatabaseTreeCatalogRefreshPlanTests { private typealias ObjectsKey = DatabaseTreeMetadataService.ObjectsKey private typealias DatabaseKey = DatabaseTreeMetadataService.DatabaseKey diff --git a/TableProTests/Core/Services/Query/DatabaseTreeMetadataServiceTests.swift b/TableProTests/Core/Services/Query/DatabaseTreeMetadataServiceTests.swift index bc33ba54ec..8e6a135b7d 100644 --- a/TableProTests/Core/Services/Query/DatabaseTreeMetadataServiceTests.swift +++ b/TableProTests/Core/Services/Query/DatabaseTreeMetadataServiceTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseTreeMetadataService") @MainActor struct DatabaseTreeMetadataServiceTests { private typealias ObjectsKey = DatabaseTreeMetadataService.ObjectsKey @@ -95,7 +94,6 @@ struct DatabaseTreeMetadataServiceTests { /// Uses PGlite because it is the one engine that cannot open a pooled connection, so a /// metadata read stays on the injected session driver instead of trying to dial a real /// server. Every other engine now reaches the tree through the pool. -@Suite("DatabaseTreeMetadataService refreshLoadedTables") @MainActor struct DatabaseTreeMetadataServiceRefreshTests { @Test("reload drops previously loaded tables and refetches the current list") @@ -176,7 +174,6 @@ struct DatabaseTreeMetadataServiceRefreshTests { /// A refresh must never empty the list it is refreshing: the tree renders `.loading` /// with no content as a spinner, so clearing first blanks the sidebar mid-refresh. -@Suite("DatabaseTreeMetadataService refreshDatabases") @MainActor struct DatabaseTreeMetadataServiceRefreshDatabasesTests { @Test("A refresh commits the new list over the old one") @@ -230,7 +227,6 @@ struct DatabaseTreeMetadataServiceRefreshDatabasesTests { /// The sidebar's own Refresh, reached from the database and schema contextual menus. It has to /// obey the same rule `refreshDatabases` does: the tree renders a container with no loaded /// content as a single spinner row, so clearing first empties the subtree mid-refresh. -@Suite("DatabaseTreeMetadataService refreshObjects") @MainActor struct DatabaseTreeMetadataServiceRefreshObjectsTests { private func connectedDriver() -> (DatabaseConnection, MockDatabaseDriver) { diff --git a/TableProTests/Core/Services/Query/DatabaseTreeVisibilityTests.swift b/TableProTests/Core/Services/Query/DatabaseTreeVisibilityTests.swift index 04acbe85c4..acd39beaf0 100644 --- a/TableProTests/Core/Services/Query/DatabaseTreeVisibilityTests.swift +++ b/TableProTests/Core/Services/Query/DatabaseTreeVisibilityTests.swift @@ -1,7 +1,6 @@ @testable import TablePro import Testing -@Suite("DatabaseTreeVisibility") struct DatabaseTreeVisibilityTests { private let databases: [DatabaseMetadata] = [ .minimal(name: "analytics"), diff --git a/TableProTests/Core/Services/Query/ExplainPlanFormatResolutionTests.swift b/TableProTests/Core/Services/Query/ExplainPlanFormatResolutionTests.swift index 419ef159c8..1d73d38f74 100644 --- a/TableProTests/Core/Services/Query/ExplainPlanFormatResolutionTests.swift +++ b/TableProTests/Core/Services/Query/ExplainPlanFormatResolutionTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Explain Plan Format Resolution") struct ExplainPlanFormatResolutionTests { private let mysqlVariants = [ ExplainVariant(id: "explain", label: "EXPLAIN", sqlPrefix: "EXPLAIN", format: .mysqlComposite), diff --git a/TableProTests/Core/Services/Query/ExplainResultRouterTests.swift b/TableProTests/Core/Services/Query/ExplainResultRouterTests.swift index cf565bd5c2..ce7f9f19bf 100644 --- a/TableProTests/Core/Services/Query/ExplainResultRouterTests.swift +++ b/TableProTests/Core/Services/Query/ExplainResultRouterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ExplainResultRouter") struct ExplainResultRouterTests { private let sqliteVariants = [ ExplainVariant( diff --git a/TableProTests/Core/Services/Query/IndentedTextPlanParserTests.swift b/TableProTests/Core/Services/Query/IndentedTextPlanParserTests.swift index b49d967204..cee156acce 100644 --- a/TableProTests/Core/Services/Query/IndentedTextPlanParserTests.swift +++ b/TableProTests/Core/Services/Query/IndentedTextPlanParserTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Indented Text Plan Parser") struct IndentedTextPlanParserTests { private let parser = IndentedTextPlanParser() diff --git a/TableProTests/Core/Services/Query/MetadataConnectionPoolTests.swift b/TableProTests/Core/Services/Query/MetadataConnectionPoolTests.swift index dc0436fb46..5cce30d8c6 100644 --- a/TableProTests/Core/Services/Query/MetadataConnectionPoolTests.swift +++ b/TableProTests/Core/Services/Query/MetadataConnectionPoolTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MetadataConnectionPool timeouts") @MainActor struct MetadataConnectionPoolTests { @Test("connect passes through when the driver responds in time") @@ -475,7 +474,6 @@ struct MetadataConnectionPoolIdleEvictionTests { } } -@Suite("MetadataConnectionPool connection plan") @MainActor struct MetadataConnectionPoolPlanTests { @Test("A database-scoped engine keeps its configured database and switches after connecting") diff --git a/TableProTests/Core/Services/Query/MetadataLoadStateTests.swift b/TableProTests/Core/Services/Query/MetadataLoadStateTests.swift index 51fb9a5562..5f07b2e52f 100644 --- a/TableProTests/Core/Services/Query/MetadataLoadStateTests.swift +++ b/TableProTests/Core/Services/Query/MetadataLoadStateTests.swift @@ -1,7 +1,6 @@ @testable import TablePro import Testing -@Suite("MetadataLoadState") struct MetadataLoadStateTests { @Test("value returns the payload only for loaded") func valueOnlyWhenLoaded() { diff --git a/TableProTests/Core/Services/Query/MySQLPlanParserTests.swift b/TableProTests/Core/Services/Query/MySQLPlanParserTests.swift index c1f0af51be..51ac0f6647 100644 --- a/TableProTests/Core/Services/Query/MySQLPlanParserTests.swift +++ b/TableProTests/Core/Services/Query/MySQLPlanParserTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL Plan Parser") struct MySQLPlanParserTests { private let parser = MySQLPlanParser() diff --git a/TableProTests/Core/Services/Query/ParseSchemaMetadataTests.swift b/TableProTests/Core/Services/Query/ParseSchemaMetadataTests.swift index b4423c7756..29810cc2d5 100644 --- a/TableProTests/Core/Services/Query/ParseSchemaMetadataTests.swift +++ b/TableProTests/Core/Services/Query/ParseSchemaMetadataTests.swift @@ -2,7 +2,6 @@ import Foundation import Testing @testable import TablePro -@Suite("QueryExecutor.parseSchemaMetadata - column comments") @MainActor struct ParseSchemaMetadataTests { private func column(_ name: String, comment: String?) -> ColumnInfo { diff --git a/TableProTests/Core/Services/Query/PostgreSQLPlanParserTests.swift b/TableProTests/Core/Services/Query/PostgreSQLPlanParserTests.swift index 15b68f13fa..f16dc69d38 100644 --- a/TableProTests/Core/Services/Query/PostgreSQLPlanParserTests.swift +++ b/TableProTests/Core/Services/Query/PostgreSQLPlanParserTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("PostgreSQL Plan Parser") struct PostgreSQLPlanParserTests { private let parser = PostgreSQLPlanParser() diff --git a/TableProTests/Core/Services/Query/QueryExecutorTests.swift b/TableProTests/Core/Services/Query/QueryExecutorTests.swift index 4fb521ea67..75d8f0e5da 100644 --- a/TableProTests/Core/Services/Query/QueryExecutorTests.swift +++ b/TableProTests/Core/Services/Query/QueryExecutorTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("QueryExecutor") @MainActor struct QueryExecutorTests { // MARK: - SQL parsing (delegates to QuerySqlParser) diff --git a/TableProTests/Core/Services/Query/ResultChartProjectorTests.swift b/TableProTests/Core/Services/Query/ResultChartProjectorTests.swift index 410796db17..595f88bb81 100644 --- a/TableProTests/Core/Services/Query/ResultChartProjectorTests.swift +++ b/TableProTests/Core/Services/Query/ResultChartProjectorTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ResultChartProjector") struct ResultChartProjectorTests { @Test("Projects one point per valid row without aggregating duplicate categories") func projectsRowsWithoutAggregation() async throws { diff --git a/TableProTests/Core/Services/Query/SQLitePlanParserTests.swift b/TableProTests/Core/Services/Query/SQLitePlanParserTests.swift index 9a5e679903..886edfb8e8 100644 --- a/TableProTests/Core/Services/Query/SQLitePlanParserTests.swift +++ b/TableProTests/Core/Services/Query/SQLitePlanParserTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLite Plan Parser") struct SQLitePlanParserTests { private let parser = SQLitePlanParser() diff --git a/TableProTests/Core/Services/Query/SavedConnectionDatabaseAdoptionTests.swift b/TableProTests/Core/Services/Query/SavedConnectionDatabaseAdoptionTests.swift index b140fd1ad6..14d035cb96 100644 --- a/TableProTests/Core/Services/Query/SavedConnectionDatabaseAdoptionTests.swift +++ b/TableProTests/Core/Services/Query/SavedConnectionDatabaseAdoptionTests.swift @@ -11,7 +11,6 @@ import Testing /// The connection's own Database field after the database it names is renamed or dropped. A /// reconnect and Reopen Last Session both read it, so a stale one opens the connection onto /// nothing every time. -@Suite("Saved connection database adoption") @MainActor struct SavedConnectionDatabaseAdoptionTests { private func makeStorage() -> ConnectionStorage { diff --git a/TableProTests/Core/Services/Query/SchemaColumnStoreTests.swift b/TableProTests/Core/Services/Query/SchemaColumnStoreTests.swift index 75621e37a1..3fc903eff5 100644 --- a/TableProTests/Core/Services/Query/SchemaColumnStoreTests.swift +++ b/TableProTests/Core/Services/Query/SchemaColumnStoreTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("SchemaColumnStore") @MainActor struct SchemaColumnStoreTests { nonisolated private static func entry(_ columns: [String], primaryKeys: [String] = []) -> SchemaColumnStore.Entry { diff --git a/TableProTests/Core/Services/Query/SchemaForeignKeyStoreTests.swift b/TableProTests/Core/Services/Query/SchemaForeignKeyStoreTests.swift index f31a7d086e..fe996e7f2c 100644 --- a/TableProTests/Core/Services/Query/SchemaForeignKeyStoreTests.swift +++ b/TableProTests/Core/Services/Query/SchemaForeignKeyStoreTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Schema foreign key store") @MainActor struct SchemaForeignKeyStoreTests { private func makeScope(_ connectionId: UUID, database: String = "shop", schema: String? = "public") -> DatabaseScope { diff --git a/TableProTests/Core/Services/Query/SchemaLoadPolicyTests.swift b/TableProTests/Core/Services/Query/SchemaLoadPolicyTests.swift index 4f3e83f0d5..e1248857e7 100644 --- a/TableProTests/Core/Services/Query/SchemaLoadPolicyTests.swift +++ b/TableProTests/Core/Services/Query/SchemaLoadPolicyTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SchemaLoadPolicy") struct SchemaLoadPolicyTests { private struct Boom: Error, LocalizedError { var errorDescription: String? { "Switching to schema 'APP_SCHEMA' timed out." } diff --git a/TableProTests/Core/Services/Query/SchemaRefreshServiceTests.swift b/TableProTests/Core/Services/Query/SchemaRefreshServiceTests.swift index c9f4e25399..70efe562d1 100644 --- a/TableProTests/Core/Services/Query/SchemaRefreshServiceTests.swift +++ b/TableProTests/Core/Services/Query/SchemaRefreshServiceTests.swift @@ -69,7 +69,6 @@ private final class ScopeRoutingMetadataProvider: ScopedMetadataProviding { func browseScope(for connectionId: UUID) -> DatabaseScope? { nil } } -@Suite("SchemaRefreshService") @MainActor struct SchemaRefreshServiceTests { private func makeService( diff --git a/TableProTests/Core/Services/Query/SchemaServiceTests.swift b/TableProTests/Core/Services/Query/SchemaServiceTests.swift index 54bcdf1e5f..0bff725d01 100644 --- a/TableProTests/Core/Services/Query/SchemaServiceTests.swift +++ b/TableProTests/Core/Services/Query/SchemaServiceTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SchemaService") @MainActor struct SchemaServiceTests { private func unnamedDatabase(_ connectionId: UUID) -> DatabaseScope { diff --git a/TableProTests/Core/Services/Query/ServerOutputCaptureTests.swift b/TableProTests/Core/Services/Query/ServerOutputCaptureTests.swift index e6012eef7f..2497834da1 100644 --- a/TableProTests/Core/Services/Query/ServerOutputCaptureTests.swift +++ b/TableProTests/Core/Services/Query/ServerOutputCaptureTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Server output capture") struct ServerOutputCaptureTests { private struct StatementFailed: Error {} diff --git a/TableProTests/Core/Services/Query/SpatialResultProjectorTests.swift b/TableProTests/Core/Services/Query/SpatialResultProjectorTests.swift index 8c914fac1f..ff3fbcbf34 100644 --- a/TableProTests/Core/Services/Query/SpatialResultProjectorTests.swift +++ b/TableProTests/Core/Services/Query/SpatialResultProjectorTests.swift @@ -54,7 +54,6 @@ private func onlyColumn(_ tableRows: TableRows) -> SpatialColumn { ) } -@Suite("SpatialColumn") struct SpatialColumnTests { @Test("Only spatial columns are offered") func onlySpatialColumns() { @@ -144,7 +143,6 @@ struct SpatialColumnTests { } } -@Suite("SpatialResultProjector") struct SpatialResultProjectorTests { @Test("EWKT points project to shapes tagged with their row") func projectsPoints() async { diff --git a/TableProTests/Core/Services/Query/TabSessionRegistryTableRowsTests.swift b/TableProTests/Core/Services/Query/TabSessionRegistryTableRowsTests.swift index 0d9a07314e..5a66455c8a 100644 --- a/TableProTests/Core/Services/Query/TabSessionRegistryTableRowsTests.swift +++ b/TableProTests/Core/Services/Query/TabSessionRegistryTableRowsTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("TabSessionRegistry+TableRows") @MainActor struct TabSessionRegistryTableRowsTests { @Test("tableRows(for:) returns empty TableRows on first access without creating a session") diff --git a/TableProTests/Core/Services/QuickSwitcherHostResolverTests.swift b/TableProTests/Core/Services/QuickSwitcherHostResolverTests.swift index 03b69881a5..4f83b5ae82 100644 --- a/TableProTests/Core/Services/QuickSwitcherHostResolverTests.swift +++ b/TableProTests/Core/Services/QuickSwitcherHostResolverTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("QuickSwitcherHostResolver") struct QuickSwitcherHostResolverTests { /// The registry the candidates come from is a dictionary with no order, so before this was /// fixed the result landed in whichever window it happened to yield first, overwriting an diff --git a/TableProTests/Core/Services/RowOperationsManagerBinaryCopyTests.swift b/TableProTests/Core/Services/RowOperationsManagerBinaryCopyTests.swift index 2f93027480..7ccd04ca32 100644 --- a/TableProTests/Core/Services/RowOperationsManagerBinaryCopyTests.swift +++ b/TableProTests/Core/Services/RowOperationsManagerBinaryCopyTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("RowOperationsManager - binary cell copy") @MainActor struct RowOperationsManagerBinaryCopyTests { private func makeManagerAndRows(binaryRow: [PluginCellValue]) -> (RowOperationsManager, TableRows) { diff --git a/TableProTests/Core/Services/RowOperationsManagerCopyTests.swift b/TableProTests/Core/Services/RowOperationsManagerCopyTests.swift index 7d800d19fa..ce85e1e1f4 100644 --- a/TableProTests/Core/Services/RowOperationsManagerCopyTests.swift +++ b/TableProTests/Core/Services/RowOperationsManagerCopyTests.swift @@ -42,7 +42,6 @@ private final class MockClipboardProvider: ClipboardProvider { } @MainActor -@Suite("RowOperationsManager Copy") struct RowOperationsManagerCopyTests { private static let defaultColumns = ["id", "name", "email"] diff --git a/TableProTests/Core/Services/RowOperationsManagerPasteTests.swift b/TableProTests/Core/Services/RowOperationsManagerPasteTests.swift index abf6197a41..6d571f0a74 100644 --- a/TableProTests/Core/Services/RowOperationsManagerPasteTests.swift +++ b/TableProTests/Core/Services/RowOperationsManagerPasteTests.swift @@ -24,7 +24,6 @@ private final class PasteMockClipboard: ClipboardProvider { } @MainActor -@Suite("RowOperationsManager Paste") struct RowOperationsManagerPasteTests { private static let columns = ["id", "name", "email"] @@ -202,7 +201,6 @@ struct RowOperationsManagerPasteTests { /// the cell-edit boundary that refuses them, and `SQLStatementGenerator` drops them without a word, /// so the grid showed a pasted identity value the row was never saved with. @MainActor -@Suite("RowOperationsManager Paste - server-owned columns") struct RowOperationsManagerPasteServerOwnedTests { private static let columns = ["id", "code", "name"] diff --git a/TableProTests/Core/Services/RowOperationsManagerTests.swift b/TableProTests/Core/Services/RowOperationsManagerTests.swift index 4a053ddece..1d8c2adc48 100644 --- a/TableProTests/Core/Services/RowOperationsManagerTests.swift +++ b/TableProTests/Core/Services/RowOperationsManagerTests.swift @@ -4,7 +4,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Row Operations Manager") struct RowOperationsManagerTests { private static let testColumns = ["id", "name", "email"] private static let testColumnTypes: [ColumnType] = Array( diff --git a/TableProTests/Core/Services/SQL/LinkedSQLFavoriteWriterTests.swift b/TableProTests/Core/Services/SQL/LinkedSQLFavoriteWriterTests.swift index 0df7ea3566..2a5b4d1ada 100644 --- a/TableProTests/Core/Services/SQL/LinkedSQLFavoriteWriterTests.swift +++ b/TableProTests/Core/Services/SQL/LinkedSQLFavoriteWriterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Linked SQL favorite metadata rewrite") struct LinkedSQLFavoriteWriterTests { private typealias Metadata = SQLFrontmatter.Metadata diff --git a/TableProTests/Core/Services/SQL/SQLFrontmatterTests.swift b/TableProTests/Core/Services/SQL/SQLFrontmatterTests.swift index d7ccab611e..2e2763c7d3 100644 --- a/TableProTests/Core/Services/SQL/SQLFrontmatterTests.swift +++ b/TableProTests/Core/Services/SQL/SQLFrontmatterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQL frontmatter") struct SQLFrontmatterTests { @Test("Split keeps each header line's own text and line ending") func splitKeepsRawHeaderLines() { diff --git a/TableProTests/Core/Services/SQLFormatterServiceTests.swift b/TableProTests/Core/Services/SQLFormatterServiceTests.swift index 14a9747d34..298a7c3c8f 100644 --- a/TableProTests/Core/Services/SQLFormatterServiceTests.swift +++ b/TableProTests/Core/Services/SQLFormatterServiceTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQL Formatter Service") @MainActor struct SQLFormatterServiceTests { let formatter = SQLFormatterService() diff --git a/TableProTests/Core/Services/SQLParameterInlinerTests.swift b/TableProTests/Core/Services/SQLParameterInlinerTests.swift index efbe6f14e9..80449a2970 100644 --- a/TableProTests/Core/Services/SQLParameterInlinerTests.swift +++ b/TableProTests/Core/Services/SQLParameterInlinerTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQL Parameter Inliner") struct SQLParameterInlinerTests { @Test("Simple ? replacement for MySQL") func simpleQuestionMarkReplacementMySQL() { diff --git a/TableProTests/Core/Services/SQLTokenizerTests.swift b/TableProTests/Core/Services/SQLTokenizerTests.swift index 08493dc7b5..d172160f3b 100644 --- a/TableProTests/Core/Services/SQLTokenizerTests.swift +++ b/TableProTests/Core/Services/SQLTokenizerTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLTokenizer") struct SQLTokenizerTests { let tokenizer = SQLTokenizer() diff --git a/TableProTests/Core/Services/SchemaMetadataGeneratedColumnTests.swift b/TableProTests/Core/Services/SchemaMetadataGeneratedColumnTests.swift index 2a63e6c3c7..c2c8a8bf95 100644 --- a/TableProTests/Core/Services/SchemaMetadataGeneratedColumnTests.swift +++ b/TableProTests/Core/Services/SchemaMetadataGeneratedColumnTests.swift @@ -11,7 +11,7 @@ import TableProPluginKit @testable import TablePro import Testing -@MainActor @Suite("Schema metadata generated columns") +@MainActor struct SchemaMetadataGeneratedColumnTests { private func makeSchema(_ columns: [ColumnInfo]) -> FetchedTableSchema { FetchedTableSchema(columns: columns, foreignKeys: nil, approximateRowCount: nil) @@ -97,7 +97,7 @@ struct SchemaMetadataGeneratedColumnTests { /// The metadata a rerun inherits is captured when the cache decision is made, not read back when the /// result lands. Reading it late read whichever result was active by then, so selecting a pinned /// result mid-flight made the rerun adopt that other result's identity and non-writable sets. -@MainActor @Suite("Cached schema metadata snapshot") +@MainActor struct CachedSchemaMetadataTests { private func rows( columnIdentity: [String: IdentityKind] = [:], @@ -156,7 +156,7 @@ struct CachedSchemaMetadataTests { /// Only the table's own schema names the columns the server owns. A result set reports far less, so /// treating its silence as "this table owns nothing" staged NULL into an identity column. -@MainActor @Suite("Schema metadata authoritativeness") +@MainActor struct SchemaMetadataAuthoritativenessTests { @Test("A parsed table schema is authoritative") func parsedSchemaIsAuthoritative() { diff --git a/TableProTests/Core/Services/SchemaProviderRegistryTests.swift b/TableProTests/Core/Services/SchemaProviderRegistryTests.swift index 857637e8eb..18ef01aea5 100644 --- a/TableProTests/Core/Services/SchemaProviderRegistryTests.swift +++ b/TableProTests/Core/Services/SchemaProviderRegistryTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("SchemaProviderRegistry") @MainActor struct SchemaProviderRegistryTests { private func scope( diff --git a/TableProTests/Core/Services/SchemaQualifiedNameTests.swift b/TableProTests/Core/Services/SchemaQualifiedNameTests.swift index 973270bfb0..df5662d81e 100644 --- a/TableProTests/Core/Services/SchemaQualifiedNameTests.swift +++ b/TableProTests/Core/Services/SchemaQualifiedNameTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Schema-qualified names") struct SchemaQualifiedNameTests { private static func quote(_ name: String) -> String { "\"\(name.replacingOccurrences(of: "\"", with: "\"\""))\"" diff --git a/TableProTests/Core/Services/SortColumnResolverTests.swift b/TableProTests/Core/Services/SortColumnResolverTests.swift index 7df1f64126..cb4984d4f6 100644 --- a/TableProTests/Core/Services/SortColumnResolverTests.swift +++ b/TableProTests/Core/Services/SortColumnResolverTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SortColumnResolver") struct SortColumnResolverTests { private let displayColumns = ["_id", "name", "email", "createdAt"] diff --git a/TableProTests/Core/Services/TabPersistenceCoordinatorTests.swift b/TableProTests/Core/Services/TabPersistenceCoordinatorTests.swift index 6b62b7ee00..552f273a76 100644 --- a/TableProTests/Core/Services/TabPersistenceCoordinatorTests.swift +++ b/TableProTests/Core/Services/TabPersistenceCoordinatorTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("TabPersistenceCoordinator") @MainActor struct TabPersistenceCoordinatorTests { // MARK: - Helpers diff --git a/TableProTests/Core/Services/TabPersistenceWriteGateTests.swift b/TableProTests/Core/Services/TabPersistenceWriteGateTests.swift index 83a37f901a..dc90537da2 100644 --- a/TableProTests/Core/Services/TabPersistenceWriteGateTests.swift +++ b/TableProTests/Core/Services/TabPersistenceWriteGateTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Tab persistence write gate") @MainActor struct TabPersistenceWriteGateTests { private func makeTab(_ title: String) -> QueryTab { diff --git a/TableProTests/Core/Services/TableQueryBuilderFilterTests.swift b/TableProTests/Core/Services/TableQueryBuilderFilterTests.swift index d2e9508f5a..c39dcb9d3e 100644 --- a/TableProTests/Core/Services/TableQueryBuilderFilterTests.swift +++ b/TableProTests/Core/Services/TableQueryBuilderFilterTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Table Query Builder - Filtered Query Fallback") struct TableQueryBuilderFilteredQueryTests { /// The dialect is what carries the quoting and the operators, so a builder without one emits no /// WHERE at all: that is what `TableQueryBuilderNoSQLTests` asserts for MongoDB. These cases are @@ -86,7 +85,6 @@ struct TableQueryBuilderFilteredQueryTests { } } -@Suite("Table Query Builder - Filtered Count") struct TableQueryBuilderFilteredCountTests { private static let mysqlDialect = SQLDialectDescriptor( identifierQuote: "`", keywords: [], functions: [], dataTypes: [], @@ -145,7 +143,6 @@ struct TableQueryBuilderFilteredCountTests { } } -@Suite("Table Query Builder - Pagination Clause") struct TableQueryBuilderPaginationTests { private static let trinoDialect = SQLDialectDescriptor( identifierQuote: "\"", keywords: [], functions: [], dataTypes: [], @@ -214,7 +211,6 @@ struct TableQueryBuilderPaginationTests { } } -@Suite("Table Query Builder - NoSQL Nil Dialect Fallback") struct TableQueryBuilderNoSQLTests { // MongoDB has no SQL dialect — should produce bare SELECT without WHERE private let builder = TableQueryBuilder(databaseType: .mongodb, pagination: .offset) diff --git a/TableProTests/Core/Services/TableQueryBuilderImplicitSchemaTests.swift b/TableProTests/Core/Services/TableQueryBuilderImplicitSchemaTests.swift index 0ad4527e9c..d9dd0f2624 100644 --- a/TableProTests/Core/Services/TableQueryBuilderImplicitSchemaTests.swift +++ b/TableProTests/Core/Services/TableQueryBuilderImplicitSchemaTests.swift @@ -4,7 +4,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Table Query Builder implicit schema") struct TableQueryBuilderImplicitSchemaTests { private func builder(for databaseType: DatabaseType) throws -> TableQueryBuilder { let dialect = try #require(PluginManager.shared.sqlDialect(for: databaseType)) diff --git a/TableProTests/Core/Services/TableQueryBuilderMSSQLTests.swift b/TableProTests/Core/Services/TableQueryBuilderMSSQLTests.swift index 780fafb86f..693a5fcd7a 100644 --- a/TableProTests/Core/Services/TableQueryBuilderMSSQLTests.swift +++ b/TableProTests/Core/Services/TableQueryBuilderMSSQLTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Table Query Builder MSSQL") struct TableQueryBuilderMSSQLTests { private let builder: TableQueryBuilder diff --git a/TableProTests/Core/Services/TableQueryBuilderSortScopeTests.swift b/TableProTests/Core/Services/TableQueryBuilderSortScopeTests.swift index cf00b24a97..9a72e6aa82 100644 --- a/TableProTests/Core/Services/TableQueryBuilderSortScopeTests.swift +++ b/TableProTests/Core/Services/TableQueryBuilderSortScopeTests.swift @@ -78,7 +78,6 @@ private final class SortRecordingDriver: PluginDatabaseDriver, @unchecked Sendab } } -@Suite("TableQueryBuilder sort scope") struct TableQueryBuilderSortScopeTests { private let displayColumns = ["_id", "name", "email", "createdAt"] diff --git a/TableProTests/Core/Services/TeamCatalogPublisherTests.swift b/TableProTests/Core/Services/TeamCatalogPublisherTests.swift index c24437ef03..aa3b3f484d 100644 --- a/TableProTests/Core/Services/TeamCatalogPublisherTests.swift +++ b/TableProTests/Core/Services/TeamCatalogPublisherTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProImport import Testing -@Suite("TeamCatalogPublisher") @MainActor struct TeamCatalogPublisherTests { private func makeTempDirectory() throws -> URL { diff --git a/TableProTests/Core/Services/TemporalEditingConsistencyTests.swift b/TableProTests/Core/Services/TemporalEditingConsistencyTests.swift index 83bd81a81b..1e57cc6123 100644 --- a/TableProTests/Core/Services/TemporalEditingConsistencyTests.swift +++ b/TableProTests/Core/Services/TemporalEditingConsistencyTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Temporal Editing Consistency") struct TemporalEditingConsistencyTests { // MARK: - The editor's fields decide what is written diff --git a/TableProTests/Core/Services/UndoRowIdentityTests.swift b/TableProTests/Core/Services/UndoRowIdentityTests.swift index e2d19956ff..a7539457cb 100644 --- a/TableProTests/Core/Services/UndoRowIdentityTests.swift +++ b/TableProTests/Core/Services/UndoRowIdentityTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Undo row identity") struct UndoRowIdentityTests { private static let columns = ["id", "name"] diff --git a/TableProTests/Core/Services/WindowLifecycleMonitorTests.swift b/TableProTests/Core/Services/WindowLifecycleMonitorTests.swift index f80d082ba3..3aa4f9bd5f 100644 --- a/TableProTests/Core/Services/WindowLifecycleMonitorTests.swift +++ b/TableProTests/Core/Services/WindowLifecycleMonitorTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("WindowLifecycleMonitor") @MainActor struct WindowLifecycleMonitorTests { private var monitor: WindowLifecycleMonitor { WindowLifecycleMonitor.shared } diff --git a/TableProTests/Core/Services/WindowTabGroupingTests.swift b/TableProTests/Core/Services/WindowTabGroupingTests.swift index c44a37481d..074b7f1724 100644 --- a/TableProTests/Core/Services/WindowTabGroupingTests.swift +++ b/TableProTests/Core/Services/WindowTabGroupingTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("WindowTabGrouping") @MainActor struct WindowTabGroupingTests { /// Every app window shares one identifier. A per-connection identifier is what stopped two diff --git a/TableProTests/Core/Services/WorkspaceRailCellRenderingTests.swift b/TableProTests/Core/Services/WorkspaceRailCellRenderingTests.swift index f04d9384d4..480bc0f39f 100644 --- a/TableProTests/Core/Services/WorkspaceRailCellRenderingTests.swift +++ b/TableProTests/Core/Services/WorkspaceRailCellRenderingTests.swift @@ -13,7 +13,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Workspace rail cell rendering") @MainActor struct WorkspaceRailCellRenderingTests { private static let layout = WorkspaceRailMetrics.medium diff --git a/TableProTests/Core/Services/WorkspaceRailMetricsTests.swift b/TableProTests/Core/Services/WorkspaceRailMetricsTests.swift index c266288300..36bf9a2cd5 100644 --- a/TableProTests/Core/Services/WorkspaceRailMetricsTests.swift +++ b/TableProTests/Core/Services/WorkspaceRailMetricsTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace rail metrics") struct WorkspaceRailMetricsTests { @Test("Rail width follows the system sidebar icon size") func widthFollowsRowSizeStyle() { diff --git a/TableProTests/Core/Services/WorkspaceRailOrderingTests.swift b/TableProTests/Core/Services/WorkspaceRailOrderingTests.swift index b35275a1e1..ebadca1666 100644 --- a/TableProTests/Core/Services/WorkspaceRailOrderingTests.swift +++ b/TableProTests/Core/Services/WorkspaceRailOrderingTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace rail ordering") struct WorkspaceRailOrderingTests { private static let alpha = UUID(uuidString: "00000000-0000-0000-0000-0000000000A1") private static let beta = UUID(uuidString: "00000000-0000-0000-0000-0000000000B2") diff --git a/TableProTests/Core/Services/WorkspaceRailScrollGeometryTests.swift b/TableProTests/Core/Services/WorkspaceRailScrollGeometryTests.swift index 7a110903a6..c6b1b4d98f 100644 --- a/TableProTests/Core/Services/WorkspaceRailScrollGeometryTests.swift +++ b/TableProTests/Core/Services/WorkspaceRailScrollGeometryTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace rail scroll geometry") struct WorkspaceRailScrollGeometryTests { private static let layouts = [ WorkspaceRailMetrics.small, diff --git a/TableProTests/Core/Services/WorkspaceRailStoreTests.swift b/TableProTests/Core/Services/WorkspaceRailStoreTests.swift index 43fca1289e..652d8e93c7 100644 --- a/TableProTests/Core/Services/WorkspaceRailStoreTests.swift +++ b/TableProTests/Core/Services/WorkspaceRailStoreTests.swift @@ -4,7 +4,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Workspace rail entries") @MainActor struct WorkspaceRailStoreTests { private func makeSession( @@ -411,7 +410,6 @@ struct WorkspaceRailStoreTests { } } -@Suite("Workspace rail cell text") @MainActor struct WorkspaceRailCellTextTests { private func makeEntry( @@ -635,7 +633,6 @@ struct WorkspaceRailCellTextTests { } } -@Suite("Workspace rail type select") @MainActor struct WorkspaceRailTypeSelectTests { private func entry(name: String, container: String) -> WorkspaceRailEntry { diff --git a/TableProTests/Core/Storage/AIChatStorageTests.swift b/TableProTests/Core/Storage/AIChatStorageTests.swift index aa98065b5d..186d510ac0 100644 --- a/TableProTests/Core/Storage/AIChatStorageTests.swift +++ b/TableProTests/Core/Storage/AIChatStorageTests.swift @@ -12,7 +12,6 @@ import Testing // TODO: Convert to async tests — AIChatStorage is an actor, methods require await #if false -@Suite("AIChatStorage") struct AIChatStorageTests { private let storage = AIChatStorage.shared diff --git a/TableProTests/Core/Storage/AppSettingsManagerMigrationTests.swift b/TableProTests/Core/Storage/AppSettingsManagerMigrationTests.swift index faaa2398fa..415e14b54d 100644 --- a/TableProTests/Core/Storage/AppSettingsManagerMigrationTests.swift +++ b/TableProTests/Core/Storage/AppSettingsManagerMigrationTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("AppSettingsManager.migrateAI") @MainActor struct AppSettingsManagerMigrationTests { private func makeProvider(name: String, type: AIProviderType = .claude) -> AIProviderConfig { diff --git a/TableProTests/Core/Storage/AppSettingsStorageMigrationTests.swift b/TableProTests/Core/Storage/AppSettingsStorageMigrationTests.swift index e00b5f3406..93bc0f4b4b 100644 --- a/TableProTests/Core/Storage/AppSettingsStorageMigrationTests.swift +++ b/TableProTests/Core/Storage/AppSettingsStorageMigrationTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AppSettingsStorage startup migration") struct AppSettingsStorageMigrationTests { private let generalKey = "com.TablePro.settings.general" diff --git a/TableProTests/Core/Storage/AppSettingsStorageResetTests.swift b/TableProTests/Core/Storage/AppSettingsStorageResetTests.swift index 3a724ee273..6cc943f736 100644 --- a/TableProTests/Core/Storage/AppSettingsStorageResetTests.swift +++ b/TableProTests/Core/Storage/AppSettingsStorageResetTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AppSettingsStorage reset") struct AppSettingsStorageResetTests { @Test("Reset clears the selected settings pane and default sidebar layout") func resetClearsUIOrphans() throws { diff --git a/TableProTests/Core/Storage/AppStorageEnvironmentTests.swift b/TableProTests/Core/Storage/AppStorageEnvironmentTests.swift index 74f1f26516..ea9b06e6f6 100644 --- a/TableProTests/Core/Storage/AppStorageEnvironmentTests.swift +++ b/TableProTests/Core/Storage/AppStorageEnvironmentTests.swift @@ -2,7 +2,6 @@ import Foundation import Testing @testable import TablePro -@Suite("AppStorageEnvironment") struct AppStorageEnvironmentTests { private let sandbox = AppStorageEnvironment.sandboxVariable private let uiTesting = AppStorageEnvironment.uiTestingVariable diff --git a/TableProTests/Core/Storage/CodableListPreferenceStoreTests.swift b/TableProTests/Core/Storage/CodableListPreferenceStoreTests.swift index 2aa8e2d105..c9d143a26a 100644 --- a/TableProTests/Core/Storage/CodableListPreferenceStoreTests.swift +++ b/TableProTests/Core/Storage/CodableListPreferenceStoreTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CodableListPreferenceStore") struct CodableListPreferenceStoreTests { private struct Item: Codable, Identifiable, Equatable { let id: UUID diff --git a/TableProTests/Core/Storage/ColumnLayoutSyncTests.swift b/TableProTests/Core/Storage/ColumnLayoutSyncTests.swift index 4c4fb9f231..13857033f6 100644 --- a/TableProTests/Core/Storage/ColumnLayoutSyncTests.swift +++ b/TableProTests/Core/Storage/ColumnLayoutSyncTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("Column layout sync") @MainActor struct ColumnLayoutSyncTests { private func makePersister() throws -> (FileColumnLayoutPersister, SyncChangeTracker) { diff --git a/TableProTests/Core/Storage/CompositeStorageKeyTests.swift b/TableProTests/Core/Storage/CompositeStorageKeyTests.swift index 38b539075a..88bcff4a4a 100644 --- a/TableProTests/Core/Storage/CompositeStorageKeyTests.swift +++ b/TableProTests/Core/Storage/CompositeStorageKeyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CompositeStorageKey") struct CompositeStorageKeyTests { @Test("Distinct database/schema/table scopes produce distinct keys") func distinctScopesDiffer() { diff --git a/TableProTests/Core/Storage/ConnectionLocalStatePurgeTests.swift b/TableProTests/Core/Storage/ConnectionLocalStatePurgeTests.swift index ce5aaa73b5..7cc45c1493 100644 --- a/TableProTests/Core/Storage/ConnectionLocalStatePurgeTests.swift +++ b/TableProTests/Core/Storage/ConnectionLocalStatePurgeTests.swift @@ -11,7 +11,6 @@ import Testing /// The stores a deleted connection leaves behind that can only be reached with `await`, and the /// drift guard over the three sites that delete one. -@Suite("Connection local state purge") struct ConnectionLocalStatePurgeTests { private func makeHistory() -> (QueryHistoryManager, QueryHistoryStorage) { let storage = QueryHistoryStorage( diff --git a/TableProTests/Core/Storage/ConnectionStorageAIFieldsTests.swift b/TableProTests/Core/Storage/ConnectionStorageAIFieldsTests.swift index 65ee01055e..18b17d7ab3 100644 --- a/TableProTests/Core/Storage/ConnectionStorageAIFieldsTests.swift +++ b/TableProTests/Core/Storage/ConnectionStorageAIFieldsTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing import TableProSyncTransport -@Suite("ConnectionStorage AI Fields") @MainActor struct ConnectionStorageAIFieldsTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/ConnectionStorageAdditionalFieldsTests.swift b/TableProTests/Core/Storage/ConnectionStorageAdditionalFieldsTests.swift index ef2cc546fa..0538e1f3f8 100644 --- a/TableProTests/Core/Storage/ConnectionStorageAdditionalFieldsTests.swift +++ b/TableProTests/Core/Storage/ConnectionStorageAdditionalFieldsTests.swift @@ -9,7 +9,6 @@ import Testing import TableProSyncTransport @testable import TablePro -@Suite("ConnectionStorage Additional Fields") @MainActor struct ConnectionStorageAdditionalFieldsTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/ConnectionStorageExternalAccessTests.swift b/TableProTests/Core/Storage/ConnectionStorageExternalAccessTests.swift index 370f67461f..e8253dc05f 100644 --- a/TableProTests/Core/Storage/ConnectionStorageExternalAccessTests.swift +++ b/TableProTests/Core/Storage/ConnectionStorageExternalAccessTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing import TableProSyncTransport -@Suite("ConnectionStorage External Access") @MainActor struct ConnectionStorageExternalAccessTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/ConnectionStoragePersistenceTests.swift b/TableProTests/Core/Storage/ConnectionStoragePersistenceTests.swift index 0e65b04053..488228c722 100644 --- a/TableProTests/Core/Storage/ConnectionStoragePersistenceTests.swift +++ b/TableProTests/Core/Storage/ConnectionStoragePersistenceTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSyncTransport import Testing -@Suite("ConnectionStorage Persistence") @MainActor struct ConnectionStoragePersistenceTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/ConnectionStorageRemoveTagTests.swift b/TableProTests/Core/Storage/ConnectionStorageRemoveTagTests.swift index 1a7dcb3b2c..eee8bae4e7 100644 --- a/TableProTests/Core/Storage/ConnectionStorageRemoveTagTests.swift +++ b/TableProTests/Core/Storage/ConnectionStorageRemoveTagTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing import TableProSyncTransport -@Suite("ConnectionStorage removeTagId") @MainActor struct ConnectionStorageRemoveTagTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/ConnectionStorageSyncDeleteTests.swift b/TableProTests/Core/Storage/ConnectionStorageSyncDeleteTests.swift index 824c66007a..d037e31146 100644 --- a/TableProTests/Core/Storage/ConnectionStorageSyncDeleteTests.swift +++ b/TableProTests/Core/Storage/ConnectionStorageSyncDeleteTests.swift @@ -10,7 +10,6 @@ import TableProSyncTransport @testable import TablePro -@Suite("ConnectionStorage sync delete ordering") @MainActor struct ConnectionStorageSyncDeleteTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/ConnectionStoreIntegrityTests.swift b/TableProTests/Core/Storage/ConnectionStoreIntegrityTests.swift index 977bf66d8b..8bcd4bd085 100644 --- a/TableProTests/Core/Storage/ConnectionStoreIntegrityTests.swift +++ b/TableProTests/Core/Storage/ConnectionStoreIntegrityTests.swift @@ -21,7 +21,6 @@ private struct MissingIntegrityKeySource: IntegrityKeySource { func key() -> SymmetricKey? { nil } } -@Suite("Connection store integrity") struct ConnectionStoreIntegrityTests { private let integrity = ConnectionStoreIntegrity( keySource: FixedIntegrityKeySource(material: Data(repeating: 0x5A, count: 32)) diff --git a/TableProTests/Core/Storage/CredentialProfileStorageTests.swift b/TableProTests/Core/Storage/CredentialProfileStorageTests.swift index 16daa4a3c4..38bc6dad5c 100644 --- a/TableProTests/Core/Storage/CredentialProfileStorageTests.swift +++ b/TableProTests/Core/Storage/CredentialProfileStorageTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Credential profile storage") @MainActor struct CredentialProfileStorageTests { private let storage: CredentialProfileStorage diff --git a/TableProTests/Core/Storage/CustomSlashCommandStorageTests.swift b/TableProTests/Core/Storage/CustomSlashCommandStorageTests.swift index 215141fb1f..2f5ea87a3a 100644 --- a/TableProTests/Core/Storage/CustomSlashCommandStorageTests.swift +++ b/TableProTests/Core/Storage/CustomSlashCommandStorageTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("CustomSlashCommandStorage") @MainActor struct CustomSlashCommandStorageTests { private func makeStorage() -> CustomSlashCommandStorage { diff --git a/TableProTests/Core/Storage/DatabaseTreeFilterStorageTests.swift b/TableProTests/Core/Storage/DatabaseTreeFilterStorageTests.swift index 705b9b19ee..e878074917 100644 --- a/TableProTests/Core/Storage/DatabaseTreeFilterStorageTests.swift +++ b/TableProTests/Core/Storage/DatabaseTreeFilterStorageTests.swift @@ -3,7 +3,6 @@ import Foundation import Testing @MainActor -@Suite("DatabaseTreeFilterStorage") struct DatabaseTreeFilterStorageTests { private func makeStorage() throws -> DatabaseTreeFilterStorage { let suite = "DatabaseTreeFilterStorageTests.\(UUID().uuidString)" diff --git a/TableProTests/Core/Storage/ExternalConnectionTrustStoreTests.swift b/TableProTests/Core/Storage/ExternalConnectionTrustStoreTests.swift index e9f4457ceb..9f39e948f1 100644 --- a/TableProTests/Core/Storage/ExternalConnectionTrustStoreTests.swift +++ b/TableProTests/Core/Storage/ExternalConnectionTrustStoreTests.swift @@ -3,7 +3,6 @@ import Foundation import Testing @MainActor -@Suite("ExternalConnectionTrustStore") struct ExternalConnectionTrustStoreTests { private func makeStore() throws -> ExternalConnectionTrustStore { let suite = "ExternalConnectionTrustStoreTests.\(UUID().uuidString)" diff --git a/TableProTests/Core/Storage/FavoriteDatabasesStorageTests.swift b/TableProTests/Core/Storage/FavoriteDatabasesStorageTests.swift index 320d506ad3..6a471f6350 100644 --- a/TableProTests/Core/Storage/FavoriteDatabasesStorageTests.swift +++ b/TableProTests/Core/Storage/FavoriteDatabasesStorageTests.swift @@ -10,7 +10,6 @@ import TableProSyncTransport @testable import TablePro @MainActor -@Suite("FavoriteDatabasesStorage") struct FavoriteDatabasesStorageTests { private static let storageKey = "com.TablePro.favoriteDatabases" diff --git a/TableProTests/Core/Storage/FavoriteTablesStorageTests.swift b/TableProTests/Core/Storage/FavoriteTablesStorageTests.swift index fe5b9649c7..757ab3cc14 100644 --- a/TableProTests/Core/Storage/FavoriteTablesStorageTests.swift +++ b/TableProTests/Core/Storage/FavoriteTablesStorageTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("FavoriteTablesStorage") @MainActor struct FavoriteTablesStorageTests { private func makeStorage() throws -> (FavoriteTablesStorage, SyncMetadataStorage) { diff --git a/TableProTests/Core/Storage/FilterSettingsStorageTests.swift b/TableProTests/Core/Storage/FilterSettingsStorageTests.swift index 22061aabff..c5be61749b 100644 --- a/TableProTests/Core/Storage/FilterSettingsStorageTests.swift +++ b/TableProTests/Core/Storage/FilterSettingsStorageTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("FilterSettingsStorage") @MainActor struct FilterSettingsStorageTests { private func makeStorage() -> (storage: FilterSettingsStorage, directory: URL) { diff --git a/TableProTests/Core/Storage/HighlightRuleStorageTests.swift b/TableProTests/Core/Storage/HighlightRuleStorageTests.swift index 5129a8c2ee..01584ae7d4 100644 --- a/TableProTests/Core/Storage/HighlightRuleStorageTests.swift +++ b/TableProTests/Core/Storage/HighlightRuleStorageTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Highlight rule storage") @MainActor struct HighlightRuleStorageTests { private let directory: URL diff --git a/TableProTests/Core/Storage/KeychainAccessControlTests.swift b/TableProTests/Core/Storage/KeychainAccessControlTests.swift index 74a0529114..30d46a9561 100644 --- a/TableProTests/Core/Storage/KeychainAccessControlTests.swift +++ b/TableProTests/Core/Storage/KeychainAccessControlTests.swift @@ -9,7 +9,6 @@ import Security import Testing @testable import TablePro -@Suite("Keychain Access Control") struct KeychainAccessControlTests { @Test("AfterFirstUnlock constant is available for syncable items") func correctConstantAvailable() { diff --git a/TableProTests/Core/Storage/KeychainHelperTests.swift b/TableProTests/Core/Storage/KeychainHelperTests.swift index 79268b26ab..dc3818c9bd 100644 --- a/TableProTests/Core/Storage/KeychainHelperTests.swift +++ b/TableProTests/Core/Storage/KeychainHelperTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("KeychainHelper") struct KeychainHelperTests { private let helper = KeychainHelper.shared diff --git a/TableProTests/Core/Storage/KeychainStringResultValueTests.swift b/TableProTests/Core/Storage/KeychainStringResultValueTests.swift index f4d6c359a6..5b1ffaaab9 100644 --- a/TableProTests/Core/Storage/KeychainStringResultValueTests.swift +++ b/TableProTests/Core/Storage/KeychainStringResultValueTests.swift @@ -8,7 +8,6 @@ import os @testable import TablePro import Testing -@Suite("KeychainStringResult.value") struct KeychainStringResultValueTests { private let logger = Logger(subsystem: "com.TablePro.tests", category: "keychain") diff --git a/TableProTests/Core/Storage/LinkedFolderStoreTests.swift b/TableProTests/Core/Storage/LinkedFolderStoreTests.swift index bd7e5a03a5..1be1f06277 100644 --- a/TableProTests/Core/Storage/LinkedFolderStoreTests.swift +++ b/TableProTests/Core/Storage/LinkedFolderStoreTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Linked folder stores") struct LinkedFolderStoreTests { @Test("LinkedFolderStorage adds and removes through the shared implementation") func linkedFolderRoundTrips() throws { diff --git a/TableProTests/Core/Storage/LinkedKeywordMergeTests.swift b/TableProTests/Core/Storage/LinkedKeywordMergeTests.swift index 8f28059eee..6222fbcc05 100644 --- a/TableProTests/Core/Storage/LinkedKeywordMergeTests.swift +++ b/TableProTests/Core/Storage/LinkedKeywordMergeTests.swift @@ -11,7 +11,6 @@ import Testing /// Two linked `.sql` files may declare the same keyword, and nothing stops them: the files are /// edited outside the app and the index holds no uniqueness. Which one the keyword reached used to /// be decided by whichever disk read finished first, so it changed between launches. -@Suite("Linked keyword merge") struct LinkedKeywordMergeTests { private func candidate( keyword: String = "daily", diff --git a/TableProTests/Core/Storage/LoadableExtensionApprovalStoreTests.swift b/TableProTests/Core/Storage/LoadableExtensionApprovalStoreTests.swift index f20bf6a46a..baaed62f41 100644 --- a/TableProTests/Core/Storage/LoadableExtensionApprovalStoreTests.swift +++ b/TableProTests/Core/Storage/LoadableExtensionApprovalStoreTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Loadable extension approvals") @MainActor struct LoadableExtensionApprovalStoreTests { private let defaults: UserDefaults diff --git a/TableProTests/Core/Storage/PreferenceKeysGuardTests.swift b/TableProTests/Core/Storage/PreferenceKeysGuardTests.swift index 523690e26a..33993a16d8 100644 --- a/TableProTests/Core/Storage/PreferenceKeysGuardTests.swift +++ b/TableProTests/Core/Storage/PreferenceKeysGuardTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Preference key registry & guard") struct PreferenceKeysGuardTests { @Test("Registered keys are unique and namespaced") func registryIsCleanlyNamespaced() { diff --git a/TableProTests/Core/Storage/QueryHistoryCaptureTests.swift b/TableProTests/Core/Storage/QueryHistoryCaptureTests.swift index 43a68c2cc4..ed69c013e8 100644 --- a/TableProTests/Core/Storage/QueryHistoryCaptureTests.swift +++ b/TableProTests/Core/Storage/QueryHistoryCaptureTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query history capture pause") struct QueryHistoryCaptureTests { private func makeStorage() -> QueryHistoryStorage { QueryHistoryStorage( diff --git a/TableProTests/Core/Storage/QueryHistoryFingerprintMigrationTests.swift b/TableProTests/Core/Storage/QueryHistoryFingerprintMigrationTests.swift index c10d36cbb5..bc4d70ee73 100644 --- a/TableProTests/Core/Storage/QueryHistoryFingerprintMigrationTests.swift +++ b/TableProTests/Core/Storage/QueryHistoryFingerprintMigrationTests.swift @@ -11,7 +11,6 @@ import SQLite3 @testable import TablePro import Testing -@Suite("QueryHistoryStorage fingerprint migration") struct QueryHistoryFingerprintMigrationTests { private static let transient = unsafeBitCast(-1, to: sqlite3_destructor_type.self) diff --git a/TableProTests/Core/Storage/QueryHistoryInsightsTests.swift b/TableProTests/Core/Storage/QueryHistoryInsightsTests.swift index 411b07203d..0606e1d9ff 100644 --- a/TableProTests/Core/Storage/QueryHistoryInsightsTests.swift +++ b/TableProTests/Core/Storage/QueryHistoryInsightsTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryHistoryInsights") struct QueryHistoryInsightsTests { private let storage: QueryHistoryStorage private let connectionId = UUID() diff --git a/TableProTests/Core/Storage/QueryHistoryMigrationTests.swift b/TableProTests/Core/Storage/QueryHistoryMigrationTests.swift index 639e2025b7..d15c55474a 100644 --- a/TableProTests/Core/Storage/QueryHistoryMigrationTests.swift +++ b/TableProTests/Core/Storage/QueryHistoryMigrationTests.swift @@ -13,7 +13,6 @@ import SQLite3 import TableProPluginKit import Testing -@Suite("QueryHistoryStorage migration") struct QueryHistoryMigrationTests { private static let transient = unsafeBitCast(-1, to: sqlite3_destructor_type.self) diff --git a/TableProTests/Core/Storage/QueryHistoryStorageTests.swift b/TableProTests/Core/Storage/QueryHistoryStorageTests.swift index c8700b0da4..2e7742b7c6 100644 --- a/TableProTests/Core/Storage/QueryHistoryStorageTests.swift +++ b/TableProTests/Core/Storage/QueryHistoryStorageTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("QueryHistoryStorage") struct QueryHistoryStorageTests { private let storage: QueryHistoryStorage diff --git a/TableProTests/Core/Storage/QueryHistoryTimingTests.swift b/TableProTests/Core/Storage/QueryHistoryTimingTests.swift index 242818ef5d..c938774e8b 100644 --- a/TableProTests/Core/Storage/QueryHistoryTimingTests.swift +++ b/TableProTests/Core/Storage/QueryHistoryTimingTests.swift @@ -12,7 +12,6 @@ import SQLite3 import TableProPluginKit import Testing -@Suite("QueryHistory timing") struct QueryHistoryTimingTests { private static let transient = unsafeBitCast(-1, to: sqlite3_destructor_type.self) diff --git a/TableProTests/Core/Storage/QueryPlanSnapshotStorageTests.swift b/TableProTests/Core/Storage/QueryPlanSnapshotStorageTests.swift index 6b0b2b7aac..15571ae8cc 100644 --- a/TableProTests/Core/Storage/QueryPlanSnapshotStorageTests.swift +++ b/TableProTests/Core/Storage/QueryPlanSnapshotStorageTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Saved query plans") struct QueryPlanSnapshotStorageTests { // MARK: - Identity diff --git a/TableProTests/Core/Storage/RecentTablesStoreMigrationTests.swift b/TableProTests/Core/Storage/RecentTablesStoreMigrationTests.swift index 463314bb39..6c0522db1d 100644 --- a/TableProTests/Core/Storage/RecentTablesStoreMigrationTests.swift +++ b/TableProTests/Core/Storage/RecentTablesStoreMigrationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("RecentTablesStore migration") @MainActor struct RecentTablesStoreMigrationTests { @Test("Migrates the legacy RecentTables.v1 key to the namespaced key") diff --git a/TableProTests/Core/Storage/RecentTablesStoreSchemaClearTests.swift b/TableProTests/Core/Storage/RecentTablesStoreSchemaClearTests.swift index 40bb59a21e..a3f4368a37 100644 --- a/TableProTests/Core/Storage/RecentTablesStoreSchemaClearTests.swift +++ b/TableProTests/Core/Storage/RecentTablesStoreSchemaClearTests.swift @@ -10,7 +10,6 @@ import Testing /// Dropping a schema used to leave its Recent entries behind, so every one of them opened a tab /// whose query failed with "relation does not exist", and they survived a reconnect and a restart /// because they persist per connection in UserDefaults. -@Suite("RecentTablesStore schema clear") @MainActor struct RecentTablesStoreSchemaClearTests { private func entry(database: String?, schema: String?, name: String) -> RecentTableEntry { diff --git a/TableProTests/Core/Storage/RecentlyClosedTabStoreTests.swift b/TableProTests/Core/Storage/RecentlyClosedTabStoreTests.swift index bc8063e2c6..f87f58807e 100644 --- a/TableProTests/Core/Storage/RecentlyClosedTabStoreTests.swift +++ b/TableProTests/Core/Storage/RecentlyClosedTabStoreTests.swift @@ -3,7 +3,6 @@ import Foundation import Testing @MainActor -@Suite("RecentlyClosedTabStore") struct RecentlyClosedTabStoreTests { private func makeStore() throws -> (store: RecentlyClosedTabStore, directory: URL) { let directory = FileManager.default.temporaryDirectory diff --git a/TableProTests/Core/Storage/RecoveryConnectionListTests.swift b/TableProTests/Core/Storage/RecoveryConnectionListTests.swift index 84f72c12c2..c2e3ac211d 100644 --- a/TableProTests/Core/Storage/RecoveryConnectionListTests.swift +++ b/TableProTests/Core/Storage/RecoveryConnectionListTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Recovery connection list") struct RecoveryConnectionListTests { @Test("A connected window is restored") func activatedWindowIsRestored() { diff --git a/TableProTests/Core/Storage/RemoteFavoriteKeywordResolverTests.swift b/TableProTests/Core/Storage/RemoteFavoriteKeywordResolverTests.swift index 4dc5b8b465..6629c4f128 100644 --- a/TableProTests/Core/Storage/RemoteFavoriteKeywordResolverTests.swift +++ b/TableProTests/Core/Storage/RemoteFavoriteKeywordResolverTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Remote favorite keyword resolver") struct RemoteFavoriteKeywordResolverTests { private let connectionId = UUID() private let older = Date(timeIntervalSince1970: 1_000) diff --git a/TableProTests/Core/Storage/RewindSnapshotStorageTests.swift b/TableProTests/Core/Storage/RewindSnapshotStorageTests.swift index 5e91c9d405..0c291dc7df 100644 --- a/TableProTests/Core/Storage/RewindSnapshotStorageTests.swift +++ b/TableProTests/Core/Storage/RewindSnapshotStorageTests.swift @@ -25,7 +25,6 @@ private final class FakeRewindKeychain: KeychainStoring, @unchecked Sendable { } } -@Suite("Rewind snapshot storage") struct RewindSnapshotStorageTests { private let connectionId = UUID() diff --git a/TableProTests/Core/Storage/SQLFavoriteDeletionSyncTests.swift b/TableProTests/Core/Storage/SQLFavoriteDeletionSyncTests.swift index 922aa87109..b34eb43305 100644 --- a/TableProTests/Core/Storage/SQLFavoriteDeletionSyncTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteDeletionSyncTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("SQL favorite deletion sync") struct SQLFavoriteDeletionSyncTests { private let storage: SQLFavoriteStorage private let metadata: SyncMetadataStorage diff --git a/TableProTests/Core/Storage/SQLFavoriteEditValidationTests.swift b/TableProTests/Core/Storage/SQLFavoriteEditValidationTests.swift index c83d43d268..429b841767 100644 --- a/TableProTests/Core/Storage/SQLFavoriteEditValidationTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteEditValidationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLFavoriteKeywordValidator") struct SQLFavoriteKeywordValidatorTests { @Test("Empty keyword is valid regardless of availability") func emptyKeywordIsValid() { @@ -54,7 +53,6 @@ struct SQLFavoriteKeywordValidatorTests { } } -@Suite("SQLFavoriteEditValidation") struct SQLFavoriteEditValidationTests { @Test("Blank name blocks save") func blankNameBlocks() { @@ -101,7 +99,6 @@ struct SQLFavoriteEditValidationTests { } } -@Suite("SQLFavoriteSizeValidation") struct SQLFavoriteSizeValidationTests { private static let limit = SQLFavoriteSizeValidation.maximumSyncableByteCount @@ -153,7 +150,6 @@ struct SQLFavoriteSizeValidationTests { } @MainActor -@Suite("SQLFavoriteKeywordField") struct SQLFavoriteKeywordFieldTests { @Test("Validation reflects the availability check result") func reflectsAvailability() async { diff --git a/TableProTests/Core/Storage/SQLFavoriteFolderScopeTests.swift b/TableProTests/Core/Storage/SQLFavoriteFolderScopeTests.swift index 3cf4d7cd4a..5a770b5303 100644 --- a/TableProTests/Core/Storage/SQLFavoriteFolderScopeTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteFolderScopeTests.swift @@ -11,7 +11,6 @@ import Testing /// Issue #3045. A folder now carries a scope the user can set, and setting it writes that folder /// and nothing else: `FavoritesTreeBuilder` places every relative whose container a connection /// cannot resolve, so a walk would only reach records the user never selected. -@Suite("SQL favorite folder scope") struct SQLFavoriteFolderScopeTests { private let storage: SQLFavoriteStorage diff --git a/TableProTests/Core/Storage/SQLFavoriteRemoteApplyTests.swift b/TableProTests/Core/Storage/SQLFavoriteRemoteApplyTests.swift index 8c702adb31..a62a228a04 100644 --- a/TableProTests/Core/Storage/SQLFavoriteRemoteApplyTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteRemoteApplyTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("SQL favorite remote apply") struct SQLFavoriteRemoteApplyTests { private let storage: SQLFavoriteStorage private let metadata: SyncMetadataStorage diff --git a/TableProTests/Core/Storage/SQLFavoriteScopeChangeTests.swift b/TableProTests/Core/Storage/SQLFavoriteScopeChangeTests.swift index 6baa45eabf..326c46a8e0 100644 --- a/TableProTests/Core/Storage/SQLFavoriteScopeChangeTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteScopeChangeTests.swift @@ -11,7 +11,6 @@ import Testing /// A global favorite is in every connection's list, so moving one into a single connection takes it /// out of every other connection's. The event has to say so, or the sidebar, the editor's keyword /// expansion and the Quick Switcher all go on offering a favorite that has left them. -@Suite("SQL favorite scope changes") struct SQLFavoriteScopeChangeTests { private let storage: SQLFavoriteStorage diff --git a/TableProTests/Core/Storage/SQLFavoriteStorageOpenTests.swift b/TableProTests/Core/Storage/SQLFavoriteStorageOpenTests.swift index c8625bb37b..beadb3cc17 100644 --- a/TableProTests/Core/Storage/SQLFavoriteStorageOpenTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteStorageOpenTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQL favorite storage open and sync reads") struct SQLFavoriteStorageOpenTests { private let scratch: URL diff --git a/TableProTests/Core/Storage/SQLFavoriteStorageTests.swift b/TableProTests/Core/Storage/SQLFavoriteStorageTests.swift index 97d8b1392f..7c3a140942 100644 --- a/TableProTests/Core/Storage/SQLFavoriteStorageTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteStorageTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("SQLFavoriteStorage") struct SQLFavoriteStorageTests { private let storage: SQLFavoriteStorage diff --git a/TableProTests/Core/Storage/SQLFavoriteVersionTests.swift b/TableProTests/Core/Storage/SQLFavoriteVersionTests.swift index da4b87c6fb..de726b4e6d 100644 --- a/TableProTests/Core/Storage/SQLFavoriteVersionTests.swift +++ b/TableProTests/Core/Storage/SQLFavoriteVersionTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("SQLFavorite versions") struct SQLFavoriteVersionTests { private let storage: SQLFavoriteStorage private let defaults: UserDefaults diff --git a/TableProTests/Core/Storage/SSHProfileStorageTests.swift b/TableProTests/Core/Storage/SSHProfileStorageTests.swift index f7b815c76d..88b5fd7295 100644 --- a/TableProTests/Core/Storage/SSHProfileStorageTests.swift +++ b/TableProTests/Core/Storage/SSHProfileStorageTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("SSH profile storage") @MainActor struct SSHProfileStorageTests { private let storage: SSHProfileStorage diff --git a/TableProTests/Core/Storage/SafeModeMigrationTests.swift b/TableProTests/Core/Storage/SafeModeMigrationTests.swift index d872c886cb..bbbd9b7759 100644 --- a/TableProTests/Core/Storage/SafeModeMigrationTests.swift +++ b/TableProTests/Core/Storage/SafeModeMigrationTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import Testing import TableProSyncTransport -@Suite("SafeModeMigration") @MainActor struct SafeModeMigrationTests { private let storage: ConnectionStorage diff --git a/TableProTests/Core/Storage/StoredConnectionTagTests.swift b/TableProTests/Core/Storage/StoredConnectionTagTests.swift index 63419430eb..b89f72cedb 100644 --- a/TableProTests/Core/Storage/StoredConnectionTagTests.swift +++ b/TableProTests/Core/Storage/StoredConnectionTagTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("StoredConnection tag persistence") struct StoredConnectionTagTests { @Test("Round trips multiple tag IDs") func roundTripMultiple() throws { diff --git a/TableProTests/Core/Storage/StoredSecretStateTests.swift b/TableProTests/Core/Storage/StoredSecretStateTests.swift index 0ea89c2608..300d375cd4 100644 --- a/TableProTests/Core/Storage/StoredSecretStateTests.swift +++ b/TableProTests/Core/Storage/StoredSecretStateTests.swift @@ -39,7 +39,6 @@ private final class ScriptedKeychain: KeychainStoring, @unchecked Sendable { } } -@Suite("Stored secret state") @MainActor struct StoredSecretStateTests { private func makeStorage(_ result: KeychainStringResult) -> ConnectionStorage { diff --git a/TableProTests/Core/Storage/SyncDirtyMarkingTests.swift b/TableProTests/Core/Storage/SyncDirtyMarkingTests.swift index 5893f1ef6a..e48e15b100 100644 --- a/TableProTests/Core/Storage/SyncDirtyMarkingTests.swift +++ b/TableProTests/Core/Storage/SyncDirtyMarkingTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("Per-record sync marks") @MainActor struct SyncDirtyMarkingTests { private let unique = UUID().uuidString diff --git a/TableProTests/Core/Storage/TabDiskStateDecodingTests.swift b/TableProTests/Core/Storage/TabDiskStateDecodingTests.swift index fd530c44b2..9cb194b532 100644 --- a/TableProTests/Core/Storage/TabDiskStateDecodingTests.swift +++ b/TableProTests/Core/Storage/TabDiskStateDecodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TabDiskState decoding") struct TabDiskStateDecodingTests { @Test("Drops tabs with an unknown legacy tab type and keeps the valid ones") func dropsUnknownLegacyTabType() throws { diff --git a/TableProTests/Core/Storage/TableScopeDecodeTests.swift b/TableProTests/Core/Storage/TableScopeDecodeTests.swift index ee636e6aab..7ac35b4298 100644 --- a/TableProTests/Core/Storage/TableScopeDecodeTests.swift +++ b/TableProTests/Core/Storage/TableScopeDecodeTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TableScope decode") struct TableScopeDecodeTests { @Test("Round-trips a full scope through the storage component") func roundTrips() { diff --git a/TableProTests/Core/Storage/TableScopeTests.swift b/TableProTests/Core/Storage/TableScopeTests.swift index 8942f53e02..1366891560 100644 --- a/TableProTests/Core/Storage/TableScopeTests.swift +++ b/TableProTests/Core/Storage/TableScopeTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TableScope") struct TableScopeTests { @Test("storageComponent distinguishes schemas") func schemaDistinguishesKey() { diff --git a/TableProTests/Core/Storage/TableScopedSettingsRegistryTests.swift b/TableProTests/Core/Storage/TableScopedSettingsRegistryTests.swift index 0b27bc9fc2..5f420b446e 100644 --- a/TableProTests/Core/Storage/TableScopedSettingsRegistryTests.swift +++ b/TableProTests/Core/Storage/TableScopedSettingsRegistryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Table-scoped settings registry") @MainActor struct TableScopedSettingsRegistryTests { @MainActor diff --git a/TableProTests/Core/Storage/TransferDialogStorageTests.swift b/TableProTests/Core/Storage/TransferDialogStorageTests.swift index 2fa0152a58..4880d38fb2 100644 --- a/TableProTests/Core/Storage/TransferDialogStorageTests.swift +++ b/TableProTests/Core/Storage/TransferDialogStorageTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("TransferDialogStorage") struct TransferDialogStorageTests { private let suiteName = "com.TablePro.tests.exportDialog.\(UUID().uuidString)" diff --git a/TableProTests/Core/Storage/ValueDisplayFormatStorageTests.swift b/TableProTests/Core/Storage/ValueDisplayFormatStorageTests.swift index 3c20300fd4..7d50ea9da4 100644 --- a/TableProTests/Core/Storage/ValueDisplayFormatStorageTests.swift +++ b/TableProTests/Core/Storage/ValueDisplayFormatStorageTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ValueDisplayFormatStorage") @MainActor struct ValueDisplayFormatStorageTests { private func makeStorage() throws -> (ValueDisplayFormatStorage, UserDefaults) { diff --git a/TableProTests/Core/Storage/WorkspaceRailOrderStoreTests.swift b/TableProTests/Core/Storage/WorkspaceRailOrderStoreTests.swift index 67ac35bcb1..a09985bf78 100644 --- a/TableProTests/Core/Storage/WorkspaceRailOrderStoreTests.swift +++ b/TableProTests/Core/Storage/WorkspaceRailOrderStoreTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace rail order store") @MainActor struct WorkspaceRailOrderStoreTests { private func makeId(container: String = "app") -> WorkspaceID { diff --git a/TableProTests/Core/Sync/CredentialProfileSyncTests.swift b/TableProTests/Core/Sync/CredentialProfileSyncTests.swift index 5a0463de91..d87584df74 100644 --- a/TableProTests/Core/Sync/CredentialProfileSyncTests.swift +++ b/TableProTests/Core/Sync/CredentialProfileSyncTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("Credential profile sync") struct CredentialProfileSyncTests { private static let zoneID = CKRecordZone.ID( zoneName: "TableProSync", diff --git a/TableProTests/Core/Sync/EntitlementsEnvironmentParityTests.swift b/TableProTests/Core/Sync/EntitlementsEnvironmentParityTests.swift index 3fee5a9d98..3b24493c36 100644 --- a/TableProTests/Core/Sync/EntitlementsEnvironmentParityTests.swift +++ b/TableProTests/Core/Sync/EntitlementsEnvironmentParityTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("CloudKit environment entitlement parity") struct EntitlementsEnvironmentParityTests { private static let environmentKey = "com.apple.developer.icloud-container-environment" private static let macEntitlements = "TablePro/TablePro.entitlements" diff --git a/TableProTests/Core/Sync/FavoriteDatabaseSyncTests.swift b/TableProTests/Core/Sync/FavoriteDatabaseSyncTests.swift index 76ffba857d..6eaa798bae 100644 --- a/TableProTests/Core/Sync/FavoriteDatabaseSyncTests.swift +++ b/TableProTests/Core/Sync/FavoriteDatabaseSyncTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("Favorite database sync") struct FavoriteDatabaseSyncTests { private static let zoneID = CKRecordZone.ID( zoneName: "TableProSync", diff --git a/TableProTests/Core/Sync/LicenseSyncPresentationTests.swift b/TableProTests/Core/Sync/LicenseSyncPresentationTests.swift index 583708f83e..5f3ab882d8 100644 --- a/TableProTests/Core/Sync/LicenseSyncPresentationTests.swift +++ b/TableProTests/Core/Sync/LicenseSyncPresentationTests.swift @@ -13,7 +13,6 @@ import TableProSyncTransport @testable import TablePro import Testing -@Suite("License state presentation") struct LicenseSyncPresentationTests { private static let everyStatus: [LicenseStatus] = [ .unlicensed, .active, .expired, .suspended, .deactivated, .validationFailed diff --git a/TableProTests/Core/Sync/SyncChangeTrackerTests.swift b/TableProTests/Core/Sync/SyncChangeTrackerTests.swift index ccc21b84b6..1e32ba5dd4 100644 --- a/TableProTests/Core/Sync/SyncChangeTrackerTests.swift +++ b/TableProTests/Core/Sync/SyncChangeTrackerTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("SyncChangeTracker") @MainActor struct SyncChangeTrackerTests { private let metadata: SyncMetadataStorage diff --git a/TableProTests/Core/Sync/SyncCoordinatorEchoTests.swift b/TableProTests/Core/Sync/SyncCoordinatorEchoTests.swift index b3da0f8c27..f8fb124a43 100644 --- a/TableProTests/Core/Sync/SyncCoordinatorEchoTests.swift +++ b/TableProTests/Core/Sync/SyncCoordinatorEchoTests.swift @@ -5,7 +5,6 @@ import TableProSyncTransport import Testing @MainActor -@Suite("Sync coordinator push and pull cycle") struct SyncCoordinatorEchoTests { private static let zoneID = CKRecordZone.ID( zoneName: CloudKitSyncEngine.zoneName, diff --git a/TableProTests/Core/Sync/SyncCoordinatorSQLFavoritePullTests.swift b/TableProTests/Core/Sync/SyncCoordinatorSQLFavoritePullTests.swift index 6d94ba6ba9..e127211ed1 100644 --- a/TableProTests/Core/Sync/SyncCoordinatorSQLFavoritePullTests.swift +++ b/TableProTests/Core/Sync/SyncCoordinatorSQLFavoritePullTests.swift @@ -10,7 +10,6 @@ import TableProSyncTransport import Testing @MainActor -@Suite("Sync coordinator SQL favorite pull") struct SyncCoordinatorSQLFavoritePullTests { private static let zoneID = CKRecordZone.ID( zoneName: CloudKitSyncEngine.zoneName, diff --git a/TableProTests/Core/Sync/SyncCoordinatorTokenExpiryTests.swift b/TableProTests/Core/Sync/SyncCoordinatorTokenExpiryTests.swift index 489f761531..d35bbf5474 100644 --- a/TableProTests/Core/Sync/SyncCoordinatorTokenExpiryTests.swift +++ b/TableProTests/Core/Sync/SyncCoordinatorTokenExpiryTests.swift @@ -9,7 +9,6 @@ import TableProSyncTransport @testable import TablePro import Testing -@Suite("Sync coordinator token expiry") struct SyncCoordinatorTokenExpiryTests { @Test("The expired token thrown by the engine is recognised") func recognisesTheEngineError() { diff --git a/TableProTests/Core/Sync/SyncMetadataStorageEnvironmentTests.swift b/TableProTests/Core/Sync/SyncMetadataStorageEnvironmentTests.swift index 64731683f8..46473466c7 100644 --- a/TableProTests/Core/Sync/SyncMetadataStorageEnvironmentTests.swift +++ b/TableProTests/Core/Sync/SyncMetadataStorageEnvironmentTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing import TableProSyncTransport -@Suite("Sync metadata storage environment") struct SyncMetadataStorageEnvironmentTests { @Test("The app's sync metadata storage writes into the app storage environment's defaults") func appDefaultFollowsTheStorageEnvironment() { diff --git a/TableProTests/Core/Sync/SyncPushBatchPlannerTests.swift b/TableProTests/Core/Sync/SyncPushBatchPlannerTests.swift index bc803b02f3..ee1dc1d878 100644 --- a/TableProTests/Core/Sync/SyncPushBatchPlannerTests.swift +++ b/TableProTests/Core/Sync/SyncPushBatchPlannerTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing import TableProSyncTransport -@Suite("Sync push batch planner") struct SyncPushBatchPlannerTests { @Test("The default limit is the server's documented 250 items per request") func defaultLimitMatchesServer() { diff --git a/TableProTests/Core/Sync/SyncRecordIdentityTests.swift b/TableProTests/Core/Sync/SyncRecordIdentityTests.swift index d73727f8cc..d4a75bda7f 100644 --- a/TableProTests/Core/Sync/SyncRecordIdentityTests.swift +++ b/TableProTests/Core/Sync/SyncRecordIdentityTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("Push identities survive a shortened record name") @MainActor struct SyncRecordIdentityTests { private static let zone = CKRecordZone.ID(zoneName: "TableProZone", ownerName: CKCurrentUserDefaultName) diff --git a/TableProTests/Core/Sync/SyncRecordMapperConnectionTests.swift b/TableProTests/Core/Sync/SyncRecordMapperConnectionTests.swift index 3db4ec0162..3b30940bce 100644 --- a/TableProTests/Core/Sync/SyncRecordMapperConnectionTests.swift +++ b/TableProTests/Core/Sync/SyncRecordMapperConnectionTests.swift @@ -4,7 +4,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("SyncRecordMapper connection wire schema") struct SyncRecordMapperConnectionTests { private let zoneID = CKRecordZone.ID(zoneName: "TestZone", ownerName: CKCurrentUserDefaultName) diff --git a/TableProTests/Core/Sync/SyncRecordMapperFavoriteTableTests.swift b/TableProTests/Core/Sync/SyncRecordMapperFavoriteTableTests.swift index 28be3d0b01..52977b99e3 100644 --- a/TableProTests/Core/Sync/SyncRecordMapperFavoriteTableTests.swift +++ b/TableProTests/Core/Sync/SyncRecordMapperFavoriteTableTests.swift @@ -4,7 +4,6 @@ import Foundation import Testing import TableProSyncTransport -@Suite("SyncRecordMapper favorite tables") struct SyncRecordMapperFavoriteTableTests { private let zoneID = CKRecordZone.ID(zoneName: "TestZone", ownerName: CKCurrentUserDefaultName) diff --git a/TableProTests/Core/Sync/SyncRecordMapperSQLFavoriteTests.swift b/TableProTests/Core/Sync/SyncRecordMapperSQLFavoriteTests.swift index 58773bd3e7..b52b90a3da 100644 --- a/TableProTests/Core/Sync/SyncRecordMapperSQLFavoriteTests.swift +++ b/TableProTests/Core/Sync/SyncRecordMapperSQLFavoriteTests.swift @@ -4,7 +4,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("SyncRecordMapper SQL favorites") struct SyncRecordMapperSQLFavoriteTests { private let zoneID = CKRecordZone.ID(zoneName: "TestZone", ownerName: CKCurrentUserDefaultName) private let created = Date(timeIntervalSince1970: 1_000) diff --git a/TableProTests/Core/Sync/SyncRecordMapperTagTests.swift b/TableProTests/Core/Sync/SyncRecordMapperTagTests.swift index 10a6404301..b572be7b8d 100644 --- a/TableProTests/Core/Sync/SyncRecordMapperTagTests.swift +++ b/TableProTests/Core/Sync/SyncRecordMapperTagTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SyncRecordMapper connection tags") struct SyncRecordMapperTagTests { private let zoneID = CKRecordZone.ID(zoneName: "TestZone", ownerName: CKCurrentUserDefaultName) diff --git a/TableProTests/Core/Sync/SyncScopeTests.swift b/TableProTests/Core/Sync/SyncScopeTests.swift index 52467aa5bc..fdf16ddd19 100644 --- a/TableProTests/Core/Sync/SyncScopeTests.swift +++ b/TableProTests/Core/Sync/SyncScopeTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProSyncTransport import Testing -@Suite("Sync scope") @MainActor struct SyncScopeTests { @Test("Every current record type is declared synced") diff --git a/TableProTests/Core/Testing/ScreenshotEnvironmentTests.swift b/TableProTests/Core/Testing/ScreenshotEnvironmentTests.swift index 4b3e59b9ab..91997d01c7 100644 --- a/TableProTests/Core/Testing/ScreenshotEnvironmentTests.swift +++ b/TableProTests/Core/Testing/ScreenshotEnvironmentTests.swift @@ -8,7 +8,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ScreenshotEnvironment frame") struct ScreenshotEnvironmentTests { @Test("Reads the size the marketing shots are cut to") func readsWidthAndHeight() throws { diff --git a/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift b/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift index a7b22a22c2..c9a4eb4a6f 100644 --- a/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift +++ b/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift @@ -14,7 +14,6 @@ import Testing /// relicensed at 3.0, Redis at 7.4 and again at 8.0. So the shipped version is checked against /// the pin in the build scripts, and a mismatch fails here rather than being auto-corrected, /// because the right response to a bump is for a person to re-read the upstream licence. -@Suite("Third-party license inventory") struct ThirdPartyLicenseInventoryTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Core/Tips/FeatureTipsTests.swift b/TableProTests/Core/Tips/FeatureTipsTests.swift index 2e3062bd67..6396a09510 100644 --- a/TableProTests/Core/Tips/FeatureTipsTests.swift +++ b/TableProTests/Core/Tips/FeatureTipsTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("FeatureTipsPlan") struct FeatureTipsPlanTests { private let support = URL(fileURLWithPath: "/tmp/tablepro-support", isDirectory: true) @@ -67,7 +66,6 @@ struct FeatureTipsPlanTests { } } -@Suite("FeatureTipCatalog") struct FeatureTipCatalogTests { @available(macOS 14.0, *) @Test("Tip ids are stored keys, so they never change") @@ -86,7 +84,6 @@ struct FeatureTipCatalogTests { } } -@Suite("FeatureTipCopy") struct FeatureTipCopyTests { @Test("A bound shortcut is named in the message") func withShortcut() { diff --git a/TableProTests/Core/Transport/ConnectionTransportActivityTests.swift b/TableProTests/Core/Transport/ConnectionTransportActivityTests.swift index 27d223eea5..f2432f41ba 100644 --- a/TableProTests/Core/Transport/ConnectionTransportActivityTests.swift +++ b/TableProTests/Core/Transport/ConnectionTransportActivityTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ConnectionTransportActivity") struct ConnectionTransportActivityTests { private let totals = TransportByteTotals(received: 4_096, sent: 1_024) diff --git a/TableProTests/Core/Transport/TransportActivityRegistryTests.swift b/TableProTests/Core/Transport/TransportActivityRegistryTests.swift index cbee8fe096..b3c7ffb8d5 100644 --- a/TableProTests/Core/Transport/TransportActivityRegistryTests.swift +++ b/TableProTests/Core/Transport/TransportActivityRegistryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TransportActivityRegistry") struct TransportActivityRegistryTests { @Test("A counter reports its totals through the registry") func readsBackTheTotals() { diff --git a/TableProTests/Core/Transport/TransportRateSamplerTests.swift b/TableProTests/Core/Transport/TransportRateSamplerTests.swift index 8a7294035d..f70ed509d2 100644 --- a/TableProTests/Core/Transport/TransportRateSamplerTests.swift +++ b/TableProTests/Core/Transport/TransportRateSamplerTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TransportRateSampler") struct TransportRateSamplerTests { private let start = ContinuousClock.now diff --git a/TableProTests/Core/UsersRoles/PrincipalStatementGeneratorTests.swift b/TableProTests/Core/UsersRoles/PrincipalStatementGeneratorTests.swift index 9f7755a3ab..5bb58630f1 100644 --- a/TableProTests/Core/UsersRoles/PrincipalStatementGeneratorTests.swift +++ b/TableProTests/Core/UsersRoles/PrincipalStatementGeneratorTests.swift @@ -53,7 +53,6 @@ private final class MockPrincipalDriver: PluginPrincipalManagement, @unchecked S } } -@Suite("Principal statement generation") struct PrincipalStatementGeneratorTests { private let alice = PluginPrincipalRef(name: "alice") diff --git a/TableProTests/Core/UsersRoles/PrivilegeEffectivenessTests.swift b/TableProTests/Core/UsersRoles/PrivilegeEffectivenessTests.swift index b782401fa4..14b1dbfd11 100644 --- a/TableProTests/Core/UsersRoles/PrivilegeEffectivenessTests.swift +++ b/TableProTests/Core/UsersRoles/PrivilegeEffectivenessTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Privilege effectiveness") struct PrivilegeEffectivenessTests { private let table = PluginPrivilegeScope.table(database: "app", schema: "public", table: "orders") private let column = PluginPrivilegeScope.column( @@ -134,7 +133,6 @@ struct PrivilegeEffectivenessTests { } } -@Suite("Scope summary") struct ScopeSummaryTests { private let descriptors = [ PluginPrivilegeDescriptor(name: "SELECT", label: "Select"), @@ -192,7 +190,6 @@ struct ScopeSummaryTests { } } -@Suite("Password generator") struct PasswordGeneratorTests { @Test("Generates the requested length from an unambiguous alphabet") func generatesLength() { @@ -208,7 +205,6 @@ struct PasswordGeneratorTests { } } -@Suite("Privilege categories") struct PrivilegeCategoryTests { @Test("Known keys map to localized titles in a stable order") func mapsKnownKeys() { diff --git a/TableProTests/Core/Utilities/AlertWindowResolutionTests.swift b/TableProTests/Core/Utilities/AlertWindowResolutionTests.swift index 7998c64091..b5134006bc 100644 --- a/TableProTests/Core/Utilities/AlertWindowResolutionTests.swift +++ b/TableProTests/Core/Utilities/AlertWindowResolutionTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Alert window resolution") @MainActor struct AlertWindowResolutionTests { private func makeWindow() -> NSWindow { diff --git a/TableProTests/Core/Utilities/ConnectionURLFormatterSSHProfileTests.swift b/TableProTests/Core/Utilities/ConnectionURLFormatterSSHProfileTests.swift index 8362c10a48..202b3b2317 100644 --- a/TableProTests/Core/Utilities/ConnectionURLFormatterSSHProfileTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLFormatterSSHProfileTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("ConnectionURLFormatter SSH Profile Resolution") @MainActor struct ConnectionURLFormatterSSHProfileTests { @Test("Inline SSH config produces URL with inline SSH user and host") diff --git a/TableProTests/Core/Utilities/ConnectionURLFormatterTests.swift b/TableProTests/Core/Utilities/ConnectionURLFormatterTests.swift index cdeeaeef51..ae5e3a91f6 100644 --- a/TableProTests/Core/Utilities/ConnectionURLFormatterTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLFormatterTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Connection URL Formatter") @MainActor struct ConnectionURLFormatterTests { // MARK: - Basic URLs diff --git a/TableProTests/Core/Utilities/ConnectionURLImportUsernameTests.swift b/TableProTests/Core/Utilities/ConnectionURLImportUsernameTests.swift index f9db99efb6..d02f4c42a1 100644 --- a/TableProTests/Core/Utilities/ConnectionURLImportUsernameTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLImportUsernameTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Connection URL Import Username") @MainActor struct ConnectionURLImportUsernameTests { private func parse(_ urlString: String) throws -> ParsedConnectionURL { diff --git a/TableProTests/Core/Utilities/ConnectionURLParserCockroachDBTests.swift b/TableProTests/Core/Utilities/ConnectionURLParserCockroachDBTests.swift index b288e53579..4a9c00502d 100644 --- a/TableProTests/Core/Utilities/ConnectionURLParserCockroachDBTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLParserCockroachDBTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection URL Parser - CockroachDB") struct ConnectionURLParserCockroachDBTests { @Test("Full cockroachdb URL with default port") func testFullURLDefaultPort() { diff --git a/TableProTests/Core/Utilities/ConnectionURLParserDatabendTests.swift b/TableProTests/Core/Utilities/ConnectionURLParserDatabendTests.swift index 409fcc9307..f129531b35 100644 --- a/TableProTests/Core/Utilities/ConnectionURLParserDatabendTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLParserDatabendTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection URL Parser - Databend") struct ConnectionURLParserDatabendTests { @Test("databend:// is Databend's HTTP DSN and stays unsupported") func databendSchemeUnsupported() { diff --git a/TableProTests/Core/Utilities/ConnectionURLParserMSSQLTests.swift b/TableProTests/Core/Utilities/ConnectionURLParserMSSQLTests.swift index 3db58246ec..1140fa7169 100644 --- a/TableProTests/Core/Utilities/ConnectionURLParserMSSQLTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLParserMSSQLTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Connection URL Parser — MSSQL") struct ConnectionURLParserMSSQLTests { @Test("Full MSSQL URL with default port") diff --git a/TableProTests/Core/Utilities/ConnectionURLParserOceanBaseTests.swift b/TableProTests/Core/Utilities/ConnectionURLParserOceanBaseTests.swift index 8afbd20753..e9d74aabad 100644 --- a/TableProTests/Core/Utilities/ConnectionURLParserOceanBaseTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLParserOceanBaseTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection URL Parser - OceanBase") struct ConnectionURLParserOceanBaseTests { @Test("Full oceanbase URL with default port") func testFullURLDefaultPort() { diff --git a/TableProTests/Core/Utilities/ConnectionURLParserTests.swift b/TableProTests/Core/Utilities/ConnectionURLParserTests.swift index c3ff61d9fc..070cf52a59 100644 --- a/TableProTests/Core/Utilities/ConnectionURLParserTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLParserTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Connection URL Parser") struct ConnectionURLParserTests { // MARK: - PostgreSQL diff --git a/TableProTests/Core/Utilities/ConnectionURLParserTiDBTests.swift b/TableProTests/Core/Utilities/ConnectionURLParserTiDBTests.swift index 6803f8218a..32164990fd 100644 --- a/TableProTests/Core/Utilities/ConnectionURLParserTiDBTests.swift +++ b/TableProTests/Core/Utilities/ConnectionURLParserTiDBTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection URL Parser - TiDB") struct ConnectionURLParserTiDBTests { @Test("Full tidb URL with default port") func testFullURLDefaultPort() { diff --git a/TableProTests/Core/Utilities/CsvRowConverterTests.swift b/TableProTests/Core/Utilities/CsvRowConverterTests.swift index 890bf3c32e..a8dff39b1f 100644 --- a/TableProTests/Core/Utilities/CsvRowConverterTests.swift +++ b/TableProTests/Core/Utilities/CsvRowConverterTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("CSV Row Converter") struct CsvRowConverterTests { private func makeConverter(columns: [String], columnTypes: [ColumnType]) -> CsvRowConverter { CsvRowConverter(columns: columns, columnTypes: columnTypes) diff --git a/TableProTests/Core/Utilities/DatabaseFileClassifierTests.swift b/TableProTests/Core/Utilities/DatabaseFileClassifierTests.swift index e40c3046fb..387ad03078 100644 --- a/TableProTests/Core/Utilities/DatabaseFileClassifierTests.swift +++ b/TableProTests/Core/Utilities/DatabaseFileClassifierTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Database file classifier") struct DatabaseFileClassifierTests { private static let sqliteHeader = Array("SQLite format 3\u{0}".utf8) diff --git a/TableProTests/Core/Utilities/DatabaseFileTypesTests.swift b/TableProTests/Core/Utilities/DatabaseFileTypesTests.swift index 7ae268d368..0558ddaac1 100644 --- a/TableProTests/Core/Utilities/DatabaseFileTypesTests.swift +++ b/TableProTests/Core/Utilities/DatabaseFileTypesTests.swift @@ -14,7 +14,6 @@ import UniformTypeIdentifiers @testable import TablePro -@Suite("Database file types") struct DatabaseFileTypesTests { private func accepts(_ types: [UTType], _ fileExtension: String) -> Bool { types.contains { type in diff --git a/TableProTests/Core/Utilities/DatabaseURLSchemeTests.swift b/TableProTests/Core/Utilities/DatabaseURLSchemeTests.swift index d087d77d2c..5171f97ae6 100644 --- a/TableProTests/Core/Utilities/DatabaseURLSchemeTests.swift +++ b/TableProTests/Core/Utilities/DatabaseURLSchemeTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Database URL Scheme Detection") @MainActor struct DatabaseURLSchemeTests { diff --git a/TableProTests/Core/Utilities/DestructiveAlertDefaultsTests.swift b/TableProTests/Core/Utilities/DestructiveAlertDefaultsTests.swift index c6f1a70d34..deb0c70c8f 100644 --- a/TableProTests/Core/Utilities/DestructiveAlertDefaultsTests.swift +++ b/TableProTests/Core/Utilities/DestructiveAlertDefaultsTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Destructive alert defaults") @MainActor struct DestructiveAlertDefaultsTests { private static let escape = "\u{1B}" diff --git a/TableProTests/Core/Utilities/DisplayedResultReaderTests.swift b/TableProTests/Core/Utilities/DisplayedResultReaderTests.swift index 7c0050c902..f5f5f0aada 100644 --- a/TableProTests/Core/Utilities/DisplayedResultReaderTests.swift +++ b/TableProTests/Core/Utilities/DisplayedResultReaderTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro -@Suite("DisplayedResultReader") struct DisplayedResultReaderTests { private func makeTableRows() -> TableRows { let rows: ContiguousArray = [ diff --git a/TableProTests/Core/Utilities/DownloadedBinaryTests.swift b/TableProTests/Core/Utilities/DownloadedBinaryTests.swift index 9280674b49..6654cd321f 100644 --- a/TableProTests/Core/Utilities/DownloadedBinaryTests.swift +++ b/TableProTests/Core/Utilities/DownloadedBinaryTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("Downloaded binary") struct DownloadedBinaryTests { private func makeTempDirectory() throws -> URL { let url = FileManager.default.temporaryDirectory diff --git a/TableProTests/Core/Utilities/ErrorSheetTextTests.swift b/TableProTests/Core/Utilities/ErrorSheetTextTests.swift index 88d4b54468..19a999474e 100644 --- a/TableProTests/Core/Utilities/ErrorSheetTextTests.swift +++ b/TableProTests/Core/Utilities/ErrorSheetTextTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Error sheet text") struct ErrorSheetTextTests { @Test("A database message shows its hidden characters in the error sheet") func revealsHiddenCharacters() { diff --git a/TableProTests/Core/Utilities/FileTextLoaderTests.swift b/TableProTests/Core/Utilities/FileTextLoaderTests.swift index 630c471687..c151f3c519 100644 --- a/TableProTests/Core/Utilities/FileTextLoaderTests.swift +++ b/TableProTests/Core/Utilities/FileTextLoaderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("File text loader") struct FileTextLoaderTests { private static let headerLength = 4_096 private static let reportedName = "B\u{E1}o c\u{E1}o doanh thu" diff --git a/TableProTests/Core/Utilities/FileTextWriterTests.swift b/TableProTests/Core/Utilities/FileTextWriterTests.swift index c68a7458ac..2384696c71 100644 --- a/TableProTests/Core/Utilities/FileTextWriterTests.swift +++ b/TableProTests/Core/Utilities/FileTextWriterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("File text writer") struct FileTextWriterTests { private struct RefusedAttribute: Error {} diff --git a/TableProTests/Core/Utilities/FixedFormatDateFormatterLocaleTests.swift b/TableProTests/Core/Utilities/FixedFormatDateFormatterLocaleTests.swift index 02e7c25a25..4fb6f68f46 100644 --- a/TableProTests/Core/Utilities/FixedFormatDateFormatterLocaleTests.swift +++ b/TableProTests/Core/Utilities/FixedFormatDateFormatterLocaleTests.swift @@ -10,7 +10,6 @@ import Testing /// machine set to the Buddhist or Japanese calendar writes 2569 or R7 where the format meant 2026. /// Apple's own guidance is to pin a POSIX locale for every fixed format. These values reach cell /// text, the clipboard and export files, so this is wrong data rather than a display glitch. -@Suite("Fixed-format date formatters") struct FixedFormatDateFormatterLocaleTests { @Test("A fixed format under a non-Gregorian calendar needs the POSIX locale to stay Gregorian") func posixLocaleKeepsTheGregorianYear() throws { diff --git a/TableProTests/Core/Utilities/InClauseConverterTests.swift b/TableProTests/Core/Utilities/InClauseConverterTests.swift index 47218b5f38..5d3279d1d6 100644 --- a/TableProTests/Core/Utilities/InClauseConverterTests.swift +++ b/TableProTests/Core/Utilities/InClauseConverterTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("IN Clause Converter") struct InClauseConverterTests { private func makeConverter( columnIndex: Int, diff --git a/TableProTests/Core/Utilities/JavaScriptStatementScannerTests.swift b/TableProTests/Core/Utilities/JavaScriptStatementScannerTests.swift index 083f2da5c5..dc51b170d5 100644 --- a/TableProTests/Core/Utilities/JavaScriptStatementScannerTests.swift +++ b/TableProTests/Core/Utilities/JavaScriptStatementScannerTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("JavaScriptStatementScanner") struct JavaScriptStatementScannerTests { private func texts(_ source: String) -> [String] { JavaScriptStatementScanner.executableStatements(in: source).map(\.trimmed) diff --git a/TableProTests/Core/Utilities/JsonNumberNormalizerTests.swift b/TableProTests/Core/Utilities/JsonNumberNormalizerTests.swift index 187f895877..bd49a30b92 100644 --- a/TableProTests/Core/Utilities/JsonNumberNormalizerTests.swift +++ b/TableProTests/Core/Utilities/JsonNumberNormalizerTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("JSON Number Normalizer") struct JsonNumberNormalizerTests { // MARK: - Integer literals diff --git a/TableProTests/Core/Utilities/JsonRowConverterTests.swift b/TableProTests/Core/Utilities/JsonRowConverterTests.swift index a28f7fffaf..bde9d6684b 100644 --- a/TableProTests/Core/Utilities/JsonRowConverterTests.swift +++ b/TableProTests/Core/Utilities/JsonRowConverterTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("JSON Row Converter") struct JsonRowConverterTests { private func makeConverter(columns: [String], columnTypes: [ColumnType]) -> JsonRowConverter { JsonRowConverter(columns: columns, columnTypes: columnTypes) diff --git a/TableProTests/Core/Utilities/LoopbackHostTests.swift b/TableProTests/Core/Utilities/LoopbackHostTests.swift index d80d86606d..e6a822db80 100644 --- a/TableProTests/Core/Utilities/LoopbackHostTests.swift +++ b/TableProTests/Core/Utilities/LoopbackHostTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Loopback host") struct LoopbackHostTests { @Test("The named loopback spellings are loopback") func acceptsNames() { diff --git a/TableProTests/Core/Utilities/MainActorSerialQueueTests.swift b/TableProTests/Core/Utilities/MainActorSerialQueueTests.swift index 1c7ccb5fee..0127abcd76 100644 --- a/TableProTests/Core/Utilities/MainActorSerialQueueTests.swift +++ b/TableProTests/Core/Utilities/MainActorSerialQueueTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Main actor serial queue") @MainActor struct MainActorSerialQueueTests { @MainActor diff --git a/TableProTests/Core/Utilities/MarkdownTableConverterTests.swift b/TableProTests/Core/Utilities/MarkdownTableConverterTests.swift index a7d056d73a..868268a2d2 100644 --- a/TableProTests/Core/Utilities/MarkdownTableConverterTests.swift +++ b/TableProTests/Core/Utilities/MarkdownTableConverterTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Markdown Table Converter") struct MarkdownTableConverterTests { private func makeConverter(columns: [String], columnTypes: [ColumnType]) -> MarkdownTableConverter { MarkdownTableConverter(columns: columns, columnTypes: columnTypes) diff --git a/TableProTests/Core/Utilities/ModalDecisionWindowSizingTests.swift b/TableProTests/Core/Utilities/ModalDecisionWindowSizingTests.swift index bc2f53485e..4a54b67073 100644 --- a/TableProTests/Core/Utilities/ModalDecisionWindowSizingTests.swift +++ b/TableProTests/Core/Utilities/ModalDecisionWindowSizingTests.swift @@ -8,7 +8,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Modal decision window sizing") @MainActor struct ModalDecisionWindowSizingTests { private let available = NSSize(width: 1_440, height: 900) diff --git a/TableProTests/Core/Utilities/PgpassReaderUsernameTests.swift b/TableProTests/Core/Utilities/PgpassReaderUsernameTests.swift index 69b4a5d029..5bdf9c4e64 100644 --- a/TableProTests/Core/Utilities/PgpassReaderUsernameTests.swift +++ b/TableProTests/Core/Utilities/PgpassReaderUsernameTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Pgpass Effective Username") struct PgpassReaderUsernameTests { @Test("A blank username matches ~/.pgpass as the operating system user") func blankUsernameResolvesToOSUser() { diff --git a/TableProTests/Core/Utilities/QueryStatementModelTests.swift b/TableProTests/Core/Utilities/QueryStatementModelTests.swift index 54e49e10f7..6bc2efd565 100644 --- a/TableProTests/Core/Utilities/QueryStatementModelTests.swift +++ b/TableProTests/Core/Utilities/QueryStatementModelTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("QueryStatementModel") struct QueryStatementModelTests { @Test("MongoDB splits as JavaScript, everything else as SQL") func modelPerType() { diff --git a/TableProTests/Core/Utilities/ResultJsonSerializerTests.swift b/TableProTests/Core/Utilities/ResultJsonSerializerTests.swift index 01b875e11c..7cc4edbde5 100644 --- a/TableProTests/Core/Utilities/ResultJsonSerializerTests.swift +++ b/TableProTests/Core/Utilities/ResultJsonSerializerTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("ResultJsonSerializer") struct ResultJsonSerializerTests { private func makeTableRows() -> TableRows { let rows: ContiguousArray = [ diff --git a/TableProTests/Core/Utilities/SQL/CatalogChangeClassifierTests.swift b/TableProTests/Core/Utilities/SQL/CatalogChangeClassifierTests.swift index f7e714183d..26de96d250 100644 --- a/TableProTests/Core/Utilities/SQL/CatalogChangeClassifierTests.swift +++ b/TableProTests/Core/Utilities/SQL/CatalogChangeClassifierTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CatalogChangeClassifier") struct CatalogChangeClassifierTests { private func kinds(_ sql: String, _ type: DatabaseType = .postgresql) -> CatalogObjectKinds { CatalogChangeClassifier.effect(of: sql, databaseType: type).kinds diff --git a/TableProTests/Core/Utilities/SQL/ColumnTypeSQLQuotingTests.swift b/TableProTests/Core/Utilities/SQL/ColumnTypeSQLQuotingTests.swift index ad64caa64d..10648bc706 100644 --- a/TableProTests/Core/Utilities/SQL/ColumnTypeSQLQuotingTests.swift +++ b/TableProTests/Core/Utilities/SQL/ColumnTypeSQLQuotingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Column Type SQL Quoting") struct ColumnTypeSQLQuotingTests { @Test("An integer column only treats a plain integer as numeric") func integerColumnNumericShapes() { diff --git a/TableProTests/Core/Utilities/SQL/InvisibleCharacterRemoverTests.swift b/TableProTests/Core/Utilities/SQL/InvisibleCharacterRemoverTests.swift index 1a2696cb0d..a85513aba3 100644 --- a/TableProTests/Core/Utilities/SQL/InvisibleCharacterRemoverTests.swift +++ b/TableProTests/Core/Utilities/SQL/InvisibleCharacterRemoverTests.swift @@ -10,7 +10,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Remove invisible characters") struct InvisibleCharacterRemoverTests { private func clean( _ text: String, diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierBeancountTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierBeancountTests.swift index 8bb8a6cdd1..409f8b91e2 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierBeancountTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierBeancountTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryClassifier on Beancount") struct QueryClassifierBeancountTests { @Test( "Every statement a Beancount ledger answers is a read", diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierDynamoDBTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierDynamoDBTests.swift index 23a0b4d087..75e392389e 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierDynamoDBTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierDynamoDBTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryClassifier DynamoDB requests") struct QueryClassifierDynamoDBTests { private func tier(_ sql: String) -> QueryTier { QueryClassifier.classifyTier(sql, databaseType: .dynamodb) @@ -217,7 +216,6 @@ struct QueryClassifierDynamoDBTests { } } -@Suite("CatalogChangeClassifier DynamoDB requests") struct CatalogChangeClassifierDynamoDBTests { private func kinds(_ sql: String) -> CatalogObjectKinds { CatalogChangeClassifier.effect(of: sql, databaseType: .dynamodb).kinds diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierHardeningTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierHardeningTests.swift index 24c8c3981a..ef2cc6d94d 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierHardeningTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierHardeningTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryClassifier fails closed") struct QueryClassifierFailClosedTests { @Test("Statements the keyword table does not know are treated as writes") func unknownKeywordIsWrite() { @@ -252,7 +251,6 @@ struct QueryClassifierFailClosedTests { } } -@Suite("QueryClassifier comment boundaries") struct QueryClassifierCommentBoundaryTests { @Test( "A line comment ends at a carriage return as well as a line feed", @@ -342,7 +340,6 @@ struct QueryClassifierCommentBoundaryTests { } } -@Suite("QueryClassifier non-SQL engines") struct QueryClassifierNonSqlTests { @Test("MongoDB read methods stay safe and writes never look like reads") func mongoTiers() { diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierInvisibleCharacterTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierInvisibleCharacterTests.swift index 29c3e45175..0c0d2dc7e1 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierInvisibleCharacterTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierInvisibleCharacterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryClassifier with invisible characters") struct QueryClassifierInvisibleCharacterTests { @Test( "A read behind a leading invisible character is still a read", diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierLexicalTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierLexicalTests.swift index 981b17563a..461f448362 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierLexicalTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierLexicalTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query classifier lexing") struct QueryClassifierLexicalTests { struct Bypass: CustomTestStringConvertible, Sendable { let engine: DatabaseType diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierPLSQLTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierPLSQLTests.swift index 070515042b..55a98e88b0 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierPLSQLTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierPLSQLTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("Query classifier - Oracle PL/SQL blocks") struct QueryClassifierPLSQLTests { @Test("A block runs server-side code and is at least a write", arguments: [ "BEGIN DBMS_OUTPUT.PUT_LINE('x'); END;", diff --git a/TableProTests/Core/Utilities/SQL/QueryClassifierTests.swift b/TableProTests/Core/Utilities/SQL/QueryClassifierTests.swift index 4e0103b553..9bb7fc586e 100644 --- a/TableProTests/Core/Utilities/SQL/QueryClassifierTests.swift +++ b/TableProTests/Core/Utilities/SQL/QueryClassifierTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProSQLGrammar import Testing -@Suite("QueryClassifier isExplainStatement") struct QueryClassifierExplainTests { @Test("Detects EXPLAIN and EXPLAIN ANALYZE variants") func detectsExplainVariants() { @@ -47,7 +46,6 @@ struct QueryClassifierExplainTests { } } -@Suite("QueryClassifier explainedStatement") struct QueryClassifierExplainedStatementTests { @Test("Preserves line comments between EXPLAIN options and the statement") func preservesLineCommentBeforeStatement() throws { @@ -92,7 +90,6 @@ struct QueryClassifierExplainedStatementTests { } } -@Suite("QueryClassifier classification with leading comments") struct QueryClassifierLeadingCommentTests { @Test("isWriteQuery detects writes preceded by comments") func writeDetectionWithComments() { @@ -117,7 +114,6 @@ struct QueryClassifierLeadingCommentTests { } } -@Suite("QueryClassifier keyword boundary handling") struct QueryClassifierKeywordBoundaryTests { @Test("isWriteQuery detects writes followed by newline or tab") func writeDetectionAcrossWhitespace() { @@ -141,7 +137,6 @@ struct QueryClassifierKeywordBoundaryTests { } } -@Suite("QueryClassifier parenthesised statements") struct QueryClassifierParenthesisedTests { @Test("leadingKeyword reaches past opening parentheses") func leadingKeywordSkipsParens() { @@ -174,7 +169,6 @@ struct QueryClassifierParenthesisedTests { } } -@Suite("QueryClassifier isMultiStatement") struct QueryClassifierMultiStatementTests { @Test("A trailing comment after the terminating semicolon is not a second statement") func trailingCommentIsNotMultiStatement() { @@ -204,7 +198,6 @@ struct QueryClassifierMultiStatementTests { /// T-SQL needs no `;` between statements. Each text below was sent whole to Azure SQL Edge 15.0, which ran every /// statement in it, so the classifier has to tier the ones written after the first as well. -@Suite("QueryClassifier statements SQL Server runs without a terminator") struct QueryClassifierUnterminatedStatementTests { struct Case: CustomTestStringConvertible, Sendable { let sql: String diff --git a/TableProTests/Core/Utilities/SQL/SQLChunkDecoderTests.swift b/TableProTests/Core/Utilities/SQL/SQLChunkDecoderTests.swift index a0a95f64db..7f81b4ce6d 100644 --- a/TableProTests/Core/Utilities/SQL/SQLChunkDecoderTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLChunkDecoderTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SQL chunk decoding") struct SQLChunkDecoderTests { private func decodeInChunks(_ data: Data, encoding: String.Encoding, chunk size: Int) -> String? { var decoder = SQLChunkDecoder(encoding: encoding) diff --git a/TableProTests/Core/Utilities/SQL/SQLExecutableStatementTests.swift b/TableProTests/Core/Utilities/SQL/SQLExecutableStatementTests.swift index c9da423f07..84e7b63a52 100644 --- a/TableProTests/Core/Utilities/SQL/SQLExecutableStatementTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLExecutableStatementTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL executable statements") struct SQLExecutableStatementTests { /// Execution used to run through its own filter and the spans through another. The two trim different character diff --git a/TableProTests/Core/Utilities/SQL/SQLFileParserBatchTests.swift b/TableProTests/Core/Utilities/SQL/SQLFileParserBatchTests.swift index 6ccfb7efa4..22157d165b 100644 --- a/TableProTests/Core/Utilities/SQL/SQLFileParserBatchTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLFileParserBatchTests.swift @@ -15,7 +15,6 @@ import Foundation import TableProSQLGrammar import Testing -@Suite("SQLFileParser - SQL Server batches") struct SQLFileParserBatchTests { private struct Run: Equatable { let statement: String diff --git a/TableProTests/Core/Utilities/SQL/SQLFileParserPLSQLTests.swift b/TableProTests/Core/Utilities/SQL/SQLFileParserPLSQLTests.swift index 0e62659689..8606ac35d7 100644 --- a/TableProTests/Core/Utilities/SQL/SQLFileParserPLSQLTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLFileParserPLSQLTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQLFileParser - Oracle PL/SQL units") struct SQLFileParserPLSQLTests { private static let chunkSize = 65_536 diff --git a/TableProTests/Core/Utilities/SQL/SQLFileParserTests.swift b/TableProTests/Core/Utilities/SQL/SQLFileParserTests.swift index 015d25e008..3e84cc57ac 100644 --- a/TableProTests/Core/Utilities/SQL/SQLFileParserTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLFileParserTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("SQLFileParser dialect-aware parsing") struct SQLFileParserTests { private static func parse(_ sql: String, grammar: SQLLexicalGrammar) async throws -> [String] { let url = FileManager.default.temporaryDirectory diff --git a/TableProTests/Core/Utilities/SQL/SQLFoldPlaceholderLabelTests.swift b/TableProTests/Core/Utilities/SQL/SQLFoldPlaceholderLabelTests.swift index 1c9ab7469c..ddf49254cd 100644 --- a/TableProTests/Core/Utilities/SQL/SQLFoldPlaceholderLabelTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLFoldPlaceholderLabelTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProEditorKit import Testing -@Suite("Fold placeholder summary") struct FoldPlaceholderSummaryTests { private func summarize(_ text: String, from lower: Int, to upper: Int, lines: Int) -> FoldPlaceholderSummary { @@ -61,7 +60,6 @@ struct FoldPlaceholderSummaryTests { } } -@Suite("SQL fold placeholder label") @MainActor struct SQLFoldPlaceholderLabelTests { diff --git a/TableProTests/Core/Utilities/SQL/SQLFoldScannerTests.swift b/TableProTests/Core/Utilities/SQL/SQLFoldScannerTests.swift index fe5db38921..2ac55689a9 100644 --- a/TableProTests/Core/Utilities/SQL/SQLFoldScannerTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLFoldScannerTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL Fold Scanner") struct SQLFoldScannerTests { private func regions(_ sql: String, grammar: SQLLexicalGrammar = TestGrammar.standard) -> [SQLFoldRegion] { @@ -319,7 +318,6 @@ struct SQLFoldScannerTests { } } -@Suite("SQL fold event ordering") struct SQLFoldEventOrderingTests { private func structure(_ sql: String, grammar: SQLLexicalGrammar = TestGrammar.standard) -> SQLFoldStructure { diff --git a/TableProTests/Core/Utilities/SQL/SQLLimitDetectorTests.swift b/TableProTests/Core/Utilities/SQL/SQLLimitDetectorTests.swift index 2805b81aec..5162f15b75 100644 --- a/TableProTests/Core/Utilities/SQL/SQLLimitDetectorTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLLimitDetectorTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("SQLLimitDetector") struct SQLLimitDetectorTests { private func hasLimit( _ sql: String, diff --git a/TableProTests/Core/Utilities/SQL/SQLNonCodeSpanTests.swift b/TableProTests/Core/Utilities/SQL/SQLNonCodeSpanTests.swift index e26c17de79..ec9d5ac028 100644 --- a/TableProTests/Core/Utilities/SQL/SQLNonCodeSpanTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLNonCodeSpanTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL non-code spans") struct SQLNonCodeSpanTests { private func end( _ text: String, diff --git a/TableProTests/Core/Utilities/SQL/SQLQueryFingerprintTests.swift b/TableProTests/Core/Utilities/SQL/SQLQueryFingerprintTests.swift index d5d1b9b35b..6978da6293 100644 --- a/TableProTests/Core/Utilities/SQL/SQLQueryFingerprintTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLQueryFingerprintTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLQueryFingerprint") struct SQLQueryFingerprintTests { private func normalize(_ sql: String, _ type: DatabaseType = .postgresql) -> String { SQLQueryFingerprint.normalize(sql, databaseType: type) diff --git a/TableProTests/Core/Utilities/SQL/SQLScriptTextTests.swift b/TableProTests/Core/Utilities/SQL/SQLScriptTextTests.swift index ee4c890e50..793ba35443 100644 --- a/TableProTests/Core/Utilities/SQL/SQLScriptTextTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLScriptTextTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQLScriptText") struct SQLScriptTextTests { private static let oracle = SQLScriptText(databaseType: .oracle) private static let mysql = SQLScriptText(databaseType: .mysql) diff --git a/TableProTests/Core/Utilities/SQL/SQLSetAssignmentsTests.swift b/TableProTests/Core/Utilities/SQL/SQLSetAssignmentsTests.swift index 72eaabd931..c6cad7e12a 100644 --- a/TableProTests/Core/Utilities/SQL/SQLSetAssignmentsTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLSetAssignmentsTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL SET assignments") struct SQLSetAssignmentsTests { private static func assignments(_ sql: String, readsList: Bool = true) -> [SQLSetAssignment] { var cursor = SQLTokenCursor(sql, grammar: TestGrammar.mysql) diff --git a/TableProTests/Core/Utilities/SQL/SQLStatementBlockSplittingTests.swift b/TableProTests/Core/Utilities/SQL/SQLStatementBlockSplittingTests.swift index 240c5c6933..ee4c786c7e 100644 --- a/TableProTests/Core/Utilities/SQL/SQLStatementBlockSplittingTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLStatementBlockSplittingTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL statement scanner - block splitting") struct SQLStatementBlockSplittingTests { // MARK: - Routine bodies diff --git a/TableProTests/Core/Utilities/SQL/SQLStatementNavigationTests.swift b/TableProTests/Core/Utilities/SQL/SQLStatementNavigationTests.swift index 538614d8ab..fc590e39c2 100644 --- a/TableProTests/Core/Utilities/SQL/SQLStatementNavigationTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLStatementNavigationTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL statement navigation") struct SQLStatementNavigationTests { private let threeStatements = "SELECT 1;\nSELECT 2;\nSELECT 3;" diff --git a/TableProTests/Core/Utilities/SQL/SQLStatementPLSQLSplittingTests.swift b/TableProTests/Core/Utilities/SQL/SQLStatementPLSQLSplittingTests.swift index 9395b14094..a2bf541b61 100644 --- a/TableProTests/Core/Utilities/SQL/SQLStatementPLSQLSplittingTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLStatementPLSQLSplittingTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL statement scanner - Oracle PL/SQL units") struct SQLStatementPLSQLSplittingTests { @Test("Each statement reaches the driver as Oracle accepts it", arguments: PLSQLScriptCorpus.cases) func corpusSplitsAsMeasured(example: PLSQLScriptCase) { diff --git a/TableProTests/Core/Utilities/SQL/SQLStatementRangeTests.swift b/TableProTests/Core/Utilities/SQL/SQLStatementRangeTests.swift index 8fb2d8e25b..22701fa331 100644 --- a/TableProTests/Core/Utilities/SQL/SQLStatementRangeTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLStatementRangeTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL statement scanner - located ranges") struct SQLStatementRangeTests { private func substring(_ sql: String, _ range: NSRange) -> String { diff --git a/TableProTests/Core/Utilities/SQL/SQLTokenCursorTests.swift b/TableProTests/Core/Utilities/SQL/SQLTokenCursorTests.swift index 5ad3cccffa..c1f31692c0 100644 --- a/TableProTests/Core/Utilities/SQL/SQLTokenCursorTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLTokenCursorTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL token cursor") struct SQLTokenCursorTests { private static func tokens(_ sql: String, grammar: SQLLexicalGrammar) -> [SQLTokenCursor.Token] { var cursor = SQLTokenCursor(sql, grammar: grammar) diff --git a/TableProTests/Core/Utilities/SQL/SQLiteExtensionCallScannerTests.swift b/TableProTests/Core/Utilities/SQL/SQLiteExtensionCallScannerTests.swift index fe4bf1ca27..c73f2b5544 100644 --- a/TableProTests/Core/Utilities/SQL/SQLiteExtensionCallScannerTests.swift +++ b/TableProTests/Core/Utilities/SQL/SQLiteExtensionCallScannerTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SQLite extension call scanner") struct SQLiteExtensionCallScannerTests { private func onlyBuiltins(_ sql: String) -> Bool { SQLiteExtensionCallScanner.callsOnlyBuiltins(sql, readings: DatabaseType.sqlite.lexicalReadings) diff --git a/TableProTests/Core/Utilities/SQL/SelectSourceTableParserTests.swift b/TableProTests/Core/Utilities/SQL/SelectSourceTableParserTests.swift index 2c8a8a2e00..19dd60ebce 100644 --- a/TableProTests/Core/Utilities/SQL/SelectSourceTableParserTests.swift +++ b/TableProTests/Core/Utilities/SQL/SelectSourceTableParserTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("SelectSourceTableParser") struct SelectSourceTableParserTests { private static let unknownEngineReadings = SQLLexicalReadings.resolve( databaseTypeId: "Unknown Whatever", diff --git a/TableProTests/Core/Utilities/SQL/SqlLexerTests.swift b/TableProTests/Core/Utilities/SQL/SqlLexerTests.swift index 5b166c7c5c..2ddb1e56e9 100644 --- a/TableProTests/Core/Utilities/SQL/SqlLexerTests.swift +++ b/TableProTests/Core/Utilities/SQL/SqlLexerTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL lexer") struct SqlLexerTests { @Test("A line comment runs to the newline, not past it") diff --git a/TableProTests/Core/Utilities/SQL/StatementBlankTests.swift b/TableProTests/Core/Utilities/SQL/StatementBlankTests.swift index b0aea34e89..14efe72898 100644 --- a/TableProTests/Core/Utilities/SQL/StatementBlankTests.swift +++ b/TableProTests/Core/Utilities/SQL/StatementBlankTests.swift @@ -9,7 +9,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Statement blank characters") struct StatementBlankTests { private static func label(_ value: UInt32) -> String { String(format: "U+%04X", value) diff --git a/TableProTests/Core/Utilities/SQLRowToStatementConverterTests.swift b/TableProTests/Core/Utilities/SQLRowToStatementConverterTests.swift index d7361a3292..e465a45ef2 100644 --- a/TableProTests/Core/Utilities/SQLRowToStatementConverterTests.swift +++ b/TableProTests/Core/Utilities/SQLRowToStatementConverterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Row To Statement Converter") @MainActor struct SQLRowToStatementConverterTests { // MARK: - Test Dialect Helpers diff --git a/TableProTests/Core/Utilities/SQLStatementScannerLocatedTests.swift b/TableProTests/Core/Utilities/SQLStatementScannerLocatedTests.swift index c096afaa4d..7146bb9fc6 100644 --- a/TableProTests/Core/Utilities/SQLStatementScannerLocatedTests.swift +++ b/TableProTests/Core/Utilities/SQLStatementScannerLocatedTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL Statement Scanner — locatedStatementAtCursor") struct SQLStatementScannerLocatedTests { // MARK: - Offset correctness diff --git a/TableProTests/Core/Utilities/Text/ByteOrderMarkTests.swift b/TableProTests/Core/Utilities/Text/ByteOrderMarkTests.swift index 779a6f99a7..bdce9f6df5 100644 --- a/TableProTests/Core/Utilities/Text/ByteOrderMarkTests.swift +++ b/TableProTests/Core/Utilities/Text/ByteOrderMarkTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Byte order mark") struct ByteOrderMarkTests { @Test("Each mark is recognised at the start of its text") func recognisesEachMark() { diff --git a/TableProTests/Core/Utilities/Text/RevealedTextTests.swift b/TableProTests/Core/Utilities/Text/RevealedTextTests.swift index 0311956d8a..c3c3716831 100644 --- a/TableProTests/Core/Utilities/Text/RevealedTextTests.swift +++ b/TableProTests/Core/Utilities/Text/RevealedTextTests.swift @@ -8,7 +8,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Revealed text") struct RevealedTextTests { @Test("A message with nothing invisible is left as it is") func ordinaryMessage() { diff --git a/TableProTests/Core/Utilities/TextPrefixDecoderTests.swift b/TableProTests/Core/Utilities/TextPrefixDecoderTests.swift index 1ad30f5e8e..0bd09e7d96 100644 --- a/TableProTests/Core/Utilities/TextPrefixDecoderTests.swift +++ b/TableProTests/Core/Utilities/TextPrefixDecoderTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Text prefix decoder") struct TextPrefixDecoderTests { private static let prefixLength = 64 diff --git a/TableProTests/Core/Validation/SettingsValidationTests.swift b/TableProTests/Core/Validation/SettingsValidationTests.swift index dfcd2daeb8..f832dc270a 100644 --- a/TableProTests/Core/Validation/SettingsValidationTests.swift +++ b/TableProTests/Core/Validation/SettingsValidationTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Settings Validation") struct SettingsValidationTests { // MARK: - String Sanitization Tests diff --git a/TableProTests/Core/Vim/VimKeyInterceptorFocusTests.swift b/TableProTests/Core/Vim/VimKeyInterceptorFocusTests.swift index 04c325ceb8..80c3c7a148 100644 --- a/TableProTests/Core/Vim/VimKeyInterceptorFocusTests.swift +++ b/TableProTests/Core/Vim/VimKeyInterceptorFocusTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("VimKeyInterceptor key claims") @MainActor struct VimKeyInterceptorFocusTests { private func makeInterceptor(text: String = "SELECT * FROM users;") -> (VimEngine, VimKeyInterceptor) { diff --git a/TableProTests/Core/Vim/VimKeyRouteResolverTests.swift b/TableProTests/Core/Vim/VimKeyRouteResolverTests.swift index 7d240bf77d..27f2b43548 100644 --- a/TableProTests/Core/Vim/VimKeyRouteResolverTests.swift +++ b/TableProTests/Core/Vim/VimKeyRouteResolverTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("VimKeyRouteResolver") struct VimKeyRouteResolverTests { private static let outsideInsertModes: [VimMode] = [ .normal, diff --git a/TableProTests/Core/Vim/VimTextBufferAdapterPerfTests.swift b/TableProTests/Core/Vim/VimTextBufferAdapterPerfTests.swift index a88d9e6492..6fadfaf773 100644 --- a/TableProTests/Core/Vim/VimTextBufferAdapterPerfTests.swift +++ b/TableProTests/Core/Vim/VimTextBufferAdapterPerfTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import TableProTextEngine import Testing -@Suite("VimTextBufferAdapter Incremental LineCount") @MainActor struct VimTextBufferAdapterPerfTests { private final class StubDelegate: TextViewDelegate {} diff --git a/TableProTests/Database/BackupScopeExpansionTests.swift b/TableProTests/Database/BackupScopeExpansionTests.swift index 7cde7228cd..db332e80cd 100644 --- a/TableProTests/Database/BackupScopeExpansionTests.swift +++ b/TableProTests/Database/BackupScopeExpansionTests.swift @@ -11,7 +11,6 @@ import Testing /// Measured with pg_dump 17.11: `-t '"public"."orders"'` on a partitioned parent emits /// `CREATE TABLE` and nothing else, and restoring that archive gives one empty partitioned table /// with count 0. Naming the parent and every descendant with one `-t` each restores all three rows. -@Suite("Backup scope partition expansion") @MainActor struct BackupScopeExpansionTests { private func partition( diff --git a/TableProTests/Database/CLIToolVersionProbeTests.swift b/TableProTests/Database/CLIToolVersionProbeTests.swift index 807284ea56..9ad825cf43 100644 --- a/TableProTests/Database/CLIToolVersionProbeTests.swift +++ b/TableProTests/Database/CLIToolVersionProbeTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("CLI tool version probe") struct CLIToolVersionProbeTests { private func script(_ body: String) throws -> String { let url = FileManager.default.temporaryDirectory diff --git a/TableProTests/Database/ConnectionStringParserTests.swift b/TableProTests/Database/ConnectionStringParserTests.swift index faed0940eb..3e69da4b45 100644 --- a/TableProTests/Database/ConnectionStringParserTests.swift +++ b/TableProTests/Database/ConnectionStringParserTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("ConnectionStringParser scheme + edge case coverage") struct ConnectionStringParserTests { @Test("postgres:// resolves to PostgreSQL with port 5432 default") func parses_postgres_scheme() throws { diff --git a/TableProTests/Database/DatabaseCancellationDiagnosisTests.swift b/TableProTests/Database/DatabaseCancellationDiagnosisTests.swift index 319353b0f4..4b2ab0f86e 100644 --- a/TableProTests/Database/DatabaseCancellationDiagnosisTests.swift +++ b/TableProTests/Database/DatabaseCancellationDiagnosisTests.swift @@ -18,7 +18,6 @@ private struct PlainError: Error, LocalizedError { var errorDescription: String? { "Something else went wrong" } } -@Suite("DatabaseCancellationDiagnosis") struct DatabaseCancellationDiagnosisTests { @Test("A Swift cancellation is recognised") func recognisesSwiftCancellationError() { diff --git a/TableProTests/Database/MySQLClientArgumentsTests.swift b/TableProTests/Database/MySQLClientArgumentsTests.swift index 0a9f5cc1ab..b585f88615 100644 --- a/TableProTests/Database/MySQLClientArgumentsTests.swift +++ b/TableProTests/Database/MySQLClientArgumentsTests.swift @@ -12,7 +12,6 @@ import Testing /// Every expectation here was measured against MariaDB 12.3.3 and MySQL 8.4.11 client tools, run /// against a MariaDB server with TLS off, a MariaDB server with a self-signed certificate and a /// MySQL server with its own. -@Suite("MySQL client arguments") struct MySQLClientArgumentsTests { private func ssl( _ mode: SSLMode, diff --git a/TableProTests/Database/MySQLDumpToolIdentifierTests.swift b/TableProTests/Database/MySQLDumpToolIdentifierTests.swift index 05e95abf5a..4fc1967825 100644 --- a/TableProTests/Database/MySQLDumpToolIdentifierTests.swift +++ b/TableProTests/Database/MySQLDumpToolIdentifierTests.swift @@ -11,7 +11,6 @@ import Testing /// The version strings here are verbatim output from the binaries on a Mac with both families /// installed, including the renamed copy that proves the token comes from the build rather than /// from `argv[0]`. -@Suite("MySQL dump tool identifier") struct MySQLDumpToolIdentifierTests { private static let mariaDB = "/opt/homebrew/bin/mysqldump from 12.3.3-MariaDB, client 10.20 for osx10.21 (arm64)" private static let renamedMariaDB = "./totally-not-mariadb from 12.3.3-MariaDB, client 10.20 for osx10.21 (arm64)" diff --git a/TableProTests/Database/NativeDumpDestinationTests.swift b/TableProTests/Database/NativeDumpDestinationTests.swift index 224a653c45..974b083b5f 100644 --- a/TableProTests/Database/NativeDumpDestinationTests.swift +++ b/TableProTests/Database/NativeDumpDestinationTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Native dump destinations") struct NativeDumpDestinationTests { private let directory = URL(fileURLWithPath: "/tmp/backups") diff --git a/TableProTests/Database/NativeDumpRegistryTests.swift b/TableProTests/Database/NativeDumpRegistryTests.swift index 84ade80c58..01b3249900 100644 --- a/TableProTests/Database/NativeDumpRegistryTests.swift +++ b/TableProTests/Database/NativeDumpRegistryTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Native dump registry") struct NativeDumpRegistryTests { private func connection( type: DatabaseType, diff --git a/TableProTests/Database/NativeDumpScopeTests.swift b/TableProTests/Database/NativeDumpScopeTests.swift index 0dd570e0b3..40961629ae 100644 --- a/TableProTests/Database/NativeDumpScopeTests.swift +++ b/TableProTests/Database/NativeDumpScopeTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Native dump object scope") struct NativeDumpScopeTests { private func connection(type: DatabaseType, database: String = "sales") -> DatabaseConnection { DatabaseConnection( @@ -282,7 +281,6 @@ struct NativeDumpScopeTests { } } -@Suite("DuckDB in-engine dump statements") struct DuckDBDumpStatementTests { private func connection() -> DatabaseConnection { var connection = DatabaseConnection( diff --git a/TableProTests/Database/NativeDumpServiceTests.swift b/TableProTests/Database/NativeDumpServiceTests.swift index 647297ae6e..c13b9b447b 100644 --- a/TableProTests/Database/NativeDumpServiceTests.swift +++ b/TableProTests/Database/NativeDumpServiceTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("NativeDumpService command construction") struct NativeDumpServiceCommandTests { private var postgresTool: NativeDumpDescriptor.CommandLineTool { guard let tool = NativeDumpRegistry.descriptor(for: .postgresql)?.commandLineTool else { diff --git a/TableProTests/Database/PostgresRestoreDiagnosticsTests.swift b/TableProTests/Database/PostgresRestoreDiagnosticsTests.swift index f3a2bace4b..48db66bf7d 100644 --- a/TableProTests/Database/PostgresRestoreDiagnosticsTests.swift +++ b/TableProTests/Database/PostgresRestoreDiagnosticsTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("PostgresRestoreDiagnostics") struct PostgresRestoreDiagnosticsTests { private static let pgRestore17IntoServer92 = """ pg_restore: error: could not execute query: ERROR: unrecognized configuration parameter "lock_timeout" diff --git a/TableProTests/Database/ProcessNativeDumpRunnerTests.swift b/TableProTests/Database/ProcessNativeDumpRunnerTests.swift index 6afb8a601c..22e617c6ee 100644 --- a/TableProTests/Database/ProcessNativeDumpRunnerTests.swift +++ b/TableProTests/Database/ProcessNativeDumpRunnerTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Process native dump runner") struct ProcessNativeDumpRunnerTests { private func command(_ script: String) -> NativeDumpCommand { NativeDumpCommand( diff --git a/TableProTests/Database/ServerSideExportOracleQualificationTests.swift b/TableProTests/Database/ServerSideExportOracleQualificationTests.swift index 647c024344..2fb395c120 100644 --- a/TableProTests/Database/ServerSideExportOracleQualificationTests.swift +++ b/TableProTests/Database/ServerSideExportOracleQualificationTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Oracle server-side export qualification") struct ServerSideExportOracleQualificationTests { private func oracleStatement(table: String = "ORDERS", schema: String? = nil) -> String { ServerSideExport.statement( diff --git a/TableProTests/Database/ServerSideExportTests.swift b/TableProTests/Database/ServerSideExportTests.swift index bac2b6eae9..ac3ac15d60 100644 --- a/TableProTests/Database/ServerSideExportTests.swift +++ b/TableProTests/Database/ServerSideExportTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Server-side export") struct ServerSideExportTests { private func statement( _ type: DatabaseType, @@ -207,7 +206,6 @@ struct ServerSideExportTests { } } -@Suite("SQL Server dump") struct SQLServerDumpTests { private func command(kind: NativeDumpKind, username: String = "sa") throws -> NativeDumpCommand { var sslConfig = SSLConfiguration() diff --git a/TableProTests/Entra/EntraOAuthTests.swift b/TableProTests/Entra/EntraOAuthTests.swift index 4f45e46542..6bf7616212 100644 --- a/TableProTests/Entra/EntraOAuthTests.swift +++ b/TableProTests/Entra/EntraOAuthTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Entra ID device code flow") struct EntraOAuthTests { @Test("Builds a form body with stable ordering and percent encoding") func encodesFormBody() throws { @@ -112,7 +111,6 @@ struct EntraOAuthTests { } } -@Suite("Entra ID token storage") struct EntraTokenStoreTests { @Test("A token counts as stale once it is inside the refresh margin") func appliesRefreshMargin() { @@ -144,7 +142,6 @@ struct EntraTokenStoreTests { } } -@Suite("Entra ID credential resolution") struct EntraCredentialResolverTests { private let clientFields = [ EntraField.clientId: "11111111-2222-3333-4444-555555555555", @@ -217,7 +214,6 @@ struct EntraCredentialResolverTests { } } -@Suite("Entra ID connection fields") struct EntraAuthFieldsTests { @Test("Both fields appear only for the driver's own Entra option") func gatesOnTheDriverAuthMethod() { diff --git a/TableProTests/Extensions/DateExtensionsTests.swift b/TableProTests/Extensions/DateExtensionsTests.swift index d91e09934d..9d111bdb8b 100644 --- a/TableProTests/Extensions/DateExtensionsTests.swift +++ b/TableProTests/Extensions/DateExtensionsTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Date Extensions") struct DateExtensionsTests { @Test("Recent date returns relative string") func testRecentDate() { diff --git a/TableProTests/Extensions/NSRangeClampToTextTests.swift b/TableProTests/Extensions/NSRangeClampToTextTests.swift index 757ef738a3..816a21f8a1 100644 --- a/TableProTests/Extensions/NSRangeClampToTextTests.swift +++ b/TableProTests/Extensions/NSRangeClampToTextTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("NSRange clampedToTextLength") struct NSRangeClampToTextTests { @Test("a range inside the text is untouched") func rangeInsideTextIsUnchanged() { diff --git a/TableProTests/Extensions/NSViewDescendantsTests.swift b/TableProTests/Extensions/NSViewDescendantsTests.swift index 189487f794..c12918f058 100644 --- a/TableProTests/Extensions/NSViewDescendantsTests.swift +++ b/TableProTests/Extensions/NSViewDescendantsTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("View subtree search") @MainActor struct NSViewDescendantsTests { private func nested(_ leaf: NSView) -> NSView { diff --git a/TableProTests/Extensions/NSViewFocusTests.swift b/TableProTests/Extensions/NSViewFocusTests.swift index 2b5ef62d37..d21246e4eb 100644 --- a/TableProTests/Extensions/NSViewFocusTests.swift +++ b/TableProTests/Extensions/NSViewFocusTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("NSView+Focus") struct NSViewFocusTests { @Test("Returns nil for empty container view") func emptyView() { diff --git a/TableProTests/Extensions/ObservedValueChangeTests.swift b/TableProTests/Extensions/ObservedValueChangeTests.swift index f5134bc42a..2cdbbb2cd6 100644 --- a/TableProTests/Extensions/ObservedValueChangeTests.swift +++ b/TableProTests/Extensions/ObservedValueChangeTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Observed value change") struct ObservedValueChangeTests { private final class Child: ObservableObject { @Published var value = 0 diff --git a/TableProTests/Extensions/StringHexDumpTests.swift b/TableProTests/Extensions/StringHexDumpTests.swift index a89de53f7a..15805ba471 100644 --- a/TableProTests/Extensions/StringHexDumpTests.swift +++ b/TableProTests/Extensions/StringHexDumpTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("String+HexDump") struct StringHexDumpTests { // MARK: - Hex Dump diff --git a/TableProTests/Extensions/StringJsonTests.swift b/TableProTests/Extensions/StringJsonTests.swift index 4220f25f5c..b14b92e177 100644 --- a/TableProTests/Extensions/StringJsonTests.swift +++ b/TableProTests/Extensions/StringJsonTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("String+JSON") struct StringJsonTests { @Test("Valid JSON object is pretty-printed preserving key order") func validJsonObject() throws { diff --git a/TableProTests/Extensions/StringSHA256Tests.swift b/TableProTests/Extensions/StringSHA256Tests.swift index 2e0744cfd3..c9ab7f279d 100644 --- a/TableProTests/Extensions/StringSHA256Tests.swift +++ b/TableProTests/Extensions/StringSHA256Tests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("String SHA256") struct StringSHA256Tests { @Test("Known hash for 'hello'") func testKnownHash() { diff --git a/TableProTests/Extensions/URLSanitizationTests.swift b/TableProTests/Extensions/URLSanitizationTests.swift index 8a640cf8c8..d560fe7787 100644 --- a/TableProTests/Extensions/URLSanitizationTests.swift +++ b/TableProTests/Extensions/URLSanitizationTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("URL Sanitization") struct URLSanitizationTests { @Test("URL with password replaces password with ***") diff --git a/TableProTests/Localization/CompiledStringsFormatTests.swift b/TableProTests/Localization/CompiledStringsFormatTests.swift index 0f91e1e275..c5a4cb61cd 100644 --- a/TableProTests/Localization/CompiledStringsFormatTests.swift +++ b/TableProTests/Localization/CompiledStringsFormatTests.swift @@ -11,7 +11,6 @@ import Testing /// binary property list that `CFBundle` reads natively, and the two are indistinguishable at /// runtime: every lookup resolves the same, so dropping the setting from `Configs/Base.xcconfig` /// would put the weight back without a single visible symptom. -@Suite("Compiled localizations ship as binary property lists") struct CompiledStringsFormatTests { @Test("Every shipped language compiles to a binary property list") func everyLanguageIsBinary() throws { diff --git a/TableProTests/Localization/EditorMenuAndStatementCountTests.swift b/TableProTests/Localization/EditorMenuAndStatementCountTests.swift index f6820afc57..de28556013 100644 --- a/TableProTests/Localization/EditorMenuAndStatementCountTests.swift +++ b/TableProTests/Localization/EditorMenuAndStatementCountTests.swift @@ -12,7 +12,6 @@ import Testing /// a review sheet. One was English in every language because the menu was built from literals; the /// other chose between two whole keys in Swift, which is the shape that cannot survive a language /// with more than two plural categories. -@Suite("Editor menu and statement count") struct EditorMenuAndStatementCountTests { /// Measured on this toolchain: `String(localized:)` hands back the key verbatim, /// `(^[1 statement](inflect: true))`, so a counted noun that has to end up in a `String` still diff --git a/TableProTests/Localization/StringCatalogIntegrityTests.swift b/TableProTests/Localization/StringCatalogIntegrityTests.swift index 5bac04cc06..487bef3aa4 100644 --- a/TableProTests/Localization/StringCatalogIntegrityTests.swift +++ b/TableProTests/Localization/StringCatalogIntegrityTests.swift @@ -16,7 +16,6 @@ import Testing /// Style choices that legitimately differ by language are deliberately not asserted: Chinese renders /// terminal punctuation and ellipses full width, and 232 shipped translations pass two or more /// arguments in plain `%@` order rather than positionally. -@Suite("String catalogs agree with their source strings") struct StringCatalogIntegrityTests { @Test("Every translation consumes the arguments its source passes") func argumentsMatchSource() throws { @@ -413,7 +412,6 @@ struct StringCatalog { } } -@Suite("Format specifier parsing") struct FormatSpecifierTests { @Test("A plain specifier carries no argument index") func plainSpecifier() { @@ -454,7 +452,6 @@ struct FormatSpecifierTests { } } -@Suite("String catalog rule checks") struct StringCatalogRuleTests { private static func complaint( source: String, diff --git a/TableProTests/Models/AI/AgentArtifactCacheTests.swift b/TableProTests/Models/AI/AgentArtifactCacheTests.swift index cdde9f3d48..3a9ff1c376 100644 --- a/TableProTests/Models/AI/AgentArtifactCacheTests.swift +++ b/TableProTests/Models/AI/AgentArtifactCacheTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AgentArtifactCache") @MainActor struct AgentArtifactCacheTests { /// Counting in a class rather than a captured `var`, because a `@MainActor` closure is `Sendable` diff --git a/TableProTests/Models/AI/AgentArtifactProjectionTests.swift b/TableProTests/Models/AI/AgentArtifactProjectionTests.swift index a3e8b8732d..fc012b1351 100644 --- a/TableProTests/Models/AI/AgentArtifactProjectionTests.swift +++ b/TableProTests/Models/AI/AgentArtifactProjectionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AgentArtifactProjection") @MainActor struct AgentArtifactProjectionTests { private func toolUse(id: String, query: String, approval: ToolApprovalState = .approved) -> ChatContentBlock { diff --git a/TableProTests/Models/AI/AgentResultDecoderTests.swift b/TableProTests/Models/AI/AgentResultDecoderTests.swift index 63ce707d3f..762ec21526 100644 --- a/TableProTests/Models/AI/AgentResultDecoderTests.swift +++ b/TableProTests/Models/AI/AgentResultDecoderTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AgentResultDecoder") struct AgentResultDecoderTests { private func payload(_ json: String) -> AgentResultPayload { AgentResultDecoder.payload(fromResultJSON: json) diff --git a/TableProTests/Models/AI/AgentSessionConfirmationTests.swift b/TableProTests/Models/AI/AgentSessionConfirmationTests.swift index 63d84beaf8..03b80c9bd0 100644 --- a/TableProTests/Models/AI/AgentSessionConfirmationTests.swift +++ b/TableProTests/Models/AI/AgentSessionConfirmationTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Agent session confirmation") struct AgentSessionConfirmationTests { /// Closing keeps the conversation, so an idle session is closed without a question. A busy one /// loses the reply or the statement it is holding, which is the part worth asking about. diff --git a/TableProTests/Models/AIConversationTests.swift b/TableProTests/Models/AIConversationTests.swift index 61ec3e720e..30f4c380ff 100644 --- a/TableProTests/Models/AIConversationTests.swift +++ b/TableProTests/Models/AIConversationTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AIConversation") struct AIConversationTests { private func makeUserTurn(_ text: String) -> ChatTurnWire { ChatTurnWire(role: .user, blocks: [.text(text)]) diff --git a/TableProTests/Models/AISettingsTests.swift b/TableProTests/Models/AISettingsTests.swift index e1317ff2e4..b037160fc7 100644 --- a/TableProTests/Models/AISettingsTests.swift +++ b/TableProTests/Models/AISettingsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AISettings") struct AISettingsTests { @Test("default has enabled true") func defaultEnabledIsTrue() { @@ -128,7 +127,6 @@ struct AISettingsTests { // MARK: - Active Provider -@Suite("AISettings.activeProvider") struct AISettingsActiveProviderTests { private func makeProvider(name: String = "Test", type: AIProviderType = .claude) -> AIProviderConfig { AIProviderConfig(name: name, type: type) diff --git a/TableProTests/Models/ColumnLayoutStateTests.swift b/TableProTests/Models/ColumnLayoutStateTests.swift index b5a6fb4bc8..de18f071ca 100644 --- a/TableProTests/Models/ColumnLayoutStateTests.swift +++ b/TableProTests/Models/ColumnLayoutStateTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ColumnLayoutState") struct ColumnLayoutStateTests { @Test("Default has empty widths") func defaultEmptyWidths() { diff --git a/TableProTests/Models/ColumnOrderMergeTests.swift b/TableProTests/Models/ColumnOrderMergeTests.swift index d34c97bedf..8d4fdb133f 100644 --- a/TableProTests/Models/ColumnOrderMergeTests.swift +++ b/TableProTests/Models/ColumnOrderMergeTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Column order merge") struct ColumnOrderMergeTests { @Test("A column missing from the capture keeps its stored position") func absentColumnKeepsItsSlot() { diff --git a/TableProTests/Models/Connection/ConnectionFailureClassifierTests.swift b/TableProTests/Models/Connection/ConnectionFailureClassifierTests.swift index a7797daf66..376889d87e 100644 --- a/TableProTests/Models/Connection/ConnectionFailureClassifierTests.swift +++ b/TableProTests/Models/Connection/ConnectionFailureClassifierTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection failure classifier") struct ConnectionFailureClassifierTests { @Test("A Swift cancellation is a cancel, not a failure") func swiftCancellationIsCancelled() { diff --git a/TableProTests/Models/Connection/ConnectionFormRequestTests.swift b/TableProTests/Models/Connection/ConnectionFormRequestTests.swift index c3f7a9370f..166281702c 100644 --- a/TableProTests/Models/Connection/ConnectionFormRequestTests.swift +++ b/TableProTests/Models/Connection/ConnectionFormRequestTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ConnectionFormRequest") struct ConnectionFormRequestTests { @Test("Each create request is distinct so every new connection gets its own window") func eachCreateRequestIsDistinct() { diff --git a/TableProTests/Models/Connection/ConnectionStageLabelFormatterTests.swift b/TableProTests/Models/Connection/ConnectionStageLabelFormatterTests.swift index 724eec3781..705a1226f0 100644 --- a/TableProTests/Models/Connection/ConnectionStageLabelFormatterTests.swift +++ b/TableProTests/Models/Connection/ConnectionStageLabelFormatterTests.swift @@ -17,7 +17,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection stage labels") struct ConnectionStageLabelFormatterTests { private static func connection( name: String = "Prod DB", diff --git a/TableProTests/Models/Connection/DatabaseConnectionTagMigrationTests.swift b/TableProTests/Models/Connection/DatabaseConnectionTagMigrationTests.swift index 23f21e4f44..0edad4e627 100644 --- a/TableProTests/Models/Connection/DatabaseConnectionTagMigrationTests.swift +++ b/TableProTests/Models/Connection/DatabaseConnectionTagMigrationTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("DatabaseConnection tag migration") struct DatabaseConnectionTagMigrationTests { private func decode(_ json: [String: Any]) throws -> DatabaseConnection { let data = try JSONSerialization.data(withJSONObject: json) diff --git a/TableProTests/Models/Connection/DatabaseConnectionUsernameTests.swift b/TableProTests/Models/Connection/DatabaseConnectionUsernameTests.swift index faf5aea26a..97178d82aa 100644 --- a/TableProTests/Models/Connection/DatabaseConnectionUsernameTests.swift +++ b/TableProTests/Models/Connection/DatabaseConnectionUsernameTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Database Connection Username") struct DatabaseConnectionUsernameTests { @Test("Username defaults to empty, never a fabricated account name") func usernameDefaultsToEmpty() { diff --git a/TableProTests/Models/ConnectionSessionTests.swift b/TableProTests/Models/ConnectionSessionTests.swift index e0c5cd3ab5..b99a75b8fe 100644 --- a/TableProTests/Models/ConnectionSessionTests.swift +++ b/TableProTests/Models/ConnectionSessionTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("ConnectionSession.isContentViewEquivalent") struct ConnectionSessionEquivalenceTests { // MARK: - Helpers @@ -126,7 +125,6 @@ struct ConnectionSessionEquivalenceTests { } } -@Suite("ConnectionSession State") struct ConnectionSessionStateTests { private func makeSession(status: ConnectionStatus = .disconnected) -> ConnectionSession { let connection = TestFixtures.makeConnection() diff --git a/TableProTests/Models/ConnectionToolbarStateTests.swift b/TableProTests/Models/ConnectionToolbarStateTests.swift index 3d2ad7c4aa..7ad82305f6 100644 --- a/TableProTests/Models/ConnectionToolbarStateTests.swift +++ b/TableProTests/Models/ConnectionToolbarStateTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("ConnectionToolbarState") struct ConnectionToolbarStateTests { // MARK: - reset diff --git a/TableProTests/Models/ConnectionTunnelKindTests.swift b/TableProTests/Models/ConnectionTunnelKindTests.swift index 408ef8dfbd..235d696683 100644 --- a/TableProTests/Models/ConnectionTunnelKindTests.swift +++ b/TableProTests/Models/ConnectionTunnelKindTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Connection tunnel kind") struct ConnectionTunnelKindTests { private func connection( ssh: Bool = false, diff --git a/TableProTests/Models/ContainerTabHistoryTests.swift b/TableProTests/Models/ContainerTabHistoryTests.swift index 21fd27a3d7..71bdc6da56 100644 --- a/TableProTests/Models/ContainerTabHistoryTests.swift +++ b/TableProTests/Models/ContainerTabHistoryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Container tab history") @MainActor struct ContainerTabHistoryTests { private func tableTab(_ name: String, database: String, schema: String? = nil) -> QueryTab { diff --git a/TableProTests/Models/Database/ContainerDropEligibilityTests.swift b/TableProTests/Models/Database/ContainerDropEligibilityTests.swift index 3c5d2c02a6..2bc8191015 100644 --- a/TableProTests/Models/Database/ContainerDropEligibilityTests.swift +++ b/TableProTests/Models/Database/ContainerDropEligibilityTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Container Drop Eligibility") struct ContainerDropEligibilityTests { private func context( activeDatabase: String? = "sales", diff --git a/TableProTests/Models/Database/DatabaseDropRequestTests.swift b/TableProTests/Models/Database/DatabaseDropRequestTests.swift index d0e6cf30f9..318e81c7cf 100644 --- a/TableProTests/Models/Database/DatabaseDropRequestTests.swift +++ b/TableProTests/Models/Database/DatabaseDropRequestTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Database Drop Request") struct DatabaseDropRequestTests { private func request( _ targets: [DatabaseContainerRef], diff --git a/TableProTests/Models/Database/MaintenanceEligibilityTests.swift b/TableProTests/Models/Database/MaintenanceEligibilityTests.swift index dfc6161cfe..3b390f5246 100644 --- a/TableProTests/Models/Database/MaintenanceEligibilityTests.swift +++ b/TableProTests/Models/Database/MaintenanceEligibilityTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Maintenance eligibility") struct MaintenanceEligibilityTests { private func operation( _ name: String, diff --git a/TableProTests/Models/Database/ObjectRenameEligibilityTests.swift b/TableProTests/Models/Database/ObjectRenameEligibilityTests.swift index c0cf997a3f..2ade98dfd2 100644 --- a/TableProTests/Models/Database/ObjectRenameEligibilityTests.swift +++ b/TableProTests/Models/Database/ObjectRenameEligibilityTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Object rename eligibility") struct ObjectRenameEligibilityTests { private func context( activeDatabase: String? = "app", diff --git a/TableProTests/Models/Database/SQLDDLFallbackPolicyTests.swift b/TableProTests/Models/Database/SQLDDLFallbackPolicyTests.swift index 521d431d0b..6f8908db18 100644 --- a/TableProTests/Models/Database/SQLDDLFallbackPolicyTests.swift +++ b/TableProTests/Models/Database/SQLDDLFallbackPolicyTests.swift @@ -9,7 +9,6 @@ import TableProConnectionLibrary import TableProPluginKit import Testing -@Suite("SQL DDL fallback policy") struct SQLDDLFallbackPolicyTests { @Test("Engines with SQL DDL keep the generated statement") func sqlEnginesFabricate() { diff --git a/TableProTests/Models/Database/SchemaEditEligibilityTests.swift b/TableProTests/Models/Database/SchemaEditEligibilityTests.swift index 60263d411e..3fe5cf67c6 100644 --- a/TableProTests/Models/Database/SchemaEditEligibilityTests.swift +++ b/TableProTests/Models/Database/SchemaEditEligibilityTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Schema Edit Eligibility") struct SchemaEditEligibilityTests { private func context( supportsCreateSchema: Bool = true, diff --git a/TableProTests/Models/Database/StagedWriteScopeTests.swift b/TableProTests/Models/Database/StagedWriteScopeTests.swift index c5e4205566..0067612f2c 100644 --- a/TableProTests/Models/Database/StagedWriteScopeTests.swift +++ b/TableProTests/Models/Database/StagedWriteScopeTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Staged write scope") struct StagedWriteScopeTests { private let connectionId = UUID() diff --git a/TableProTests/Models/Database/StructureEditEligibilityTests.swift b/TableProTests/Models/Database/StructureEditEligibilityTests.swift index 3701090ec1..f050d4ef1b 100644 --- a/TableProTests/Models/Database/StructureEditEligibilityTests.swift +++ b/TableProTests/Models/Database/StructureEditEligibilityTests.swift @@ -13,7 +13,6 @@ import Testing /// `SET DEFAULT` and `CREATE INDEX`: a view takes the first and refuses the second, a materialized /// view does the opposite, and that alone rules out sharing one row between them or collapsing the /// object's kind to a single read-only Bool. (#2726) -@Suite("Structure Edit Eligibility") struct StructureEditEligibilityTests { private func allows( _ operation: StructureEditOperation, diff --git a/TableProTests/Models/Database/TableOperationEligibilityEngineTests.swift b/TableProTests/Models/Database/TableOperationEligibilityEngineTests.swift index b24b57c452..42ba748cd5 100644 --- a/TableProTests/Models/Database/TableOperationEligibilityEngineTests.swift +++ b/TableProTests/Models/Database/TableOperationEligibilityEngineTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Table operation eligibility, engine dimension") struct TableOperationEligibilityEngineTests { private func ref(_ name: String, type: TableInfo.TableType = .table) -> DatabaseTreeTableRef { DatabaseTreeTableRef( diff --git a/TableProTests/Models/Database/TableOperationEligibilityTests.swift b/TableProTests/Models/Database/TableOperationEligibilityTests.swift index 15fa3b5974..477b6cd157 100644 --- a/TableProTests/Models/Database/TableOperationEligibilityTests.swift +++ b/TableProTests/Models/Database/TableOperationEligibilityTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Table operation eligibility") struct TableOperationEligibilityTests { private func table( _ name: String, diff --git a/TableProTests/Models/DatabaseConnectionAIRulesTests.swift b/TableProTests/Models/DatabaseConnectionAIRulesTests.swift index 513d5cff23..d4781e2c92 100644 --- a/TableProTests/Models/DatabaseConnectionAIRulesTests.swift +++ b/TableProTests/Models/DatabaseConnectionAIRulesTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("DatabaseConnection.aiRules") struct DatabaseConnectionAIRulesTests { @Test("aiRules defaults to nil") func defaultsToNil() { diff --git a/TableProTests/Models/DatabaseConnectionAdditionalFieldsTests.swift b/TableProTests/Models/DatabaseConnectionAdditionalFieldsTests.swift index d51fd68a8f..a6018ce67a 100644 --- a/TableProTests/Models/DatabaseConnectionAdditionalFieldsTests.swift +++ b/TableProTests/Models/DatabaseConnectionAdditionalFieldsTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("DatabaseConnection.additionalFields") struct DatabaseConnectionAdditionalFieldsTests { // MARK: - Defaults diff --git a/TableProTests/Models/DatabaseConnectionDisplayTests.swift b/TableProTests/Models/DatabaseConnectionDisplayTests.swift index 4d0e015e68..bdd7fe26e9 100644 --- a/TableProTests/Models/DatabaseConnectionDisplayTests.swift +++ b/TableProTests/Models/DatabaseConnectionDisplayTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("DatabaseConnection display") struct DatabaseConnectionDisplayTests { @Test("Relational connection shows database after host") func relationalShowsDatabase() { diff --git a/TableProTests/Models/DatabaseConnectionRedisDatabaseIndexTests.swift b/TableProTests/Models/DatabaseConnectionRedisDatabaseIndexTests.swift index d4539a955d..4ec76ecae8 100644 --- a/TableProTests/Models/DatabaseConnectionRedisDatabaseIndexTests.swift +++ b/TableProTests/Models/DatabaseConnectionRedisDatabaseIndexTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("DatabaseConnection Redis database index") struct DatabaseConnectionRedisDatabaseIndexTests { private func redis( field: String? = nil, diff --git a/TableProTests/Models/DatabaseConnectionSSHTests.swift b/TableProTests/Models/DatabaseConnectionSSHTests.swift index 96e3b3a2f9..89123e0da6 100644 --- a/TableProTests/Models/DatabaseConnectionSSHTests.swift +++ b/TableProTests/Models/DatabaseConnectionSSHTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("DatabaseConnection effectiveSSHConfig") struct DatabaseConnectionSSHTests { @Test("No profile and no sshProfileId returns inline sshConfig") func inlineSSHConfigWithoutProfile() { diff --git a/TableProTests/Models/DatabaseObjectRefCodingTests.swift b/TableProTests/Models/DatabaseObjectRefCodingTests.swift index 8fbe91a0e5..8cc58e0bda 100644 --- a/TableProTests/Models/DatabaseObjectRefCodingTests.swift +++ b/TableProTests/Models/DatabaseObjectRefCodingTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("DatabaseObjectRef coding") struct DatabaseObjectRefCodingTests { @Test("A type ref round-trips with its kind") func userTypeRoundTrip() throws { diff --git a/TableProTests/Models/DatabaseObjectToolsTests.swift b/TableProTests/Models/DatabaseObjectToolsTests.swift index 2bcfbca332..1d4b48522b 100644 --- a/TableProTests/Models/DatabaseObjectToolsTests.swift +++ b/TableProTests/Models/DatabaseObjectToolsTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Per-object command eligibility") struct DatabaseObjectToolEligibilityTests { private let support = DatabaseObjectToolEligibility.Support( canRefreshMaterializedViews: true, @@ -45,7 +44,6 @@ struct DatabaseObjectToolEligibilityTests { } } -@Suite("Materialized view refresh prompt") struct MaterializedViewRefreshPromptTests { private func prompt( _ availability: PluginConcurrentRefreshAvailability?, @@ -109,7 +107,6 @@ struct MaterializedViewRefreshPromptTests { } } -@Suite("Object comment draft") struct ObjectCommentDraftTests { @Test("A draft starts from the stored comment") func startsFromStoredComment() { @@ -163,7 +160,6 @@ struct ObjectCommentDraftTests { } @MainActor -@Suite("Object source refs for views") struct DatabaseObjectRefViewKindTests { private func table(_ name: String, type: TableInfo.TableType) -> TableInfo { TableInfo(name: name, type: type, rowCount: nil, schema: "sales") diff --git a/TableProTests/Models/DatabaseScopeTests.swift b/TableProTests/Models/DatabaseScopeTests.swift index 05df3fc4cd..539481a2cd 100644 --- a/TableProTests/Models/DatabaseScopeTests.swift +++ b/TableProTests/Models/DatabaseScopeTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseScope") struct DatabaseScopeTests { @Test("A blank database is server scoped, not unbound") func blankDatabaseIsServerScoped() { diff --git a/TableProTests/Models/DatabaseTypeBrandColorTests.swift b/TableProTests/Models/DatabaseTypeBrandColorTests.swift index 25c1175c2a..b013e7e5fa 100644 --- a/TableProTests/Models/DatabaseTypeBrandColorTests.swift +++ b/TableProTests/Models/DatabaseTypeBrandColorTests.swift @@ -12,7 +12,6 @@ import Foundation import Testing @MainActor -@Suite("Database type brand colour") struct DatabaseTypeBrandColorTests { /// The reason the hand-written fallback table could be deleted outright rather than kept for /// the types the registry might not cover. If this fails, some type has lost its registry diff --git a/TableProTests/Models/DatabaseTypeCassandraTests.swift b/TableProTests/Models/DatabaseTypeCassandraTests.swift index d0dc4e3f0d..9364fa74a1 100644 --- a/TableProTests/Models/DatabaseTypeCassandraTests.swift +++ b/TableProTests/Models/DatabaseTypeCassandraTests.swift @@ -2,7 +2,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("DatabaseType Cassandra Properties") struct DatabaseTypeCassandraTests { @Test("Cassandra raw value is Cassandra") func cassandraRawValue() { diff --git a/TableProTests/Models/DatabaseTypeCockroachDBTests.swift b/TableProTests/Models/DatabaseTypeCockroachDBTests.swift index 80723a1284..55504376dd 100644 --- a/TableProTests/Models/DatabaseTypeCockroachDBTests.swift +++ b/TableProTests/Models/DatabaseTypeCockroachDBTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseType CockroachDB") struct DatabaseTypeCockroachDBTests { @Test("rawValue is CockroachDB") func rawValue() { diff --git a/TableProTests/Models/DatabaseTypeDatabendTests.swift b/TableProTests/Models/DatabaseTypeDatabendTests.swift index f0c1530b23..b4b03e5942 100644 --- a/TableProTests/Models/DatabaseTypeDatabendTests.swift +++ b/TableProTests/Models/DatabaseTypeDatabendTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseType Databend") struct DatabaseTypeDatabendTests { @Test("rawValue is Databend") func rawValue() { diff --git a/TableProTests/Models/DatabaseTypeMSSQLTests.swift b/TableProTests/Models/DatabaseTypeMSSQLTests.swift index 2c93361dc1..87d24d2432 100644 --- a/TableProTests/Models/DatabaseTypeMSSQLTests.swift +++ b/TableProTests/Models/DatabaseTypeMSSQLTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("DatabaseType MSSQL") struct DatabaseTypeMSSQLTests { // MARK: - Basic Properties diff --git a/TableProTests/Models/DatabaseTypeOceanBaseTests.swift b/TableProTests/Models/DatabaseTypeOceanBaseTests.swift index dcee5681ee..cfa583dcb5 100644 --- a/TableProTests/Models/DatabaseTypeOceanBaseTests.swift +++ b/TableProTests/Models/DatabaseTypeOceanBaseTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseType OceanBase") struct DatabaseTypeOceanBaseTests { @Test("rawValue is OceanBase") func rawValue() { diff --git a/TableProTests/Models/DatabaseTypePGliteTests.swift b/TableProTests/Models/DatabaseTypePGliteTests.swift index eefb4d9990..eb5fac4ad7 100644 --- a/TableProTests/Models/DatabaseTypePGliteTests.swift +++ b/TableProTests/Models/DatabaseTypePGliteTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseType PGlite") struct DatabaseTypePGliteTests { @Test("rawValue is PGlite") func rawValue() { diff --git a/TableProTests/Models/DatabaseTypeRedisTests.swift b/TableProTests/Models/DatabaseTypeRedisTests.swift index 8e1b2ee7b5..c3d6b92dc7 100644 --- a/TableProTests/Models/DatabaseTypeRedisTests.swift +++ b/TableProTests/Models/DatabaseTypeRedisTests.swift @@ -2,7 +2,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("DatabaseType Redis Properties") struct DatabaseTypeRedisTests { @Test("Default port is 6379") func defaultPort() { diff --git a/TableProTests/Models/DatabaseTypeTests.swift b/TableProTests/Models/DatabaseTypeTests.swift index ba749d08d6..af1e02f41d 100644 --- a/TableProTests/Models/DatabaseTypeTests.swift +++ b/TableProTests/Models/DatabaseTypeTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("DatabaseType") struct DatabaseTypeTests { @Test("MySQL default port is 3306") diff --git a/TableProTests/Models/DatabaseTypeTiDBTests.swift b/TableProTests/Models/DatabaseTypeTiDBTests.swift index 92982432e4..f439da9b4c 100644 --- a/TableProTests/Models/DatabaseTypeTiDBTests.swift +++ b/TableProTests/Models/DatabaseTypeTiDBTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseType TiDB") struct DatabaseTypeTiDBTests { @Test("rawValue is TiDB") func rawValue() { diff --git a/TableProTests/Models/Diagram/DiagramScrollZoomTests.swift b/TableProTests/Models/Diagram/DiagramScrollZoomTests.swift index 83f6793621..2bfa653a20 100644 --- a/TableProTests/Models/Diagram/DiagramScrollZoomTests.swift +++ b/TableProTests/Models/Diagram/DiagramScrollZoomTests.swift @@ -9,7 +9,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Diagram scroll zoom") struct DiagramScrollZoomTests { private func input( deltaY: CGFloat, diff --git a/TableProTests/Models/ERDiagram/ERClusterAnalyzerTests.swift b/TableProTests/Models/ERDiagram/ERClusterAnalyzerTests.swift index b3b28574ca..5517dff667 100644 --- a/TableProTests/Models/ERDiagram/ERClusterAnalyzerTests.swift +++ b/TableProTests/Models/ERDiagram/ERClusterAnalyzerTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ER cluster analyzer") struct ERClusterAnalyzerTests { private func node(_ name: String) -> ERTableNode { ERTableNode(id: UUID(), tableName: name, columns: [], displayColumns: [], clusterId: nil) diff --git a/TableProTests/Models/ERDiagram/ERDiagramDragTests.swift b/TableProTests/Models/ERDiagram/ERDiagramDragTests.swift index a1a32b74f4..c1b2acf802 100644 --- a/TableProTests/Models/ERDiagram/ERDiagramDragTests.swift +++ b/TableProTests/Models/ERDiagram/ERDiagramDragTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ER diagram dragging") @MainActor struct ERDiagramDragTests { private func makeViewModel() -> ERDiagramViewModel { diff --git a/TableProTests/Models/ERDiagram/ERDiagramGraphBuilderTests.swift b/TableProTests/Models/ERDiagram/ERDiagramGraphBuilderTests.swift index e1c430a4de..4dabad580f 100644 --- a/TableProTests/Models/ERDiagram/ERDiagramGraphBuilderTests.swift +++ b/TableProTests/Models/ERDiagram/ERDiagramGraphBuilderTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ER diagram graph builder") struct ERDiagramGraphBuilderTests { private func column( _ name: String, diff --git a/TableProTests/Models/ERDiagram/ERDiagramLayoutTests.swift b/TableProTests/Models/ERDiagram/ERDiagramLayoutTests.swift index 70c0b0156d..30c5594982 100644 --- a/TableProTests/Models/ERDiagram/ERDiagramLayoutTests.swift +++ b/TableProTests/Models/ERDiagram/ERDiagramLayoutTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ER diagram layout") struct ERDiagramLayoutTests { private func column(_ name: String) -> ERColumnDisplay { ERColumnDisplay(id: name, name: name, dataType: "int", isPrimaryKey: false, isForeignKey: false, isNullable: true) diff --git a/TableProTests/Models/ERDiagram/ERDiagramSQLExporterTests.swift b/TableProTests/Models/ERDiagram/ERDiagramSQLExporterTests.swift index 50a8134ec1..987af7c7ab 100644 --- a/TableProTests/Models/ERDiagram/ERDiagramSQLExporterTests.swift +++ b/TableProTests/Models/ERDiagram/ERDiagramSQLExporterTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ER diagram SQL exporter") struct ERDiagramSQLExporterTests { private let quote: (String) -> String = { "\"\($0)\"" } diff --git a/TableProTests/Models/EditorTabPayloadTests.swift b/TableProTests/Models/EditorTabPayloadTests.swift index c903d695e3..a5fc800e4d 100644 --- a/TableProTests/Models/EditorTabPayloadTests.swift +++ b/TableProTests/Models/EditorTabPayloadTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("EditorTabPayload") struct EditorTabPayloadTests { @Test("Each init creates unique ID") diff --git a/TableProTests/Models/EditorTabReorderTests.swift b/TableProTests/Models/EditorTabReorderTests.swift index 1218ce072a..2e1f7aa26f 100644 --- a/TableProTests/Models/EditorTabReorderTests.swift +++ b/TableProTests/Models/EditorTabReorderTests.swift @@ -13,7 +13,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Editor tab reorder") struct EditorTabReorderTests { private static let ids = (0 ..< 5).map { _ in UUID() } @@ -87,7 +86,6 @@ struct EditorTabReorderTests { } } -@Suite("Editor tab reorder resolver") struct EditorTabReorderResolverTests { private let tabWidth: CGFloat = 100 @@ -222,7 +220,6 @@ struct EditorTabReorderResolverTests { } /// The boundary the commonest drag of all lands on. -@Suite("Editor tab reorder crossing tolerance") struct EditorTabReorderCrossingToleranceTests { /// Releasing on a neighbour's exact centre is what a one-place drag does, and the location /// arrives from a geometry conversion, so it is a hair under the midpoint as often as it is on diff --git a/TableProTests/Models/Export/ExportPreselectionTests.swift b/TableProTests/Models/Export/ExportPreselectionTests.swift index 4da3198e0d..a538487f5e 100644 --- a/TableProTests/Models/Export/ExportPreselectionTests.swift +++ b/TableProTests/Models/Export/ExportPreselectionTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Export Preselection") struct ExportPreselectionTests { @Test("Named tables only select inside the current container") func namedTablesStayInCurrentContainer() { diff --git a/TableProTests/Models/ExportModelsTests.swift b/TableProTests/Models/ExportModelsTests.swift index fe845e67e7..14d9555c34 100644 --- a/TableProTests/Models/ExportModelsTests.swift +++ b/TableProTests/Models/ExportModelsTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Export Models") struct ExportModelsTests { @MainActor @Test("Export configuration default format is csv") diff --git a/TableProTests/Models/ExportObjectTreeTests.swift b/TableProTests/Models/ExportObjectTreeTests.swift index a285a0ee96..cbbeb1a2e2 100644 --- a/TableProTests/Models/ExportObjectTreeTests.swift +++ b/TableProTests/Models/ExportObjectTreeTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Export object kinds") struct ExportObjectKindTests { @Test("Dump order creates every dependency before the thing that needs it") @@ -66,7 +65,6 @@ struct ExportObjectKindTests { } } -@Suite("Export outline tree") struct ExportOutlineTreeTests { private func database(named name: String, objects: [ExportObjectItem]) -> ExportDatabaseItem { @@ -171,7 +169,6 @@ struct ExportOutlineTreeTests { } } -@Suite("Export object option masking") struct ExportObjectOptionMaskingTests { private let columns = [ @@ -235,7 +232,6 @@ struct ExportObjectOptionMaskingTests { } } -@Suite("Export preselection with object kinds") struct ExportPreselectionKindTests { /// A routine and a table can share a name, and a sidebar preselection is about tables. Without diff --git a/TableProTests/Models/ExportRowScopeTests.swift b/TableProTests/Models/ExportRowScopeTests.swift index f188d584c4..e43d1e33e7 100644 --- a/TableProTests/Models/ExportRowScopeTests.swift +++ b/TableProTests/Models/ExportRowScopeTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Export row scope") struct ExportRowScopeTests { @Test("An empty scope exports everything") diff --git a/TableProTests/Models/FavoriteDatabaseGroupingTests.swift b/TableProTests/Models/FavoriteDatabaseGroupingTests.swift index cf3a9b97ae..a095f04786 100644 --- a/TableProTests/Models/FavoriteDatabaseGroupingTests.swift +++ b/TableProTests/Models/FavoriteDatabaseGroupingTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Favorite database grouping") struct FavoriteDatabaseGroupingTests { private let connectionId = UUID() diff --git a/TableProTests/Models/FieldValueStateTests.swift b/TableProTests/Models/FieldValueStateTests.swift index f4446f3403..6106e2c069 100644 --- a/TableProTests/Models/FieldValueStateTests.swift +++ b/TableProTests/Models/FieldValueStateTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Field value state") struct FieldValueStateTests { private func makeField( original: String?, diff --git a/TableProTests/Models/FileTabBaselineTests.swift b/TableProTests/Models/FileTabBaselineTests.swift index 87d8182144..96c6a1b69e 100644 --- a/TableProTests/Models/FileTabBaselineTests.swift +++ b/TableProTests/Models/FileTabBaselineTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("File tab baseline") @MainActor struct FileTabBaselineTests { private func makeFile(contents: String) throws -> URL { diff --git a/TableProTests/Models/FileTabExternalChangeTests.swift b/TableProTests/Models/FileTabExternalChangeTests.swift index c0e6fcc93c..c311b90ad9 100644 --- a/TableProTests/Models/FileTabExternalChangeTests.swift +++ b/TableProTests/Models/FileTabExternalChangeTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("File tab external change") @MainActor struct FileTabExternalChangeTests { private func makeFile(contents: String) throws -> URL { diff --git a/TableProTests/Models/GeneralSettingsTests.swift b/TableProTests/Models/GeneralSettingsTests.swift index 60b3ec5f53..50d55f4087 100644 --- a/TableProTests/Models/GeneralSettingsTests.swift +++ b/TableProTests/Models/GeneralSettingsTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AppLanguage") struct AppLanguageTests { @Test("Includes Korean with its standard locale identifier and native name") func includesKorean() { @@ -22,7 +21,6 @@ struct AppLanguageTests { } } -@Suite("GeneralSettings.showRecentTables") struct GeneralSettingsTests { @Test("Defaults to off") func defaultsOff() { @@ -47,7 +45,6 @@ struct GeneralSettingsTests { } } -@Suite("GeneralSettings.showObjectIcons") struct GeneralSettingsObjectIconsTests { @Test("Defaults to on") func defaultsOn() { @@ -82,7 +79,6 @@ struct GeneralSettingsObjectIconsTests { } } -@Suite("GeneralSettings.showWorkspaceRail") struct GeneralSettingsWorkspaceRailTests { @Test("Defaults to on") func defaultsOn() { @@ -107,7 +103,6 @@ struct GeneralSettingsWorkspaceRailTests { } } -@Suite("GeneralSettings.showSystemContainers") struct GeneralSettingsSystemContainersTests { @Test("Defaults to off") func defaultsOff() { @@ -132,7 +127,6 @@ struct GeneralSettingsSystemContainersTests { } } -@Suite("GeneralSettings update-preference removal") struct GeneralSettingsUpdatePreferenceTests { @Test("A settings blob still carrying automaticallyCheckForUpdates decodes without it") func decodesBlobCarryingTheRemovedKey() throws { @@ -153,7 +147,6 @@ struct GeneralSettingsUpdatePreferenceTests { } } -@Suite("GeneralSettings.showPartitions") struct GeneralSettingsPartitionsTests { @Test("Defaults to on") func defaultsOn() { diff --git a/TableProTests/Models/GridColumnCatalogTests.swift b/TableProTests/Models/GridColumnCatalogTests.swift index 503e236a83..c02e447a93 100644 --- a/TableProTests/Models/GridColumnCatalogTests.swift +++ b/TableProTests/Models/GridColumnCatalogTests.swift @@ -7,7 +7,6 @@ import Testing @testable import TablePro -@Suite("Grid column catalog") struct GridColumnCatalogTests { private let columns = ["id", "name", "created_at"] private let types: [ColumnType] = [ diff --git a/TableProTests/Models/GridDisplayOrderResolverTests.swift b/TableProTests/Models/GridDisplayOrderResolverTests.swift index b5b0237919..52a3411321 100644 --- a/TableProTests/Models/GridDisplayOrderResolverTests.swift +++ b/TableProTests/Models/GridDisplayOrderResolverTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("GridDisplayOrderResolver") @MainActor struct GridDisplayOrderResolverTests { private func makeTableRows() -> TableRows { diff --git a/TableProTests/Models/GridValueFilterStateTests.swift b/TableProTests/Models/GridValueFilterStateTests.swift index 394c934ebb..bbd1406a5e 100644 --- a/TableProTests/Models/GridValueFilterStateTests.swift +++ b/TableProTests/Models/GridValueFilterStateTests.swift @@ -7,7 +7,6 @@ import Testing @testable import TablePro -@Suite("GridValueFilterState") struct GridValueFilterStateTests { @Test("set marks a column active") func setMarksColumnActive() { diff --git a/TableProTests/Models/HistoryClearSummaryTests.swift b/TableProTests/Models/HistoryClearSummaryTests.swift index d70474a666..a6a863d4f2 100644 --- a/TableProTests/Models/HistoryClearSummaryTests.swift +++ b/TableProTests/Models/HistoryClearSummaryTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("HistoryClearSummary") struct HistoryClearSummaryTests { private let everySource = Set(QueryHistorySource.allCases) diff --git a/TableProTests/Models/IdentityPathTests.swift b/TableProTests/Models/IdentityPathTests.swift index da96af7556..78c429514d 100644 --- a/TableProTests/Models/IdentityPathTests.swift +++ b/TableProTests/Models/IdentityPathTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("IdentityPath") struct IdentityPathTests { @Test("Components holding neither the separator nor a backslash join unchanged") func plainComponentsJoinUnchanged() { diff --git a/TableProTests/Models/InspectorFieldLayoutTests.swift b/TableProTests/Models/InspectorFieldLayoutTests.swift index cea9ff9b2d..e8effb0cb6 100644 --- a/TableProTests/Models/InspectorFieldLayoutTests.swift +++ b/TableProTests/Models/InspectorFieldLayoutTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing @MainActor -@Suite("Inspector field layout") struct InspectorFieldLayoutTests { private static let everyKind: [FieldEditorKind] = [ .singleLine, diff --git a/TableProTests/Models/InspectorMetricsTests.swift b/TableProTests/Models/InspectorMetricsTests.swift index 2d65955995..33e80c0381 100644 --- a/TableProTests/Models/InspectorMetricsTests.swift +++ b/TableProTests/Models/InspectorMetricsTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Inspector metrics") struct InspectorMetricsTests { /// Every surface in the pane sits on one edge. It did not: the header was 10, the filter bar 8, /// the field list 24 and table info 30, so changing the selection moved every value sideways. diff --git a/TableProTests/Models/InspectorSubjectTests.swift b/TableProTests/Models/InspectorSubjectTests.swift index cc4b118e09..252a8ed4b3 100644 --- a/TableProTests/Models/InspectorSubjectTests.swift +++ b/TableProTests/Models/InspectorSubjectTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Inspector subject") struct InspectorSubjectTests { @Test("A row names its table and its position") func rowNamesTableAndPosition() { diff --git a/TableProTests/Models/JSON/JSONForeignKeyExpansionPolicyTests.swift b/TableProTests/Models/JSON/JSONForeignKeyExpansionPolicyTests.swift index 4962050cd0..c8b0caf16d 100644 --- a/TableProTests/Models/JSON/JSONForeignKeyExpansionPolicyTests.swift +++ b/TableProTests/Models/JSON/JSONForeignKeyExpansionPolicyTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("JSONForeignKeyExpansionPolicy") struct JSONForeignKeyExpansionPolicyTests { private func visit(_ table: String, _ value: String) -> JSONForeignKeyVisit { JSONForeignKeyVisit(table: table, schema: nil, column: "id", value: value) diff --git a/TableProTests/Models/JSON/JSONRowFilterTests.swift b/TableProTests/Models/JSON/JSONRowFilterTests.swift index f52ef8789b..01df83be17 100644 --- a/TableProTests/Models/JSON/JSONRowFilterTests.swift +++ b/TableProTests/Models/JSON/JSONRowFilterTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("JSONRowFilter") struct JSONRowFilterTests { private func makeRoot() -> JSONRowNode { JSONRowNodeBuilder.build( diff --git a/TableProTests/Models/JSON/JSONRowFlattenerTests.swift b/TableProTests/Models/JSON/JSONRowFlattenerTests.swift index 34a883d304..fec3faa910 100644 --- a/TableProTests/Models/JSON/JSONRowFlattenerTests.swift +++ b/TableProTests/Models/JSON/JSONRowFlattenerTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("JSONRowFlattener") struct JSONRowFlattenerTests { private let reference = JSONForeignKeyRef( column: "language_id", diff --git a/TableProTests/Models/JSON/JSONRowNodeBuilderTests.swift b/TableProTests/Models/JSON/JSONRowNodeBuilderTests.swift index 0141b028ed..f58ac1ca12 100644 --- a/TableProTests/Models/JSON/JSONRowNodeBuilderTests.swift +++ b/TableProTests/Models/JSON/JSONRowNodeBuilderTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("JSONRowNodeBuilder") struct JSONRowNodeBuilderTests { private func reference(column: String, table: String = "language") -> JSONForeignKeyRef { JSONForeignKeyRef( diff --git a/TableProTests/Models/JSON/JSONRowSnapshotChangeTests.swift b/TableProTests/Models/JSON/JSONRowSnapshotChangeTests.swift index eb68c2f6b6..437b100ed0 100644 --- a/TableProTests/Models/JSON/JSONRowSnapshotChangeTests.swift +++ b/TableProTests/Models/JSON/JSONRowSnapshotChangeTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("JSONRowSnapshot change detection") struct JSONRowSnapshotChangeTests { private let reference = JSONForeignKeyRef( column: "ArtistId", diff --git a/TableProTests/Models/JSON/JSONRowTextRendererTests.swift b/TableProTests/Models/JSON/JSONRowTextRendererTests.swift index b083a1cc85..0a30a91987 100644 --- a/TableProTests/Models/JSON/JSONRowTextRendererTests.swift +++ b/TableProTests/Models/JSON/JSONRowTextRendererTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("JSONRowTextRenderer") struct JSONRowTextRendererTests { private func makeRoot() -> JSONRowNode { JSONRowNodeBuilder.build( diff --git a/TableProTests/Models/JSON/JSONScalarTextTests.swift b/TableProTests/Models/JSON/JSONScalarTextTests.swift index 7ceaa1bf31..ece36b439a 100644 --- a/TableProTests/Models/JSON/JSONScalarTextTests.swift +++ b/TableProTests/Models/JSON/JSONScalarTextTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("JSONScalarText") struct JSONScalarTextTests { private let sample = Data((0..<200).map { UInt8($0 % 256) }) diff --git a/TableProTests/Models/KeyboardShortcutTests.swift b/TableProTests/Models/KeyboardShortcutTests.swift index ae4c4264af..50e25891ab 100644 --- a/TableProTests/Models/KeyboardShortcutTests.swift +++ b/TableProTests/Models/KeyboardShortcutTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ShortcutAction defaults") struct ShortcutActionDefaultsTests { @Test("Execute Query default is Cmd+Return") func executeQueryDefault() { @@ -55,7 +54,6 @@ struct ShortcutActionDefaultsTests { } } -@Suite("Editor built-in shortcut names") struct EditorBuiltInNameTests { @Test("Command-[ is Outdent and Command-] is Indent") func bracketsAreNamedAsTheEditorMapsThem() { @@ -70,7 +68,6 @@ struct EditorBuiltInNameTests { } } -@Suite("Default shortcut hygiene") struct DefaultShortcutHygieneTests { /// Control-Tab is not a system hotkey the way Control-1 is (that one switches Spaces, which is /// why this rule exists). It is the chord AppKit itself gives tab switching in every app with @@ -111,7 +108,6 @@ struct DefaultShortcutHygieneTests { } } -@Suite("Reserved shortcuts") struct ReservedShortcutTests { @Test("Cmd+[ conflicts with the editor indent command in editor context") func bracketConflictsInEditor() { @@ -165,7 +161,6 @@ struct ReservedShortcutTests { } } -@Suite("Standard text-editing bindings") struct StandardTextEditingBindingTests { @Test("Delete shadows the system delete-to-line-start binding") func deleteShadowsCommandDelete() { @@ -208,7 +203,6 @@ struct StandardTextEditingBindingTests { } } -@Suite("Bare-key validation") struct BareKeyValidationTests { @Test("Grid actions allow bare keys") func gridActionsAllowBareKeys() { @@ -285,7 +279,6 @@ struct BareKeyValidationTests { } } -@Suite("Shortcut conflict detection") struct ShortcutConflictTests { @Test("Assigning Cmd+R to Execute Query conflicts with Refresh") func cmdRConflictsWithRefresh() { @@ -313,7 +306,6 @@ struct ShortcutConflictTests { } } -@Suite("Keyboard settings sanitization") struct KeyboardSettingsSanitizeTests { @Test("Bare-Space override on a menu action is dropped on load") func dropsBareSpaceMenuOverride() { @@ -353,7 +345,6 @@ struct KeyboardSettingsSanitizeTests { } } -@Suite("Workspace navigation defaults") struct WorkspaceNavigationShortcutTests { @Test("Moving through the rail is bound to Control-Command and the arrow that matches the direction") func workspaceCyclingIsBoundToVerticalArrows() { @@ -408,7 +399,6 @@ struct WorkspaceNavigationShortcutTests { } } -@Suite("Legacy migration") struct KeyboardSettingsMigrationTests { private func decode(_ json: String) throws -> KeyboardSettings { try JSONDecoder().decode(KeyboardSettings.self, from: Data(json.utf8)) @@ -450,7 +440,6 @@ struct KeyboardSettingsMigrationTests { } } -@Suite("Shortcut hint") struct ShortcutHintTests { @Test("Switch Connection default hint shows Control+Command+C") func switchConnectionDefaultHint() { diff --git a/TableProTests/Models/LicenseDeviceListStateTests.swift b/TableProTests/Models/LicenseDeviceListStateTests.swift index ff0aa879fe..91f8d727eb 100644 --- a/TableProTests/Models/LicenseDeviceListStateTests.swift +++ b/TableProTests/Models/LicenseDeviceListStateTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("LicenseDeviceListState") struct LicenseDeviceListStateTests { @Test("A failure carries its reason, and no other state pretends to have one") func onlyFailureCarriesAMessage() { @@ -42,7 +41,6 @@ struct LicenseDeviceListStateTests { } } -@Suite("LicenseManager unlicensed status") struct LicenseManagerUnlicensedStatusTests { /// `deactivate()` used to assign `.deactivated` straight onto `status`, which skipped the only /// place that publishes a change, so iCloud Sync went on reporting a healthy sync for a licence diff --git a/TableProTests/Models/LicenseManagerDecisionTests.swift b/TableProTests/Models/LicenseManagerDecisionTests.swift index f782d8f591..15d3e0955a 100644 --- a/TableProTests/Models/LicenseManagerDecisionTests.swift +++ b/TableProTests/Models/LicenseManagerDecisionTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("LicenseManagerDecision") struct LicenseManagerDecisionTests { private static let thisMachine = "9f86d081884c7d659a2feaa0c55ad015" private static let otherMachine = "0000000000000000000000000000dead" diff --git a/TableProTests/Models/LicensePresentationTests.swift b/TableProTests/Models/LicensePresentationTests.swift index d8216ed50c..7a75518342 100644 --- a/TableProTests/Models/LicensePresentationTests.swift +++ b/TableProTests/Models/LicensePresentationTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("LicensePresentation") struct LicensePresentationTests { // MARK: - Which layout the pane shows diff --git a/TableProTests/Models/LicenseTests.swift b/TableProTests/Models/LicenseTests.swift index cb5bce8fb3..4b0999c7b5 100644 --- a/TableProTests/Models/LicenseTests.swift +++ b/TableProTests/Models/LicenseTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("License") struct LicenseTests { private static let machineId = "9f86d081884c7d659a2feaa0c55ad015" diff --git a/TableProTests/Models/LicenseTierTests.swift b/TableProTests/Models/LicenseTierTests.swift index 592841b261..ae95a1a5d1 100644 --- a/TableProTests/Models/LicenseTierTests.swift +++ b/TableProTests/Models/LicenseTierTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("LicenseTier") struct LicenseTierTests { // MARK: - Parsing diff --git a/TableProTests/Models/LinkedSQLFavoriteEncodingTests.swift b/TableProTests/Models/LinkedSQLFavoriteEncodingTests.swift index 834a0132f4..bbebab9538 100644 --- a/TableProTests/Models/LinkedSQLFavoriteEncodingTests.swift +++ b/TableProTests/Models/LinkedSQLFavoriteEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Linked SQL favorite encoding") struct LinkedSQLFavoriteEncodingTests { private func favorite(encodedAs encodingName: String) -> LinkedSQLFavorite { LinkedSQLFavorite( diff --git a/TableProTests/Models/MultiRowEditStateTests.swift b/TableProTests/Models/MultiRowEditStateTests.swift index e973719fc7..fff5633dbe 100644 --- a/TableProTests/Models/MultiRowEditStateTests.swift +++ b/TableProTests/Models/MultiRowEditStateTests.swift @@ -10,7 +10,7 @@ import TableProPluginKit import Testing @testable import TablePro -@MainActor @Suite("MultiRowEditState") +@MainActor struct MultiRowEditStateTests { // MARK: - Helper diff --git a/TableProTests/Models/PaginationCapabilityTests.swift b/TableProTests/Models/PaginationCapabilityTests.swift index b9e926c467..de12a84438 100644 --- a/TableProTests/Models/PaginationCapabilityTests.swift +++ b/TableProTests/Models/PaginationCapabilityTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("Pagination capability") @MainActor struct PaginationCapabilityTests { private let leadingRows = PaginationCapability.leadingRowsOnly(maximumRows: 10_000) diff --git a/TableProTests/Models/PaginationStateTests.swift b/TableProTests/Models/PaginationStateTests.swift index 6130f3c01a..325d4d2b5d 100644 --- a/TableProTests/Models/PaginationStateTests.swift +++ b/TableProTests/Models/PaginationStateTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Pagination State") struct PaginationStateTests { @Test("Default page size is 1000") func defaultPageSize() { diff --git a/TableProTests/Models/PasswordSourceCodableTests.swift b/TableProTests/Models/PasswordSourceCodableTests.swift index fee5d216b9..ec0c3599d3 100644 --- a/TableProTests/Models/PasswordSourceCodableTests.swift +++ b/TableProTests/Models/PasswordSourceCodableTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("PasswordSource Codable") struct PasswordSourceCodableTests { private let encoder = JSONEncoder() private let decoder = JSONDecoder() diff --git a/TableProTests/Models/PendingChangeKindTests.swift b/TableProTests/Models/PendingChangeKindTests.swift index 1da484b3fd..a3efc3eeb9 100644 --- a/TableProTests/Models/PendingChangeKindTests.swift +++ b/TableProTests/Models/PendingChangeKindTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Pending change kind") struct PendingChangeKindTests { private static let contentKinds: [TabType] = [ .query, .table, .erDiagram, .serverDashboard, .insights, .objectSource, diff --git a/TableProTests/Models/PreviewTabTests.swift b/TableProTests/Models/PreviewTabTests.swift index 8f6f421d4d..c13d34db61 100644 --- a/TableProTests/Models/PreviewTabTests.swift +++ b/TableProTests/Models/PreviewTabTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Preview Tab") struct PreviewTabTests { @Test("QueryTab isPreview defaults to false") func queryTabIsPreviewDefaultsFalse() { diff --git a/TableProTests/Models/Query/DefaultSortStateTests.swift b/TableProTests/Models/Query/DefaultSortStateTests.swift index dfc8582c14..6649d160e2 100644 --- a/TableProTests/Models/Query/DefaultSortStateTests.swift +++ b/TableProTests/Models/Query/DefaultSortStateTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("QueryTab.hasUserActiveSort") @MainActor struct QueryTabHasUserActiveSortTests { @Test("Empty sortState is not user-active") @@ -43,7 +42,6 @@ struct QueryTabHasUserActiveSortTests { } } -@Suite("A user-cleared sort is distinguishable from a tab that has not sorted") @MainActor struct UserClearedSortIsDistinctTests { @Test("A fresh sort state is unset, not user") @@ -106,7 +104,6 @@ struct UserClearedSortIsDistinctTests { } } -@Suite("QueryTabManager.replaceTabContent resets sort state") @MainActor struct ReplaceTabContentDefaultSortResetTests { @Test("replaceTabContent clears sortState back to unset, so the new table gets the app default") @@ -132,7 +129,6 @@ struct ReplaceTabContentDefaultSortResetTests { } } -@Suite("DataGridSettings.defaultSortBehavior decoder") struct DataGridSettingsDefaultSortDecoderTests { @Test("Missing direction key falls back to ascending, so a shipped user sees no change") func missingDirectionFallsBackToAscending() throws { diff --git a/TableProTests/Models/Query/DeltaTests.swift b/TableProTests/Models/Query/DeltaTests.swift index d2cbc0318b..ca8e95f305 100644 --- a/TableProTests/Models/Query/DeltaTests.swift +++ b/TableProTests/Models/Query/DeltaTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Delta") struct DeltaTests { @Test("cellChanged equality matches on row and column") func cellChangedEquality() { diff --git a/TableProTests/Models/Query/ExplainRequestTests.swift b/TableProTests/Models/Query/ExplainRequestTests.swift index 2078a35388..3dacaba460 100644 --- a/TableProTests/Models/Query/ExplainRequestTests.swift +++ b/TableProTests/Models/Query/ExplainRequestTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Explain Request") struct ExplainRequestTests { private let postgresVariants = [ ExplainVariant( diff --git a/TableProTests/Models/Query/NavigationRowAnchorTests.swift b/TableProTests/Models/Query/NavigationRowAnchorTests.swift index b69e5a0c55..7a8e18a8cd 100644 --- a/TableProTests/Models/Query/NavigationRowAnchorTests.swift +++ b/TableProTests/Models/Query/NavigationRowAnchorTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("NavigationRowAnchor") struct NavigationRowAnchorTests { private let columns = ["id", "region", "name"] private let values: ContiguousArray = [.text("42"), .text("eu"), .text("Ada")] diff --git a/TableProTests/Models/Query/QueryCommandAvailabilityTests.swift b/TableProTests/Models/Query/QueryCommandAvailabilityTests.swift index 76af44deac..cdf3e3da3e 100644 --- a/TableProTests/Models/Query/QueryCommandAvailabilityTests.swift +++ b/TableProTests/Models/Query/QueryCommandAvailabilityTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("QueryCommandAvailability") struct QueryCommandAvailabilityTests { @Test("A connected tab with text can run, explain, format and favorite") func liveTab() { diff --git a/TableProTests/Models/Query/QueryPlanCostTests.swift b/TableProTests/Models/Query/QueryPlanCostTests.swift index 03ef3e484d..661e153bd4 100644 --- a/TableProTests/Models/Query/QueryPlanCostTests.swift +++ b/TableProTests/Models/Query/QueryPlanCostTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Cost") struct QueryPlanCostTests { private func node( _ operation: String, diff --git a/TableProTests/Models/Query/QueryPlanDiffTests.swift b/TableProTests/Models/Query/QueryPlanDiffTests.swift index 6808f2f979..6e43d24405 100644 --- a/TableProTests/Models/Query/QueryPlanDiffTests.swift +++ b/TableProTests/Models/Query/QueryPlanDiffTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query plan comparison") struct QueryPlanDiffTests { // MARK: - Verdict diff --git a/TableProTests/Models/Query/QueryPlanLoopCorrectionTests.swift b/TableProTests/Models/Query/QueryPlanLoopCorrectionTests.swift index 4674b6aea0..43c24fcf67 100644 --- a/TableProTests/Models/Query/QueryPlanLoopCorrectionTests.swift +++ b/TableProTests/Models/Query/QueryPlanLoopCorrectionTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Loop Correction") struct QueryPlanLoopCorrectionTests { private let parser = PostgreSQLPlanParser() diff --git a/TableProTests/Models/Query/QueryPlanMetricIndexTests.swift b/TableProTests/Models/Query/QueryPlanMetricIndexTests.swift index cf69f022f1..603636d860 100644 --- a/TableProTests/Models/Query/QueryPlanMetricIndexTests.swift +++ b/TableProTests/Models/Query/QueryPlanMetricIndexTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Metric Index") struct QueryPlanMetricIndexTests { private func node( _ operation: String, diff --git a/TableProTests/Models/Query/QueryPlanNodeSummaryTests.swift b/TableProTests/Models/Query/QueryPlanNodeSummaryTests.swift index 98518fe711..03bb8f8be6 100644 --- a/TableProTests/Models/Query/QueryPlanNodeSummaryTests.swift +++ b/TableProTests/Models/Query/QueryPlanNodeSummaryTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Node Summary") struct QueryPlanNodeSummaryTests { private func makeNode( operation: String = "Seq Scan", diff --git a/TableProTests/Models/Query/QueryPlanSeverityTests.swift b/TableProTests/Models/Query/QueryPlanSeverityTests.swift index d35a7b5429..4e0739823e 100644 --- a/TableProTests/Models/Query/QueryPlanSeverityTests.swift +++ b/TableProTests/Models/Query/QueryPlanSeverityTests.swift @@ -10,7 +10,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Query Plan Severity") struct QueryPlanSeverityTests { @Test("Each band maps to its severity") func classifiesBands() { diff --git a/TableProTests/Models/Query/QueryPlanValueFormatterTests.swift b/TableProTests/Models/Query/QueryPlanValueFormatterTests.swift index cf9b0b5abc..22d5cd8bd0 100644 --- a/TableProTests/Models/Query/QueryPlanValueFormatterTests.swift +++ b/TableProTests/Models/Query/QueryPlanValueFormatterTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query plan value formatting") struct QueryPlanValueFormatterTests { /// A metric rendered with `String(describing:)` reaches the user as `52000000.0`, unlocalized /// and ungrouped, directly under a summary that spells the same number `52,000,000`. @@ -89,7 +88,6 @@ struct QueryPlanValueFormatterTests { } } -@Suite("EXPLAIN preamble normalization") struct SQLPreambleNormalizerTests { @Test("Case and spacing do not change the preamble") func normalizesCaseAndSpacing() { @@ -110,7 +108,6 @@ struct SQLPreambleNormalizerTests { } } -@Suite("Plan variant keys") struct QueryPlanVariantKeyTests { @Test("A declared variant and a typed statement never collide") func declaredAndTypedNeverCollide() { diff --git a/TableProTests/Models/Query/QueryResultPresentationTests.swift b/TableProTests/Models/Query/QueryResultPresentationTests.swift index 4b9660e837..5c348a40f7 100644 --- a/TableProTests/Models/Query/QueryResultPresentationTests.swift +++ b/TableProTests/Models/Query/QueryResultPresentationTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("QueryResultPresentation") struct QueryResultPresentationTests { @Test("A fresh query tab shows nothing rather than an empty grid") func idleTab() { diff --git a/TableProTests/Models/Query/QueryTabBaseQueryTests.swift b/TableProTests/Models/Query/QueryTabBaseQueryTests.swift index 34ece6ba3c..1749e678c2 100644 --- a/TableProTests/Models/Query/QueryTabBaseQueryTests.swift +++ b/TableProTests/Models/Query/QueryTabBaseQueryTests.swift @@ -4,7 +4,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("QueryTab.buildBaseTableQuery") struct QueryTabBaseQueryTests { init() { FakeMSSQLPluginRegistration.registerIfNeeded() diff --git a/TableProTests/Models/Query/QueryTabFoldPersistenceTests.swift b/TableProTests/Models/Query/QueryTabFoldPersistenceTests.swift index d66f119023..19984dc0b2 100644 --- a/TableProTests/Models/Query/QueryTabFoldPersistenceTests.swift +++ b/TableProTests/Models/Query/QueryTabFoldPersistenceTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Query tab fold persistence") @MainActor struct QueryTabFoldPersistenceTests { diff --git a/TableProTests/Models/Query/QueryTabManagerAdoptTabTests.swift b/TableProTests/Models/Query/QueryTabManagerAdoptTabTests.swift index f3dbdbcabe..6dc3fdbb23 100644 --- a/TableProTests/Models/Query/QueryTabManagerAdoptTabTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerAdoptTabTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryTabManager.adoptTab") @MainActor struct QueryTabManagerAdoptTabTests { @Test("An adopted tab keeps its identity and content instead of being rebuilt") diff --git a/TableProTests/Models/Query/QueryTabManagerCloseTests.swift b/TableProTests/Models/Query/QueryTabManagerCloseTests.swift index 18dd9758cf..b6d79d14a1 100644 --- a/TableProTests/Models/Query/QueryTabManagerCloseTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerCloseTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query tab manager tab list operations") @MainActor struct QueryTabManagerCloseTests { private func makeManager(tabCount: Int) -> QueryTabManager { diff --git a/TableProTests/Models/Query/QueryTabManagerFocusTests.swift b/TableProTests/Models/Query/QueryTabManagerFocusTests.swift index 981041e7be..484d15ebc2 100644 --- a/TableProTests/Models/Query/QueryTabManagerFocusTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerFocusTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("QueryTabManager editor focus claim") @MainActor struct QueryTabManagerFocusTests { @Test("addTab with claimFocus sets pendingFocusTabId to the new tab") diff --git a/TableProTests/Models/Query/QueryTabManagerRecencyTests.swift b/TableProTests/Models/Query/QueryTabManagerRecencyTests.swift index 81d64294d5..92b2a06802 100644 --- a/TableProTests/Models/Query/QueryTabManagerRecencyTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerRecencyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query tab manager records when each tab was last selected") @MainActor struct QueryTabManagerRecencyTests { /// A selection is recorded once the main queue turn it happened in has finished. diff --git a/TableProTests/Models/Query/QueryTabManagerRecordingTests.swift b/TableProTests/Models/Query/QueryTabManagerRecordingTests.swift index 85f59d2c19..7a1506c7d6 100644 --- a/TableProTests/Models/Query/QueryTabManagerRecordingTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerRecordingTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("QueryTabManager.onTableOpened") @MainActor struct QueryTabManagerRecordingTests { private struct Opened: Equatable { diff --git a/TableProTests/Models/Query/QueryTabManagerTabTitleTests.swift b/TableProTests/Models/Query/QueryTabManagerTabTitleTests.swift index c939058573..70843ae9f0 100644 --- a/TableProTests/Models/Query/QueryTabManagerTabTitleTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerTabTitleTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryTabManager.tabTitle") @MainActor struct QueryTabManagerTabTitleTests { @Test("Returns plain name when schema is nil") diff --git a/TableProTests/Models/Query/QueryTabManagerTests.swift b/TableProTests/Models/Query/QueryTabManagerTests.swift index c7c7897619..6611db23d3 100644 --- a/TableProTests/Models/Query/QueryTabManagerTests.swift +++ b/TableProTests/Models/Query/QueryTabManagerTests.swift @@ -14,7 +14,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("QueryTabManager.selectedTabAndIndex") @MainActor struct QueryTabManagerSelectedTabAndIndexTests { @Test("returns nil when no tab is selected") diff --git a/TableProTests/Models/Query/QueryTabProtectionTests.swift b/TableProTests/Models/Query/QueryTabProtectionTests.swift index 0615199d2c..b21aac8e16 100644 --- a/TableProTests/Models/Query/QueryTabProtectionTests.swift +++ b/TableProTests/Models/Query/QueryTabProtectionTests.swift @@ -3,7 +3,6 @@ import Foundation import Testing @MainActor -@Suite("QueryTab protection predicates") struct QueryTabProtectionTests { @Test("A blank scratch query tab holds no work") func blankScratchTabHoldsNoWork() { diff --git a/TableProTests/Models/Query/ResultChartConfigurationTests.swift b/TableProTests/Models/Query/ResultChartConfigurationTests.swift index 7935e0a622..f28fa03685 100644 --- a/TableProTests/Models/Query/ResultChartConfigurationTests.swift +++ b/TableProTests/Models/Query/ResultChartConfigurationTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("ResultChartConfiguration") struct ResultChartConfigurationTests { @Test("A result defaults to row number and its first typed numeric column") func defaultConfiguration() throws { diff --git a/TableProTests/Models/Query/ResultEditabilityTests.swift b/TableProTests/Models/Query/ResultEditabilityTests.swift index d2aed30ebe..e4674a15c6 100644 --- a/TableProTests/Models/Query/ResultEditabilityTests.swift +++ b/TableProTests/Models/Query/ResultEditabilityTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("ResultEditability") struct ResultEditabilityTests { private func origin( tableName: String? = "users", diff --git a/TableProTests/Models/Query/ResultSetMenuModelTests.swift b/TableProTests/Models/Query/ResultSetMenuModelTests.swift index 13abefdfb9..2fbccb26e9 100644 --- a/TableProTests/Models/Query/ResultSetMenuModelTests.swift +++ b/TableProTests/Models/Query/ResultSetMenuModelTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ResultSetMenuModel") struct ResultSetMenuModelTests { /// The count is what the deleted strip showed at a glance and a closed menu cannot. Carrying it /// in the button's own title is the whole mitigation, so it is worth a test. diff --git a/TableProTests/Models/Query/ResultSetOwnershipTests.swift b/TableProTests/Models/Query/ResultSetOwnershipTests.swift index b593bd32d6..2dc3a5053a 100644 --- a/TableProTests/Models/Query/ResultSetOwnershipTests.swift +++ b/TableProTests/Models/Query/ResultSetOwnershipTests.swift @@ -13,7 +13,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ResultSet ownership") struct ResultSetOwnershipTests { @Test("ResultSet declares no stored property that QueryTab already owns") func resultSetDoesNotMirrorTheTab() throws { diff --git a/TableProTests/Models/Query/ResultSetPolicyTests.swift b/TableProTests/Models/Query/ResultSetPolicyTests.swift index 7021f70e06..e965e67729 100644 --- a/TableProTests/Models/Query/ResultSetPolicyTests.swift +++ b/TableProTests/Models/Query/ResultSetPolicyTests.swift @@ -12,7 +12,6 @@ import Foundation import Testing @MainActor -@Suite("ResultSetPolicy") struct ResultSetPolicyTests { @Test("A query tab with a result offers the chooser and can pin") func queryTabWithResult() { diff --git a/TableProTests/Models/Query/RowTests.swift b/TableProTests/Models/Query/RowTests.swift index 0aa1bdcb94..addce2af4b 100644 --- a/TableProTests/Models/Query/RowTests.swift +++ b/TableProTests/Models/Query/RowTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("RowID") struct RowIDTests { @Test("Two inserted RowIDs have different UUIDs") func insertedFactoriesProduceDistinctUUIDs() { @@ -33,7 +32,6 @@ struct RowIDTests { } } -@Suite("Row") struct RowTests { @Test("Subscript returns the cell at a valid column") func subscriptReadsValidColumn() { diff --git a/TableProTests/Models/Query/SQLFavoriteEditDraftTests.swift b/TableProTests/Models/Query/SQLFavoriteEditDraftTests.swift index b477b540db..3637ea3cd0 100644 --- a/TableProTests/Models/Query/SQLFavoriteEditDraftTests.swift +++ b/TableProTests/Models/Query/SQLFavoriteEditDraftTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SQLFavoriteEditDraft") struct SQLFavoriteEditDraftTests { private static let seedScript = (1...10_000) .map { "INSERT INTO users (id, email) VALUES (\($0), 'user\($0)@example.com');" } diff --git a/TableProTests/Models/Query/StatementAnchorTests.swift b/TableProTests/Models/Query/StatementAnchorTests.swift index 878ab37b75..8dff15582d 100644 --- a/TableProTests/Models/Query/StatementAnchorTests.swift +++ b/TableProTests/Models/Query/StatementAnchorTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("Statement anchor") @MainActor struct StatementAnchorTests { diff --git a/TableProTests/Models/Query/TabDisplayOutputModeTests.swift b/TableProTests/Models/Query/TabDisplayOutputModeTests.swift index ac69294734..c0c86c0e4d 100644 --- a/TableProTests/Models/Query/TabDisplayOutputModeTests.swift +++ b/TableProTests/Models/Query/TabDisplayOutputModeTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Tab display - Output mode") struct TabDisplayOutputModeTests { private static func result(printing lines: [String]) -> ResultSet { let result = ResultSet(label: "Result") diff --git a/TableProTests/Models/Query/TabObjectKindTests.swift b/TableProTests/Models/Query/TabObjectKindTests.swift index 296c56b4c3..0aa0c2edaa 100644 --- a/TableProTests/Models/Query/TabObjectKindTests.swift +++ b/TableProTests/Models/Query/TabObjectKindTests.swift @@ -12,7 +12,6 @@ import Testing /// materialized view. So a matview reached the Structure tab as a table and was offered column, index /// and constraint edits PostgreSQL always refuses. The kind now travels beside the Bool, and a tab an /// older build saved with the Bool false still carries the kind that refuses its rows. (#2726) -@Suite("Tab Object Kind") @MainActor struct TabObjectKindTests { private func tableTab() -> QueryTab { diff --git a/TableProTests/Models/Query/TabQueryContentEqualityTests.swift b/TableProTests/Models/Query/TabQueryContentEqualityTests.swift index d9b11833ff..d10d09d61f 100644 --- a/TableProTests/Models/Query/TabQueryContentEqualityTests.swift +++ b/TableProTests/Models/Query/TabQueryContentEqualityTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TabQueryContent.Equatable") struct TabQueryContentEqualityTests { @Test("Equal when all fields match") func equalWhenIdentical() { diff --git a/TableProTests/Models/Query/TabSessionRegistryTests.swift b/TableProTests/Models/Query/TabSessionRegistryTests.swift index f1cd47c445..60723b0fbb 100644 --- a/TableProTests/Models/Query/TabSessionRegistryTests.swift +++ b/TableProTests/Models/Query/TabSessionRegistryTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("TabSessionRegistry") @MainActor struct TabSessionRegistryTests { @Test("session(for:) returns nil for an unregistered id") diff --git a/TableProTests/Models/Query/TabSessionTests.swift b/TableProTests/Models/Query/TabSessionTests.swift index c422bb6697..6972ec6d85 100644 --- a/TableProTests/Models/Query/TabSessionTests.swift +++ b/TableProTests/Models/Query/TabSessionTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("TabSession") @MainActor struct TabSessionTests { @Test("A new session starts empty") @@ -49,7 +48,6 @@ struct TabSessionTests { /// The point of #2060: pointing a tab at another table is not an insert or a removal, so the /// registry never reconciled the session. Nothing per-table may live in the session for that to /// matter, and the tab itself has to be the one thing that describes the table. -@Suite("Tab retarget leaves no stale per-tab state") @MainActor struct TabRetargetSessionStateTests { @Test("Retargeting a tab reuses its session rather than replacing it") diff --git a/TableProTests/Models/Query/TabStructureVersionTests.swift b/TableProTests/Models/Query/TabStructureVersionTests.swift index ae32177ff0..3ac8257fbf 100644 --- a/TableProTests/Models/Query/TabStructureVersionTests.swift +++ b/TableProTests/Models/Query/TabStructureVersionTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("QueryTabManager.tabStructureVersion") @MainActor struct TabStructureVersionTests { diff --git a/TableProTests/Models/Query/TableRowsSortingTests.swift b/TableProTests/Models/Query/TableRowsSortingTests.swift index da3afc7ca6..b8af5ebd61 100644 --- a/TableProTests/Models/Query/TableRowsSortingTests.swift +++ b/TableProTests/Models/Query/TableRowsSortingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableRowsSorting") struct TableRowsSortingTests { private func makeRows() -> TableRows { var rows = TableRows( diff --git a/TableProTests/Models/Query/TableRowsTests.swift b/TableProTests/Models/Query/TableRowsTests.swift index 68161abb6a..be7f474508 100644 --- a/TableProTests/Models/Query/TableRowsTests.swift +++ b/TableProTests/Models/Query/TableRowsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableRows - construction") struct TableRowsConstructionTests { @Test("Default initializer produces an empty table") func emptyByDefault() { @@ -57,7 +56,6 @@ struct TableRowsConstructionTests { } } -@Suite("TableRows - reads") struct TableRowsReadTests { @Test("value(at:column:) returns the cell at a valid coordinate") func valueAtValidCoordinate() { @@ -81,7 +79,6 @@ struct TableRowsReadTests { } } -@Suite("TableRows - id lookup") struct TableRowsIDLookupTests { @Test("index(of:) returns the storage index for an existing RowID") func indexOfExistingRowID() { @@ -195,7 +192,6 @@ struct TableRowsIDLookupTests { } } -@Suite("TableRows - edit") struct TableRowsEditTests { private static func makeTable() -> TableRows { TableRows.from( @@ -273,7 +269,6 @@ struct TableRowsEditTests { } } -@Suite("TableRows - insert") struct TableRowsInsertTests { @Test("appendInsertedRow on an empty table returns rowsInserted at index 0") func appendInsertedRowOnEmpty() { @@ -422,7 +417,6 @@ struct TableRowsInsertTests { } } -@Suite("TableRows - appendPage") struct TableRowsAppendPageTests { @Test("appendPage on empty table returns rowsInserted with the appended range") func appendPageOnEmpty() { @@ -462,7 +456,6 @@ struct TableRowsAppendPageTests { } } -@Suite("TableRows - remove") struct TableRowsRemoveTests { private static func makeTable() -> TableRows { TableRows.from( @@ -522,7 +515,6 @@ struct TableRowsRemoveTests { } } -@Suite("TableRows - replace") struct TableRowsReplaceTests { @Test("replace returns fullReplace and rebuilds rows with existing IDs") func replaceReturnsFullReplace() { @@ -555,7 +547,6 @@ struct TableRowsReplaceTests { } } -@Suite("TableRows - metadata") struct TableRowsMetadataTests { private static func makeTable() -> TableRows { TableRows.from( @@ -621,7 +612,6 @@ struct TableRowsMetadataTests { } } -@Suite("TableRows - metadata preservation regression") struct TableRowsMetadataPreservationTests { private static func makeTable() -> TableRows { TableRows.from( @@ -672,7 +662,6 @@ struct TableRowsMetadataPreservationTests { } } -@Suite("TableRows - foreignKeysFetched") struct TableRowsForeignKeysFetchedTests { @Test("Defaults to false on init and factory") func defaultsToFalse() { @@ -715,7 +704,6 @@ struct TableRowsForeignKeysFetchedTests { } } -@Suite("TableRows - server-assigned columns") struct TableRowsServerAssignedValueTests { private func table( columnDefaults: [String: String?] = [:], @@ -757,7 +745,6 @@ struct TableRowsServerAssignedValueTests { } } -@Suite("TableRows - non-writable columns") struct TableRowsGeneratedColumnsTests { /// `DataChangeManager.configureForTable` clears its own set on every execution, and only a /// schema fetch refills it. A rerun answered from cache runs no schema fetch, so the rows have diff --git a/TableProTests/Models/Query/TableTabDuplicationTests.swift b/TableProTests/Models/Query/TableTabDuplicationTests.swift index fd1513d4cd..459469a76f 100644 --- a/TableProTests/Models/Query/TableTabDuplicationTests.swift +++ b/TableProTests/Models/Query/TableTabDuplicationTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Table tab duplication") @MainActor struct TableTabDuplicationTests { /// The default. Clicking a table that is already open switches to it rather than piling up diff --git a/TableProTests/Models/Query/TableTabIdentityTests.swift b/TableProTests/Models/Query/TableTabIdentityTests.swift index abc650fffe..c74a5857ee 100644 --- a/TableProTests/Models/Query/TableTabIdentityTests.swift +++ b/TableProTests/Models/Query/TableTabIdentityTests.swift @@ -9,7 +9,6 @@ import Testing /// Closing tabs after a drop compared bare table names, so dropping `analytics.users` also closed /// the tab on `public.users` and threw away its row buffer with nothing to undo it. -@Suite("Table tab identity") struct TableTabIdentityTests { private func ref(_ name: String, database: String?, schema: String?) -> DatabaseTreeTableRef { DatabaseTreeTableRef( diff --git a/TableProTests/Models/QueryHistoryEntryTests.swift b/TableProTests/Models/QueryHistoryEntryTests.swift index 4680dea971..a1694e6a79 100644 --- a/TableProTests/Models/QueryHistoryEntryTests.swift +++ b/TableProTests/Models/QueryHistoryEntryTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("QueryHistoryEntry") struct QueryHistoryEntryTests { private func makeEntry( query: String, diff --git a/TableProTests/Models/QueryHistoryGroupingTests.swift b/TableProTests/Models/QueryHistoryGroupingTests.swift index 461ee0f41c..a9060ebee3 100644 --- a/TableProTests/Models/QueryHistoryGroupingTests.swift +++ b/TableProTests/Models/QueryHistoryGroupingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryHistoryGrouping") struct QueryHistoryGroupingTests { private var calendar: Calendar { var calendar = Calendar(identifier: .gregorian) diff --git a/TableProTests/Models/QueryHistorySourceTests.swift b/TableProTests/Models/QueryHistorySourceTests.swift index 09a57eb398..766603366c 100644 --- a/TableProTests/Models/QueryHistorySourceTests.swift +++ b/TableProTests/Models/QueryHistorySourceTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QueryHistorySource") struct QueryHistorySourceTests { @Test("raw values are stable, because they are written to disk") func rawValuesAreStable() { @@ -40,7 +39,6 @@ struct QueryHistorySourceTests { } } -@Suite("QueryHistoryStatementType") struct QueryHistoryStatementTypeTests { @Test("reads classify as select") func readsClassifyAsSelect() { @@ -77,7 +75,6 @@ struct QueryHistoryStatementTypeTests { } } -@Suite("QueryHistoryFilter") struct QueryHistoryFilterTests { @Test("an empty source set matches nothing") func emptySourcesMatchNothing() { @@ -102,7 +99,6 @@ struct QueryHistoryFilterTests { } } -@Suite("HistoryDateRange") struct HistoryDateRangeTests { @Test("all time has no lower bound") func allTimeHasNoSince() { diff --git a/TableProTests/Models/QueryTabReorderTests.swift b/TableProTests/Models/QueryTabReorderTests.swift index c7945c077b..6715ea3143 100644 --- a/TableProTests/Models/QueryTabReorderTests.swift +++ b/TableProTests/Models/QueryTabReorderTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing @MainActor -@Suite("Query tab reordering") struct QueryTabReorderTests { private func makeManager(_ count: Int) -> QueryTabManager { let manager = QueryTabManager() diff --git a/TableProTests/Models/QueryTimingTests.swift b/TableProTests/Models/QueryTimingTests.swift index 47989eebff..0f69ff4433 100644 --- a/TableProTests/Models/QueryTimingTests.swift +++ b/TableProTests/Models/QueryTimingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginQueryTiming") struct QueryTimingTests { @Test("A driver that measured nothing reports the elapsed time as the database time") func elapsedIsTheFloor() { @@ -68,7 +67,6 @@ struct QueryTimingTests { } } -@Suite("QueryTimingBreakdown") struct QueryTimingBreakdownTests { @Test("Only the parts the driver measured become rows") func rowsFollowWhatWasMeasured() { diff --git a/TableProTests/Models/RedisKeyTreeNodeTests.swift b/TableProTests/Models/RedisKeyTreeNodeTests.swift index 4539393168..7a8c5bc3d7 100644 --- a/TableProTests/Models/RedisKeyTreeNodeTests.swift +++ b/TableProTests/Models/RedisKeyTreeNodeTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("RedisKeyTreeViewModel buildTree") @MainActor struct RedisKeyTreeBuildTests { @Test("Empty keys produces empty tree") @@ -240,7 +239,6 @@ struct RedisKeyTreeBuildTests { // MARK: - RedisKeyNode Model Tests -@Suite("RedisKeyNode") struct RedisKeyNodeTests { @Test("Namespace id starts with ns:") func namespaceId() { @@ -281,7 +279,6 @@ struct RedisKeyNodeTests { // MARK: - DisplayNodes Tests -@Suite("RedisKeyTreeContent displayNodes") struct RedisKeyTreeDisplayTests { @Test("displayNodes returns the whole tree when search is empty") func emptySearch() { @@ -337,7 +334,6 @@ struct RedisKeyTreeDisplayTests { // MARK: - Rows -@Suite("RedisKeyTreeRows") struct RedisKeyTreeRowsTests { private let content = RedisKeyTreeContent( database: "0", diff --git a/TableProTests/Models/RestoredHiddenColumnsTests.swift b/TableProTests/Models/RestoredHiddenColumnsTests.swift index 53d62672fe..6826f58121 100644 --- a/TableProTests/Models/RestoredHiddenColumnsTests.swift +++ b/TableProTests/Models/RestoredHiddenColumnsTests.swift @@ -28,7 +28,6 @@ private final class StubColumnLayoutPersister: ColumnLayoutPersisting { } } -@Suite("Restored hidden columns") @MainActor struct RestoredHiddenColumnsTests { private let connectionId = UUID() diff --git a/TableProTests/Models/ResultStatusModelTests.swift b/TableProTests/Models/ResultStatusModelTests.swift index cf3a45a9c5..5f486666c1 100644 --- a/TableProTests/Models/ResultStatusModelTests.swift +++ b/TableProTests/Models/ResultStatusModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("ResultStatusModel") struct ResultStatusModelTests { private func makeSnapshot( tabType: TabType? = .table, @@ -429,7 +428,6 @@ struct ResultStatusModelTests { } } -@Suite("ResultsModeAvailability") struct ResultsModeAvailabilityTests { @Test("A table tab offers every mode") func tableTabOffersAllModes() { diff --git a/TableProTests/Models/ResultStatusPresentationTests.swift b/TableProTests/Models/ResultStatusPresentationTests.swift index 22f9b36ad0..f94955df69 100644 --- a/TableProTests/Models/ResultStatusPresentationTests.swift +++ b/TableProTests/Models/ResultStatusPresentationTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("ResultStatusPresentation") @MainActor struct ResultStatusPresentationTests { private func presentation(_ tier: StatusBarTier) -> ResultStatusPresentation { diff --git a/TableProTests/Models/RoutineInfoTests.swift b/TableProTests/Models/RoutineInfoTests.swift index 277cd33add..efe85a13fe 100644 --- a/TableProTests/Models/RoutineInfoTests.swift +++ b/TableProTests/Models/RoutineInfoTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("RoutineInfo Identity") struct RoutineInfoTests { @Test("Overloaded functions with different argument signatures get distinct ids") func overloadsAreDistinct() { @@ -90,7 +89,6 @@ struct RoutineInfoTests { } } -@Suite("TriggerInfo Identity") struct TriggerInfoTests { /// A trigger name is unique per table on PostgreSQL and Oracle, so a database-wide list keyed /// on the name alone loses one of any two tables that agree on it. @@ -140,7 +138,6 @@ struct TriggerInfoTests { } } -@Suite("RoutineDisplayLabel") struct RoutineDisplayLabelTests { @Test("A unique name shows without its signature") func uniqueNameIsBare() { diff --git a/TableProTests/Models/SQLFileDeduplicationTests.swift b/TableProTests/Models/SQLFileDeduplicationTests.swift index 1c318828a9..b1f1201eb6 100644 --- a/TableProTests/Models/SQLFileDeduplicationTests.swift +++ b/TableProTests/Models/SQLFileDeduplicationTests.swift @@ -15,7 +15,6 @@ import Testing // MARK: - QueryTab sourceFileURL Property Tests -@Suite("QueryTab sourceFileURL") struct QueryTabSourceFileURLTests { @Test("QueryTab stores sourceFileURL when set") func storesSourceFileURL() { @@ -36,7 +35,6 @@ struct QueryTabSourceFileURLTests { // MARK: - QueryTabManager Deduplication Tests -@Suite("QueryTabManager SQL file deduplication") struct QueryTabManagerDeduplicationTests { @Test("addTab with sourceFileURL creates new tab when no duplicate exists") @MainActor @@ -162,7 +160,6 @@ struct QueryTabManagerDeduplicationTests { // MARK: - EditorTabPayload sourceFileURL Tests -@Suite("EditorTabPayload sourceFileURL") struct EditorTabPayloadSourceFileURLTests { @Test("EditorTabPayload carries sourceFileURL") func carriesSourceFileURL() { @@ -192,7 +189,6 @@ struct EditorTabPayloadSourceFileURLTests { // MARK: - SessionStateFactory sourceFileURL Propagation Tests -@Suite("SessionStateFactory sourceFileURL propagation") struct SessionStateFactorySourceFileURLTests { @Test("SessionStateFactory propagates sourceFileURL to tab") @MainActor @@ -215,7 +211,6 @@ struct SessionStateFactorySourceFileURLTests { // MARK: - PersistedTab sourceFileURL Round-Trip Tests -@Suite("PersistedTab sourceFileURL persistence") struct PersistedTabSourceFileURLTests { @Test("PersistedTab preserves sourceFileURL through encode/decode") func roundTripsSourceFileURL() throws { @@ -254,7 +249,6 @@ struct PersistedTabSourceFileURLTests { // MARK: - WindowLifecycleMonitor Source File Tracking Tests -@Suite("WindowLifecycleMonitor source file tracking") @MainActor struct WindowLifecycleMonitorSourceFileTests { @Test("window(forSourceFile:) returns nil for unregistered URL") diff --git a/TableProTests/Models/SSHProfileAppliedTests.swift b/TableProTests/Models/SSHProfileAppliedTests.swift index 803ff0340f..9cb8b303c9 100644 --- a/TableProTests/Models/SSHProfileAppliedTests.swift +++ b/TableProTests/Models/SSHProfileAppliedTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SSH profile applied to a linked connection") @MainActor struct SSHProfileAppliedTests { private func makeProfile( diff --git a/TableProTests/Models/SafeModeFloorTests.swift b/TableProTests/Models/SafeModeFloorTests.swift index f948506e28..be0ca9c8b7 100644 --- a/TableProTests/Models/SafeModeFloorTests.swift +++ b/TableProTests/Models/SafeModeFloorTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Safe Mode floor") @MainActor struct SafeModeFloorTests { private func remoteFileConnection(preferred: SafeModeLevel = .silent) -> DatabaseConnection { diff --git a/TableProTests/Models/SafeModeLevelTests.swift b/TableProTests/Models/SafeModeLevelTests.swift index c425c06a2e..6cc8e4389e 100644 --- a/TableProTests/Models/SafeModeLevelTests.swift +++ b/TableProTests/Models/SafeModeLevelTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("SafeModeLevel") struct SafeModeLevelTests { // MARK: - Raw Values diff --git a/TableProTests/Models/Schema/CatalogSpellingTests.swift b/TableProTests/Models/Schema/CatalogSpellingTests.swift index be0a4b92d2..e1ca039bda 100644 --- a/TableProTests/Models/Schema/CatalogSpellingTests.swift +++ b/TableProTests/Models/Schema/CatalogSpellingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Catalog spelling") struct CatalogSpellingTests { private let type = CatalogSpelling(value: "geometry", spelling: "public.geometry(Point,4326)") diff --git a/TableProTests/Models/Schema/ClickHousePartStatementsTests.swift b/TableProTests/Models/Schema/ClickHousePartStatementsTests.swift index 809aa5053f..cc67c4e094 100644 --- a/TableProTests/Models/Schema/ClickHousePartStatementsTests.swift +++ b/TableProTests/Models/Schema/ClickHousePartStatementsTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ClickHouse part statements") struct ClickHousePartStatementsTests { private let quote: (String) -> String = { "`\($0.replacingOccurrences(of: "`", with: "``"))`" } private let escape: (String) -> String = { $0.replacingOccurrences(of: "'", with: "\\'") } diff --git a/TableProTests/Models/Schema/ColumnClassificationHintTests.swift b/TableProTests/Models/Schema/ColumnClassificationHintTests.swift index 7ff618db92..de0675e221 100644 --- a/TableProTests/Models/Schema/ColumnClassificationHintTests.swift +++ b/TableProTests/Models/Schema/ColumnClassificationHintTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Column classification hint") struct ColumnClassificationHintTests { private func columnInfo( _ name: String, @@ -115,7 +114,6 @@ struct ColumnClassificationHintTests { } } -@Suite("Classifier inputs") struct ClassifierInputScanTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Models/Schema/ColumnDefaultRoundTripTests.swift b/TableProTests/Models/Schema/ColumnDefaultRoundTripTests.swift index 40b78da9c2..cf16fb2998 100644 --- a/TableProTests/Models/Schema/ColumnDefaultRoundTripTests.swift +++ b/TableProTests/Models/Schema/ColumnDefaultRoundTripTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing -@Suite("Column default round trip") struct ColumnDefaultRoundTripTests { private func menuSQL(_ type: DatabaseType) -> [String] { ColumnDefaultVocabulary.options(for: type).compactMap(\.sql) @@ -83,7 +82,6 @@ struct ColumnDefaultRoundTripTests { } } -@Suite("SQL string literal") struct SQLStringLiteralTests { @Test( "A single-quoted literal reads back as the text it stands for", diff --git a/TableProTests/Models/Schema/ColumnDefaultVocabularyTests.swift b/TableProTests/Models/Schema/ColumnDefaultVocabularyTests.swift index 8451e2a1f5..ccc1787a90 100644 --- a/TableProTests/Models/Schema/ColumnDefaultVocabularyTests.swift +++ b/TableProTests/Models/Schema/ColumnDefaultVocabularyTests.swift @@ -6,7 +6,6 @@ @testable import TablePro import Testing -@Suite("Column default vocabulary") struct ColumnDefaultVocabularyTests { private func sqlValues(_ type: DatabaseType) -> [String] { ColumnDefaultVocabulary.options(for: type).compactMap(\.sql) diff --git a/TableProTests/Models/Schema/ColumnDefinitionCollationSpellingTests.swift b/TableProTests/Models/Schema/ColumnDefinitionCollationSpellingTests.swift index 0c50d6c3f5..c7c59c76f8 100644 --- a/TableProTests/Models/Schema/ColumnDefinitionCollationSpellingTests.swift +++ b/TableProTests/Models/Schema/ColumnDefinitionCollationSpellingTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("EditableColumnDefinition collation spelling") struct ColumnDefinitionCollationSpellingTests { private func column( collation: String? = "C", diff --git a/TableProTests/Models/Schema/ColumnDefinitionTests.swift b/TableProTests/Models/Schema/ColumnDefinitionTests.swift index 5e8cc71687..6223608267 100644 --- a/TableProTests/Models/Schema/ColumnDefinitionTests.swift +++ b/TableProTests/Models/Schema/ColumnDefinitionTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Editable Column Definition") struct ColumnDefinitionTests { // MARK: - placeholder Tests diff --git a/TableProTests/Models/Schema/ColumnReorderPlannerTests.swift b/TableProTests/Models/Schema/ColumnReorderPlannerTests.swift index fc15186c16..74e13c6b3c 100644 --- a/TableProTests/Models/Schema/ColumnReorderPlannerTests.swift +++ b/TableProTests/Models/Schema/ColumnReorderPlannerTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Column Reorder Planner") struct ColumnReorderPlannerTests { private let current = ["a", "b", "c", "d"] diff --git a/TableProTests/Models/Schema/ColumnReorderPolicyTests.swift b/TableProTests/Models/Schema/ColumnReorderPolicyTests.swift index 13e72eee04..9719a5d38d 100644 --- a/TableProTests/Models/Schema/ColumnReorderPolicyTests.swift +++ b/TableProTests/Models/Schema/ColumnReorderPolicyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Column Reorder Policy") struct ColumnReorderPolicyTests { private func resolve( support: ColumnReorderSupport = .alter, @@ -99,7 +98,6 @@ struct ColumnReorderPolicyTests { /// The commands go through the same `desiredOrder` a drop does, so they are checked against it /// rather than against the index they happen to produce. -@Suite("Column Move") @MainActor struct ColumnMoveTests { private let columns = ["a", "b", "c", "d"] diff --git a/TableProTests/Models/Schema/CreateTableDraftBuilderIndexExpressionTests.swift b/TableProTests/Models/Schema/CreateTableDraftBuilderIndexExpressionTests.swift index 834bbb59a5..4ee723b7b0 100644 --- a/TableProTests/Models/Schema/CreateTableDraftBuilderIndexExpressionTests.swift +++ b/TableProTests/Models/Schema/CreateTableDraftBuilderIndexExpressionTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Create Table draft builder expression indexes") struct CreateTableDraftBuilderIndexExpressionTests { private func column(_ name: String) -> EditableColumnDefinition { EditableColumnDefinition( diff --git a/TableProTests/Models/Schema/CreateTableDraftBuilderTests.swift b/TableProTests/Models/Schema/CreateTableDraftBuilderTests.swift index e271ffe69e..f2847a200f 100644 --- a/TableProTests/Models/Schema/CreateTableDraftBuilderTests.swift +++ b/TableProTests/Models/Schema/CreateTableDraftBuilderTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Create Table draft builder") struct CreateTableDraftBuilderTests { private func column( _ name: String, diff --git a/TableProTests/Models/Schema/CreateTableFormStateTests.swift b/TableProTests/Models/Schema/CreateTableFormStateTests.swift index 05ba8eab7a..dc691bfe1d 100644 --- a/TableProTests/Models/Schema/CreateTableFormStateTests.swift +++ b/TableProTests/Models/Schema/CreateTableFormStateTests.swift @@ -69,7 +69,6 @@ private enum FormFixture { } } -@Suite("Create Table form state") struct CreateTableFormStateTests { private func index(_ entryId: UUID) -> CreateTableFormState.Location { .entry(sectionId: "indexes", entryId: entryId) @@ -409,7 +408,6 @@ struct CreateTableFormStateTests { } @MainActor -@Suite("Create Table draft form") struct CreateTableDraftFormTests { @Test("A draft resolves its form once and keeps it") func resolvesFormOnce() { diff --git a/TableProTests/Models/Schema/ForeignKeyDefinitionGroupingTests.swift b/TableProTests/Models/Schema/ForeignKeyDefinitionGroupingTests.swift index afe03e8967..f59f74df62 100644 --- a/TableProTests/Models/Schema/ForeignKeyDefinitionGroupingTests.swift +++ b/TableProTests/Models/Schema/ForeignKeyDefinitionGroupingTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Editable Foreign Key Definition grouping") struct ForeignKeyDefinitionGroupingTests { private static let rows = [ ForeignKeyInfo( diff --git a/TableProTests/Models/Schema/ForeignKeyDefinitionTests.swift b/TableProTests/Models/Schema/ForeignKeyDefinitionTests.swift index feea4cab08..4799f115d0 100644 --- a/TableProTests/Models/Schema/ForeignKeyDefinitionTests.swift +++ b/TableProTests/Models/Schema/ForeignKeyDefinitionTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Editable Foreign Key Definition") struct ForeignKeyDefinitionTests { // MARK: - placeholder Tests diff --git a/TableProTests/Models/Schema/ForeignKeyDialectTests.swift b/TableProTests/Models/Schema/ForeignKeyDialectTests.swift index ea828a5ea9..3f10ad021e 100644 --- a/TableProTests/Models/Schema/ForeignKeyDialectTests.swift +++ b/TableProTests/Models/Schema/ForeignKeyDialectTests.swift @@ -11,7 +11,6 @@ import Testing /// Every expectation here was measured against the engine, or read off its grammar. The grid used /// to offer all five actions everywhere, so a DuckDB user picking CASCADE reached /// `Parser Error: FOREIGN KEY constraints cannot use CASCADE, SET NULL or SET DEFAULT`. -@Suite("Foreign key dialect") struct ForeignKeyDialectTests { @Test("DuckDB takes only NO ACTION and RESTRICT, on delete and on update") func duckdb() { diff --git a/TableProTests/Models/Schema/ForeignKeyEditPolicyTests.swift b/TableProTests/Models/Schema/ForeignKeyEditPolicyTests.swift index e24e2cd95f..e2afefe3ca 100644 --- a/TableProTests/Models/Schema/ForeignKeyEditPolicyTests.swift +++ b/TableProTests/Models/Schema/ForeignKeyEditPolicyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Foreign Key Edit Policy") struct ForeignKeyEditPolicyTests { private func resolve( _ support: ForeignKeyEditSupport, diff --git a/TableProTests/Models/Schema/ForeignKeyLookupColumnTests.swift b/TableProTests/Models/Schema/ForeignKeyLookupColumnTests.swift index 41e88b1968..d9ecb03ffe 100644 --- a/TableProTests/Models/Schema/ForeignKeyLookupColumnTests.swift +++ b/TableProTests/Models/Schema/ForeignKeyLookupColumnTests.swift @@ -12,7 +12,6 @@ import Testing /// its own and which ones carry the search. It answers a closed list of character type names, /// because `ColumnTypeClassifier` files everything it does not recognise under `.text` and a `LIKE` /// against a `uuid`, an enum or an array is an error on PostgreSQL rather than an empty result. -@Suite("ForeignKeyLookupColumn") struct ForeignKeyLookupColumnTests { private func column(_ rawType: String?) -> ForeignKeyLookupColumn { ForeignKeyLookupColumn(name: "c", type: .text(rawType: rawType)) diff --git a/TableProTests/Models/Schema/IndexDefinitionCatalogSpellingTests.swift b/TableProTests/Models/Schema/IndexDefinitionCatalogSpellingTests.swift index 3a0caff547..d053b4db3e 100644 --- a/TableProTests/Models/Schema/IndexDefinitionCatalogSpellingTests.swift +++ b/TableProTests/Models/Schema/IndexDefinitionCatalogSpellingTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Editable index catalog spellings") struct IndexDefinitionCatalogSpellingTests { private static let keys = "USING btree (tenant_id, lower(email)) INCLUDE (name)" private static let predicate = "(m = 'a'::src.mood)" diff --git a/TableProTests/Models/Schema/IndexDefinitionPasteTests.swift b/TableProTests/Models/Schema/IndexDefinitionPasteTests.swift index e6160a2010..3a8049d522 100644 --- a/TableProTests/Models/Schema/IndexDefinitionPasteTests.swift +++ b/TableProTests/Models/Schema/IndexDefinitionPasteTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Editable index paste") @MainActor struct IndexDefinitionPasteTests { private static func copiedFromPostgreSQL() throws -> EditableIndexDefinition { diff --git a/TableProTests/Models/Schema/IndexDefinitionTests.swift b/TableProTests/Models/Schema/IndexDefinitionTests.swift index 41a6092242..19f18e4e86 100644 --- a/TableProTests/Models/Schema/IndexDefinitionTests.swift +++ b/TableProTests/Models/Schema/IndexDefinitionTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Editable Index Definition") struct IndexDefinitionTests { // MARK: - placeholder Tests diff --git a/TableProTests/Models/Schema/IndexKeyListTests.swift b/TableProTests/Models/Schema/IndexKeyListTests.swift index 62c5d5d37b..6a381aad7f 100644 --- a/TableProTests/Models/Schema/IndexKeyListTests.swift +++ b/TableProTests/Models/Schema/IndexKeyListTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Index key list") struct IndexKeyListTests { private static let columns = ["id", "tenant_id", "email", "a", "b", "v", "Weird, Name", "owner's_id", "lower(v)"] diff --git a/TableProTests/Models/Schema/IndexTypeTests.swift b/TableProTests/Models/Schema/IndexTypeTests.swift index c706055a40..e93595f39d 100644 --- a/TableProTests/Models/Schema/IndexTypeTests.swift +++ b/TableProTests/Models/Schema/IndexTypeTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Index type") struct IndexTypeTests { private typealias IndexType = EditableIndexDefinition.IndexType @@ -53,7 +52,6 @@ struct IndexTypeTests { } } -@Suite("Index type paste") struct IndexTypePasteTests { private static func index(_ type: String) -> EditableIndexDefinition { EditableIndexDefinition.from(IndexInfo(name: "ix", columns: ["a"], isUnique: false, isPrimary: false, type: type)) diff --git a/TableProTests/Models/Schema/SQLiteColumnDeclarationTests.swift b/TableProTests/Models/Schema/SQLiteColumnDeclarationTests.swift index bd3256d0b8..15c586ba4e 100644 --- a/TableProTests/Models/Schema/SQLiteColumnDeclarationTests.swift +++ b/TableProTests/Models/Schema/SQLiteColumnDeclarationTests.swift @@ -12,7 +12,6 @@ import Testing /// /// Every refusal and every boundary here was measured against SQLite 3.54, and several of them /// refute what the published railroad diagrams say. -@Suite("SQLite Column Declaration") struct SQLiteColumnDeclarationTests { private func parse(_ text: String) throws -> SQLiteColumnDeclaration { try #require(SQLiteColumnDeclaration.parse(text)) diff --git a/TableProTests/Models/Schema/SQLiteForeignKeyClauseTests.swift b/TableProTests/Models/Schema/SQLiteForeignKeyClauseTests.swift index ab15747da1..c2672a18b6 100644 --- a/TableProTests/Models/Schema/SQLiteForeignKeyClauseTests.swift +++ b/TableProTests/Models/Schema/SQLiteForeignKeyClauseTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLite Foreign Key Clause") struct SQLiteForeignKeyClauseTests { private func clauses(_ sql: String) throws -> [SQLiteForeignKeyClause] { let parsed = try #require(SQLiteTableDDL.parse(createTableSQL: sql)) diff --git a/TableProTests/Models/Schema/SQLiteForeignKeyGroupingTests.swift b/TableProTests/Models/Schema/SQLiteForeignKeyGroupingTests.swift index c2ceaf2749..efd66358e8 100644 --- a/TableProTests/Models/Schema/SQLiteForeignKeyGroupingTests.swift +++ b/TableProTests/Models/Schema/SQLiteForeignKeyGroupingTests.swift @@ -12,7 +12,6 @@ import Testing /// `CONSTRAINT fk_orders_customer …` used to read back as the positional `fk_orders_0` and the name /// the user typed was lost on the next read. The name comes from the stored `CREATE TABLE` text and /// the resolved columns come from the pragma, matched on the relationship each describes. -@Suite("SQLite Foreign Key Grouping") struct SQLiteForeignKeyGroupingTests { /// A `PRAGMA foreign_key_list` row: id, seq, table, from, to, on_update, on_delete, match. private func row( diff --git a/TableProTests/Models/Schema/SQLiteIndexCatalogTests.swift b/TableProTests/Models/Schema/SQLiteIndexCatalogTests.swift index 5ad9e8baae..6e24a97110 100644 --- a/TableProTests/Models/Schema/SQLiteIndexCatalogTests.swift +++ b/TableProTests/Models/Schema/SQLiteIndexCatalogTests.swift @@ -50,7 +50,6 @@ private struct SQLiteTestError: Error { let message: String } -@Suite("SQLite index catalog") @MainActor struct SQLiteIndexCatalogTests { private static let table = """ diff --git a/TableProTests/Models/Schema/SQLiteTableDDLTests.swift b/TableProTests/Models/Schema/SQLiteTableDDLTests.swift index 3e2ed54f8d..c35e761747 100644 --- a/TableProTests/Models/Schema/SQLiteTableDDLTests.swift +++ b/TableProTests/Models/Schema/SQLiteTableDDLTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLite Table DDL") struct SQLiteTableDDLTests { /// The statement SQLite stores for a table carrying every trap the splitter has to survive: a /// comma inside a string default, a comma inside a type's parentheses, a comma inside a diff --git a/TableProTests/Models/Schema/SQLiteTableRebuildPlannerTests.swift b/TableProTests/Models/Schema/SQLiteTableRebuildPlannerTests.swift index 5a70b899f3..861fbb9227 100644 --- a/TableProTests/Models/Schema/SQLiteTableRebuildPlannerTests.swift +++ b/TableProTests/Models/Schema/SQLiteTableRebuildPlannerTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLite Table Rebuild Planner") struct SQLiteTableRebuildPlannerTests { /// The statement SQLite stores for a table carrying every trap the rewrite has to survive: a /// comma inside a string default, a comma inside a type's parentheses, a comma inside a diff --git a/TableProTests/Models/Schema/SQLiteTableRespecifierTests.swift b/TableProTests/Models/Schema/SQLiteTableRespecifierTests.swift index b99e7c3418..cfa1117d03 100644 --- a/TableProTests/Models/Schema/SQLiteTableRespecifierTests.swift +++ b/TableProTests/Models/Schema/SQLiteTableRespecifierTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQLite Table Respecifier") struct SQLiteTableRespecifierTests { private let createSQL = """ CREATE TABLE x( diff --git a/TableProTests/Models/Schema/SchemaChangeTests.swift b/TableProTests/Models/Schema/SchemaChangeTests.swift index b000544e80..6e97fa17ee 100644 --- a/TableProTests/Models/Schema/SchemaChangeTests.swift +++ b/TableProTests/Models/Schema/SchemaChangeTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Schema Change") struct SchemaChangeTests { // MARK: - Helper Methods diff --git a/TableProTests/Models/Settings/EditorSettingsKeywordCaseTests.swift b/TableProTests/Models/Settings/EditorSettingsKeywordCaseTests.swift index bbf789a669..6f1c24ee21 100644 --- a/TableProTests/Models/Settings/EditorSettingsKeywordCaseTests.swift +++ b/TableProTests/Models/Settings/EditorSettingsKeywordCaseTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("EditorSettings keyword case") struct EditorSettingsKeywordCaseTests { private func decode(_ json: String) throws -> EditorSettings { try JSONDecoder().decode(EditorSettings.self, from: Data(json.utf8)) diff --git a/TableProTests/Models/SharedSidebarStateTests.swift b/TableProTests/Models/SharedSidebarStateTests.swift index 55ab1a3daa..53ffb02967 100644 --- a/TableProTests/Models/SharedSidebarStateTests.swift +++ b/TableProTests/Models/SharedSidebarStateTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SharedSidebarState") struct SharedSidebarStateTests { // MARK: - Registry diff --git a/TableProTests/Models/ShortcutUniquenessTests.swift b/TableProTests/Models/ShortcutUniquenessTests.swift index eec48f6dce..3147430765 100644 --- a/TableProTests/Models/ShortcutUniquenessTests.swift +++ b/TableProTests/Models/ShortcutUniquenessTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Keyboard shortcut uniqueness") struct ShortcutUniquenessTests { @Test("No two actions ship the same default key equivalent") func defaultsAreUnique() { diff --git a/TableProTests/Models/Sidebar/SidebarObjectKindTests.swift b/TableProTests/Models/Sidebar/SidebarObjectKindTests.swift index 28909e8af1..c258a89c01 100644 --- a/TableProTests/Models/Sidebar/SidebarObjectKindTests.swift +++ b/TableProTests/Models/Sidebar/SidebarObjectKindTests.swift @@ -7,7 +7,6 @@ import Foundation import Testing @testable import TablePro -@Suite("SidebarObjectKind visibility") struct SidebarObjectKindTests { private let everyKind: [SidebarObjectKind: Int] = [ .table: 2, .view: 1, .materializedView: 1, .foreignTable: 1, diff --git a/TableProTests/Models/SidebarObjectListPresentationTests.swift b/TableProTests/Models/SidebarObjectListPresentationTests.swift index 1fa1cfb90f..1cc63d54a8 100644 --- a/TableProTests/Models/SidebarObjectListPresentationTests.swift +++ b/TableProTests/Models/SidebarObjectListPresentationTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Sidebar object list presentation") struct SidebarObjectListPresentationTests { private func table(_ name: String) -> TableInfo { TableInfo(name: name, type: .table, rowCount: nil, schema: nil) diff --git a/TableProTests/Models/SortStateTests.swift b/TableProTests/Models/SortStateTests.swift index 9cdc8a424c..a1ea18e84a 100644 --- a/TableProTests/Models/SortStateTests.swift +++ b/TableProTests/Models/SortStateTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SortDirection") struct SortDirectionTests { @Test("Ascending equals ascending") func ascendingEquality() { @@ -51,7 +50,6 @@ struct SortDirectionTests { } -@Suite("SortColumn") struct SortColumnTests { @Test("Stores columnIndex and direction") func storesProperties() { @@ -89,7 +87,6 @@ struct SortColumnTests { } } -@Suite("SortState") struct SortStateTests { @Test("Empty init has no columns") func emptyInit() { diff --git a/TableProTests/Models/SourceFileDiskChangeTests.swift b/TableProTests/Models/SourceFileDiskChangeTests.swift index 556ee1d0ad..263db58f1a 100644 --- a/TableProTests/Models/SourceFileDiskChangeTests.swift +++ b/TableProTests/Models/SourceFileDiskChangeTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Source file disk change") struct SourceFileDiskChangeTests { private let baseline = FileStamp(modificationSeconds: 1_000_000, modificationNanoseconds: 0, size: 8, fileNumber: 42) diff --git a/TableProTests/Models/SplitViewAutosaveNameTests.swift b/TableProTests/Models/SplitViewAutosaveNameTests.swift index d07762ff6a..992d205c2c 100644 --- a/TableProTests/Models/SplitViewAutosaveNameTests.swift +++ b/TableProTests/Models/SplitViewAutosaveNameTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Split view autosave name") struct SplitViewAutosaveNameTests { /// A real user's saved widths and collapse states hang off this exact string. Versioning it /// discards all of them, so production must keep the bare name whatever the sandbox does. diff --git a/TableProTests/Models/StatusBarSnapshotTests.swift b/TableProTests/Models/StatusBarSnapshotTests.swift index d3b31eb585..243fa05541 100644 --- a/TableProTests/Models/StatusBarSnapshotTests.swift +++ b/TableProTests/Models/StatusBarSnapshotTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("StatusBarSnapshot") struct StatusBarSnapshotTests { private func makeSnapshot( tabType: TabType? = .table, diff --git a/TableProTests/Models/TabFilterStateEditingTests.swift b/TableProTests/Models/TabFilterStateEditingTests.swift index 83b903b742..ae857b4fb4 100644 --- a/TableProTests/Models/TabFilterStateEditingTests.swift +++ b/TableProTests/Models/TabFilterStateEditingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TabFilterState editing") struct TabFilterStateEditingTests { private func state(_ filters: [TableFilter], commit: FilterCommit? = nil) -> TabFilterState { var state = TabFilterState() diff --git a/TableProTests/Models/TabFilterStateTests.swift b/TableProTests/Models/TabFilterStateTests.swift index 63cd58c480..93ac4398b6 100644 --- a/TableProTests/Models/TabFilterStateTests.swift +++ b/TableProTests/Models/TabFilterStateTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("TabFilterState") struct TabFilterStateTests { @Test("appliedFilters is empty when nothing is committed") func noCommitYieldsEmpty() { diff --git a/TableProTests/Models/TabNavigationHistoryTests.swift b/TableProTests/Models/TabNavigationHistoryTests.swift index 55f4a4c5ba..033d7db4e7 100644 --- a/TableProTests/Models/TabNavigationHistoryTests.swift +++ b/TableProTests/Models/TabNavigationHistoryTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("TabNavigationHistory") struct TabNavigationHistoryTests { private func makeEntry( table: String, diff --git a/TableProTests/Models/TableFilterTests.swift b/TableProTests/Models/TableFilterTests.swift index da097553d9..8d56046485 100644 --- a/TableProTests/Models/TableFilterTests.swift +++ b/TableProTests/Models/TableFilterTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Table Filter") struct TableFilterTests { @Test("Requires value returns false for isNull") diff --git a/TableProTests/Models/TableInfoTests.swift b/TableProTests/Models/TableInfoTests.swift index d7e6b8965c..e96f6f9d8e 100644 --- a/TableProTests/Models/TableInfoTests.swift +++ b/TableProTests/Models/TableInfoTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableInfo") struct TableInfoTests { // MARK: - Identifiable diff --git a/TableProTests/Models/TableMetadataFormatTests.swift b/TableProTests/Models/TableMetadataFormatTests.swift index cdf1e1024f..732cf3bba4 100644 --- a/TableProTests/Models/TableMetadataFormatTests.swift +++ b/TableProTests/Models/TableMetadataFormatTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Table metadata formatting") struct TableMetadataFormatTests { /// The repo bans em dashes in user-facing strings, and this placeholder was one. A hyphen is /// what a size the database did not report shows now. diff --git a/TableProTests/Models/TableOperationPromptTests.swift b/TableProTests/Models/TableOperationPromptTests.swift index 126a7d8879..e668b796ff 100644 --- a/TableProTests/Models/TableOperationPromptTests.swift +++ b/TableProTests/Models/TableOperationPromptTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("TableOperationPrompt") struct TableOperationPromptTests { private func prompt( _ operationType: TableOperationType, diff --git a/TableProTests/Models/TeamRoleTests.swift b/TableProTests/Models/TeamRoleTests.swift index c72af7b9c5..9c73fe130c 100644 --- a/TableProTests/Models/TeamRoleTests.swift +++ b/TableProTests/Models/TeamRoleTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("TeamRole") struct TeamRoleTests { @Test("The roles the server writes are recognised, whatever their casing") func knownRolesDecode() { diff --git a/TableProTests/Models/TrailingPaneHeaderModelTests.swift b/TableProTests/Models/TrailingPaneHeaderModelTests.swift index 4c923e128a..785196a36e 100644 --- a/TableProTests/Models/TrailingPaneHeaderModelTests.swift +++ b/TableProTests/Models/TrailingPaneHeaderModelTests.swift @@ -13,7 +13,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Trailing pane header") @MainActor struct TrailingPaneHeaderModelTests { // MARK: - Segments and title @@ -180,7 +179,6 @@ struct TrailingPaneHeaderModelTests { /// The result column's answer to what it can draw. A connection that is down is the reason no /// session can run, so it is named as such rather than reported as an empty session list, and a /// session that exists is drawn only over a connection that is up. -@Suite("Trailing pane unavailable reason") struct TrailingPaneUnavailableReasonTests { @Test("A live connection with no session says no session is open") func liveConnectionHasNoSession() { diff --git a/TableProTests/Models/TrailingPaneSurfaceResolverTests.swift b/TableProTests/Models/TrailingPaneSurfaceResolverTests.swift index 6e7deec89f..0ef1f77307 100644 --- a/TableProTests/Models/TrailingPaneSurfaceResolverTests.swift +++ b/TableProTests/Models/TrailingPaneSurfaceResolverTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Trailing pane surface resolver") struct TrailingPaneSurfaceResolverTests { @Test( "Agent mode draws the result pane whatever the user last chose", diff --git a/TableProTests/Models/TrailingPaneSurfaceTests.swift b/TableProTests/Models/TrailingPaneSurfaceTests.swift index f862a47ff6..f431d70861 100644 --- a/TableProTests/Models/TrailingPaneSurfaceTests.swift +++ b/TableProTests/Models/TrailingPaneSurfaceTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Trailing pane surface") struct TrailingPaneSurfaceTests { @Test("The assistant is the only surface a setting takes away") func assistantIsTheOnlyOptionalSurface() { @@ -49,7 +48,6 @@ struct TrailingPaneSurfaceTests { } } -@Suite("Inspector view mode") struct InspectorViewModeTests { /// Both modes are renderings of one selection, which is what makes them one exclusive choice in /// the pane header's menu rather than two commands. The assistant used to be a third case here. diff --git a/TableProTests/Models/UI/BoundKeyMatchTests.swift b/TableProTests/Models/UI/BoundKeyMatchTests.swift index c646140602..f761304c4c 100644 --- a/TableProTests/Models/UI/BoundKeyMatchTests.swift +++ b/TableProTests/Models/UI/BoundKeyMatchTests.swift @@ -2,7 +2,6 @@ import AppKit @testable import TablePro import Testing -@Suite("BoundKey Event Matching") struct BoundKeyMatchTests { // MARK: - Helper diff --git a/TableProTests/Models/UI/ColumnIdentitySchemaTests.swift b/TableProTests/Models/UI/ColumnIdentitySchemaTests.swift index 899ff6b62f..d613dc8021 100644 --- a/TableProTests/Models/UI/ColumnIdentitySchemaTests.swift +++ b/TableProTests/Models/UI/ColumnIdentitySchemaTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("ColumnIdentitySchema") @MainActor struct ColumnIdentitySchemaTests { @Test("Identifiers are slot-based regardless of column names") diff --git a/TableProTests/Models/UI/GridSelectionOwnerTests.swift b/TableProTests/Models/UI/GridSelectionOwnerTests.swift index 33aa1a3ce8..b6a3d297f6 100644 --- a/TableProTests/Models/UI/GridSelectionOwnerTests.swift +++ b/TableProTests/Models/UI/GridSelectionOwnerTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("GridSelectionOwner") struct GridSelectionOwnerTests { @Test("A table tab showing data owns a data selection") func tableTabWithDataMode() { diff --git a/TableProTests/Models/UI/GridSelectionRestoreTests.swift b/TableProTests/Models/UI/GridSelectionRestoreTests.swift index b0219a47a2..537b22b819 100644 --- a/TableProTests/Models/UI/GridSelectionRestoreTests.swift +++ b/TableProTests/Models/UI/GridSelectionRestoreTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("GridSelectionRestore") struct GridSelectionRestoreTests { private func rect(rows: ClosedRange, columns: ClosedRange) -> GridSelection { GridSelection( diff --git a/TableProTests/Models/UI/JSONTreeParserTests.swift b/TableProTests/Models/UI/JSONTreeParserTests.swift index c978cbc3d2..4f9fc5f6e1 100644 --- a/TableProTests/Models/UI/JSONTreeParserTests.swift +++ b/TableProTests/Models/UI/JSONTreeParserTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("JSONTreeParser") struct JSONTreeParserTests { @Test("Long string nodes keep the full display value") func longStringNodesKeepFullDisplayValue() { diff --git a/TableProTests/Models/UI/JsonFieldEditingModelTests.swift b/TableProTests/Models/UI/JsonFieldEditingModelTests.swift index 129cd61efa..e1a40153ee 100644 --- a/TableProTests/Models/UI/JsonFieldEditingModelTests.swift +++ b/TableProTests/Models/UI/JsonFieldEditingModelTests.swift @@ -16,7 +16,6 @@ import Testing /// character was thrown away. What catches it is ``adoptsRestatement``: the store always answers /// with a different string than the editor holds, and adopting that answer is the bug. @MainActor -@Suite("JSON field editing model") struct JsonFieldEditingModelTests { private static func makeState(value: String, type: ColumnType) -> MultiRowEditState { let state = MultiRowEditState() diff --git a/TableProTests/Models/UI/MultiRowEditStateDetachedCommitTests.swift b/TableProTests/Models/UI/MultiRowEditStateDetachedCommitTests.swift index b2d32d5c2c..d597a1af71 100644 --- a/TableProTests/Models/UI/MultiRowEditStateDetachedCommitTests.swift +++ b/TableProTests/Models/UI/MultiRowEditStateDetachedCommitTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("A detached value window writes the rows it was opened for") @MainActor struct MultiRowEditStateDetachedCommitTests { private func makeState(rowIDs: [RowID], values: [[String?]]) -> MultiRowEditState { diff --git a/TableProTests/Models/UI/MultiRowEditStateJsonTests.swift b/TableProTests/Models/UI/MultiRowEditStateJsonTests.swift index e3abb26fd3..185f0d1143 100644 --- a/TableProTests/Models/UI/MultiRowEditStateJsonTests.swift +++ b/TableProTests/Models/UI/MultiRowEditStateJsonTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("MultiRowEditState JSON change detection") @MainActor struct MultiRowEditStateJsonTests { private func makeState(value: String, type: ColumnType, column: String = "data") -> MultiRowEditState { diff --git a/TableProTests/Models/UI/SidebarRowSizePreferenceTests.swift b/TableProTests/Models/UI/SidebarRowSizePreferenceTests.swift index 9a0e29fede..b529f71bfc 100644 --- a/TableProTests/Models/UI/SidebarRowSizePreferenceTests.swift +++ b/TableProTests/Models/UI/SidebarRowSizePreferenceTests.swift @@ -8,7 +8,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Sidebar row size") struct SidebarRowSizePreferenceTests { @Test("Match System takes whatever size the system reports") func matchSystemFollowsTheSystem() { diff --git a/TableProTests/Models/UI/WindowSidebarStateSeedingTests.swift b/TableProTests/Models/UI/WindowSidebarStateSeedingTests.swift index b3a501f2dc..5b6873482f 100644 --- a/TableProTests/Models/UI/WindowSidebarStateSeedingTests.swift +++ b/TableProTests/Models/UI/WindowSidebarStateSeedingTests.swift @@ -10,7 +10,6 @@ import Testing /// An all-empty expansion set means "collapsed everything" as much as it means "never /// opened", so the seed has to record that it ran rather than infer it from emptiness. @MainActor -@Suite("Sidebar tree expansion seeding") struct WindowSidebarStateSeedingTests { private func makeDefaults() -> UserDefaults { let suiteName = "com.TablePro.tests.sidebarSeeding.\(UUID().uuidString)" diff --git a/TableProTests/Models/UserDefinedTypeInfoTests.swift b/TableProTests/Models/UserDefinedTypeInfoTests.swift index 65b17f7c5f..b123da205c 100644 --- a/TableProTests/Models/UserDefinedTypeInfoTests.swift +++ b/TableProTests/Models/UserDefinedTypeInfoTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("UserDefinedTypeInfo") struct UserDefinedTypeInfoTests { @Test("Identity is the qualified name, so an edited enum is still the same row") func identityIgnoresLabelsAndDefinition() { diff --git a/TableProTests/Models/VisibleColumnProjectionTests.swift b/TableProTests/Models/VisibleColumnProjectionTests.swift index 6f598b982f..b3d7627205 100644 --- a/TableProTests/Models/VisibleColumnProjectionTests.swift +++ b/TableProTests/Models/VisibleColumnProjectionTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("VisibleColumnProjection") struct VisibleColumnProjectionTests { private let columns = ["id", "name", "email"] private let columnTypes: [ColumnType] = [ diff --git a/TableProTests/Models/WorkspaceAnchoringTests.swift b/TableProTests/Models/WorkspaceAnchoringTests.swift index 9bfc9e8b18..34d79b34af 100644 --- a/TableProTests/Models/WorkspaceAnchoringTests.swift +++ b/TableProTests/Models/WorkspaceAnchoringTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Workspace anchoring") @MainActor struct WorkspaceAnchoringTests { private func queryTab( diff --git a/TableProTests/Plugins/BeancountDriverMetadataTests.swift b/TableProTests/Plugins/BeancountDriverMetadataTests.swift index 8151563df2..c00019ce36 100644 --- a/TableProTests/Plugins/BeancountDriverMetadataTests.swift +++ b/TableProTests/Plugins/BeancountDriverMetadataTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Beancount driver metadata") struct BeancountDriverMetadataTests { @Test("registry exposes Beancount as a downloadable file-based driver") func registryMetadata() throws { diff --git a/TableProTests/Plugins/BeancountIncludeResolverTests.swift b/TableProTests/Plugins/BeancountIncludeResolverTests.swift index 62def759e1..69f29277a1 100644 --- a/TableProTests/Plugins/BeancountIncludeResolverTests.swift +++ b/TableProTests/Plugins/BeancountIncludeResolverTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("Beancount include resolver") struct BeancountIncludeResolverTests { @Test("collects the main ledger and every included file") func resolvesIncludes() throws { diff --git a/TableProTests/Plugins/BeancountProjectionTests.swift b/TableProTests/Plugins/BeancountProjectionTests.swift index fa19d384f4..dcdfe156c2 100644 --- a/TableProTests/Plugins/BeancountProjectionTests.swift +++ b/TableProTests/Plugins/BeancountProjectionTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Beancount SQL projection") struct BeancountProjectionTests { @Test("projects transactions and full posting semantics") func projectsTransactionsAndPostings() async throws { diff --git a/TableProTests/Plugins/BigQueryCredentialFactoryTests.swift b/TableProTests/Plugins/BigQueryCredentialFactoryTests.swift index 145aa6dd3b..d852d3951b 100644 --- a/TableProTests/Plugins/BigQueryCredentialFactoryTests.swift +++ b/TableProTests/Plugins/BigQueryCredentialFactoryTests.swift @@ -3,7 +3,6 @@ import TableProGoogleCloud import TableProPluginKit import Testing -@Suite("BigQuery credential factory") struct BigQueryCredentialFactoryTests { private static let serviceAccountJSON = """ {"type":"service_account","client_email":"reader@key-project.iam.gserviceaccount.com",\ @@ -120,7 +119,6 @@ struct BigQueryCredentialFactoryTests { } } -@Suite("BigQuery driver errors") struct BigQueryErrorTests { @Test("A sign-in failure carries SQLSTATE 28000") func signInRequiredIsInvalidAuthorization() { diff --git a/TableProTests/Plugins/BigQueryQueryBuilderTests.swift b/TableProTests/Plugins/BigQueryQueryBuilderTests.swift index 3ab26d7cae..a65da8a78a 100644 --- a/TableProTests/Plugins/BigQueryQueryBuilderTests.swift +++ b/TableProTests/Plugins/BigQueryQueryBuilderTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("BigQueryQueryBuilder - Browse Query") struct BigQueryQueryBuilderBrowseTests { @Test("Browse query returns tagged string") func browseReturnsTag() { @@ -29,7 +28,6 @@ struct BigQueryQueryBuilderBrowseTests { } } -@Suite("BigQueryQueryBuilder - Filtered Query") struct BigQueryQueryBuilderFilteredTests { @Test("Filtered query returns filter tag") func filteredReturnsTag() { @@ -62,7 +60,6 @@ struct BigQueryQueryBuilderFilteredTests { } } -@Suite("BigQueryQueryBuilder - Search Query") struct BigQueryQueryBuilderSearchTests { @Test("Search query returns search tag") func searchReturnsTag() { @@ -85,7 +82,6 @@ struct BigQueryQueryBuilderSearchTests { } } -@Suite("BigQueryQueryBuilder - Combined Query") struct BigQueryQueryBuilderCombinedTests { @Test("Combined query returns combined tag") func combinedReturnsTag() { @@ -113,7 +109,6 @@ struct BigQueryQueryBuilderCombinedTests { } } -@Suite("BigQueryQueryBuilder - isTaggedQuery") struct BigQueryQueryBuilderIsTaggedTests { @Test("Tagged queries return true") func taggedQueriesDetected() { @@ -140,7 +135,6 @@ struct BigQueryQueryBuilderIsTaggedTests { } } -@Suite("BigQueryQueryBuilder - SQL Generation") struct BigQueryQueryBuilderSQLTests { private func params( table: String = "users", @@ -313,7 +307,6 @@ struct BigQueryQueryBuilderSQLTests { } } -@Suite("BigQueryQueryBuilder - Column names in the tag") struct BigQueryQueryBuilderTagColumnTests { @Test("Browse tags carry the column names") func browseCarriesColumns() { @@ -350,7 +343,6 @@ struct BigQueryQueryBuilderTagColumnTests { } } -@Suite("BigQueryQueryBuilder - Exact Count") struct BigQueryQueryBuilderExactCountTests { @Test("A count without filters has no WHERE clause") func countWithoutFilters() { diff --git a/TableProTests/Plugins/BigQueryQueryParametersTests.swift b/TableProTests/Plugins/BigQueryQueryParametersTests.swift index 803f9a98b0..01bb801230 100644 --- a/TableProTests/Plugins/BigQueryQueryParametersTests.swift +++ b/TableProTests/Plugins/BigQueryQueryParametersTests.swift @@ -9,7 +9,6 @@ private func encodedJSON(_ value: T) throws -> String { return try #require(String(bytes: try encoder.encode(value), encoding: .utf8)) } -@Suite("BigQuery placeholder binding") struct BigQueryPlaceholderBindingTests { @Test("Question marks become numbered named parameters") func rewritesPlaceholders() throws { @@ -59,7 +58,6 @@ struct BigQueryPlaceholderBindingTests { } } -@Suite("BigQuery query parameter encoding") struct BigQueryQueryParameterEncodingTests { private func parameter( _ value: PluginCellValue, @@ -156,7 +154,6 @@ struct BigQueryQueryParameterEncodingTests { } } -@Suite("BigQuery dry run parameter discovery") struct BigQueryDryRunDiscoveryTests { private static let dryRunResponse = """ { @@ -222,7 +219,6 @@ struct BigQueryDryRunDiscoveryTests { } } -@Suite("BigQuery job polling") struct BigQueryJobPollingTests { @Test("A query timeout of zero sets no deadline and no job timeout") func zeroMeansNoLimit() { diff --git a/TableProTests/Plugins/BigQueryStatementGeneratorTests.swift b/TableProTests/Plugins/BigQueryStatementGeneratorTests.swift index 20070341cd..35b6bd8319 100644 --- a/TableProTests/Plugins/BigQueryStatementGeneratorTests.swift +++ b/TableProTests/Plugins/BigQueryStatementGeneratorTests.swift @@ -24,7 +24,6 @@ private func generate( ) } -@Suite("BigQueryStatementGenerator - INSERT") struct BigQueryStatementGeneratorInsertTests { @Test("Every value is a placeholder bound in column order") func insertBindsEveryValue() throws { @@ -99,7 +98,6 @@ struct BigQueryStatementGeneratorInsertTests { } } -@Suite("BigQueryStatementGenerator - UPDATE") struct BigQueryStatementGeneratorUpdateTests { @Test("SET values come before WHERE values in the parameter list") func basicUpdate() throws { @@ -189,7 +187,6 @@ struct BigQueryStatementGeneratorUpdateTests { } } -@Suite("BigQueryStatementGenerator - DELETE") struct BigQueryStatementGeneratorDeleteTests { @Test("Generates DELETE keyed on the original row") func basicDelete() throws { @@ -218,7 +215,6 @@ struct BigQueryStatementGeneratorDeleteTests { } } -@Suite("BigQueryStatementGenerator - Identifiers") struct BigQueryStatementGeneratorIdentifierTests { @Test("Backticks and backslashes in names are escaped") func escapesIdentifiers() throws { @@ -234,7 +230,6 @@ struct BigQueryStatementGeneratorIdentifierTests { } } -@Suite("BigQueryStatementGenerator - Row Key") struct BigQueryStatementGeneratorRowKeyTests { private func keyed( columns: [String], diff --git a/TableProTests/Plugins/BigQueryTypeMapperTests.swift b/TableProTests/Plugins/BigQueryTypeMapperTests.swift index a40c652c30..295af305b1 100644 --- a/TableProTests/Plugins/BigQueryTypeMapperTests.swift +++ b/TableProTests/Plugins/BigQueryTypeMapperTests.swift @@ -18,7 +18,6 @@ private func response(rows: [BQQueryResponse.BQRow]?, totalRows: String = "0") - BQQueryResponse(schema: nil, rows: rows, totalRows: totalRows, pageToken: nil, jobComplete: true, jobReference: nil, numDmlAffectedRows: nil) } -@Suite("BigQueryTypeMapper - Column Type Names") struct BigQueryTypeMapperColumnTypeTests { @Test("Simple types return type string as-is") func simpleTypes() { @@ -63,7 +62,6 @@ struct BigQueryTypeMapperColumnTypeTests { } } -@Suite("BigQueryTypeMapper - Column Infos") struct BigQueryTypeMapperColumnInfoTests { @Test("Fields map to PluginColumnInfo correctly") func basicMapping() { @@ -100,7 +98,6 @@ struct BigQueryTypeMapperColumnInfoTests { } } -@Suite("BigQueryTypeMapper - Row Flattening") struct BigQueryTypeMapperRowTests { @Test("String values pass through") func stringValues() { @@ -196,7 +193,6 @@ private func firstCell(_ json: String, schema: BQTableSchema) throws -> PluginCe return try #require(rows.first?.first) } -@Suite("BigQueryTypeMapper - Raw JSON Decoding") struct BigQueryTypeMapperJSONDecodingTests { @Test("REPEATED STRING unwraps each wrapped array element") func repeatedStringFromRawJSON() throws { @@ -330,7 +326,6 @@ struct BigQueryTypeMapperJSONDecodingTests { } } -@Suite("BigQueryTypeMapper - Comparability") struct BigQueryTypeMapperComparabilityTests { @Test("ARRAY, JSON and GEOGRAPHY columns are not comparable") func nonComparableScalars() { @@ -355,7 +350,6 @@ struct BigQueryTypeMapperComparabilityTests { } } -@Suite("BigQueryTypeMapper - Column Kinds") struct BigQueryTypeMapperColumnKindTests { @Test("Scalar types map to the filter literal kind") func scalarKinds() { diff --git a/TableProTests/Plugins/CSVExportBytesTests.swift b/TableProTests/Plugins/CSVExportBytesTests.swift index bc4e9fb4ab..1abd4d7e54 100644 --- a/TableProTests/Plugins/CSVExportBytesTests.swift +++ b/TableProTests/Plugins/CSVExportBytesTests.swift @@ -10,7 +10,6 @@ import Testing /// What reaches the file, asserted as bytes. Every write the exporter makes goes through one /// encoder, and a call site that missed it would still produce a readable file in the default /// UTF-8 case, so only the bytes of a non-UTF-8 export can catch one. -@Suite("CSV export bytes") struct CSVExportBytesTests { private final class StubExportDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId = "SQLite" diff --git a/TableProTests/Plugins/CSVExportEncodingTests.swift b/TableProTests/Plugins/CSVExportEncodingTests.swift index 3b120f8a6d..f47bcb2a78 100644 --- a/TableProTests/Plugins/CSVExportEncodingTests.swift +++ b/TableProTests/Plugins/CSVExportEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Plugin text encoder") struct PluginTextEncoderTests { @Test("ASCII reaches the file unchanged in every encoding") func asciiIsStable() throws { @@ -107,7 +106,6 @@ struct PluginTextEncoderTests { } } -@Suite("CSV encoding report") struct CSVEncodingReportTests { @Test("A clean export warns about nothing") func cleanExportIsSilent() { diff --git a/TableProTests/Plugins/CSVExportOptionsDecodingTests.swift b/TableProTests/Plugins/CSVExportOptionsDecodingTests.swift index 3df8b357f1..031c847423 100644 --- a/TableProTests/Plugins/CSVExportOptionsDecodingTests.swift +++ b/TableProTests/Plugins/CSVExportOptionsDecodingTests.swift @@ -11,7 +11,6 @@ import Testing /// build knew. A synthesized `Decodable` throws `keyNotFound` for the rest and never falls back to /// the property's default, and `PluginSettingsStorage.load` answers a throwing decode with nil, so /// one added option silently resets every choice the user had already made. -@Suite("CSV export options decoding") struct CSVExportOptionsDecodingTests { @Test("A payload that predates the encoding options keeps the choices it does carry") func legacyPayloadKeepsItsValues() throws { diff --git a/TableProTests/Plugins/CSVImportPluginTests.swift b/TableProTests/Plugins/CSVImportPluginTests.swift index c01a965bed..e950f38d7d 100644 --- a/TableProTests/Plugins/CSVImportPluginTests.swift +++ b/TableProTests/Plugins/CSVImportPluginTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("CSV Import Plugin") struct CSVImportPluginTests { private func data(_ text: String) -> Data { Data(text.utf8) diff --git a/TableProTests/Plugins/CheckConstraintParsingTests.swift b/TableProTests/Plugins/CheckConstraintParsingTests.swift index 3a9b7668f7..92cfee311a 100644 --- a/TableProTests/Plugins/CheckConstraintParsingTests.swift +++ b/TableProTests/Plugins/CheckConstraintParsingTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("PostgreSQL check constraint definitions") struct PostgreSQLCheckConstraintDefinitionTests { @Test("the CHECK keyword and the parentheses PostgreSQL adds are removed") func stripsKeywordAndWrapper() { @@ -51,7 +50,6 @@ struct PostgreSQLCheckConstraintDefinitionTests { } } -@Suite("SQLite check constraint parsing") struct SQLiteCheckConstraintParserTests { private let createStatement = """ CREATE TABLE t ( @@ -117,7 +115,6 @@ struct SQLiteCheckConstraintParserTests { } } -@Suite("MySQL server version floors") struct MySQLServerVersionTests { @Test("MariaDB 10.1 has generated columns but no GENERATION_EXPRESSION column") func generationExpressionFloor() { @@ -144,7 +141,6 @@ struct MySQLServerVersionTests { } } -@Suite("MSSQL check constraint definitions") struct MSSQLCheckConstraintDefinitionTests { @Test("the wrapping parentheses SQL Server adds are removed") func stripsWrapper() { diff --git a/TableProTests/Plugins/ClickHouseCapabilitiesTests.swift b/TableProTests/Plugins/ClickHouseCapabilitiesTests.swift index 5c4d75a1dc..5659721dc6 100644 --- a/TableProTests/Plugins/ClickHouseCapabilitiesTests.swift +++ b/TableProTests/Plugins/ClickHouseCapabilitiesTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("ClickHouse Capabilities") struct ClickHouseCapabilitiesTests { @Test("The write-exception setting needs ClickHouse 23.8 or later") func writeExceptionSettingGate() { diff --git a/TableProTests/Plugins/ClickHouseCredentialsTests.swift b/TableProTests/Plugins/ClickHouseCredentialsTests.swift index 1c2a53a1ee..2e7bd8822b 100644 --- a/TableProTests/Plugins/ClickHouseCredentialsTests.swift +++ b/TableProTests/Plugins/ClickHouseCredentialsTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("ClickHouse Credentials") struct ClickHouseCredentialsTests { @Test("A blank username resolves to the ClickHouse default user") func blankUsernameResolvesToDefaultUser() { diff --git a/TableProTests/Plugins/ClickHouseDatabaseMetadataTests.swift b/TableProTests/Plugins/ClickHouseDatabaseMetadataTests.swift index 08668c1658..fd5ab45f91 100644 --- a/TableProTests/Plugins/ClickHouseDatabaseMetadataTests.swift +++ b/TableProTests/Plugins/ClickHouseDatabaseMetadataTests.swift @@ -10,7 +10,6 @@ import Testing /// `system.tables` has no row for a database that holds no tables, so a database list built from it dropped every /// empty database, and the database switcher lost them the moment its metadata pass replaced the first list. The /// rows here are what ClickHouse 24.8 returned for `SHOW DATABASES` and the per-database aggregate. -@Suite("ClickHouse database metadata") struct ClickHouseDatabaseMetadataTests { private let names = ["INFORMATION_SCHEMA", "default", "empty_db", "information_schema", "populated_db", "system"] diff --git a/TableProTests/Plugins/ClickHouseGeneratedColumnClassificationTests.swift b/TableProTests/Plugins/ClickHouseGeneratedColumnClassificationTests.swift index 822505688e..c8758fd985 100644 --- a/TableProTests/Plugins/ClickHouseGeneratedColumnClassificationTests.swift +++ b/TableProTests/Plugins/ClickHouseGeneratedColumnClassificationTests.swift @@ -5,7 +5,6 @@ import Testing -@Suite("ClickHouse Generated Column Classification") struct ClickHouseGeneratedColumnClassificationTests { @Test("MATERIALIZED columns are generated") func materialized() { diff --git a/TableProTests/Plugins/ClickHouseIndexEditTests.swift b/TableProTests/Plugins/ClickHouseIndexEditTests.swift index afe5b94e99..86bfb16135 100644 --- a/TableProTests/Plugins/ClickHouseIndexEditTests.swift +++ b/TableProTests/Plugins/ClickHouseIndexEditTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouse index edits") struct ClickHouseIndexEditTests { private var driver: ClickHousePluginDriver { ClickHousePluginDriver(config: DriverConnectionConfig( diff --git a/TableProTests/Plugins/ClickHouseParameterBindingTests.swift b/TableProTests/Plugins/ClickHouseParameterBindingTests.swift index 6de5594233..4e4f2173d6 100644 --- a/TableProTests/Plugins/ClickHouseParameterBindingTests.swift +++ b/TableProTests/Plugins/ClickHouseParameterBindingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouse Parameter Binding") struct ClickHouseParameterBindingTests { @Test("Text parameters become named HTTP substitutions") func textParametersBecomeNamedSubstitutions() { diff --git a/TableProTests/Plugins/ClickHouseResponseClassifierTests.swift b/TableProTests/Plugins/ClickHouseResponseClassifierTests.swift index 5e8f9e25e8..1e4154c28d 100644 --- a/TableProTests/Plugins/ClickHouseResponseClassifierTests.swift +++ b/TableProTests/Plugins/ClickHouseResponseClassifierTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouse Response Classifier") struct ClickHouseResponseClassifierTests { private let matchingFormatHeaders = ["X-ClickHouse-Format": "TabSeparatedWithNamesAndTypes"] diff --git a/TableProTests/Plugins/ClickHouseSummaryParserTests.swift b/TableProTests/Plugins/ClickHouseSummaryParserTests.swift index 6acf4a7b78..35f2a13676 100644 --- a/TableProTests/Plugins/ClickHouseSummaryParserTests.swift +++ b/TableProTests/Plugins/ClickHouseSummaryParserTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouseSummaryParser") struct ClickHouseSummaryParserTests { @Test("Reads the elapsed nanoseconds a modern server sends") func readsElapsed() { diff --git a/TableProTests/Plugins/ClickHouseTabSeparatedRowDecoderTests.swift b/TableProTests/Plugins/ClickHouseTabSeparatedRowDecoderTests.swift index e911b7024f..8d70d23607 100644 --- a/TableProTests/Plugins/ClickHouseTabSeparatedRowDecoderTests.swift +++ b/TableProTests/Plugins/ClickHouseTabSeparatedRowDecoderTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("ClickHouse Tab Separated Row Decoder") struct ClickHouseTabSeparatedRowDecoderTests { private struct Decoded { let header: ClickHouseTabSeparatedRowDecoder.Header? diff --git a/TableProTests/Plugins/ClickHouseTableListTests.swift b/TableProTests/Plugins/ClickHouseTableListTests.swift index fec49b6eb4..b1a9af1ac2 100644 --- a/TableProTests/Plugins/ClickHouseTableListTests.swift +++ b/TableProTests/Plugins/ClickHouseTableListTests.swift @@ -9,7 +9,6 @@ import Testing /// The table list read `currentDatabase()` whatever database it was asked about, so a caller holding /// one connection and asking about each database in turn, which the export dialog does, was answered /// about the session's database every time and listed its tables under every name. -@Suite("ClickHouse table list") struct ClickHouseTableListTests { @Test("A named database is what the read filters on") func namedDatabaseIsFiltered() { diff --git a/TableProTests/Plugins/ClickHouseTableOperationsTests.swift b/TableProTests/Plugins/ClickHouseTableOperationsTests.swift index e340a69150..1680c90870 100644 --- a/TableProTests/Plugins/ClickHouseTableOperationsTests.swift +++ b/TableProTests/Plugins/ClickHouseTableOperationsTests.swift @@ -5,7 +5,6 @@ import Testing -@Suite("ClickHouse Table Operations") struct ClickHouseTableOperationsTests { @Test("MergeTree engine classifies as TABLE") func mergeTreeIsTable() { diff --git a/TableProTests/Plugins/CloudPluginConnectionFieldsTests.swift b/TableProTests/Plugins/CloudPluginConnectionFieldsTests.swift index 43a60d6085..2db61ecce6 100644 --- a/TableProTests/Plugins/CloudPluginConnectionFieldsTests.swift +++ b/TableProTests/Plugins/CloudPluginConnectionFieldsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cloud plugin connection fields") struct CloudPluginConnectionFieldsTests { private func registrySnapshot(forTypeId typeId: String) throws -> PluginMetadataSnapshot { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() diff --git a/TableProTests/Plugins/CloudflareR2SQLMetadataParityTests.swift b/TableProTests/Plugins/CloudflareR2SQLMetadataParityTests.swift index 9739be1d50..d5e2d711a7 100644 --- a/TableProTests/Plugins/CloudflareR2SQLMetadataParityTests.swift +++ b/TableProTests/Plugins/CloudflareR2SQLMetadataParityTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("Cloudflare R2 SQL curated metadata parity") struct CloudflareR2SQLMetadataParityTests { private func curated() throws -> PluginMetadataSnapshot { try #require( diff --git a/TableProTests/Plugins/CockroachRelationSQLTests.swift b/TableProTests/Plugins/CockroachRelationSQLTests.swift index 0b8a6ff9be..be316d401e 100644 --- a/TableProTests/Plugins/CockroachRelationSQLTests.swift +++ b/TableProTests/Plugins/CockroachRelationSQLTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("CockroachRelationSQL") struct CockroachRelationSQLTests { @Test("SHOW CREATE TABLE names the requested schema") func showCreateTableNamesRequestedSchema() { diff --git a/TableProTests/Plugins/DamengParameterBinderTests.swift b/TableProTests/Plugins/DamengParameterBinderTests.swift index 3341ca6870..c6f3c17479 100644 --- a/TableProTests/Plugins/DamengParameterBinderTests.swift +++ b/TableProTests/Plugins/DamengParameterBinderTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Dameng parameter binder") struct DamengParameterBinderTests { @Test("binds text, null, and binary values") func bindsSupportedValues() throws { diff --git a/TableProTests/Plugins/DamengStatementClassifierTests.swift b/TableProTests/Plugins/DamengStatementClassifierTests.swift index c1f392100c..b327a63680 100644 --- a/TableProTests/Plugins/DamengStatementClassifierTests.swift +++ b/TableProTests/Plugins/DamengStatementClassifierTests.swift @@ -1,7 +1,6 @@ import Testing @testable import TablePro -@Suite("Dameng statement classifier") struct DamengStatementClassifierTests { @Test("recognizes row-producing statements after comments") func recognizesRowStatements() { diff --git a/TableProTests/Plugins/DamengSystemSchemasTests.swift b/TableProTests/Plugins/DamengSystemSchemasTests.swift index cc4db978c1..ae1709e022 100644 --- a/TableProTests/Plugins/DamengSystemSchemasTests.swift +++ b/TableProTests/Plugins/DamengSystemSchemasTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Dameng system schemas") struct DamengSystemSchemasTests { @Test("The app lists the same system schemas the plugin does") func curatedListMatchesThePlugin() { diff --git a/TableProTests/Plugins/DataFileExportFormatTests.swift b/TableProTests/Plugins/DataFileExportFormatTests.swift index 5e0d9efa4a..cb996001c5 100644 --- a/TableProTests/Plugins/DataFileExportFormatTests.swift +++ b/TableProTests/Plugins/DataFileExportFormatTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Data file export through the bundled formats") struct DataFileExportFormatTests { private static func dataSource() -> QueryResultExportDataSource { let rows = TableRows.from( diff --git a/TableProTests/Plugins/DatabendCatalogTests.swift b/TableProTests/Plugins/DatabendCatalogTests.swift index ae187e895b..671690a1c1 100644 --- a/TableProTests/Plugins/DatabendCatalogTests.swift +++ b/TableProTests/Plugins/DatabendCatalogTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Databend catalog") struct DatabendCatalogTests { @Test("Names are backtick-quoted, and a name holding a backtick switches to double quotes") func identifierQuoting() { diff --git a/TableProTests/Plugins/DatabendLiteralTests.swift b/TableProTests/Plugins/DatabendLiteralTests.swift index b3461d5633..bbf5ccc73c 100644 --- a/TableProTests/Plugins/DatabendLiteralTests.swift +++ b/TableProTests/Plugins/DatabendLiteralTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Databend literal inlining") struct DatabendLiteralTests { @Test("A string literal escapes the characters Databend interprets") func escapesInterpretedCharacters() { @@ -77,7 +76,6 @@ struct DatabendLiteralTests { } } -@Suite("Databend result shape") struct DatabendResultShapeTests { @Test("A BOOLEAN arrives as a one-character SMALLINT, which no integer type shares") func booleanWireShape() { diff --git a/TableProTests/Plugins/DocumentStoreCaseSensitivityTests.swift b/TableProTests/Plugins/DocumentStoreCaseSensitivityTests.swift index 3e56cd939d..fd57070bf0 100644 --- a/TableProTests/Plugins/DocumentStoreCaseSensitivityTests.swift +++ b/TableProTests/Plugins/DocumentStoreCaseSensitivityTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Case Sensitivity") struct MongoDBCaseSensitivityTests { private let builder = MongoDBQueryBuilder() @@ -71,7 +70,6 @@ struct MongoDBCaseSensitivityTests { } } -@Suite("Elasticsearch Case Sensitivity") struct ElasticsearchCaseSensitivityTests { private let keywordField = ["status": ElasticsearchFieldInfo(type: "keyword", hasKeywordSubfield: false)] @@ -147,7 +145,6 @@ struct ElasticsearchCaseSensitivityTests { } } -@Suite("etcd Case Sensitivity") struct EtcdCaseSensitivityTests { private let builder = EtcdQueryBuilder() @@ -181,7 +178,6 @@ struct EtcdCaseSensitivityTests { } } -@Suite("BigQuery Case Sensitivity") struct BigQueryCaseSensitivityTests { private func sql(_ op: String, _ value: String, isCaseSensitive: Bool) -> String { let query = BigQueryQueryBuilder.encodeFilteredQuery( diff --git a/TableProTests/Plugins/DuckDBConnectionFieldsTests.swift b/TableProTests/Plugins/DuckDBConnectionFieldsTests.swift index 8900ff3821..ce1ef3483f 100644 --- a/TableProTests/Plugins/DuckDBConnectionFieldsTests.swift +++ b/TableProTests/Plugins/DuckDBConnectionFieldsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DuckDB connection fields") struct DuckDBConnectionFieldsTests { private func duckdbFields() throws -> [ConnectionField] { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() diff --git a/TableProTests/Plugins/DuckDBFileKindsTests.swift b/TableProTests/Plugins/DuckDBFileKindsTests.swift index e726a3d388..a561255d9f 100644 --- a/TableProTests/Plugins/DuckDBFileKindsTests.swift +++ b/TableProTests/Plugins/DuckDBFileKindsTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing -@Suite("DuckDB file kinds") struct DuckDBFileKindsTests { @Test("The database formats lead, so the file field's placeholder names one") func databaseFormatsComeFirst() { diff --git a/TableProTests/Plugins/DuckDBIdleReleaseTests.swift b/TableProTests/Plugins/DuckDBIdleReleaseTests.swift index ba129cb0c4..8a9ba339f2 100644 --- a/TableProTests/Plugins/DuckDBIdleReleaseTests.swift +++ b/TableProTests/Plugins/DuckDBIdleReleaseTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("DuckDB idle release policy") struct DuckDBIdleReleaseTests { /// Every one of these is a value the connection form or a hand-edited file can produce, and /// each has to mean "never" rather than some interval nobody chose. A malformed setting that @@ -51,7 +50,6 @@ struct DuckDBIdleReleaseTests { } } -@Suite("DuckDB access mode") struct DuckDBAccessModeTests { /// Measured against the shipped library: `duckdb_set_config` accepts `READ_ONLY` and /// `read_only` and rejects everything else, and a rejected value leaves the database open diff --git a/TableProTests/Plugins/DuckDBIndexClausesTests.swift b/TableProTests/Plugins/DuckDBIndexClausesTests.swift index 18208e434c..b389077195 100644 --- a/TableProTests/Plugins/DuckDBIndexClausesTests.swift +++ b/TableProTests/Plugins/DuckDBIndexClausesTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DuckDB index clauses") struct DuckDBIndexClausesTests { private func keys(_ sql: String?) -> DuckDBIndexClauses.KeyParts { DuckDBIndexClauses.keyParts(ofCreateIndex: sql) diff --git a/TableProTests/Plugins/DuckDBLockConflictTests.swift b/TableProTests/Plugins/DuckDBLockConflictTests.swift index bd89b01a98..3bc62d2dce 100644 --- a/TableProTests/Plugins/DuckDBLockConflictTests.swift +++ b/TableProTests/Plugins/DuckDBLockConflictTests.swift @@ -12,7 +12,6 @@ import Foundation import Testing -@Suite("DuckDB lock conflict") struct DuckDBLockConflictTests { private static let readWriteHolder = """ IO Error: Could not set lock on file "/tmp/scratch/t.duckdb": Conflicting lock is held in \ diff --git a/TableProTests/Plugins/DuckDBPositionParserTests.swift b/TableProTests/Plugins/DuckDBPositionParserTests.swift index 03990e8231..4f0fae53d6 100644 --- a/TableProTests/Plugins/DuckDBPositionParserTests.swift +++ b/TableProTests/Plugins/DuckDBPositionParserTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("DuckDB position parser") struct DuckDBPositionParserTests { @Test("A connection that has never run USE reports no catalog and the schema setting") func freshConnectionHasNoCatalog() { diff --git a/TableProTests/Plugins/DuckDBQuackConnectTests.swift b/TableProTests/Plugins/DuckDBQuackConnectTests.swift index 80e37f3504..1e8b09f09b 100644 --- a/TableProTests/Plugins/DuckDBQuackConnectTests.swift +++ b/TableProTests/Plugins/DuckDBQuackConnectTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("DuckDB Quack connect builder") struct DuckDBQuackConnectTests { @Test("Secret statement escapes single quotes in the token") func secretEscapesQuotes() { diff --git a/TableProTests/Plugins/DuckDBSchemaQueriesTests.swift b/TableProTests/Plugins/DuckDBSchemaQueriesTests.swift index 81d4b11c14..2a08ad0cb0 100644 --- a/TableProTests/Plugins/DuckDBSchemaQueriesTests.swift +++ b/TableProTests/Plugins/DuckDBSchemaQueriesTests.swift @@ -18,7 +18,6 @@ import Foundation import Testing -@Suite("DuckDB schema queries") struct DuckDBSchemaQueriesTests { private static let catalogScopedQueries: [(name: String, sql: String)] = [ ("listSchemas", DuckDBSchemaQueries.listSchemas), diff --git a/TableProTests/Plugins/DuckDBTransactionProbeTests.swift b/TableProTests/Plugins/DuckDBTransactionProbeTests.swift index 8ba7bbff7d..1f708d2c56 100644 --- a/TableProTests/Plugins/DuckDBTransactionProbeTests.swift +++ b/TableProTests/Plugins/DuckDBTransactionProbeTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DuckDB transaction probe") struct DuckDBTransactionProbeTests { /// Measured against the shipped libduckdb v1.5.2: outside a transaction two calls answered 6 /// then 10, and inside one they both answered 12. diff --git a/TableProTests/Plugins/DuckDBTypeRenderingTests.swift b/TableProTests/Plugins/DuckDBTypeRenderingTests.swift index 416dcaba91..1848c5a925 100644 --- a/TableProTests/Plugins/DuckDBTypeRenderingTests.swift +++ b/TableProTests/Plugins/DuckDBTypeRenderingTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("DuckDB type rendering") struct DuckDBTypeRenderingTests { @Test("Timestamp flavors the value API cannot decode need a text projection") func undecodableTimestampsRequireProjection() { diff --git a/TableProTests/Plugins/DuckDBViewDefinitionTests.swift b/TableProTests/Plugins/DuckDBViewDefinitionTests.swift index 6f1a550cb6..ab68b316b8 100644 --- a/TableProTests/Plugins/DuckDBViewDefinitionTests.swift +++ b/TableProTests/Plugins/DuckDBViewDefinitionTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("DuckDB view definition") struct DuckDBViewDefinitionTests { @Test("A stored CREATE VIEW is promoted so it can be run again") func createViewBecomesReplaceable() { diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBAccessPlannerTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBAccessPlannerTests.swift index 4d42473c7f..945357138f 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBAccessPlannerTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBAccessPlannerTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("DynamoDB access planning") struct DynamoDBAccessPlannerTests { struct Scenario: Sendable, CustomTestStringConvertible { let name: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBAttributeValueTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBAttributeValueTests.swift index 635ab68536..9233ea93a9 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBAttributeValueTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBAttributeValueTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB attribute value") struct DynamoDBAttributeValueTests { struct ValueCase: Sendable, CustomTestStringConvertible { let name: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBCatalogTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBCatalogTests.swift index ba88911e83..fa358da32d 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBCatalogTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBCatalogTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB catalog") struct DynamoDBCatalogTests { private static let fetchedAt = Date(timeIntervalSince1970: 1_700_000_000) private static let local = DynamoDBCatalog.Scope(endpoint: "http://localhost:8000", region: "us-east-1", identity: "local") diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBCellCodecTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBCellCodecTests.swift index 1154254f5d..86eec3ff7c 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBCellCodecTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBCellCodecTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB cell codec") struct DynamoDBCellCodecTests { struct CellCase: Sendable, CustomTestStringConvertible { let name: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBClientTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBClientTests.swift index 6614b30140..b803012d73 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBClientTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBClientTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB client") struct DynamoDBClientTests { private static let exampleDate = Date(timeIntervalSince1970: 1_440_938_160) diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBDriverTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBDriverTests.swift index 327c2dbc2d..f45a28f631 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBDriverTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBDriverTests.swift @@ -133,7 +133,6 @@ enum DynamoDBDriverFixture { } } -@Suite("DynamoDB driver over a scripted transport") struct DynamoDBDriverTests { private typealias Fixture = DynamoDBDriverFixture diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBEndpointTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBEndpointTests.swift index 5ab9c43a39..66d7815966 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBEndpointTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBEndpointTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB endpoint resolution") struct DynamoDBEndpointTests { struct RegionCase: Sendable, CustomTestStringConvertible { let region: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBErrorTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBErrorTests.swift index 344196c567..b1c2d45dfe 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBErrorTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBErrorTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB errors") struct DynamoDBErrorTests { struct CategoryCase: Sendable, CustomTestStringConvertible { let code: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBExpressionTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBExpressionTests.swift index 1d6b9d56c8..20400cac5c 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBExpressionTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBExpressionTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("DynamoDB attribute paths") struct DynamoDBAttributePathTests { struct ParseCase: Sendable, CustomTestStringConvertible { let text: String @@ -94,7 +93,6 @@ struct DynamoDBAttributePathTests { } } -@Suite("DynamoDB expression placeholders") struct DynamoDBExpressionContextTests { static func isValidPlaceholder(_ placeholder: String, prefix: Character) -> Bool { guard placeholder.first == prefix else { return false } diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBFilterTranslatorTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBFilterTranslatorTests.swift index ea3cfd7854..d6dff0c7c8 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBFilterTranslatorTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBFilterTranslatorTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("DynamoDB filter translation") struct DynamoDBFilterTranslatorTests { struct Translation { let outcome: DynamoDBFilterTranslator.Outcome @@ -467,7 +466,6 @@ struct DynamoDBFilterTranslatorTests { } } -@Suite("DynamoDB client-side predicates") struct DynamoDBClientPredicateMatchingTests { static func predicate( _ op: String, diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBItemTableTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBItemTableTests.swift index 8e220e3dbd..3ab88fb0e2 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBItemTableTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBItemTableTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB item table") struct DynamoDBItemTableTests { struct ClassificationCase: Sendable, CustomTestStringConvertible { let value: DynamoDBAttributeValue diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBJSONTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBJSONTests.swift index 212f388742..1ea13b7f36 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBJSONTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBJSONTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB JSON") struct DynamoDBJSONTests { struct NumberCase: Sendable, CustomTestStringConvertible { let literal: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBNumberTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBNumberTests.swift index 826d64fd94..16967685cf 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBNumberTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBNumberTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB number") struct DynamoDBNumberTests { struct PartsCase: Sendable, CustomTestStringConvertible { let text: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBParameterBinderTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBParameterBinderTests.swift index a30e7b0cb8..bc24312920 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBParameterBinderTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBParameterBinderTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB parameter binder") struct DynamoDBParameterBinderTests { struct KeyCase: Sendable, CustomTestStringConvertible { let role: DynamoDBPartiQL.ParameterRole diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBPartiQLTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBPartiQLTests.swift index 2ae6cffce1..19508eee58 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBPartiQLTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBPartiQLTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB PartiQL reading") struct DynamoDBPartiQLTests { struct KindCase: Sendable, CustomTestStringConvertible { let statement: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBRetryPolicyTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBRetryPolicyTests.swift index 9277e3a955..6235010b05 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBRetryPolicyTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBRetryPolicyTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB retry policy") struct DynamoDBRetryPolicyTests { struct DelayCase: Sendable, CustomTestStringConvertible { let attempt: Int diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBSignerTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBSignerTests.swift index 7446c5a56e..ee0c973f44 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBSignerTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBSignerTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB request signing") struct DynamoDBSignerTests { private static let exampleDate = Date(timeIntervalSince1970: 1_440_938_160) private static let exampleCredentials = AWSCredentials( diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBStatementTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBStatementTests.swift index fbb66cb0ce..0d84b1f9e1 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBStatementTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBStatementTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB statement parsing") struct DynamoDBStatementTests { struct WindowCase: Sendable, CustomTestStringConvertible { let clause: String diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBTableManagementTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBTableManagementTests.swift index f4ac8c479c..6ccc626aff 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBTableManagementTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBTableManagementTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB table management statements") struct DynamoDBTableManagementTests { private typealias Field = DynamoDBTableDefinition.Field diff --git a/TableProTests/Plugins/DynamoDB/DynamoDBWriteStatementsTests.swift b/TableProTests/Plugins/DynamoDB/DynamoDBWriteStatementsTests.swift index bc57b89c01..502bb567af 100644 --- a/TableProTests/Plugins/DynamoDB/DynamoDBWriteStatementsTests.swift +++ b/TableProTests/Plugins/DynamoDB/DynamoDBWriteStatementsTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DynamoDB write statements") struct DynamoDBWriteStatementsTests { typealias CellChange = (columnIndex: Int, columnName: String, oldValue: PluginCellValue, newValue: PluginCellValue) diff --git a/TableProTests/Plugins/DynamoDBMetadataParityTests.swift b/TableProTests/Plugins/DynamoDBMetadataParityTests.swift index 6025dc2e46..98bdf53c55 100644 --- a/TableProTests/Plugins/DynamoDBMetadataParityTests.swift +++ b/TableProTests/Plugins/DynamoDBMetadataParityTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("DynamoDB curated metadata parity") struct DynamoDBMetadataParityTests { private func curated() throws -> PluginMetadataSnapshot { try #require(PluginMetadataRegistry.shared.builtInDefaults().first { $0.typeId == "DynamoDB" }?.snapshot) diff --git a/TableProTests/Plugins/ElasticsearchConnectionFieldsTests.swift b/TableProTests/Plugins/ElasticsearchConnectionFieldsTests.swift index d71a167f4f..ea736bbb6b 100644 --- a/TableProTests/Plugins/ElasticsearchConnectionFieldsTests.swift +++ b/TableProTests/Plugins/ElasticsearchConnectionFieldsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Elasticsearch connection fields") struct ElasticsearchConnectionFieldsTests { private func elasticsearchFields() throws -> [ConnectionField] { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() diff --git a/TableProTests/Plugins/ElasticsearchDriverTests.swift b/TableProTests/Plugins/ElasticsearchDriverTests.swift index b8b27a94d4..b28be95147 100644 --- a/TableProTests/Plugins/ElasticsearchDriverTests.swift +++ b/TableProTests/Plugins/ElasticsearchDriverTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Elasticsearch - Console Parser") struct ElasticsearchConsoleParserTests { @Test("Parses method, path, and JSON body") func parsesFullRequest() { @@ -40,7 +39,6 @@ struct ElasticsearchConsoleParserTests { } } -@Suite("Elasticsearch - Query Builder Encoding") struct ElasticsearchQueryBuilderEncodingTests { private let builder = ElasticsearchQueryBuilder() @@ -73,7 +71,6 @@ struct ElasticsearchQueryBuilderEncodingTests { } } -@Suite("Elasticsearch - Query DSL") struct ElasticsearchQueryDSLTests { private let textField = ["title": ElasticsearchFieldInfo(type: "text", hasKeywordSubfield: true)] private let keywordField = ["status": ElasticsearchFieldInfo(type: "keyword", hasKeywordSubfield: false)] @@ -512,7 +509,6 @@ struct ElasticsearchQueryDSLTests { } } -@Suite("Elasticsearch - Appended ORDER BY") struct ElasticsearchOrderByTests { @Test("Extracts a single appended ORDER BY from the tagged query") func singleOrderBy() { @@ -542,7 +538,6 @@ struct ElasticsearchOrderByTests { } } -@Suite("Elasticsearch - Mapping Flattener") struct ElasticsearchMappingFlattenerTests { @Test("Flattens nested objects into dotted paths and records keyword subfields") func flattenMapping() { @@ -810,7 +805,6 @@ struct ElasticsearchMappingFlattenerTests { } } -@Suite("Elasticsearch - Statement Generator") struct ElasticsearchStatementGeneratorTests { private func generator() -> ElasticsearchStatementGenerator { ElasticsearchStatementGenerator( diff --git a/TableProTests/Plugins/ElasticsearchOperationsTests.swift b/TableProTests/Plugins/ElasticsearchOperationsTests.swift index a7e92c3e80..b9b719427c 100644 --- a/TableProTests/Plugins/ElasticsearchOperationsTests.swift +++ b/TableProTests/Plugins/ElasticsearchOperationsTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Elasticsearch object operations") struct ElasticsearchOperationsTests { @Test("Deleting an index is the native REST request") func deleteIndexIsNative() { diff --git a/TableProTests/Plugins/EtcdCommandParserTests.swift b/TableProTests/Plugins/EtcdCommandParserTests.swift index dbf93bad2a..376e3cb483 100644 --- a/TableProTests/Plugins/EtcdCommandParserTests.swift +++ b/TableProTests/Plugins/EtcdCommandParserTests.swift @@ -11,7 +11,6 @@ import Testing // MARK: - KV Commands -@Suite("EtcdCommandParser - GET") struct EtcdCommandParserGetTests { @Test("Basic get parses key") func basicGet() throws { @@ -133,7 +132,6 @@ struct EtcdCommandParserGetTests { } } -@Suite("EtcdCommandParser - PUT") struct EtcdCommandParserPutTests { @Test("Basic put parses key and value") func basicPut() throws { @@ -225,7 +223,6 @@ struct EtcdCommandParserPutTests { } } -@Suite("EtcdCommandParser - DEL") struct EtcdCommandParserDelTests { @Test("Basic del parses key") func basicDel() throws { @@ -267,7 +264,6 @@ struct EtcdCommandParserDelTests { } } -@Suite("EtcdCommandParser - WATCH") struct EtcdCommandParserWatchTests { @Test("Basic watch parses key") func basicWatch() throws { @@ -359,7 +355,6 @@ struct EtcdCommandParserWatchTests { // MARK: - Lease Commands -@Suite("EtcdCommandParser - Lease") struct EtcdCommandParserLeaseTests { @Test("Lease grant parses TTL") func leaseGrant() throws { @@ -473,7 +468,6 @@ struct EtcdCommandParserLeaseTests { // MARK: - Cluster Commands -@Suite("EtcdCommandParser - Cluster") struct EtcdCommandParserClusterTests { @Test("Member list") func memberList() throws { @@ -533,7 +527,6 @@ struct EtcdCommandParserClusterTests { // MARK: - Maintenance Commands -@Suite("EtcdCommandParser - Maintenance") struct EtcdCommandParserMaintenanceTests { @Test("Compaction parses revision") func compaction() throws { @@ -567,7 +560,6 @@ struct EtcdCommandParserMaintenanceTests { // MARK: - Auth Commands -@Suite("EtcdCommandParser - Auth") struct EtcdCommandParserAuthTests { @Test("Auth enable") func authEnable() throws { @@ -604,7 +596,6 @@ struct EtcdCommandParserAuthTests { // MARK: - User Commands -@Suite("EtcdCommandParser - User") struct EtcdCommandParserUserTests { @Test("User add with name only") func userAddNameOnly() throws { @@ -714,7 +705,6 @@ struct EtcdCommandParserUserTests { // MARK: - Role Commands -@Suite("EtcdCommandParser - Role") struct EtcdCommandParserRoleTests { @Test("Role add") func roleAdd() throws { @@ -776,7 +766,6 @@ struct EtcdCommandParserRoleTests { // MARK: - Error Cases -@Suite("EtcdCommandParser - Error Cases") struct EtcdCommandParserErrorTests { @Test("Empty string throws emptySyntax") func emptyInput() { @@ -806,7 +795,6 @@ struct EtcdCommandParserErrorTests { // MARK: - Tokenizer / Edge Cases -@Suite("EtcdCommandParser - Tokenizer") struct EtcdCommandParserTokenizerTests { @Test("Extra whitespace between tokens is handled") func extraWhitespace() throws { @@ -902,7 +890,6 @@ struct EtcdCommandParserTokenizerTests { // MARK: - Lease ID Parsing -@Suite("EtcdCommandParser - Lease ID Parsing") struct EtcdCommandParserLeaseIdTests { @Test("Decimal lease ID") func decimalLeaseId() throws { diff --git a/TableProTests/Plugins/EtcdGatewayRouteTests.swift b/TableProTests/Plugins/EtcdGatewayRouteTests.swift index b2dee632c1..480c0825e3 100644 --- a/TableProTests/Plugins/EtcdGatewayRouteTests.swift +++ b/TableProTests/Plugins/EtcdGatewayRouteTests.swift @@ -13,7 +13,6 @@ private func gatewayBody(_ text: String) -> Data { Data(text.utf8) } -@Suite("EtcdGatewayRoute") struct EtcdGatewayRouteTests { @Test("v3 is tried before the legacy prefixes") func prefixOrder() { diff --git a/TableProTests/Plugins/EtcdHttpClientUtilityTests.swift b/TableProTests/Plugins/EtcdHttpClientUtilityTests.swift index 6cbaaf84d2..357528f61a 100644 --- a/TableProTests/Plugins/EtcdHttpClientUtilityTests.swift +++ b/TableProTests/Plugins/EtcdHttpClientUtilityTests.swift @@ -16,7 +16,6 @@ import Testing // MARK: - Base64 Helpers -@Suite("EtcdHttpClient Utilities - Base64") struct EtcdBase64Tests { @Test("base64Encode and base64Decode round-trip for simple string") func roundTripSimple() { @@ -81,7 +80,6 @@ struct EtcdBase64Tests { // MARK: - Prefix Range End -@Suite("EtcdHttpClient Utilities - PrefixRangeEnd") struct EtcdPrefixRangeEndTests { @Test("Normal prefix increments last byte") func normalPrefix() { diff --git a/TableProTests/Plugins/EtcdQueryBuilderTests.swift b/TableProTests/Plugins/EtcdQueryBuilderTests.swift index 4024d051d0..8f5a1d0bd3 100644 --- a/TableProTests/Plugins/EtcdQueryBuilderTests.swift +++ b/TableProTests/Plugins/EtcdQueryBuilderTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("EtcdQueryBuilder - Browse Query") struct EtcdQueryBuilderBrowseTests { private let builder = EtcdQueryBuilder() @@ -69,7 +68,6 @@ struct EtcdQueryBuilderBrowseTests { } } -@Suite("EtcdQueryBuilder - Filtered Query") struct EtcdQueryBuilderFilteredTests { private let builder = EtcdQueryBuilder() @@ -197,7 +195,6 @@ struct EtcdQueryBuilderFilteredTests { // TODO: Re-enable when buildCombinedQuery API is restored #if false -@Suite("EtcdQueryBuilder - Combined Query") struct EtcdQueryBuilderCombinedTests { private let builder = EtcdQueryBuilder() @@ -251,7 +248,6 @@ struct EtcdQueryBuilderCombinedTests { } #endif -@Suite("EtcdQueryBuilder - Count Query") struct EtcdQueryBuilderCountTests { private let builder = EtcdQueryBuilder() @@ -274,7 +270,6 @@ struct EtcdQueryBuilderCountTests { } } -@Suite("EtcdQueryBuilder - Tag Detection and Parsing") struct EtcdQueryBuilderTagTests { @Test("isTaggedQuery detects range tag") func detectsRangeTag() { diff --git a/TableProTests/Plugins/EtcdRequestRecoveryTests.swift b/TableProTests/Plugins/EtcdRequestRecoveryTests.swift index 269a24e9a8..89d10293c4 100644 --- a/TableProTests/Plugins/EtcdRequestRecoveryTests.swift +++ b/TableProTests/Plugins/EtcdRequestRecoveryTests.swift @@ -23,7 +23,6 @@ private let rejectedToken = recoveryFault(code: 16, message: "etcdserver: invali private let deniedPermission = recoveryFault(code: 7, message: "etcdserver: permission denied") private let authOff = recoveryFault(code: 9, message: "etcdserver: authentication is not enabled") -@Suite("EtcdRequestRecovery") struct EtcdRequestRecoveryTests { @Test("A rejected token is refreshed once") func rejectedTokenRefreshes() { diff --git a/TableProTests/Plugins/EtcdServerFaultTests.swift b/TableProTests/Plugins/EtcdServerFaultTests.swift index 383ffcfa50..b602ebe3e8 100644 --- a/TableProTests/Plugins/EtcdServerFaultTests.swift +++ b/TableProTests/Plugins/EtcdServerFaultTests.swift @@ -14,7 +14,6 @@ private func etcdBody(_ json: String) -> Data { Data(json.utf8) } -@Suite("EtcdServerFault - classification") struct EtcdServerFaultClassificationTests { @Test("etcd 3.6 reports a missing token as InvalidArgument, not Unauthorized") func missingTokenOnEtcd36() { @@ -105,7 +104,6 @@ struct EtcdServerFaultClassificationTests { } } -@Suite("EtcdServerFault - decoding") struct EtcdServerFaultDecodingTests { @Test("A plain text body survives as the message") func plainTextBody() { diff --git a/TableProTests/Plugins/EtcdStatementGeneratorTests.swift b/TableProTests/Plugins/EtcdStatementGeneratorTests.swift index f5783eeb2e..37a8044e74 100644 --- a/TableProTests/Plugins/EtcdStatementGeneratorTests.swift +++ b/TableProTests/Plugins/EtcdStatementGeneratorTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit // MARK: - INSERT -@Suite("EtcdStatementGenerator - INSERT") struct EtcdStatementGeneratorInsertTests { @Test("Basic insert generates put command") func basicInsert() { @@ -333,7 +332,6 @@ struct EtcdStatementGeneratorInsertTests { // MARK: - UPDATE -@Suite("EtcdStatementGenerator - UPDATE") struct EtcdStatementGeneratorUpdateTests { @Test("Value change generates put with original key") func valueChange() { @@ -554,7 +552,6 @@ struct EtcdStatementGeneratorUpdateTests { // MARK: - DELETE -@Suite("EtcdStatementGenerator - DELETE") struct EtcdStatementGeneratorDeleteTests { @Test("Basic delete generates del command") func basicDelete() { @@ -633,7 +630,6 @@ struct EtcdStatementGeneratorDeleteTests { // MARK: - Batch / Multiple Changes -@Suite("EtcdStatementGenerator - Batch") struct EtcdStatementGeneratorBatchTests { @Test("Multiple changes in one batch") func multipleBatch() { diff --git a/TableProTests/Plugins/ExportFormatEscapingTests.swift b/TableProTests/Plugins/ExportFormatEscapingTests.swift index e6308d3d64..1c2b418a76 100644 --- a/TableProTests/Plugins/ExportFormatEscapingTests.swift +++ b/TableProTests/Plugins/ExportFormatEscapingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Markdown export escaping") struct MarkdownExportEscapingTests { /// A pipe closes a cell, so a value holding one would end the cell early and shift every @@ -66,7 +65,6 @@ struct MarkdownExportEscapingTests { } } -@Suite("HTML export escaping") struct HTMLExportEscapingTests { /// Every value in an export comes from the database, so a value holding markup reaches a file @@ -99,7 +97,6 @@ struct HTMLExportEscapingTests { } } -@Suite("XML export escaping") struct XMLExportEscapingTests { @Test("The five predefined entities are escaped") @@ -141,7 +138,6 @@ struct XMLExportEscapingTests { } } -@Suite("Parquet type mapping") struct ParquetTypeMapperTests { @Test("Integer families map to BIGINT") @@ -214,7 +210,6 @@ struct ParquetTypeMapperTests { } } -@Suite("Shared row writers") struct PluginRowWritersTests { /// The values in an export come from the database rather than from the person opening the diff --git a/TableProTests/Plugins/HttpQueryTimeoutBoxTests.swift b/TableProTests/Plugins/HttpQueryTimeoutBoxTests.swift index 584e4d3d72..9e801e06e2 100644 --- a/TableProTests/Plugins/HttpQueryTimeoutBoxTests.swift +++ b/TableProTests/Plugins/HttpQueryTimeoutBoxTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("HttpQueryTimeoutBox") struct HttpQueryTimeoutBoxTests { @Test("Default-initialized box exposes bootstrap policy") func defaultBoxIsBootstrap() { diff --git a/TableProTests/Plugins/HttpQueryTimeoutTests.swift b/TableProTests/Plugins/HttpQueryTimeoutTests.swift index 9e82e62280..80584724c6 100644 --- a/TableProTests/Plugins/HttpQueryTimeoutTests.swift +++ b/TableProTests/Plugins/HttpQueryTimeoutTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("HttpQueryTimeout") struct HttpQueryTimeoutTests { @Test("Default values match the documented bootstrap policy") func defaultsMatchBootstrap() { diff --git a/TableProTests/Plugins/HugeIntFormatterTests.swift b/TableProTests/Plugins/HugeIntFormatterTests.swift index 435ce5f0f6..c26aee7bc7 100644 --- a/TableProTests/Plugins/HugeIntFormatterTests.swift +++ b/TableProTests/Plugins/HugeIntFormatterTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("HugeIntFormatter") struct HugeIntFormatterTests { @Test("Zero") func zero() { diff --git a/TableProTests/Plugins/IndexDDLOwnershipTests.swift b/TableProTests/Plugins/IndexDDLOwnershipTests.swift index 025ba856a5..a4acac5bef 100644 --- a/TableProTests/Plugins/IndexDDLOwnershipTests.swift +++ b/TableProTests/Plugins/IndexDDLOwnershipTests.swift @@ -12,7 +12,6 @@ import Testing /// Nothing at runtime can see the contradiction: `fetchTableDDL` hands back opaque text and the /// export writes whatever it gets. So the guard is a source scan, the same shape /// `SyncMapperFieldAccessTests` uses to keep raw `record[` out of the sync mappers. -@Suite("Index DDL ownership") struct IndexDDLOwnershipTests { private static let pluginsDirectory: URL? = { var directory = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Plugins/IndexStatementRenderingTests.swift b/TableProTests/Plugins/IndexStatementRenderingTests.swift index 78107ede7b..8f5af189ae 100644 --- a/TableProTests/Plugins/IndexStatementRenderingTests.swift +++ b/TableProTests/Plugins/IndexStatementRenderingTests.swift @@ -10,7 +10,6 @@ import Testing /// The four engines whose `CREATE INDEX` has to be built from catalog rows rather than read back /// from the engine. The catalog queries themselves need a live server, so what is pinned here is /// the rendering: given the rows those queries return, this is the SQL that goes in the dump. -@Suite("Index statement rendering") struct IndexStatementRenderingTests { @Suite("SQL Server") struct SQLServer { diff --git a/TableProTests/Plugins/JSONImportPluginTests.swift b/TableProTests/Plugins/JSONImportPluginTests.swift index 02ef97b377..1d61e73eb1 100644 --- a/TableProTests/Plugins/JSONImportPluginTests.swift +++ b/TableProTests/Plugins/JSONImportPluginTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("JSON Import Plugin") struct JSONImportPluginTests { private func object(_ json: String) throws -> [String: Any] { let parsed = try JSONSerialization.jsonObject(with: Data(json.utf8)) diff --git a/TableProTests/Plugins/KafkaCompressionTests.swift b/TableProTests/Plugins/KafkaCompressionTests.swift index 1533531fcf..3834305ab3 100644 --- a/TableProTests/Plugins/KafkaCompressionTests.swift +++ b/TableProTests/Plugins/KafkaCompressionTests.swift @@ -8,7 +8,6 @@ import Testing /// gap here is a topic that cannot be read at all. Measured against a live broker: producing /// one topic per codec and reading the stored batch attribute back gave gzip, snappy, lz4 and /// zstd unchanged, with xerial framing on snappy and the LZ4 frame format on lz4. -@Suite("Kafka compression") struct KafkaCompressionTests { private static let payload = Data( "{\"codec\":\"test\",\"n\":1,\"pad\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}".utf8 diff --git a/TableProTests/Plugins/KafkaConnectionFieldTests.swift b/TableProTests/Plugins/KafkaConnectionFieldTests.swift index 206947ea0d..8d6463dd62 100644 --- a/TableProTests/Plugins/KafkaConnectionFieldTests.swift +++ b/TableProTests/Plugins/KafkaConnectionFieldTests.swift @@ -6,7 +6,6 @@ import Testing /// Kafka names encryption and authentication in one setting; TablePro carries them in two. /// These pin the resolution, because getting it wrong sends a password in the clear. -@Suite("Kafka connection fields") struct KafkaConnectionFieldTests { private func fields(_ securityProtocol: String, mechanism: String? = nil) -> [String: String] { var result = ["kafkaSecurityProtocol": securityProtocol] diff --git a/TableProTests/Plugins/KafkaMessageFlattenerTests.swift b/TableProTests/Plugins/KafkaMessageFlattenerTests.swift index 7cdade86d4..f0fd0968a1 100644 --- a/TableProTests/Plugins/KafkaMessageFlattenerTests.swift +++ b/TableProTests/Plugins/KafkaMessageFlattenerTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("Kafka message flattener") struct KafkaMessageFlattenerTests { private func record( partition: Int32 = 0, @@ -159,7 +158,6 @@ struct KafkaMessageFlattenerTests { } } -@Suite("Kafka browse merge") struct KafkaBrowseMergeTests { private func record(partition: Int32, offset: Int64, timestamp: Int64) -> KafkaRecord { KafkaRecord( diff --git a/TableProTests/Plugins/KafkaProtocolCodecTests.swift b/TableProTests/Plugins/KafkaProtocolCodecTests.swift index d56bb575cb..85d12d54b9 100644 --- a/TableProTests/Plugins/KafkaProtocolCodecTests.swift +++ b/TableProTests/Plugins/KafkaProtocolCodecTests.swift @@ -10,7 +10,6 @@ import Testing /// the broker consumes what it can and closes the socket, so the only symptom is a dropped /// connection with no diagnostic. Every expectation below was measured against a live Apache /// Kafka 4.3.1 broker before it was written down. -@Suite("Kafka protocol codec") struct KafkaProtocolCodecTests { // MARK: - Varints diff --git a/TableProTests/Plugins/KafkaQLTests.swift b/TableProTests/Plugins/KafkaQLTests.swift index adb86fd146..0bbbc6de34 100644 --- a/TableProTests/Plugins/KafkaQLTests.swift +++ b/TableProTests/Plugins/KafkaQLTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("KafkaQL") struct KafkaQLTests { private func consume(_ input: String) throws -> KafkaConsumeQuery { guard case .consume(let query) = try KafkaQL.parse(input) else { diff --git a/TableProTests/Plugins/KafkaRecordBatchTests.swift b/TableProTests/Plugins/KafkaRecordBatchTests.swift index 581b49149b..ab422356eb 100644 --- a/TableProTests/Plugins/KafkaRecordBatchTests.swift +++ b/TableProTests/Plugins/KafkaRecordBatchTests.swift @@ -5,7 +5,6 @@ import Testing @testable import TablePro /// Record batch decoding, against batches built the way a broker builds them. -@Suite("Kafka record batch") struct KafkaRecordBatchTests { /// Builds an uncompressed v2 batch the way `KafkaRecordBatchEncoder` does, but with an /// arbitrary record count, so the decoder is exercised against multi-record batches. diff --git a/TableProTests/Plugins/KafkaRoutingTests.swift b/TableProTests/Plugins/KafkaRoutingTests.swift index fc17ca3671..b46270bcef 100644 --- a/TableProTests/Plugins/KafkaRoutingTests.swift +++ b/TableProTests/Plugins/KafkaRoutingTests.swift @@ -10,7 +10,6 @@ import Testing /// single-broker one, which is why issue #2993 survived a full integration suite: with one /// broker every partition's leader and every group's coordinator is the broker the client is /// already holding, so a driver that routes nothing is indistinguishable from a correct one. -@Suite("Kafka routing") struct KafkaRoutingTests { // MARK: - Error code classification diff --git a/TableProTests/Plugins/KafkaSASLTests.swift b/TableProTests/Plugins/KafkaSASLTests.swift index ffdf911a14..b9861e2351 100644 --- a/TableProTests/Plugins/KafkaSASLTests.swift +++ b/TableProTests/Plugins/KafkaSASLTests.swift @@ -7,7 +7,6 @@ import Testing /// SCRAM's cryptography and the two rules that decide whether a hostile broker can get past /// it. The exchange itself needs a live connection, so what is pinned here is everything that /// can be checked without one: the key derivation, and the guards that reject a broker. -@Suite("Kafka SASL") struct KafkaSASLTests { // MARK: - Key derivation diff --git a/TableProTests/Plugins/LibPQByteaDecoderTests.swift b/TableProTests/Plugins/LibPQByteaDecoderTests.swift index c8865c874c..e01deefe57 100644 --- a/TableProTests/Plugins/LibPQByteaDecoderTests.swift +++ b/TableProTests/Plugins/LibPQByteaDecoderTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("LibPQByteaDecoder - hex format") struct LibPQByteaDecoderHexTests { @Test("Empty input returns empty Data") func emptyInput() { @@ -75,7 +74,6 @@ struct LibPQByteaDecoderHexTests { } } -@Suite("LibPQByteaDecoder - escape format") struct LibPQByteaDecoderEscapeTests { @Test("Plain ASCII bytes pass through") func plainAscii() { @@ -123,7 +121,6 @@ struct LibPQByteaDecoderEscapeTests { } } -@Suite("LibPQByteaDecoder - issue #1188 regression") struct LibPQByteaDecoderIssue1188Tests { @Test("Issue #1188 exact value decodes to 48 bytes") func issue1188ExactValue() { @@ -153,7 +150,6 @@ struct LibPQByteaDecoderIssue1188Tests { } } -@Suite("LibPQByteaDecoder - hex round-trip") struct LibPQByteaDecoderEncodeTests { @Test("encodeHexText produces canonical \\xHH format") func canonicalHexEncoding() { diff --git a/TableProTests/Plugins/LibPQCellDecodingTests.swift b/TableProTests/Plugins/LibPQCellDecodingTests.swift index 11a9ea7337..538210b106 100644 --- a/TableProTests/Plugins/LibPQCellDecodingTests.swift +++ b/TableProTests/Plugins/LibPQCellDecodingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("LibPQCellDecoding") struct LibPQCellDecodingTests { private static let textOid: UInt32 = 25 private static let booleanOid: UInt32 = 16 diff --git a/TableProTests/Plugins/LibPQConnectionLossTests.swift b/TableProTests/Plugins/LibPQConnectionLossTests.swift index a242b1a6d8..aab5502b99 100644 --- a/TableProTests/Plugins/LibPQConnectionLossTests.swift +++ b/TableProTests/Plugins/LibPQConnectionLossTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("libpq connection loss") struct LibPQConnectionLossTests { private static let serverMessage = LibPQPluginError( message: "FATAL: terminating connection due to idle-session timeout", @@ -118,7 +117,6 @@ struct LibPQConnectionLossTests { /// The app reads a driver error's message to tell an authentication failure from a refusal, and /// PostgreSQL sends those as a FATAL, which is exactly the shape that now carries an explanation /// as well. Both classifiers have to keep working through it. -@Suite("libpq connection loss and the app's error classifiers") @MainActor struct LibPQConnectionLossClassifierTests { @Test("an authentication FATAL lost with the connection is still an authentication failure") diff --git a/TableProTests/Plugins/LibPQConnectionStringTests.swift b/TableProTests/Plugins/LibPQConnectionStringTests.swift index a23aa7042f..6c8b40669b 100644 --- a/TableProTests/Plugins/LibPQConnectionStringTests.swift +++ b/TableProTests/Plugins/LibPQConnectionStringTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("LibPQConnectionString") struct LibPQConnectionStringTests { private func build( user: String = "postgres", diff --git a/TableProTests/Plugins/LibPQPendingResultDrainTests.swift b/TableProTests/Plugins/LibPQPendingResultDrainTests.swift index f65a1def90..2102b6788e 100644 --- a/TableProTests/Plugins/LibPQPendingResultDrainTests.swift +++ b/TableProTests/Plugins/LibPQPendingResultDrainTests.swift @@ -43,7 +43,6 @@ private func textual(_ direction: LibPQCopyDirection) -> LibPQCopy { LibPQCopy(direction: direction, format: .textual) } -@Suite("LibPQPendingResultDrain") struct LibPQPendingResultDrainTests { @Test("An idle connection drains without ending anything") func idleConnection() { diff --git a/TableProTests/Plugins/LibPQPluginConnectionSourceScanTests.swift b/TableProTests/Plugins/LibPQPluginConnectionSourceScanTests.swift index 27b0a1cc98..e788298aee 100644 --- a/TableProTests/Plugins/LibPQPluginConnectionSourceScanTests.swift +++ b/TableProTests/Plugins/LibPQPluginConnectionSourceScanTests.swift @@ -12,7 +12,6 @@ import Testing /// while `serverVersion()` read it with no lock at all, which ThreadSanitizer reported as a data /// race against PostgreSQL 17.11. Nothing at runtime shows such a race, and the class imports /// CLibPQ, which this target cannot, so the guard is a source scan. -@Suite("LibPQPluginConnection source scan") struct LibPQPluginConnectionSourceScanTests { private static let connectionSource: URL = { var directory = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Plugins/LibPQPluginErrorTests.swift b/TableProTests/Plugins/LibPQPluginErrorTests.swift index 3bab0016e4..d45e9304e1 100644 --- a/TableProTests/Plugins/LibPQPluginErrorTests.swift +++ b/TableProTests/Plugins/LibPQPluginErrorTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("LibPQPluginError result fields") struct LibPQPluginErrorTests { private static let undefinedFunctionFields: [Int32: String] = [ Int32(UInt8(ascii: "C")): "42883", diff --git a/TableProTests/Plugins/LibPQSSLMappingTests.swift b/TableProTests/Plugins/LibPQSSLMappingTests.swift index dbdd694956..c20d11494d 100644 --- a/TableProTests/Plugins/LibPQSSLMappingTests.swift +++ b/TableProTests/Plugins/LibPQSSLMappingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("LibPQSSLMapping.sslmode") struct LibPQSSLMappingTests { @Test("disabled maps to disable") func disabled() { diff --git a/TableProTests/Plugins/LibPQStringConformanceTests.swift b/TableProTests/Plugins/LibPQStringConformanceTests.swift index f376342cb3..71f97c9368 100644 --- a/TableProTests/Plugins/LibPQStringConformanceTests.swift +++ b/TableProTests/Plugins/LibPQStringConformanceTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("LibPQStringConformance") struct LibPQStringConformanceTests { @Test("Every session turns standard_conforming_strings on") func sessionSetupForcesStandardConformingStrings() { diff --git a/TableProTests/Plugins/LibPQTypeNameRegistryTests.swift b/TableProTests/Plugins/LibPQTypeNameRegistryTests.swift index 2c8fe24324..e0d133048a 100644 --- a/TableProTests/Plugins/LibPQTypeNameRegistryTests.swift +++ b/TableProTests/Plugins/LibPQTypeNameRegistryTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("LibPQ type name registry") struct LibPQTypeNameRegistryTests { @Test("A later merge overwrites an oid learned earlier and keeps the ones it does not name") func mergeOverwritesLearnedName() { diff --git a/TableProTests/Plugins/LibSQLConnectionFieldsTests.swift b/TableProTests/Plugins/LibSQLConnectionFieldsTests.swift index 72e881b182..327e758cde 100644 --- a/TableProTests/Plugins/LibSQLConnectionFieldsTests.swift +++ b/TableProTests/Plugins/LibSQLConnectionFieldsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("libSQL connection fields") struct LibSQLConnectionFieldsTests { private func libsqlFields() throws -> [ConnectionField] { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() diff --git a/TableProTests/Plugins/LoadableExtensionListTests.swift b/TableProTests/Plugins/LoadableExtensionListTests.swift index 270898b780..443fa5d0a7 100644 --- a/TableProTests/Plugins/LoadableExtensionListTests.swift +++ b/TableProTests/Plugins/LoadableExtensionListTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Loadable extension list") struct LoadableExtensionListTests { @Test("An empty or blank value is an empty list") func emptyValueDecodesToNothing() throws { diff --git a/TableProTests/Plugins/LoadableExtensionLoaderTests.swift b/TableProTests/Plugins/LoadableExtensionLoaderTests.swift index 50bc466baf..338d15cb1e 100644 --- a/TableProTests/Plugins/LoadableExtensionLoaderTests.swift +++ b/TableProTests/Plugins/LoadableExtensionLoaderTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Loadable extension loader") struct LoadableExtensionLoaderTests { private final class FakeHandle { var calls: [String] = [] diff --git a/TableProTests/Plugins/LoadableExtensionPreflightTests.swift b/TableProTests/Plugins/LoadableExtensionPreflightTests.swift index 7688a3f481..4398e386c3 100644 --- a/TableProTests/Plugins/LoadableExtensionPreflightTests.swift +++ b/TableProTests/Plugins/LoadableExtensionPreflightTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Loadable extension preflight") struct LoadableExtensionPreflightTests { private let directory: URL diff --git a/TableProTests/Plugins/MQLExportHelpersTests.swift b/TableProTests/Plugins/MQLExportHelpersTests.swift index 8ed8c467c2..14a27a93e4 100644 --- a/TableProTests/Plugins/MQLExportHelpersTests.swift +++ b/TableProTests/Plugins/MQLExportHelpersTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MQL Export Helpers") struct MQLExportHelpersTests { private static let uuid = "8cd003eb-4a25-4324-9332-88fce2da0d1a" diff --git a/TableProTests/Plugins/MSSQLFreeTDSConfigTests.swift b/TableProTests/Plugins/MSSQLFreeTDSConfigTests.swift index 8b702323f8..6bed95f49f 100644 --- a/TableProTests/Plugins/MSSQLFreeTDSConfigTests.swift +++ b/TableProTests/Plugins/MSSQLFreeTDSConfigTests.swift @@ -8,7 +8,6 @@ import TableProMSSQLCore import TableProPluginKit import Testing -@Suite("MSSQL FreeTDS config") struct MSSQLFreeTDSConfigTests { private func entry( host: String = "db.example.com", diff --git a/TableProTests/Plugins/MSSQLLoginParametersTests.swift b/TableProTests/Plugins/MSSQLLoginParametersTests.swift index 369c987326..743a3cc8e7 100644 --- a/TableProTests/Plugins/MSSQLLoginParametersTests.swift +++ b/TableProTests/Plugins/MSSQLLoginParametersTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("MSSQLLoginParameters.build") struct MSSQLLoginParametersTests { private func build(database: String) -> [MSSQLLoginParameter] { MSSQLLoginParameters.build( diff --git a/TableProTests/Plugins/MSSQLSSLMappingTests.swift b/TableProTests/Plugins/MSSQLSSLMappingTests.swift index 8717211381..52e2e1cf9c 100644 --- a/TableProTests/Plugins/MSSQLSSLMappingTests.swift +++ b/TableProTests/Plugins/MSSQLSSLMappingTests.swift @@ -8,7 +8,6 @@ import TableProMSSQLCore import TableProPluginKit import Testing -@Suite("MSSQLSSLMapping.encryptionLevel") struct MSSQLSSLMappingTests { @Test("disabled maps to request: off would send the login unencrypted, and a server that forces encryption drops it") func disabled() { diff --git a/TableProTests/Plugins/MSSQLSessionTransactionTests.swift b/TableProTests/Plugins/MSSQLSessionTransactionTests.swift index cd2c1ead0a..94696fbd26 100644 --- a/TableProTests/Plugins/MSSQLSessionTransactionTests.swift +++ b/TableProTests/Plugins/MSSQLSessionTransactionTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Server session transaction") struct MSSQLSessionTransactionTests { @Test("A transaction count above zero is an open transaction") func openTransactionIsCounted() { diff --git a/TableProTests/Plugins/MSSQLTableDefinitionSQLTests.swift b/TableProTests/Plugins/MSSQLTableDefinitionSQLTests.swift index 4c88f699cf..611f35e744 100644 --- a/TableProTests/Plugins/MSSQLTableDefinitionSQLTests.swift +++ b/TableProTests/Plugins/MSSQLTableDefinitionSQLTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Server table definition") struct MSSQLTableDefinitionSQLTests { private static func column(_ name: String, primaryKey: Bool = false) -> PluginColumnDefinition { PluginColumnDefinition(name: name, dataType: "INT", isNullable: !primaryKey, isPrimaryKey: primaryKey) diff --git a/TableProTests/Plugins/MSSQLTypeQueryTests.swift b/TableProTests/Plugins/MSSQLTypeQueryTests.swift index e26e19371b..a849cefd60 100644 --- a/TableProTests/Plugins/MSSQLTypeQueryTests.swift +++ b/TableProTests/Plugins/MSSQLTypeQueryTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("MSSQL Type Catalog Queries") struct MSSQLTypeQueryTests { @Test("Only user-defined types are listed, and the three kinds are separated") func listsOnlyUserDefinedTypes() { @@ -71,7 +70,6 @@ struct MSSQLTypeQueryTests { } } -@Suite("MSSQL Type Definition Synthesis") struct MSSQLTypeDefinitionTests { /// Executed verbatim against SQL Server 2022 and accepted. @Test("An alias type rebuilds its CREATE TYPE ... FROM statement") diff --git a/TableProTests/Plugins/MaintenanceOperationDescriptorTests.swift b/TableProTests/Plugins/MaintenanceOperationDescriptorTests.swift index 0202fd6354..b1cb228968 100644 --- a/TableProTests/Plugins/MaintenanceOperationDescriptorTests.swift +++ b/TableProTests/Plugins/MaintenanceOperationDescriptorTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Maintenance operation descriptors") struct MaintenanceOperationDescriptorTests { private func postgres(_ name: String) throws -> PluginMaintenanceOperation { try #require(PostgreSQLMaintenance.operations.first { $0.name == name }) diff --git a/TableProTests/Plugins/MariaDBFieldClassifierTests.swift b/TableProTests/Plugins/MariaDBFieldClassifierTests.swift index f570a3fd43..a9059ab602 100644 --- a/TableProTests/Plugins/MariaDBFieldClassifierTests.swift +++ b/TableProTests/Plugins/MariaDBFieldClassifierTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MariaDBFieldClassifier") struct MariaDBFieldClassifierTests { @Test("makeColumnMeta reads PRIMARY KEY, NOT NULL, and AUTO_INCREMENT flags") func makeColumnMetaReadsKeyFlags() { diff --git a/TableProTests/Plugins/MariaDBTypeNameTests.swift b/TableProTests/Plugins/MariaDBTypeNameTests.swift index af00cc4630..fde52a65bf 100644 --- a/TableProTests/Plugins/MariaDBTypeNameTests.swift +++ b/TableProTests/Plugins/MariaDBTypeNameTests.swift @@ -5,7 +5,6 @@ import Testing -@Suite("MariaDB type name resolution") struct MariaDBTypeNameTests { private func resolve(typeRaw: UInt32, charsetnr: UInt32 = 33, flags: UInt = 0, length: UInt = 0) -> String { mariaDBTypeName(typeRaw: typeRaw, flags: flags, charsetnr: charsetnr, length: length) diff --git a/TableProTests/Plugins/MongoDBAuthSourceResolverTests.swift b/TableProTests/Plugins/MongoDBAuthSourceResolverTests.swift index bd02328772..c6f8b9e659 100644 --- a/TableProTests/Plugins/MongoDBAuthSourceResolverTests.swift +++ b/TableProTests/Plugins/MongoDBAuthSourceResolverTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MongoDBAuthSourceResolver") struct MongoDBAuthSourceResolverTests { @Test("An explicit auth source wins over everything else") func testExplicitWins() { diff --git a/TableProTests/Plugins/MongoDBCreateDatabasePlanTests.swift b/TableProTests/Plugins/MongoDBCreateDatabasePlanTests.swift index f87cde55c9..b94a6acea8 100644 --- a/TableProTests/Plugins/MongoDBCreateDatabasePlanTests.swift +++ b/TableProTests/Plugins/MongoDBCreateDatabasePlanTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDBCreateDatabasePlan") struct MongoDBCreateDatabasePlanTests { @Test("The typed collection name is used") func testUsesTypedName() { diff --git a/TableProTests/Plugins/MongoDBNameValidatorTests.swift b/TableProTests/Plugins/MongoDBNameValidatorTests.swift index 71e79c737b..79f0698ac0 100644 --- a/TableProTests/Plugins/MongoDBNameValidatorTests.swift +++ b/TableProTests/Plugins/MongoDBNameValidatorTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MongoDBNameValidator") struct MongoDBNameValidatorTests { @Test("A plain database name passes") func testValidDatabaseName() throws { diff --git a/TableProTests/Plugins/MongoDBNestedFilterTests.swift b/TableProTests/Plugins/MongoDBNestedFilterTests.swift index 770d701a41..8b1c564154 100644 --- a/TableProTests/Plugins/MongoDBNestedFilterTests.swift +++ b/TableProTests/Plugins/MongoDBNestedFilterTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("MongoDB Nested Field Filtering") struct MongoDBNestedFilterTests { private func filter( _ column: String, diff --git a/TableProTests/Plugins/MongoDBQueryBuilderTests.swift b/TableProTests/Plugins/MongoDBQueryBuilderTests.swift index ca5aaf9e51..a5ef6a86db 100644 --- a/TableProTests/Plugins/MongoDBQueryBuilderTests.swift +++ b/TableProTests/Plugins/MongoDBQueryBuilderTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Query Builder") struct MongoDBQueryBuilderTests { private let builder = MongoDBQueryBuilder() diff --git a/TableProTests/Plugins/MongoDBSSLMappingTests.swift b/TableProTests/Plugins/MongoDBSSLMappingTests.swift index d4f5ff838f..e1941b2a67 100644 --- a/TableProTests/Plugins/MongoDBSSLMappingTests.swift +++ b/TableProTests/Plugins/MongoDBSSLMappingTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDBSSLMapping") struct MongoDBSSLMappingTests { @Test("Disabled returns empty parameter list") func testDisabled() { diff --git a/TableProTests/Plugins/MongoDBStatementGeneratorTests.swift b/TableProTests/Plugins/MongoDBStatementGeneratorTests.swift index d64035ca42..456030bb4e 100644 --- a/TableProTests/Plugins/MongoDBStatementGeneratorTests.swift +++ b/TableProTests/Plugins/MongoDBStatementGeneratorTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Statement Generator") struct MongoDBStatementGeneratorTests { // MARK: - INSERT diff --git a/TableProTests/Plugins/MongoDBWriteBackTypeTests.swift b/TableProTests/Plugins/MongoDBWriteBackTypeTests.swift index d6f15700a8..2f0e2d2025 100644 --- a/TableProTests/Plugins/MongoDBWriteBackTypeTests.swift +++ b/TableProTests/Plugins/MongoDBWriteBackTypeTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Write Back Types") struct MongoDBWriteBackTypeTests { private func update( column: String, diff --git a/TableProTests/Plugins/MongoStreamProjectionTests.swift b/TableProTests/Plugins/MongoStreamProjectionTests.swift index 6801232dec..bd16a94508 100644 --- a/TableProTests/Plugins/MongoStreamProjectionTests.swift +++ b/TableProTests/Plugins/MongoStreamProjectionTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MongoDB Stream Projection") struct MongoStreamProjectionTests { private func text(_ value: Any, _ kind: BsonValueKind) -> PluginCellValue { PluginCellValue.fromOptional("\(value)") diff --git a/TableProTests/Plugins/MySQLAccountStatementsTests.swift b/TableProTests/Plugins/MySQLAccountStatementsTests.swift index 9ac0242615..6a5afe8324 100644 --- a/TableProTests/Plugins/MySQLAccountStatementsTests.swift +++ b/TableProTests/Plugins/MySQLAccountStatementsTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL account statements") struct MySQLAccountStatementsTests { private static let user = PluginPrincipalRef(name: "u", host: "%") diff --git a/TableProTests/Plugins/MySQLCatalogVisibilityTests.swift b/TableProTests/Plugins/MySQLCatalogVisibilityTests.swift index 5a18f4ee99..7a6a2d0253 100644 --- a/TableProTests/Plugins/MySQLCatalogVisibilityTests.swift +++ b/TableProTests/Plugins/MySQLCatalogVisibilityTests.swift @@ -12,7 +12,6 @@ import Foundation import Testing -@Suite("MySQL catalog visibility rule") struct MySQLCatalogVisibilityRuleTests { @Test("A catalog with rows describes the database, whatever SHOW says") func rowsSettleIt() { @@ -74,7 +73,6 @@ private func settlesBlindness(_ error: any Error) -> Bool { (error as? ScriptedFailure)?.settles ?? false } -@Suite("MySQL catalog fallback") struct MySQLCatalogFallbackTests { private final class Script: @unchecked Sendable { private let lock = NSLock() diff --git a/TableProTests/Plugins/MySQLCharacterSetTests.swift b/TableProTests/Plugins/MySQLCharacterSetTests.swift index c6717f1f09..e56563736a 100644 --- a/TableProTests/Plugins/MySQLCharacterSetTests.swift +++ b/TableProTests/Plugins/MySQLCharacterSetTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("MySQL character set decoding") struct MySQLCharacterSetTests { private func decode(_ bytes: [UInt8], as name: String) -> String { bytes.withUnsafeBytes { MySQLCharacterSet(serverName: name).decode($0) } diff --git a/TableProTests/Plugins/MySQLCheckConstraintsTests.swift b/TableProTests/Plugins/MySQLCheckConstraintsTests.swift index 457311ad23..1830f44e54 100644 --- a/TableProTests/Plugins/MySQLCheckConstraintsTests.swift +++ b/TableProTests/Plugins/MySQLCheckConstraintsTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL check constraints") struct MySQLCheckConstraintsTests { @Test("7.5 prints constraints unindented, and each expression matches CHECK_CLAUSE") func tidb75() { diff --git a/TableProTests/Plugins/MySQLColumnDecodingTests.swift b/TableProTests/Plugins/MySQLColumnDecodingTests.swift index 37be254ad9..e0f2fce365 100644 --- a/TableProTests/Plugins/MySQLColumnDecodingTests.swift +++ b/TableProTests/Plugins/MySQLColumnDecodingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL column decoding") struct MySQLColumnDecodingTests { private static let doubleEncodedMail = String(bytes: [0xC3, 0xA3, 0xC6, 0x92, 0xC2, 0xA1], encoding: .utf8) ?? "" diff --git a/TableProTests/Plugins/MySQLColumnDefinitionSQLTests.swift b/TableProTests/Plugins/MySQLColumnDefinitionSQLTests.swift index d97c9babf7..f165692061 100644 --- a/TableProTests/Plugins/MySQLColumnDefinitionSQLTests.swift +++ b/TableProTests/Plugins/MySQLColumnDefinitionSQLTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit import Testing -@Suite("MySQL Column Definition SQL") struct MySQLColumnDefinitionSQLTests { private func timestampColumn( dataType: String = "TIMESTAMP", diff --git a/TableProTests/Plugins/MySQLConnectionEncodingTests.swift b/TableProTests/Plugins/MySQLConnectionEncodingTests.swift index c5080506c5..090060f339 100644 --- a/TableProTests/Plugins/MySQLConnectionEncodingTests.swift +++ b/TableProTests/Plugins/MySQLConnectionEncodingTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL connection encoding") struct MySQLConnectionEncodingTests { @Test("A missing, empty or unknown field value is plain UTF-8") func fieldValueParsing() { diff --git a/TableProTests/Plugins/MySQLCreateTableTests.swift b/TableProTests/Plugins/MySQLCreateTableTests.swift index eee53ef693..ae149354c3 100644 --- a/TableProTests/Plugins/MySQLCreateTableTests.swift +++ b/TableProTests/Plugins/MySQLCreateTableTests.swift @@ -12,7 +12,6 @@ import Testing /// The suite used to sit behind `#if canImport(MySQLDriverPlugin)`. The XcodeGen target is named /// `MySQLDriver`, so no module by that name has ever existed and every case here compiled to /// nothing. It now runs against the extracted generator, which the test target compiles directly. -@Suite("MySQL CREATE TABLE SQL Generation") struct MySQLCreateTableTests { @Test("basic table with single column") diff --git a/TableProTests/Plugins/MySQLForeignKeyCatalogTests.swift b/TableProTests/Plugins/MySQLForeignKeyCatalogTests.swift index a7b42f3ef4..60728d0bc3 100644 --- a/TableProTests/Plugins/MySQLForeignKeyCatalogTests.swift +++ b/TableProTests/Plugins/MySQLForeignKeyCatalogTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL foreign key catalog merge") struct MySQLForeignKeyCatalogTests { private func column( _ table: String, diff --git a/TableProTests/Plugins/MySQLForeignKeyClauseTests.swift b/TableProTests/Plugins/MySQLForeignKeyClauseTests.swift index e04fb0f89a..e98bea383a 100644 --- a/TableProTests/Plugins/MySQLForeignKeyClauseTests.swift +++ b/TableProTests/Plugins/MySQLForeignKeyClauseTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL foreign key clause") struct MySQLForeignKeyClauseTests { /// Verbatim `SHOW CREATE TABLE db1.t_child` on MySQL 8.4.11. MariaDB 11.4.13 prints the same /// clauses, differing only in `int(11)` and the table's collation. @@ -168,7 +167,6 @@ struct MySQLForeignKeyClauseTests { } } -@Suite("MySQL omitted foreign key action") struct MySQLOmittedForeignKeyActionTests { /// Measured by declaring one two-column key with no action clause and reading /// `information_schema.REFERENTIAL_CONSTRAINTS` back. diff --git a/TableProTests/Plugins/MySQLFunctionalKeyPartsTests.swift b/TableProTests/Plugins/MySQLFunctionalKeyPartsTests.swift index 03f524326d..a7e1d7aac2 100644 --- a/TableProTests/Plugins/MySQLFunctionalKeyPartsTests.swift +++ b/TableProTests/Plugins/MySQLFunctionalKeyPartsTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL functional key parts") struct MySQLFunctionalKeyPartsTests { private static let expressionIndex = PluginIndexDefinition( name: "ix", diff --git a/TableProTests/Plugins/MySQLGeneratedColumnClassificationTests.swift b/TableProTests/Plugins/MySQLGeneratedColumnClassificationTests.swift index b65e0d134b..d48501ef4f 100644 --- a/TableProTests/Plugins/MySQLGeneratedColumnClassificationTests.swift +++ b/TableProTests/Plugins/MySQLGeneratedColumnClassificationTests.swift @@ -6,7 +6,6 @@ import TableProPluginKit import Testing -@Suite("MySQL Generated Column Classification") struct MySQLGeneratedColumnClassificationTests { @Test("STORED GENERATED is generated") func storedGenerated() { @@ -66,7 +65,6 @@ struct MySQLGeneratedColumnClassificationTests { } } -@Suite("MySQL Identity Classification") struct MySQLIdentityClassificationTests { /// MySQL leaves `COLUMN_DEFAULT` null for an AUTO_INCREMENT column, so `Extra` is the only /// place the allocation is reported and the app read it as a column with no default. diff --git a/TableProTests/Plugins/MySQLGrantEscapingTests.swift b/TableProTests/Plugins/MySQLGrantEscapingTests.swift index fa6b493e31..d0efb2e8e8 100644 --- a/TableProTests/Plugins/MySQLGrantEscapingTests.swift +++ b/TableProTests/Plugins/MySQLGrantEscapingTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL GRANT pattern escaping") struct MySQLGrantEscapingTests { @Test("Wildcard characters are escaped in the database position") func escapesWildcards() { @@ -45,7 +44,6 @@ struct MySQLGrantEscapingTests { } } -@Suite("MySQL SHOW GRANTS parsing") struct MySQLGrantParserTests { @Test("Server scope") func parsesServerScope() { @@ -118,7 +116,6 @@ struct MySQLGrantParserTests { } } -@Suite("Grant SQL builder") struct PluginGrantSQLBuilderTests { private func mysqlQuote(_ value: String) -> String { "`" + value.replacingOccurrences(of: "`", with: "``") + "`" @@ -215,7 +212,6 @@ struct PluginGrantSQLBuilderTests { } } -@Suite("Grant grouping") struct PluginGrantGroupingTests { private let table = PluginPrivilegeScope.table(database: "app", schema: "public", table: "orders") @@ -261,7 +257,6 @@ struct PluginGrantGroupingTests { } } -@Suite("Privilege name sanitizer") struct PluginPrivilegeNameTests { @Test("Rejects anything that is not a privilege keyword") func rejectsInjection() { diff --git a/TableProTests/Plugins/MySQLIndexGroupingTests.swift b/TableProTests/Plugins/MySQLIndexGroupingTests.swift index 19d5db80b2..64ef5aced7 100644 --- a/TableProTests/Plugins/MySQLIndexGroupingTests.swift +++ b/TableProTests/Plugins/MySQLIndexGroupingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL index rows are grouped in the order the server sent them") struct MySQLIndexGroupingTests { private func row( _ index: String, diff --git a/TableProTests/Plugins/MySQLIndexKeyWriterTests.swift b/TableProTests/Plugins/MySQLIndexKeyWriterTests.swift index c5858b65b9..a05211eb21 100644 --- a/TableProTests/Plugins/MySQLIndexKeyWriterTests.swift +++ b/TableProTests/Plugins/MySQLIndexKeyWriterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL index key writer") @MainActor struct MySQLIndexKeyWriterTests { private func catalogRow( diff --git a/TableProTests/Plugins/MySQLKillLatchTests.swift b/TableProTests/Plugins/MySQLKillLatchTests.swift index bdf562ea43..245dc0dfc5 100644 --- a/TableProTests/Plugins/MySQLKillLatchTests.swift +++ b/TableProTests/Plugins/MySQLKillLatchTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("MySQL kill latch") struct MySQLKillLatchTests { @Test("Nothing to absorb before a kill has gone out") func idleLatchAbsorbsNothing() { @@ -79,7 +78,6 @@ struct MySQLKillLatchTests { /// The absorb step has to sit where every statement passes, not beside one of them. `streamQuery` /// was the gap the design left: an export right after a Stop collected the kill instead. -@Suite("MySQL statement entry points") struct MySQLStatementEntryPointGuardTests { @Test("Every statement entry point goes through the wrapper that absorbs a latched kill") func everyStatementEntryPointUsesTheWrapper() throws { diff --git a/TableProTests/Plugins/MySQLLatin1Tests.swift b/TableProTests/Plugins/MySQLLatin1Tests.swift index e6e15332eb..732cf76e79 100644 --- a/TableProTests/Plugins/MySQLLatin1Tests.swift +++ b/TableProTests/Plugins/MySQLLatin1Tests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("MySQL latin1") struct MySQLLatin1Tests { private static let serverUTF8ForUpperHalf: [String] = [ "E282AC", "C281", "E2809A", "C692", "E2809E", "E280A6", "E280A0", "E280A1", diff --git a/TableProTests/Plugins/MySQLLiteralSpellingTests.swift b/TableProTests/Plugins/MySQLLiteralSpellingTests.swift index dc5ff182fe..d92336ac63 100644 --- a/TableProTests/Plugins/MySQLLiteralSpellingTests.swift +++ b/TableProTests/Plugins/MySQLLiteralSpellingTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("MySQL literal spelling") struct MySQLLiteralSpellingTests { private let session = MySQLLiteralSpelling.quoteDoubling diff --git a/TableProTests/Plugins/MySQLPartitionBoundTests.swift b/TableProTests/Plugins/MySQLPartitionBoundTests.swift index 8f99886b67..0eb2f8b2aa 100644 --- a/TableProTests/Plugins/MySQLPartitionBoundTests.swift +++ b/TableProTests/Plugins/MySQLPartitionBoundTests.swift @@ -8,7 +8,6 @@ import Testing /// The values are what MariaDB 12.3.3 actually returns from `information_schema.PARTITIONS`, /// measured against a live server rather than transcribed from the manual. -@Suite("MySQL partition bounds put back the syntax the catalog leaves out") struct MySQLPartitionBoundTests { @Test("RANGE reports only its upper bound, so the row says what that bound is") func rangeWrapsDescription() { @@ -50,7 +49,6 @@ struct MySQLPartitionBoundTests { } } -@Suite("MySQL partition catalog SQL") struct MySQLPartitionQueryTests { @Test("A table listing carries the partition count without a second round trip") func tableListJoinsPartitionCount() { @@ -90,7 +88,6 @@ struct MySQLPartitionQueryTests { } } -@Suite("The partition count is attached to one exact table") struct MySQLPartitionCountIdentityTests { /// `INFORMATION_SCHEMA` collates its identifiers case-insensitively on MySQL 5.7 and earlier and /// on every MariaDB measured, so on a server with `lower_case_table_names=0` a schema holding both diff --git a/TableProTests/Plugins/MySQLQueryTimeoutTests.swift b/TableProTests/Plugins/MySQLQueryTimeoutTests.swift index bde138d32d..65bc261418 100644 --- a/TableProTests/Plugins/MySQLQueryTimeoutTests.swift +++ b/TableProTests/Plugins/MySQLQueryTimeoutTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("MySQL query timeout enforcement") struct MySQLQueryTimeoutTests { @Test("A server timeout starts at MySQL 5.7.8") func mysqlFloor() { diff --git a/TableProTests/Plugins/MySQLResultSynthesisSourceScanTests.swift b/TableProTests/Plugins/MySQLResultSynthesisSourceScanTests.swift index bc7f52f636..6f0174bb73 100644 --- a/TableProTests/Plugins/MySQLResultSynthesisSourceScanTests.swift +++ b/TableProTests/Plugins/MySQLResultSynthesisSourceScanTests.swift @@ -12,7 +12,6 @@ import Testing /// `1146 Table 'db.information_schema' doesn't exist`. A result set is the server's answer, so the /// driver never sends a statement of its own to invent one. The plugin imports CMariaDB, which this /// target cannot, so the guard is a source scan. -@Suite("MySQL result synthesis source scan") struct MySQLResultSynthesisSourceScanTests { private static let pluginDirectory: URL = { var directory = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Plugins/MySQLSelectLimitTests.swift b/TableProTests/Plugins/MySQLSelectLimitTests.swift index 7e1adacfb7..b58dcb6868 100644 --- a/TableProTests/Plugins/MySQLSelectLimitTests.swift +++ b/TableProTests/Plugins/MySQLSelectLimitTests.swift @@ -6,7 +6,6 @@ import TableProPluginKit import Testing -@Suite("MySQL Server-Side Row Cap") struct MySQLSelectLimitTests { @Test("The statement asks for one row past the cap") func statementAsksForOneRowPastTheCap() { diff --git a/TableProTests/Plugins/MySQLServerFlavorTests.swift b/TableProTests/Plugins/MySQLServerFlavorTests.swift index a2eeeb01a7..9019b83513 100644 --- a/TableProTests/Plugins/MySQLServerFlavorTests.swift +++ b/TableProTests/Plugins/MySQLServerFlavorTests.swift @@ -6,7 +6,6 @@ import TableProPluginKit import Testing -@Suite("MySQL server flavor") struct MySQLServerFlavorTests { private static let databendBanner = "8.0.90-v1.2.881-ca29960f5c(rust-1.94.0-nightly-2026-04-17T02:30:29.281093406Z)" diff --git a/TableProTests/Plugins/MySQLSessionFootprintTests.swift b/TableProTests/Plugins/MySQLSessionFootprintTests.swift index 612249d135..6a4338e970 100644 --- a/TableProTests/Plugins/MySQLSessionFootprintTests.swift +++ b/TableProTests/Plugins/MySQLSessionFootprintTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL session footprint") struct MySQLSessionFootprintTests { private func footprint(after statements: String...) -> MySQLSessionFootprint { var footprint = MySQLSessionFootprint() @@ -351,7 +350,6 @@ struct MySQLSessionFootprintTests { } } -@Suite("MySQL idle release policy") struct MySQLIdleReleaseTests { @Test("Anything that is not a positive number of minutes means never") func malformedValuesMeanNever() { diff --git a/TableProTests/Plugins/MySQLSocketTimeoutTests.swift b/TableProTests/Plugins/MySQLSocketTimeoutTests.swift index 6494ef3ca9..80e5dedade 100644 --- a/TableProTests/Plugins/MySQLSocketTimeoutTests.swift +++ b/TableProTests/Plugins/MySQLSocketTimeoutTests.swift @@ -5,7 +5,6 @@ import Testing -@Suite("MySQL Socket Timeout") struct MySQLSocketTimeoutTests { @Test("No limit maps to an infinite socket timeout") func noLimitIsInfinite() { diff --git a/TableProTests/Plugins/MySQLStatementClassificationTests.swift b/TableProTests/Plugins/MySQLStatementClassificationTests.swift index c24a41df9e..0fc2baa93e 100644 --- a/TableProTests/Plugins/MySQLStatementClassificationTests.swift +++ b/TableProTests/Plugins/MySQLStatementClassificationTests.swift @@ -6,7 +6,6 @@ import TableProPluginKit import Testing -@Suite("MySQL Statement Classification") struct MySQLStatementClassificationTests { @Test("SELECT is read-only") func selectIsReadOnly() { @@ -48,7 +47,6 @@ struct MySQLStatementClassificationTests { } } -@Suite("MySQL Replay Safety") struct MySQLReplaySafetyTests { /// The only caller asks this to decide whether to run a statement a second time after the /// connection dropped, so a plain read is the only thing that may say yes. diff --git a/TableProTests/Plugins/MySQLStatementDeadlineRunnerTests.swift b/TableProTests/Plugins/MySQLStatementDeadlineRunnerTests.swift index b8be44752d..a71babb8df 100644 --- a/TableProTests/Plugins/MySQLStatementDeadlineRunnerTests.swift +++ b/TableProTests/Plugins/MySQLStatementDeadlineRunnerTests.swift @@ -65,7 +65,6 @@ private final class RunnerHarness: @unchecked Sendable { } } -@Suite("MySQL statement deadline runner") struct MySQLStatementDeadlineRunnerTests { private let deadline = MySQLStatementDeadline(seconds: 5, scope: .selectStatements) diff --git a/TableProTests/Plugins/MySQLStatementWatchTests.swift b/TableProTests/Plugins/MySQLStatementWatchTests.swift index 144104d80d..dc3f41933e 100644 --- a/TableProTests/Plugins/MySQLStatementWatchTests.swift +++ b/TableProTests/Plugins/MySQLStatementWatchTests.swift @@ -7,7 +7,6 @@ import Dispatch import Foundation import Testing -@Suite("MySQL statement watch") struct MySQLStatementWatchTests { @Test("An expiry while the statement runs interrupts once, and end reports it") func expiryWhileRunning() { diff --git a/TableProTests/Plugins/MySQLTableListingTests.swift b/TableProTests/Plugins/MySQLTableListingTests.swift index 855bc29f85..ebdd0d40cc 100644 --- a/TableProTests/Plugins/MySQLTableListingTests.swift +++ b/TableProTests/Plugins/MySQLTableListingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("MySQL table listing") struct MySQLTableListingTests { private func row(_ cells: String?...) -> [PluginCellValue] { cells.map(PluginCellValue.fromOptional) diff --git a/TableProTests/Plugins/ObjectCatalogQueryTests.swift b/TableProTests/Plugins/ObjectCatalogQueryTests.swift index 72d8eeac04..4ffffebc5d 100644 --- a/TableProTests/Plugins/ObjectCatalogQueryTests.swift +++ b/TableProTests/Plugins/ObjectCatalogQueryTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("PostgreSQL Object Catalog Queries") struct PostgreSQLObjectQueryTests { /// information_schema.routines shows only what the caller has a privilege on and repeats a /// name once per overload, which is what produced duplicate rows and an arbitrary definition. @@ -115,7 +114,6 @@ struct PostgreSQLObjectQueryTests { } } -@Suite("MySQL Object Catalog Queries") struct MySQLObjectQueryTests { @Test("The DDL statement is schema-qualified") func routineDefinitionIsQualified() { @@ -277,7 +275,6 @@ struct MySQLObjectQueryTests { } } -@Suite("MSSQL Object Catalog Queries") struct MSSQLObjectQueryTests { /// INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION is nvarchar(4000) and silently truncates, /// which looks like a procedure that ends mid-statement. @@ -403,7 +400,6 @@ struct MSSQLObjectQueryTests { } } -@Suite("Oracle Object Catalog Queries") struct OracleObjectQueryTests { @Test("The trigger list selects the body the old query never asked for") func triggerListSelectsBody() { diff --git a/TableProTests/Plugins/OceanBaseColumnDefaultsTests.swift b/TableProTests/Plugins/OceanBaseColumnDefaultsTests.swift index 8dff055738..04cb4c4e9d 100644 --- a/TableProTests/Plugins/OceanBaseColumnDefaultsTests.swift +++ b/TableProTests/Plugins/OceanBaseColumnDefaultsTests.swift @@ -5,7 +5,6 @@ import Testing -@Suite("OceanBase column defaults") struct OceanBaseColumnDefaultsTests { private static let tableOptions = "ORGANIZATION INDEX DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC " + "COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE " diff --git a/TableProTests/Plugins/OracleColumnStatementsTests.swift b/TableProTests/Plugins/OracleColumnStatementsTests.swift index 013c11ef63..507f94c417 100644 --- a/TableProTests/Plugins/OracleColumnStatementsTests.swift +++ b/TableProTests/Plugins/OracleColumnStatementsTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Oracle column statements") struct OracleColumnStatementsTests { private static let table = "\"HR\".\"T\"" diff --git a/TableProTests/Plugins/OracleConnectionErrorTests.swift b/TableProTests/Plugins/OracleConnectionErrorTests.swift index 9244a27edb..d2aa59d6d0 100644 --- a/TableProTests/Plugins/OracleConnectionErrorTests.swift +++ b/TableProTests/Plugins/OracleConnectionErrorTests.swift @@ -6,7 +6,6 @@ import Testing /// is `Packages/TableProOracle/Tests/TableProOracleCoreTests/OracleConnectErrorClassifierTests` /// and is where the classification that ships is pinned. The two sets have already drifted and /// nothing forces them to agree; a green run here says nothing about the driver. -@Suite("Oracle channel-fatal error classification") struct OracleConnectionErrorTests { @Test("Decode and connection failures are treated as channel-fatal") func channelFatalCodes() { @@ -23,7 +22,6 @@ struct OracleConnectionErrorTests { } } -@Suite("Oracle connect error classification") struct OracleConnectErrorClassifierTests { @Test("An unclean shutdown is a dropped handshake") func uncleanShutdownIsDropped() { diff --git a/TableProTests/Plugins/OracleObjectQueriesQualificationTests.swift b/TableProTests/Plugins/OracleObjectQueriesQualificationTests.swift index 0457165787..2b1933329c 100644 --- a/TableProTests/Plugins/OracleObjectQueriesQualificationTests.swift +++ b/TableProTests/Plugins/OracleObjectQueriesQualificationTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("Oracle object query qualification") struct OracleObjectQueriesQualificationTests { private static let bareDictionary = try! NSRegularExpression( pattern: #"\b(ALL|DBA|USER)_[A-Z_]+\b|\bDUAL\b|V\$[A-Z_]+"# diff --git a/TableProTests/Plugins/OraclePartitionMappingTests.swift b/TableProTests/Plugins/OraclePartitionMappingTests.swift index 47559f93f5..7e05798d9d 100644 --- a/TableProTests/Plugins/OraclePartitionMappingTests.swift +++ b/TableProTests/Plugins/OraclePartitionMappingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Oracle partitions carry a position rather than a bound") struct OraclePartitionMappingTests { @Test("A partition states no bound, because HIGH_VALUE is a LONG column the driver cannot read") func partitionsCarryNoBound() { diff --git a/TableProTests/Plugins/PluginBoundedStreamTimingTests.swift b/TableProTests/Plugins/PluginBoundedStreamTimingTests.swift index 62cac33a70..278f419b24 100644 --- a/TableProTests/Plugins/PluginBoundedStreamTimingTests.swift +++ b/TableProTests/Plugins/PluginBoundedStreamTimingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginBoundedStream timing") struct PluginBoundedStreamTimingTests { private func stream( header: PluginStreamHeader, diff --git a/TableProTests/Plugins/PluginCellValueSortKeyTests.swift b/TableProTests/Plugins/PluginCellValueSortKeyTests.swift index a3c3abb878..dae5b066dd 100644 --- a/TableProTests/Plugins/PluginCellValueSortKeyTests.swift +++ b/TableProTests/Plugins/PluginCellValueSortKeyTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginCellValue - sortKey") struct PluginCellValueSortKeyTests { @Test(".null sortKey is empty string") func nullSortKey() { diff --git a/TableProTests/Plugins/PluginColumnInfoCodableTests.swift b/TableProTests/Plugins/PluginColumnInfoCodableTests.swift index ae9efbb14a..21a60a6c63 100644 --- a/TableProTests/Plugins/PluginColumnInfoCodableTests.swift +++ b/TableProTests/Plugins/PluginColumnInfoCodableTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginColumnInfo Codable") struct PluginColumnInfoCodableTests { @Test("allowedValues round-trips through JSON encoding") func allowedValuesRoundTrip() throws { diff --git a/TableProTests/Plugins/PluginColumnInfoCollationCodableTests.swift b/TableProTests/Plugins/PluginColumnInfoCollationCodableTests.swift index b8bce95fd2..e9e33314cc 100644 --- a/TableProTests/Plugins/PluginColumnInfoCollationCodableTests.swift +++ b/TableProTests/Plugins/PluginColumnInfoCollationCodableTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginColumnInfo collation spelling Codable") struct PluginColumnInfoCollationCodableTests { @Test("The collation spelling round-trips through JSON encoding") func ddlCollationRoundTrip() throws { diff --git a/TableProTests/Plugins/PluginIndexInfoCodableTests.swift b/TableProTests/Plugins/PluginIndexInfoCodableTests.swift index 00692e6548..8f6c00e2df 100644 --- a/TableProTests/Plugins/PluginIndexInfoCodableTests.swift +++ b/TableProTests/Plugins/PluginIndexInfoCodableTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginIndexInfo and PluginIndexDefinition index fields") struct PluginIndexInfoCodableTests { @Test("A payload written before the new fields existed decodes with none of them") func legacyPayloadDecodesToNil() throws { diff --git a/TableProTests/Plugins/PluginQueryCancellationGateTests.swift b/TableProTests/Plugins/PluginQueryCancellationGateTests.swift index afa5f51983..dc1c95bd2e 100644 --- a/TableProTests/Plugins/PluginQueryCancellationGateTests.swift +++ b/TableProTests/Plugins/PluginQueryCancellationGateTests.swift @@ -6,7 +6,6 @@ @testable import TableProPluginKit import Testing -@Suite("Plugin query cancellation gate") struct PluginQueryCancellationGateTests { @Test("Cancelling while no query is running is a no-op") func cancelWhileIdleReturnsNil() { diff --git a/TableProTests/Plugins/PluginSSLClassifierTests.swift b/TableProTests/Plugins/PluginSSLClassifierTests.swift index e7f5b3f788..42193a6891 100644 --- a/TableProTests/Plugins/PluginSSLClassifierTests.swift +++ b/TableProTests/Plugins/PluginSSLClassifierTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("LibPQ SSL Classifier") struct LibPQClassifierTests { @Test("Classifies the AWS RDS rejection in #1298 as serverRejectedPlaintext") func testRDSPattern() { @@ -56,7 +55,6 @@ struct LibPQClassifierTests { } } -@Suite("MariaDB SSL Classifier") struct MariaDBClassifierTests { @Test("CR_SSL_CONNECTION_ERROR with cipher message → cipherMismatch") func testSSLConnectionError() { @@ -94,7 +92,6 @@ struct MariaDBClassifierTests { } } -@Suite("MongoDB SSL Classifier") struct MongoDBClassifierTests { @Test("Atlas internal-error handshake failure → unknown, not cipherMismatch") func testAtlasInternalErrorHandshake() { @@ -139,7 +136,6 @@ struct MongoDBClassifierTests { } } -@Suite("Redis SSL Classifier") struct RedisClassifierTests { @Test("No shared cipher → cipherMismatch") func testNoSharedCipher() { @@ -158,7 +154,6 @@ struct RedisClassifierTests { } } -@Suite("Oracle SSL Classifier") struct OracleClassifierTests { @Test("ORA-29024 → cipherMismatch") func testORA29024() { @@ -182,7 +177,6 @@ struct OracleClassifierTests { } } -@Suite("ClickHouse SSL Classifier") struct ClickHouseClassifierTests { @Test("URLError.secureConnectionFailed → cipherMismatch") func testSecureConnectionFailed() { @@ -209,7 +203,6 @@ struct ClickHouseClassifierTests { } } -@Suite("Cassandra Client Key Classifier") struct CassandraClassifierTests { private let encryptedPkcs8 = "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIF...\n-----END ENCRYPTED PRIVATE KEY-----" private let encryptedPkcs1 = """ diff --git a/TableProTests/Plugins/PluginTableInfoTests.swift b/TableProTests/Plugins/PluginTableInfoTests.swift index 91f353276e..a62a021834 100644 --- a/TableProTests/Plugins/PluginTableInfoTests.swift +++ b/TableProTests/Plugins/PluginTableInfoTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PluginTableInfo") struct PluginTableInfoTests { @Test("Init without comment leaves it nil") func initWithoutComment() { diff --git a/TableProTests/Plugins/PostGISSpatialRewriteTests.swift b/TableProTests/Plugins/PostGISSpatialRewriteTests.swift index 9ff84c21e0..f951db5fb5 100644 --- a/TableProTests/Plugins/PostGISSpatialRewriteTests.swift +++ b/TableProTests/Plugins/PostGISSpatialRewriteTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("PostGISSpatialRewrite.conversionQuery") struct PostGISConversionQueryTests { private let geometry = PostGISType(name: "geometry", schema: "public") private let geography = PostGISType(name: "geography", schema: "gis") @@ -67,7 +66,6 @@ struct PostGISConversionQueryTests { } } -@Suite("PostGISSpatialRewrite.arrayLiteral") struct PostGISArrayLiteralTests { @Test("Single hex value is quoted") func singleValue() { diff --git a/TableProTests/Plugins/PostgreSQLApproximateRowCountQueryTests.swift b/TableProTests/Plugins/PostgreSQLApproximateRowCountQueryTests.swift index 4d18a12a04..8e96dac867 100644 --- a/TableProTests/Plugins/PostgreSQLApproximateRowCountQueryTests.swift +++ b/TableProTests/Plugins/PostgreSQLApproximateRowCountQueryTests.swift @@ -1,7 +1,6 @@ import Foundation import Testing -@Suite("PostgreSQLSchemaQueries.approximateRowCount") struct PostgreSQLApproximateRowCountQueryTests { @Test("The estimate is read from the named schema and table") func namesSchemaAndTableAsLiterals() { diff --git a/TableProTests/Plugins/PostgreSQLCatalogCompatibilityTests.swift b/TableProTests/Plugins/PostgreSQLCatalogCompatibilityTests.swift index 57cc3e1732..3bc8ae404c 100644 --- a/TableProTests/Plugins/PostgreSQLCatalogCompatibilityTests.swift +++ b/TableProTests/Plugins/PostgreSQLCatalogCompatibilityTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLTableListing.query") struct PostgreSQLFetchTablesQueryTests { @Test("Always selects base tables and views from information_schema") func alwaysIncludesBaseTables() { @@ -68,7 +67,6 @@ struct PostgreSQLFetchTablesQueryTests { } } -@Suite("PostgreSQLCatalogPresence") struct PostgreSQLCatalogPresenceTests { @Test("Parses a single present catalog") func parsesSingleCatalog() { diff --git a/TableProTests/Plugins/PostgreSQLCatalogForeignKeysTests.swift b/TableProTests/Plugins/PostgreSQLCatalogForeignKeysTests.swift index dcff6d5ea9..7edb491b6e 100644 --- a/TableProTests/Plugins/PostgreSQLCatalogForeignKeysTests.swift +++ b/TableProTests/Plugins/PostgreSQLCatalogForeignKeysTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLCatalogForeignKeys") struct PostgreSQLCatalogForeignKeysTests { private func row( identity: String = "100", diff --git a/TableProTests/Plugins/PostgreSQLCatalogSQLPinTests.swift b/TableProTests/Plugins/PostgreSQLCatalogSQLPinTests.swift index ecc459eced..a636f640cc 100644 --- a/TableProTests/Plugins/PostgreSQLCatalogSQLPinTests.swift +++ b/TableProTests/Plugins/PostgreSQLCatalogSQLPinTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL catalog SQL shared with iOS") struct PostgreSQLCatalogSQLPinTests { @Test("The listing iOS runs, with the optional catalogs and without comments or partitions") func iOSListing() { diff --git a/TableProTests/Plugins/PostgreSQLCatalogTypeNamesTests.swift b/TableProTests/Plugins/PostgreSQLCatalogTypeNamesTests.swift index 2020c24a12..af37b72506 100644 --- a/TableProTests/Plugins/PostgreSQLCatalogTypeNamesTests.swift +++ b/TableProTests/Plugins/PostgreSQLCatalogTypeNamesTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("PostgreSQL catalog type names") struct PostgreSQLCatalogTypeNamesTests { private func row( oid: UInt32 = 16_385, diff --git a/TableProTests/Plugins/PostgreSQLColumnClausesTests.swift b/TableProTests/Plugins/PostgreSQLColumnClausesTests.swift index 6777ae7c7a..a208f7d8fc 100644 --- a/TableProTests/Plugins/PostgreSQLColumnClausesTests.swift +++ b/TableProTests/Plugins/PostgreSQLColumnClausesTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLColumnClauses") struct PostgreSQLColumnClausesTests { private func column( dataType: String = "geometry", diff --git a/TableProTests/Plugins/PostgreSQLColumnCollationClauseTests.swift b/TableProTests/Plugins/PostgreSQLColumnCollationClauseTests.swift index 5e4e8429ad..b2cea5d350 100644 --- a/TableProTests/Plugins/PostgreSQLColumnCollationClauseTests.swift +++ b/TableProTests/Plugins/PostgreSQLColumnCollationClauseTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLColumnClauses collation") struct PostgreSQLColumnCollationClauseTests { private func column( dataType: String = "CHARACTER VARYING", diff --git a/TableProTests/Plugins/PostgreSQLColumnDDLSequenceCollationTests.swift b/TableProTests/Plugins/PostgreSQLColumnDDLSequenceCollationTests.swift index 524bb598a1..52c9ff36b8 100644 --- a/TableProTests/Plugins/PostgreSQLColumnDDLSequenceCollationTests.swift +++ b/TableProTests/Plugins/PostgreSQLColumnDDLSequenceCollationTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLSchemaQueries.columnDDLQuery sequences and collation") struct PostgreSQLColumnDDLQuerySequenceCollationTests { private let query = PostgreSQLSchemaQueries.columnDDLQuery( schema: "sales", table: "orders", capabilities: PostgreSQLCapabilities(serverVersion: 170_000) @@ -60,7 +59,6 @@ struct PostgreSQLColumnDDLQuerySequenceCollationTests { } } -@Suite("PostgreSQLSchemaQueries.columnDDL sequences and collation") struct PostgreSQLColumnDDLParsingSequenceCollationTests { private func row( _ expression: String?, @@ -121,7 +119,6 @@ struct PostgreSQLColumnDDLParsingSequenceCollationTests { } } -@Suite("PostgreSQL dependent sequences and the column DDL read") struct PostgreSQLSequenceDependencyParityTests { @Test("Both read the column default's pg_depend rows, each with its own correlation") func bothStartFromTheColumnDefaultDependency() { diff --git a/TableProTests/Plugins/PostgreSQLColumnQueryTests.swift b/TableProTests/Plugins/PostgreSQLColumnQueryTests.swift index 5d77f7c57a..580404bfbc 100644 --- a/TableProTests/Plugins/PostgreSQLColumnQueryTests.swift +++ b/TableProTests/Plugins/PostgreSQLColumnQueryTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLSchemaQueries.columnsQuery") struct PostgreSQLColumnsQueryTests { private let modern = PostgreSQLCapabilities(serverVersion: 170_000) private let legacy = PostgreSQLCapabilities(serverVersion: 90_100) @@ -125,7 +124,6 @@ struct PostgreSQLColumnsQueryTests { } } -@Suite("PostgreSQLSchemaQueries.columnsQuery materialized views") struct PostgreSQLMaterializedViewColumnsQueryTests { private let modern = PostgreSQLCapabilities(serverVersion: 170_000) private let legacy = PostgreSQLCapabilities(serverVersion: 90_100) @@ -270,7 +268,6 @@ struct PostgreSQLMaterializedViewColumnsQueryTests { } } -@Suite("RedshiftSchemaQueries.columnsQuery") struct RedshiftColumnsQueryTests { @Test("single-table query filters on the requested schema and table") func singleTableFiltersOnRequestedSchema() { @@ -316,7 +313,6 @@ struct RedshiftColumnsQueryTests { } } -@Suite("PostgreSQLSchemaQueries.columnDDLQuery") struct PostgreSQLColumnDDLQueryTests { private let modern = PostgreSQLCapabilities(serverVersion: 170_000) private let legacy = PostgreSQLCapabilities(serverVersion: 90_100) @@ -367,7 +363,6 @@ struct PostgreSQLColumnDDLQueryTests { } } -@Suite("PostgreSQLSchemaQueries.columnDDL") struct PostgreSQLColumnDDLParsingTests { private func row( _ table: String?, diff --git a/TableProTests/Plugins/PostgreSQLColumnTypeSpellingTests.swift b/TableProTests/Plugins/PostgreSQLColumnTypeSpellingTests.swift index 7383abd6c6..3f393de0ef 100644 --- a/TableProTests/Plugins/PostgreSQLColumnTypeSpellingTests.swift +++ b/TableProTests/Plugins/PostgreSQLColumnTypeSpellingTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLColumnTypeSpelling") struct PostgreSQLColumnTypeSpellingTests { private func resolve( declared: String?, @@ -129,7 +128,6 @@ struct PostgreSQLColumnTypeSpellingTests { } } -@Suite("PostgreSQLSchemaQueries schema-relative read") struct PostgreSQLSchemaRelativeReadTests { @Test("The prefix narrows the path to pg_catalog and the schema, with the identifier quoted") func prefixQuotesTheSchema() { diff --git a/TableProTests/Plugins/PostgreSQLCommentStatementsTests.swift b/TableProTests/Plugins/PostgreSQLCommentStatementsTests.swift index f53ae8bf15..2112e8a0fe 100644 --- a/TableProTests/Plugins/PostgreSQLCommentStatementsTests.swift +++ b/TableProTests/Plugins/PostgreSQLCommentStatementsTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("PostgreSQL comment statements") struct PostgreSQLCommentStatementsTests { private func row(relkind: String, column: String?, description: String?) -> [String?] { [relkind, column, description] diff --git a/TableProTests/Plugins/PostgreSQLDefaultSchemaFallbackTests.swift b/TableProTests/Plugins/PostgreSQLDefaultSchemaFallbackTests.swift index 6c3b3e126c..4482aeb561 100644 --- a/TableProTests/Plugins/PostgreSQLDefaultSchemaFallbackTests.swift +++ b/TableProTests/Plugins/PostgreSQLDefaultSchemaFallbackTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLSchemaQueries default schema fallback") struct PostgreSQLDefaultSchemaFallbackTests { @Test("asks the server for the active schema first") func currentSchemaQuery() { @@ -41,7 +40,6 @@ struct PostgreSQLDefaultSchemaFallbackTests { } } -@Suite("PostgreSQLSchemaQueries.probe") struct PostgreSQLSchemaProbeTests { @Test("reports the schema when the first cell holds text") func schemaFromText() { diff --git a/TableProTests/Plugins/PostgreSQLFetchTablesAllSchemasTests.swift b/TableProTests/Plugins/PostgreSQLFetchTablesAllSchemasTests.swift index ee76fd705c..5477af5969 100644 --- a/TableProTests/Plugins/PostgreSQLFetchTablesAllSchemasTests.swift +++ b/TableProTests/Plugins/PostgreSQLFetchTablesAllSchemasTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLTableListing.query across every schema") struct PostgreSQLFetchTablesAllSchemasTests { private static let attempts = PostgreSQLTableListingLadder.degradableAttempts + [PostgreSQLTableListingLadder.leastCapableAttempt] diff --git a/TableProTests/Plugins/PostgreSQLFetchTablesCommentTests.swift b/TableProTests/Plugins/PostgreSQLFetchTablesCommentTests.swift index f81b2fa8bb..727b980a25 100644 --- a/TableProTests/Plugins/PostgreSQLFetchTablesCommentTests.swift +++ b/TableProTests/Plugins/PostgreSQLFetchTablesCommentTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLTableListing.query comments") struct PostgreSQLFetchTablesCommentTests { @Test("Base query selects the table comment via obj_description") func baseQuerySelectsComment() { diff --git a/TableProTests/Plugins/PostgreSQLIndexMethodTests.swift b/TableProTests/Plugins/PostgreSQLIndexMethodTests.swift index cf134c92c3..82b575820e 100644 --- a/TableProTests/Plugins/PostgreSQLIndexMethodTests.swift +++ b/TableProTests/Plugins/PostgreSQLIndexMethodTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL index access method") struct PostgreSQLIndexMethodTests { private static let table = #""dst"."items""# diff --git a/TableProTests/Plugins/PostgreSQLIndexReplayTests.swift b/TableProTests/Plugins/PostgreSQLIndexReplayTests.swift index d467f2b4fc..0a6b4c2cdb 100644 --- a/TableProTests/Plugins/PostgreSQLIndexReplayTests.swift +++ b/TableProTests/Plugins/PostgreSQLIndexReplayTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL index key parts") struct PostgreSQLIndexKeyPartTests { private static let modern = PostgreSQLCapabilities(serverVersion: 170_011) private static let beforeCoveringIndexes = PostgreSQLCapabilities(serverVersion: 100_021) @@ -148,7 +147,6 @@ struct PostgreSQLIndexKeyPartTests { } } -@Suite("PostgreSQL index DDL spelling read") struct PostgreSQLIndexDDLQueryTests { @Test("The prefix is built on the server with quote_ident, the way pg_get_indexdef quotes") func prefixUsesQuoteIdent() { @@ -208,7 +206,6 @@ struct PostgreSQLIndexDDLQueryTests { } } -@Suite("PostgreSQL index clauses") struct PostgreSQLIndexClausesTests { private static let table = #""dst"."users""# diff --git a/TableProTests/Plugins/PostgreSQLLegacyCatalogQueryTests.swift b/TableProTests/Plugins/PostgreSQLLegacyCatalogQueryTests.swift index 225ab3b91d..d3cb813c13 100644 --- a/TableProTests/Plugins/PostgreSQLLegacyCatalogQueryTests.swift +++ b/TableProTests/Plugins/PostgreSQLLegacyCatalogQueryTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL catalog reads that PostgreSQL 9.1 accepts") struct PostgreSQLLegacyCatalogQueryTests { private static let constructsMissingBefore96 = [ "to_regclass", "LATERAL", "WITH ORDINALITY", "json", "array_remove", "array_position", "FILTER (", @@ -75,7 +74,6 @@ struct PostgreSQLLegacyCatalogQueryTests { } } -@Suite("PostgreSQL foreign key catalog read") struct PostgreSQLForeignKeyQueryTests { private static let modern = PostgreSQLCapabilities(serverVersion: 170_011) private static let beforeConstraintParent = PostgreSQLCapabilities(serverVersion: 100_021) @@ -163,7 +161,6 @@ struct PostgreSQLForeignKeyQueryTests { } } -@Suite("PostgreSQL index catalog read") struct PostgreSQLIndexQueryTests { private static let modern = PostgreSQLCapabilities(serverVersion: 170_011) @@ -213,7 +210,6 @@ struct PostgreSQLIndexQueryTests { } } -@Suite("PostgreSQL check constraint columns") struct PostgreSQLCheckConstraintColumnTests { @Test("Column names come back whole from the array literal the server prints") func hostileNames() { @@ -236,7 +232,6 @@ struct PostgreSQLCheckConstraintColumnTests { } } -@Suite("PostgreSQL sequence reads") struct PostgreSQLSequenceQueryTests { @Test("pg_sequences is read wherever it exists, and every other server reads the sequences one by one") func sourceSelection() { @@ -361,7 +356,6 @@ struct PostgreSQLSequenceQueryTests { } } -@Suite("PostgreSQL collation and table metadata reads") struct PostgreSQLCollationAndMetadataQueryTests { @Test("Before PostgreSQL 10 every collation but the default is a libc one") func legacyCollations() { @@ -388,7 +382,6 @@ struct PostgreSQLCollationAndMetadataQueryTests { } } -@Suite("PostgreSQL grant reads") struct PostgreSQLGrantQueryTests { @Test("aclexplode runs in a subquery's select list, which PostgreSQL 9.1 accepts") func grantsAvoidLateral() { @@ -407,7 +400,6 @@ struct PostgreSQLGrantQueryTests { } } -@Suite("PostgreSQL catalog booleans") struct PostgreSQLCatalogBooleanTests { @Test("The driver hands a boolean column over as true or false, and a text cast may say t or f") func spellings() { diff --git a/TableProTests/Plugins/PostgreSQLLiteralQuotingTests.swift b/TableProTests/Plugins/PostgreSQLLiteralQuotingTests.swift index 887e037c00..0523f1cc9c 100644 --- a/TableProTests/Plugins/PostgreSQLLiteralQuotingTests.swift +++ b/TableProTests/Plugins/PostgreSQLLiteralQuotingTests.swift @@ -16,7 +16,6 @@ import Testing /// `PostgreSQLObjectQueries.quoteLiteral` is the single answer, and these cases pin both halves of /// it: an `E''` string whenever the value holds a backslash, and output byte-identical to plain /// quote doubling whenever it does not. -@Suite("PostgreSQL literal quoting") struct PostgreSQLLiteralQuotingTests { private static let caps = PostgreSQLCapabilities.assumingModernWhenUnknown(170_000) @@ -139,7 +138,6 @@ struct PostgreSQLLiteralQuotingTests { /// literal: `''E'a\\b''` is valid SQL that matches nothing, and a plain `'\(name)'` only misbehaves /// on a server running the legacy setting. So the guard is a source scan, the same shape /// `IndexDDLOwnershipTests` and `SyncMapperFieldAccessTests` use. -@Suite("PostgreSQL literal quoting source scan") struct PostgreSQLLiteralQuotingSourceScanTests { /// `PostgreSQLObjectQueries` owns the quoting and is the one file allowed to write the quotes /// itself. `LibPQConnectionString` builds a libpq conninfo string, whose quoting rules are diff --git a/TableProTests/Plugins/PostgreSQLPartitionFilterTests.swift b/TableProTests/Plugins/PostgreSQLPartitionFilterTests.swift index e2f5bbeb88..faef933f23 100644 --- a/TableProTests/Plugins/PostgreSQLPartitionFilterTests.swift +++ b/TableProTests/Plugins/PostgreSQLPartitionFilterTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLSchemaQueries partition awareness") struct PostgreSQLPartitionFilterTests { private func awareQuery() -> String { PostgreSQLTableListing.query( @@ -146,7 +145,6 @@ struct PostgreSQLPartitionFilterTests { } } -@Suite("A partition is whatever relkind says it is") struct PluginPartitionRelationTypeTests { @Test("Underscore and lower-case spellings resolve to the same relation") func normalisesDeclaredSpellings() { @@ -173,7 +171,6 @@ struct PluginPartitionRelationTypeTests { } } -@Suite("PostgreSQL partition bounds read as the server spells them") struct PostgreSQLPartitionBoundTests { @Test("The FOR VALUES prefix every row repeats is dropped") func stripsSharedPrefix() { @@ -209,7 +206,6 @@ struct PostgreSQLPartitionBoundTests { } } -@Suite("PostgreSQL table listing degradation ladder") struct PostgreSQLTableListingLadderTests { @Test("Partition awareness survives every rung that only drops columns") func partitionAwarenessDegradesLast() { diff --git a/TableProTests/Plugins/PostgreSQLRelationSQLTests.swift b/TableProTests/Plugins/PostgreSQLRelationSQLTests.swift index 220fe8b167..261bf3115d 100644 --- a/TableProTests/Plugins/PostgreSQLRelationSQLTests.swift +++ b/TableProTests/Plugins/PostgreSQLRelationSQLTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL relation statements") struct PostgreSQLRelationSQLTests { // MARK: - Comments diff --git a/TableProTests/Plugins/PostgreSQLSchemaFilterTests.swift b/TableProTests/Plugins/PostgreSQLSchemaFilterTests.swift index bea551d704..43286e740c 100644 --- a/TableProTests/Plugins/PostgreSQLSchemaFilterTests.swift +++ b/TableProTests/Plugins/PostgreSQLSchemaFilterTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLSchemaQueries.listSchemas") struct PostgreSQLListSchemasTests { @Test("retains user schemas that start with 'pg'", arguments: [ "pgboss", "pgcrypto", "pgvector", "pgaudit", "pgrouting" @@ -41,7 +40,6 @@ struct PostgreSQLListSchemasTests { } } -@Suite("PostgreSQLSchemaQueries.listSchemasRedshift") struct RedshiftListSchemasTests { @Test("retains user schemas that start with 'pg'", arguments: [ "pgboss", "pgcrypto", "pgvector" @@ -58,7 +56,6 @@ struct RedshiftListSchemasTests { } } -@Suite("PostgreSQLSchemaQueries escape character") struct PostgreSQLSchemaEscapeTests { @Test("schema queries avoid the backslash escape that Redshift rejects", arguments: [ PostgreSQLSchemaQueries.listSchemas, PostgreSQLSchemaQueries.listSchemasRedshift diff --git a/TableProTests/Plugins/PostgreSQLSchemaStatementPlannerTests.swift b/TableProTests/Plugins/PostgreSQLSchemaStatementPlannerTests.swift index d8f6650f74..913044cda2 100644 --- a/TableProTests/Plugins/PostgreSQLSchemaStatementPlannerTests.swift +++ b/TableProTests/Plugins/PostgreSQLSchemaStatementPlannerTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL schema statement planner") struct PostgreSQLSchemaStatementPlannerTests { @Test("A bare create names the schema and nothing else") func createWithoutOwner() { diff --git a/TableProTests/Plugins/PostgreSQLSearchPathTests.swift b/TableProTests/Plugins/PostgreSQLSearchPathTests.swift index 527d1ebaad..6062c7d3e2 100644 --- a/TableProTests/Plugins/PostgreSQLSearchPathTests.swift +++ b/TableProTests/Plugins/PostgreSQLSearchPathTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("PostgreSQLSchemaQueries.setSearchPath") struct PostgreSQLSearchPathTests { @Test("quotes the schema as an identifier") func plainSchema() { diff --git a/TableProTests/Plugins/PostgreSQLSequenceReferenceTests.swift b/TableProTests/Plugins/PostgreSQLSequenceReferenceTests.swift index b97f0339b9..ac390b9aba 100644 --- a/TableProTests/Plugins/PostgreSQLSequenceReferenceTests.swift +++ b/TableProTests/Plugins/PostgreSQLSequenceReferenceTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLSequenceReference") struct PostgreSQLSequenceReferenceTests { private let ordersSequence = PostgreSQLSequenceReference( qualifiedName: "sales.orders_id_seq", relativeName: "orders_id_seq" diff --git a/TableProTests/Plugins/PostgreSQLStandaloneIndexQueryTests.swift b/TableProTests/Plugins/PostgreSQLStandaloneIndexQueryTests.swift index a6faa61522..99f22398b4 100644 --- a/TableProTests/Plugins/PostgreSQLStandaloneIndexQueryTests.swift +++ b/TableProTests/Plugins/PostgreSQLStandaloneIndexQueryTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL standalone index read") struct PostgreSQLStandaloneIndexQueryTests { private static let sql = PostgreSQLIndexQueries.standaloneIndexQuery(schema: "shop", table: "orders") @@ -58,7 +57,6 @@ struct PostgreSQLStandaloneIndexQueryTests { } } -@Suite("PostgreSQL table DDL constraints read") struct PostgreSQLTableDDLConstraintsQueryTests { @Test("Exclusion constraints are written with the table, beside primary key, unique and check constraints") func exclusionConstraintsAreIncluded() { diff --git a/TableProTests/Plugins/PostgreSQLSystemDatabasesTests.swift b/TableProTests/Plugins/PostgreSQLSystemDatabasesTests.swift index 1815389be1..bd29049190 100644 --- a/TableProTests/Plugins/PostgreSQLSystemDatabasesTests.swift +++ b/TableProTests/Plugins/PostgreSQLSystemDatabasesTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("PostgreSQLSystemDatabases") struct PostgreSQLSystemDatabasesTests { @Test("PostgreSQL has no system databases") func postgreSQLHasNone() { diff --git a/TableProTests/Plugins/PostgreSQLTableListingTests.swift b/TableProTests/Plugins/PostgreSQLTableListingTests.swift index b083012ffa..66343c1e51 100644 --- a/TableProTests/Plugins/PostgreSQLTableListingTests.swift +++ b/TableProTests/Plugins/PostgreSQLTableListingTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQL table listing rows") struct PostgreSQLTableListingTests { @Test("each listed relation type keeps its kind, and any other type reads as a table") func relationTypes() { diff --git a/TableProTests/Plugins/PostgreSQLTableRebuildTests.swift b/TableProTests/Plugins/PostgreSQLTableRebuildTests.swift index b4bbaef378..4e5409d54f 100644 --- a/TableProTests/Plugins/PostgreSQLTableRebuildTests.swift +++ b/TableProTests/Plugins/PostgreSQLTableRebuildTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("PostgreSQL column reorder rebuild script") struct PostgreSQLTableRebuildTests { private static let capabilities = PostgreSQLCapabilities(serverVersion: 170_011) diff --git a/TableProTests/Plugins/PostgreSQLTransactionStatementTests.swift b/TableProTests/Plugins/PostgreSQLTransactionStatementTests.swift index 801f491a2e..ddb6c32b0d 100644 --- a/TableProTests/Plugins/PostgreSQLTransactionStatementTests.swift +++ b/TableProTests/Plugins/PostgreSQLTransactionStatementTests.swift @@ -6,7 +6,6 @@ import TableProPluginKit import Testing -@Suite("PostgreSQL Begin Transaction Statement") struct PostgreSQLTransactionStatementTests { @Test("A read-write transaction declares the access mode so a read-only session default is overridden") func readWriteDeclaresAccessMode() { diff --git a/TableProTests/Plugins/PostgreSQLTypeDefinitionTests.swift b/TableProTests/Plugins/PostgreSQLTypeDefinitionTests.swift index 2c0da383df..d873e46083 100644 --- a/TableProTests/Plugins/PostgreSQLTypeDefinitionTests.swift +++ b/TableProTests/Plugins/PostgreSQLTypeDefinitionTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("PostgreSQL type definitions") struct PostgreSQLTypeDefinitionTests { private func record( name: String = "mood", diff --git a/TableProTests/Plugins/PostgreSQLTypeQueryTests.swift b/TableProTests/Plugins/PostgreSQLTypeQueryTests.swift index 3fa93767a4..b74c2e45d3 100644 --- a/TableProTests/Plugins/PostgreSQLTypeQueryTests.swift +++ b/TableProTests/Plugins/PostgreSQLTypeQueryTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("PostgreSQL type catalog queries") struct PostgreSQLTypeQueryTests { @Test("The listing reads pg_type for enums, composites, domains and ranges in one schema") func listReadsPgType() { diff --git a/TableProTests/Plugins/PostgreSQLVersionedStatementsTests.swift b/TableProTests/Plugins/PostgreSQLVersionedStatementsTests.swift index 886a769701..e7dfff4d10 100644 --- a/TableProTests/Plugins/PostgreSQLVersionedStatementsTests.swift +++ b/TableProTests/Plugins/PostgreSQLVersionedStatementsTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("PostgreSQLVersionedStatements") struct PostgreSQLVersionedStatementsTests { private static let v91 = PostgreSQLCapabilities(serverVersion: 90_124) private static let v92 = PostgreSQLCapabilities(serverVersion: 90_223) diff --git a/TableProTests/Plugins/PostgreSQLViewDefinitionTests.swift b/TableProTests/Plugins/PostgreSQLViewDefinitionTests.swift index 5eba57e5b1..b289c36571 100644 --- a/TableProTests/Plugins/PostgreSQLViewDefinitionTests.swift +++ b/TableProTests/Plugins/PostgreSQLViewDefinitionTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("PostgreSQL view definition") struct PostgreSQLViewDefinitionTests { private let body = " SELECT id,\n v\n FROM sales.orders\n WHERE (id > 0);" diff --git a/TableProTests/Plugins/PostgresArrayLiteralCodecTests.swift b/TableProTests/Plugins/PostgresArrayLiteralCodecTests.swift index d20b3d9271..10e3a6bae1 100644 --- a/TableProTests/Plugins/PostgresArrayLiteralCodecTests.swift +++ b/TableProTests/Plugins/PostgresArrayLiteralCodecTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Postgres Array Literal Codec") struct PostgresArrayLiteralCodecTests { private let hostileLiteral = #"{"a,b","has \"quote\"","back\\slash"," lead","trail ","","NULL","null","{brace}",NULL}"# diff --git a/TableProTests/Plugins/PostgresColumnTypeResolverTests.swift b/TableProTests/Plugins/PostgresColumnTypeResolverTests.swift index 561c0b69c1..15b52ebedb 100644 --- a/TableProTests/Plugins/PostgresColumnTypeResolverTests.swift +++ b/TableProTests/Plugins/PostgresColumnTypeResolverTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Postgres Column Type Resolver") struct PostgresColumnTypeResolverTests { private let enumLabels = [ "app.mood": ["sad", "ok", "happy"], diff --git a/TableProTests/Plugins/RedisAuthCommandTests.swift b/TableProTests/Plugins/RedisAuthCommandTests.swift index 8770e15137..577e1e2b27 100644 --- a/TableProTests/Plugins/RedisAuthCommandTests.swift +++ b/TableProTests/Plugins/RedisAuthCommandTests.swift @@ -1,7 +1,6 @@ import Foundation import Testing -@Suite("Redis AUTH command") struct RedisAuthCommandTests { @Test("no credentials at all sends no AUTH") func noCredentials() { diff --git a/TableProTests/Plugins/RedisClusterAggregatorTests.swift b/TableProTests/Plugins/RedisClusterAggregatorTests.swift index 6d005d1044..88321f24fc 100644 --- a/TableProTests/Plugins/RedisClusterAggregatorTests.swift +++ b/TableProTests/Plugins/RedisClusterAggregatorTests.swift @@ -13,7 +13,6 @@ private func intValue(_ reply: RedisReply) -> Int64? { return value } -@Suite("Redis cluster aggregation - keyspace across primaries") struct RedisClusterAggregatorKeyspaceTests { @Test("Each database's key counts add up across the primaries") func sumsPerDatabase() { @@ -31,7 +30,6 @@ struct RedisClusterAggregatorKeyspaceTests { } } -@Suite("Redis cluster aggregation - numeric policies") struct RedisClusterAggregatorNumericTests { @Test("agg_sum adds every shard's count, which is what DBSIZE needs") func sums() { @@ -68,7 +66,6 @@ struct RedisClusterAggregatorNumericTests { } } -@Suite("Redis cluster aggregation - success policies") struct RedisClusterAggregatorSuccessTests { @Test("all_succeeded surfaces the first error, so a half-applied FLUSHDB is not reported as OK") func allSucceededSurfacesError() { @@ -101,7 +98,6 @@ struct RedisClusterAggregatorSuccessTests { } } -@Suite("Redis cluster aggregation - defaults") struct RedisClusterAggregatorDefaultTests { @Test("With no policy, arrays concatenate, which is what KEYS needs") func concatenatesArrays() { @@ -136,7 +132,6 @@ struct RedisClusterAggregatorDefaultTests { /// deleted `app:1` on one shard and was refused on the other, and the driver reported one /// deletion; with `-dbsize` on one master, or that master busy running a script, the sidebar /// counted only the other master's keys. -@Suite("Redis cluster aggregation - a shard that did not answer") struct RedisClusterAggregatorShardFailureTests { static let loading = "LOADING Redis is loading the dataset in memory" @@ -202,7 +197,6 @@ struct RedisClusterAggregatorShardFailureTests { } } -@Suite("Redis cluster aggregation - replies that are not one number") struct RedisClusterAggregatorShapeTests { private static func integers(_ reply: RedisReply) -> [Int64?]? { reply.arrayValue?.map(intValue) diff --git a/TableProTests/Plugins/RedisClusterChannelTests.swift b/TableProTests/Plugins/RedisClusterChannelTests.swift index 5b7fbaecff..b6fa7f07d4 100644 --- a/TableProTests/Plugins/RedisClusterChannelTests.swift +++ b/TableProTests/Plugins/RedisClusterChannelTests.swift @@ -26,7 +26,6 @@ private func entry( private let keyRefusal = "NOPERM No permissions to access a key" -@Suite("Redis cluster channel - how far a command goes") struct RedisClusterDispatchTests { @Test("CONFIG SET goes to every node") func configSetReachesEveryNode() async throws { @@ -108,7 +107,6 @@ struct RedisClusterDispatchTests { } } -@Suite("Redis cluster channel - a split write only some shards applied") struct RedisClusterPartialWriteTests { @Test("A split DEL one shard refused names the keys the other already deleted") func refusedPart() async throws { @@ -182,7 +180,6 @@ struct RedisClusterPartialWriteTests { } } -@Suite("Redis cluster channel - numbered databases") struct RedisClusterDatabaseSelectionTests { private static let sixteen = (StubRedisCluster.servedDatabases(16), StubRedisCluster.servedDatabases(16)) diff --git a/TableProTests/Plugins/RedisClusterCursorTests.swift b/TableProTests/Plugins/RedisClusterCursorTests.swift index 335fe284b0..d3e712ea8e 100644 --- a/TableProTests/Plugins/RedisClusterCursorTests.swift +++ b/TableProTests/Plugins/RedisClusterCursorTests.swift @@ -12,7 +12,6 @@ import Testing private let nodes = ["a1b2", "c3d4", "e5f6"] -@Suite("Redis cluster cursor - walking the nodes") struct RedisClusterCursorWalkTests { @Test("A fresh scan starts on the first node") func startsAtFirstNode() { @@ -54,7 +53,6 @@ struct RedisClusterCursorWalkTests { } } -@Suite("Redis cluster cursor - topology changes") struct RedisClusterCursorTopologyTests { @Test("A cursor naming a node the cluster no longer has restarts rather than scanning the wrong one") func unknownNodeRestarts() { diff --git a/TableProTests/Plugins/RedisClusterRedirectTests.swift b/TableProTests/Plugins/RedisClusterRedirectTests.swift index e3f8ec1716..cb18852ba9 100644 --- a/TableProTests/Plugins/RedisClusterRedirectTests.swift +++ b/TableProTests/Plugins/RedisClusterRedirectTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("Redis cluster redirect - MOVED and ASK") struct RedisClusterRedirectParsingTests { @Test("Parses a MOVED with a full endpoint") func parsesMoved() { @@ -53,7 +52,6 @@ struct RedisClusterRedirectParsingTests { } } -@Suite("Redis cluster redirect - other control errors") struct RedisClusterRedirectControlTests { @Test("Parses TRYAGAIN with its slot") func parsesTryAgain() { @@ -79,7 +77,6 @@ struct RedisClusterRedirectControlTests { } } -@Suite("Redis cluster redirect - non-redirects") struct RedisClusterRedirectRejectionTests { static let notRedirects = [ "WRONGTYPE Operation against a key holding the wrong kind of value", diff --git a/TableProTests/Plugins/RedisClusterTopologyTests.swift b/TableProTests/Plugins/RedisClusterTopologyTests.swift index e71bb73793..d2ab59ac9b 100644 --- a/TableProTests/Plugins/RedisClusterTopologyTests.swift +++ b/TableProTests/Plugins/RedisClusterTopologyTests.swift @@ -48,7 +48,6 @@ private func slotsReply() -> RedisReply { ]) } -@Suite("Redis cluster topology - CLUSTER SHARDS") struct RedisClusterShardsParsingTests { @Test("Reads both shards with their primaries") func parsesShards() throws { @@ -116,7 +115,6 @@ struct RedisClusterShardsParsingTests { } } -@Suite("Redis cluster topology - CLUSTER SLOTS") struct RedisClusterSlotsParsingTests { @Test("Reads the same picture as CLUSTER SHARDS") func matchesShards() throws { @@ -160,7 +158,6 @@ struct RedisClusterSlotsParsingTests { } } -@Suite("Redis cluster topology - slot migration") struct RedisClusterTopologyMigrationTests { @Test("Moving a slot re-points it without a full reload") func movesOneSlot() throws { diff --git a/TableProTests/Plugins/RedisCommandRoutingTests.swift b/TableProTests/Plugins/RedisCommandRoutingTests.swift index 8d29e61913..bd55682109 100644 --- a/TableProTests/Plugins/RedisCommandRoutingTests.swift +++ b/TableProTests/Plugins/RedisCommandRoutingTests.swift @@ -35,7 +35,6 @@ private func commandEntry( ]) } -@Suite("Redis command routing - key extraction") struct RedisCommandRoutingKeyTests { let routing = RedisCommandRouting() @@ -86,7 +85,6 @@ struct RedisCommandRoutingKeyTests { } } -@Suite("Redis command routing - policies") struct RedisCommandRoutingPolicyTests { let routing = RedisCommandRouting() @@ -198,7 +196,6 @@ struct RedisCommandRoutingPolicyTests { } } -@Suite("Redis command routing - COMMAND reply") struct RedisCommandRoutingParsingTests { @Test("Reads key positions from the server's own answer") func parsesKeyPositions() throws { @@ -370,7 +367,6 @@ struct RedisCommandRoutingParsingTests { } } -@Suite("Redis command routing - how far a command fans out on a cluster") struct RedisClusterFanOutTests { let routing = RedisCommandRouting() @@ -401,7 +397,6 @@ struct RedisClusterFanOutTests { } } -@Suite("Redis command routing - key index arithmetic") struct RedisCommandSpecIndexTests { private func spec(first: Int, last: Int, step: Int) -> RedisCommandSpec { RedisCommandSpec( diff --git a/TableProTests/Plugins/RedisConnectProbeTests.swift b/TableProTests/Plugins/RedisConnectProbeTests.swift index 52647149aa..22faf53bed 100644 --- a/TableProTests/Plugins/RedisConnectProbeTests.swift +++ b/TableProTests/Plugins/RedisConnectProbeTests.swift @@ -1,7 +1,6 @@ import Foundation import Testing -@Suite("Redis connect probe") struct RedisConnectProbeTests { @Test("a reply with no error means the server bound the session") func successEstablishes() { diff --git a/TableProTests/Plugins/RedisConnectionFieldsTests.swift b/TableProTests/Plugins/RedisConnectionFieldsTests.swift index 08a9a0a0d7..89635a1973 100644 --- a/TableProTests/Plugins/RedisConnectionFieldsTests.swift +++ b/TableProTests/Plugins/RedisConnectionFieldsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis connection fields") struct RedisConnectionFieldsTests { private func redisFields() throws -> [ConnectionField] { let snapshot = try #require(PluginMetadataRegistry.shared.snapshot(forRegisteredTypeId: "Redis")) @@ -103,7 +102,6 @@ struct RedisConnectionFieldsTests { } } -@Suite("Connection field visibility across panes") struct ConnectionFieldCrossPaneVisibilityTests { private let mode = ConnectionField( id: "redisMode", diff --git a/TableProTests/Plugins/RedisConnectionModeTests.swift b/TableProTests/Plugins/RedisConnectionModeTests.swift index 29e8675c0a..4016a178c8 100644 --- a/TableProTests/Plugins/RedisConnectionModeTests.swift +++ b/TableProTests/Plugins/RedisConnectionModeTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("Redis connection mode") struct RedisConnectionModeTests { @Test("An unset mode is standalone, so an existing connection keeps working") func defaultsToStandalone() { @@ -34,7 +33,6 @@ struct RedisConnectionModeTests { } } -@Suite("Redis host list parsing") struct RedisHostListParserTests { @Test("A comma-separated list becomes one address per entry") func parsesList() { @@ -86,7 +84,6 @@ struct RedisHostListParserTests { } } -@Suite("Redis server info") struct RedisServerInfoTests { private let clusterInfo = "# Server\r\nredis_version:8.10.1\r\nredis_mode:cluster\r\n" private let sentinelInfo = "# Server\r\nredis_version:8.10.1\r\nredis_mode:sentinel\r\n" @@ -142,7 +139,6 @@ struct RedisServerInfoTests { } } -@Suite("Redis topology diagnostics") struct RedisTopologyDiagnosticsTests { @Test("Standalone pointed at a cluster member says to switch to Cluster") func standaloneAtCluster() throws { diff --git a/TableProTests/Plugins/RedisDatabaseIndexTests.swift b/TableProTests/Plugins/RedisDatabaseIndexTests.swift index 91cdce1719..73cbe8addf 100644 --- a/TableProTests/Plugins/RedisDatabaseIndexTests.swift +++ b/TableProTests/Plugins/RedisDatabaseIndexTests.swift @@ -1,7 +1,6 @@ import Foundation import Testing -@Suite("Redis database index") struct RedisDatabaseIndexTests { @Test("the dedicated field wins over the database name") func fieldWins() { diff --git a/TableProTests/Plugins/RedisDatabaseListingTests.swift b/TableProTests/Plugins/RedisDatabaseListingTests.swift index 98f7f89d82..2eb3b5a63a 100644 --- a/TableProTests/Plugins/RedisDatabaseListingTests.swift +++ b/TableProTests/Plugins/RedisDatabaseListingTests.swift @@ -14,7 +14,6 @@ import Testing private struct TransportFailure: Error, Equatable {} -@Suite("Redis metadata read - what counts as the server declining") struct RedisMetadataReadTests { static let declined: [String] = [ "ERR unknown command 'CONFIG', with args beginning with: 'GET' 'databases' ", @@ -52,7 +51,6 @@ struct RedisMetadataReadTests { } } -@Suite("Redis command channel - metadata reads") struct RedisCommandChannelMetadataReadTests { @Test("A declined read answers nil instead of throwing") func declinedReadIsNil() async throws { @@ -96,7 +94,6 @@ struct RedisCommandChannelMetadataReadTests { } } -@Suite("Redis database count") struct RedisDatabaseCountTests { @Test("Reads the count out of CONFIG GET databases") func readsReportedCount() { @@ -174,7 +171,6 @@ struct RedisDatabaseCountTests { } } -@Suite("Redis command channel - database listing") struct RedisDatabaseListingTests { private static let removedConfig = RedisReply.error( "ERR unknown command 'CONFIG', with args beginning with: 'GET' 'databases' " @@ -283,7 +279,6 @@ struct RedisDatabaseListingTests { /// every master answers and the channel sums. Measured on a two-master redis-server 8.10.1 /// cluster with `-dbsize` on one master, and with that master busy running a script: both used /// to report the other master's count as the whole keyspace. -@Suite("Redis command channel - cluster database listing") struct RedisClusterDatabaseListingTests { @Test("A cluster lists one database and counts its keys with DBSIZE") func countsWithDbsize() async throws { diff --git a/TableProTests/Plugins/RedisDatabaseTargetTests.swift b/TableProTests/Plugins/RedisDatabaseTargetTests.swift index f323abc688..c56b6ea36d 100644 --- a/TableProTests/Plugins/RedisDatabaseTargetTests.swift +++ b/TableProTests/Plugins/RedisDatabaseTargetTests.swift @@ -14,7 +14,6 @@ import Testing private struct Refused: Error, Equatable {} -@Suite("Redis KEYBROWSE - the database it reads") struct RedisKeyBrowseDatabaseTests { private func database(of command: String) throws -> Int? { guard case .keyBrowse(_, _, _, _, let database) = try RedisCommandParser.parse(command) else { @@ -64,7 +63,6 @@ struct RedisKeyBrowseDatabaseTests { } } -@Suite("Redis command channel - moving to a database") struct RedisMoveToDatabaseTests { /// A read-only ACL user is refused SELECT even for the database it is already on, which made /// the first sidebar click on a Redis connection fail for that user. @@ -115,7 +113,6 @@ struct RedisMoveToDatabaseTests { } } -@Suite("Redis command channel - a read on another database") struct RedisWithDatabaseTests { @Test("On the session's own database only the read runs") func sameDatabaseRunsBodyOnly() async throws { @@ -161,7 +158,6 @@ struct RedisWithDatabaseTests { } } -@Suite("Redis command channel - one database's key count") struct RedisKeyCountTests { @Test("The session's own database is counted exactly") func currentDatabaseUsesDbsize() async throws { @@ -211,7 +207,6 @@ struct RedisKeyCountTests { } } -@Suite("Redis session database - where the session is and where it belongs") struct RedisSessionDatabaseTests { @Test("A selection moves both, a visit moves only where the session is") func selectedAndVisited() { @@ -256,7 +251,6 @@ struct RedisSessionDatabaseTests { } } -@Suite("Redis command channel - a visit the app abandoned") struct RedisAbandonedVisitTests { /// A cancelled stream lets go of the driver before its return SELECT reaches the server, so /// the next command could have run on the database the stream was reading. @@ -313,7 +307,6 @@ struct RedisAbandonedVisitTests { } } -@Suite("Redis grid writes - the database they belong to") struct RedisWriteAddressingTests { private static let writes: [RedisDatabaseTarget.Statement] = [ (statement: "SET \"k\" \"v\"", parameters: []), @@ -352,7 +345,6 @@ struct RedisWriteAddressingTests { } } -@Suite("Redis key tree - the database it lists") struct RedisKeyTreeDatabaseTests { /// The tree's read is a walk of the keyspace plus one TYPE per key, run inside the database the /// tree names. A typed SELECT moves where the session belongs, which the read has to leave alone. diff --git a/TableProTests/Plugins/RedisKeyMetadataReadTests.swift b/TableProTests/Plugins/RedisKeyMetadataReadTests.swift index bf515f18b6..9ded59cd9e 100644 --- a/TableProTests/Plugins/RedisKeyMetadataReadTests.swift +++ b/TableProTests/Plugins/RedisKeyMetadataReadTests.swift @@ -18,7 +18,6 @@ private struct TransportFailure: Error, Equatable {} private let keyDenied = RedisReply.error("NOPERM No permissions to access a key") private let typeDenied = RedisReply.error("NOPERM User notype has no permissions to run the 'type' command") -@Suite("Redis metadata read - classifying one reply") struct RedisMetadataReadAnswerTests { static let declined: [RedisReply] = [ keyDenied, @@ -63,7 +62,6 @@ struct RedisMetadataReadAnswerTests { } } -@Suite("Redis metadata reads - one pipeline") struct RedisMetadataReadsPipelineTests { @Test("A refusal stays in its own place and the keys around it answer") func refusalStaysInPlace() async throws { @@ -91,7 +89,6 @@ struct RedisMetadataReadsPipelineTests { } } -@Suite("Redis key descriptions - TYPE and TTL") struct RedisKeyDescriptionReadTests { @Test("A key the user may not read has no type and no TTL, not UNKNOWN and -1") func unreadableKeyIsUnknown() async throws { @@ -161,7 +158,6 @@ struct RedisKeyDescriptionReadTests { } } -@Suite("Redis key contents - length and preview") struct RedisKeyContentsReadTests { @Test("A key of unknown type gets no probe at all") func unknownKindSendsNoProbe() async throws { @@ -241,7 +237,6 @@ struct RedisKeyContentsReadTests { } } -@Suite("Redis key type names") struct RedisKeyTypeNamesTests { @Test("A declined TYPE is nil and an answered one is its name") func declinedIsNil() async throws { diff --git a/TableProTests/Plugins/RedisKeySlotTests.swift b/TableProTests/Plugins/RedisKeySlotTests.swift index 27e36f5901..a1262922b1 100644 --- a/TableProTests/Plugins/RedisKeySlotTests.swift +++ b/TableProTests/Plugins/RedisKeySlotTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing -@Suite("Redis key slot - measured vectors") struct RedisKeySlotVectorTests { static let measured: [(key: String, slot: Int)] = [ ("foo", 12_182), @@ -37,7 +36,6 @@ struct RedisKeySlotVectorTests { } } -@Suite("Redis key slot - hash tags") struct RedisKeySlotHashTagTests { static let measured: [(key: String, slot: Int)] = [ ("{user1000}.following", 3_443), @@ -82,7 +80,6 @@ struct RedisKeySlotHashTagTests { } } -@Suite("Redis key slot - cross-slot detection") struct RedisKeySlotCrossSlotTests { @Test("Keys sharing a hash tag are same-slot") func sharedTagIsSameSlot() { @@ -101,7 +98,6 @@ struct RedisKeySlotCrossSlotTests { } } -@Suite("Redis key slot - grouping keys by slot") struct RedisKeySlotGroupingTests { @Test("Keys group by slot in the order each slot first appears") func firstSeenOrder() { diff --git a/TableProTests/Plugins/RedisMultiShardPlannerTests.swift b/TableProTests/Plugins/RedisMultiShardPlannerTests.swift index 56ae74c152..c8a9ad4365 100644 --- a/TableProTests/Plugins/RedisMultiShardPlannerTests.swift +++ b/TableProTests/Plugins/RedisMultiShardPlannerTests.swift @@ -20,7 +20,6 @@ private func slotOf(_ key: Data) -> Int { (String(data: key, encoding: .utf8)?.hasPrefix("a") ?? false) ? 100 : 200 } -@Suite("Redis multi-shard planner - splitting") struct RedisMultiShardPlannerSplitTests { @Test("Keys are grouped by the slot they hash to") func groupsBySlot() throws { @@ -107,7 +106,6 @@ struct RedisMultiShardPlannerSplitTests { } } -@Suite("Redis multi-shard planner - reassembly") struct RedisMultiShardPlannerScatterTests { @Test("MGET comes back in the order the caller asked for its keys") func preservesKeyOrder() throws { diff --git a/TableProTests/Plugins/RedisNamedDatabaseWriteTests.swift b/TableProTests/Plugins/RedisNamedDatabaseWriteTests.swift index ce21bb60bc..ab168afce6 100644 --- a/TableProTests/Plugins/RedisNamedDatabaseWriteTests.swift +++ b/TableProTests/Plugins/RedisNamedDatabaseWriteTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis DB prefix - parsing") struct RedisDatabasePrefixParsingTests { @Test("DB names the database a command runs on, as an index or as the sidebar spells it") func parsesDatabaseAndCommand() throws { @@ -48,7 +47,6 @@ struct RedisDatabasePrefixParsingTests { } } -@Suite("Redis grid writes - naming their database without a transaction") struct RedisNamedDatabaseAddressingTests { private static let writes: [RedisDatabaseTarget.Statement] = [ (statement: "SET \"k\" \"v\"", parameters: []), diff --git a/TableProTests/Plugins/RedisPartialClusterWriteTests.swift b/TableProTests/Plugins/RedisPartialClusterWriteTests.swift index 80f0a041c1..6ca18fe735 100644 --- a/TableProTests/Plugins/RedisPartialClusterWriteTests.swift +++ b/TableProTests/Plugins/RedisPartialClusterWriteTests.swift @@ -19,7 +19,6 @@ private func keys(_ names: String...) -> [Data] { names.map { Data($0.utf8) } } private let refusal = "NOPERM No permissions to access a key" -@Suite("Redis partial cluster write - when a split write counts as partly applied") struct RedisPartialClusterWriteAssemblyTests { private let nodes = ["127.0.0.1:6505", "127.0.0.1:6506"] @@ -122,7 +121,6 @@ struct RedisPartialClusterWriteAssemblyTests { } } -@Suite("Redis partial cluster write - what the detail lists") struct RedisPartialClusterWriteDetailTests { @Test("A command sent whole to every node names the nodes it ran on") func broadcastNamesNodes() throws { @@ -169,7 +167,6 @@ struct RedisPartialClusterWriteDetailTests { } } -@Suite("Redis partial cluster write - reading one shard's reply") struct RedisShardPartOutcomeTests { @Test("An error is a refusal, a queued acknowledgement is queued, anything else ran") func outcomes() { diff --git a/TableProTests/Plugins/RedisQueryBuilderTests.swift b/TableProTests/Plugins/RedisQueryBuilderTests.swift index d62a6fdf72..c0a27a84e1 100644 --- a/TableProTests/Plugins/RedisQueryBuilderTests.swift +++ b/TableProTests/Plugins/RedisQueryBuilderTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis Query Builder") struct RedisQueryBuilderTests { private let builder = RedisQueryBuilder() diff --git a/TableProTests/Plugins/RedisQueuedReplyTests.swift b/TableProTests/Plugins/RedisQueuedReplyTests.swift index 632a31df3c..dd9edc097e 100644 --- a/TableProTests/Plugins/RedisQueuedReplyTests.swift +++ b/TableProTests/Plugins/RedisQueuedReplyTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis reply - a queued acknowledgement is not an answer") struct RedisQueuedReplyShapeTests { @Test("A +QUEUED simple string is the acknowledgement") func statusIsQueued() { @@ -64,7 +63,6 @@ struct RedisQueuedReplyShapeTests { } } -@Suite("Redis command channel - the run choke point") struct RedisCommandChannelRunTests { @Test("run(_: [String]) refuses a queued acknowledgement") func stringOverloadRefusesQueued() async throws { @@ -105,7 +103,6 @@ struct RedisCommandChannelRunTests { } } -@Suite("Redis queued command policy") struct RedisQueuedCommandPolicyTests { /// A one-row `QUEUED` status in the data grid reads as an empty table, so the two walks the app /// builds for itself say the keyspace could not be read instead. @@ -137,7 +134,6 @@ struct RedisQueuedCommandPolicyTests { /// one position out. The translation therefore belongs to the one function that dispatches an /// operation, not to a route. The plugin imports CRedis, which this target cannot, so the guard is a /// source scan. -@Suite("Redis queued translation source scan") struct RedisQueuedTranslationSourceScanTests { private static let pluginDirectory: URL = { var directory = URL(fileURLWithPath: #filePath) @@ -164,7 +160,6 @@ struct RedisQueuedTranslationSourceScanTests { } } -@Suite("Redis command channel - the default keyspace walk") struct RedisCommandChannelScanTests { @Test("A queued SCAN is refused rather than read as an empty keyspace") func queuedScanIsRefused() async throws { diff --git a/TableProTests/Plugins/RedisReplyErrorTests.swift b/TableProTests/Plugins/RedisReplyErrorTests.swift index d88392db7f..eb282878e6 100644 --- a/TableProTests/Plugins/RedisReplyErrorTests.swift +++ b/TableProTests/Plugins/RedisReplyErrorTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("Redis reply - error detection") struct RedisReplyErrorDetectionTests { @Test("An error reply is recognised") func recognisesError() { @@ -34,7 +33,6 @@ struct RedisReplyErrorDetectionTests { } } -@Suite("Redis reply - throwIfError") struct RedisReplyThrowTests { @Test("A READONLY reply throws rather than passing for success") func throwsOnReadOnly() { @@ -76,7 +74,6 @@ struct RedisReplyThrowTests { } } -@Suite("Redis transport failure") struct RedisTransportFailureTests { @Test("A failure records whether the command reached the server") func recordsDelivery() { diff --git a/TableProTests/Plugins/RedisSSLConfigTests.swift b/TableProTests/Plugins/RedisSSLConfigTests.swift index 1e1727b2c9..a9232023b6 100644 --- a/TableProTests/Plugins/RedisSSLConfigTests.swift +++ b/TableProTests/Plugins/RedisSSLConfigTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis SSL handling") struct RedisSSLConfigTests { @Test("disabled is not enabled and does not verify") func disabled() { diff --git a/TableProTests/Plugins/RedisSentinelResolverTests.swift b/TableProTests/Plugins/RedisSentinelResolverTests.swift index 9ece9dcddb..815e61ba3c 100644 --- a/TableProTests/Plugins/RedisSentinelResolverTests.swift +++ b/TableProTests/Plugins/RedisSentinelResolverTests.swift @@ -41,7 +41,6 @@ private actor FakeSentinelTransport: RedisSentinelTransport { func recordedAsks() -> [RedisNodeAddress] { asked } } -@Suite("Redis Sentinel resolver - iteration") struct RedisSentinelResolverIterationTests { @Test("Stops at the first Sentinel that knows the primary") func stopsAtFirstAnswer() async throws { @@ -106,7 +105,6 @@ struct RedisSentinelResolverIterationTests { } } -@Suite("Redis Sentinel resolver - failures") struct RedisSentinelResolverFailureTests { @Test("No Sentinels configured is its own error") func noSentinels() async { @@ -206,7 +204,6 @@ struct RedisSentinelResolverFailureTests { } } -@Suite("Redis Sentinel resolver - reply parsing") struct RedisSentinelReplyParsingTests { @Test("A two-element reply is the primary's address") func parsesAddress() throws { @@ -275,7 +272,6 @@ struct RedisSentinelReplyParsingTests { } } -@Suite("Redis Sentinel error messages") struct RedisSentinelErrorPresenterTests { @Test("An unknown group names the group and what the quorum monitors") func unknownGroupMessage() { diff --git a/TableProTests/Plugins/RedisSessionFootprintTests.swift b/TableProTests/Plugins/RedisSessionFootprintTests.swift index 945131b165..2b1a22e0ab 100644 --- a/TableProTests/Plugins/RedisSessionFootprintTests.swift +++ b/TableProTests/Plugins/RedisSessionFootprintTests.swift @@ -30,7 +30,6 @@ private let multi = Step(command: "MULTI", reply: .status("OK")) private let queuedSet = Step(command: "SET", reply: .status("QUEUED")) private let watch = Step(command: "WATCH", reply: .status("OK")) -@Suite("Redis session footprint - what a reply leaves on the session") struct RedisSessionFootprintTests { @Test("MULTI opens a block, and a queued command confirms one") func multiOpensBlock() { @@ -118,7 +117,6 @@ struct RedisSessionFootprintTests { } } -@Suite("Redis session footprint - which commands may be sent") struct RedisSessionFootprintAdmissionTests { @Test("A clean session holds nothing back") func cleanSession() { @@ -180,7 +178,6 @@ struct RedisSessionFootprintAdmissionTests { } } -@Suite("Redis session footprint - the errors the user reads") struct RedisSessionFootprintErrorTests { @Test("A held-back command names itself and what held it back") func heldBackMessages() { @@ -204,7 +201,6 @@ struct RedisSessionFootprintErrorTests { } } -@Suite("Redis command channel - an open block and the app's own commands") struct RedisCommandChannelOpenBlockTests { @Test("The database listing is held back from an open block and sends nothing") func listingHeldBack() async throws { diff --git a/TableProTests/Plugins/RedisStatementGeneratorTests.swift b/TableProTests/Plugins/RedisStatementGeneratorTests.swift index 8c45e457ea..5d4498e806 100644 --- a/TableProTests/Plugins/RedisStatementGeneratorTests.swift +++ b/TableProTests/Plugins/RedisStatementGeneratorTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing import TableProPluginKit -@Suite("Redis Statement Generator") struct RedisStatementGeneratorTests { // MARK: - INSERT @@ -768,7 +767,6 @@ struct RedisStatementGeneratorTests { } } -@Suite("Redis Statement Generator - key browse columns") struct RedisStatementGeneratorBrowseColumnTests { private static let browseColumns = ["Key", "Type", "TTL", "Length", "Value"] diff --git a/TableProTests/Plugins/RedisTransactionOutcomeTests.swift b/TableProTests/Plugins/RedisTransactionOutcomeTests.swift index 0c3a04e90c..6ccf0c8193 100644 --- a/TableProTests/Plugins/RedisTransactionOutcomeTests.swift +++ b/TableProTests/Plugins/RedisTransactionOutcomeTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redis transaction outcome") struct RedisTransactionOutcomeTests { /// The shape measured on Redis 8.10.1 for `MULTI; GET s; LPUSH s x; SET t 1; DEL nokey; INCR s; /// EXEC`, which then left `GET t` answering 1. @@ -89,7 +88,6 @@ struct RedisTransactionOutcomeTests { } } -@Suite("Redis queued database") struct RedisQueuedDatabaseTests { @Test("A block that applied moves the session to the queued index") func execAdoptsThePendingIndex() { diff --git a/TableProTests/Plugins/RedshiftExternalObjectsTests.swift b/TableProTests/Plugins/RedshiftExternalObjectsTests.swift index fe38f49028..94a4803e8e 100644 --- a/TableProTests/Plugins/RedshiftExternalObjectsTests.swift +++ b/TableProTests/Plugins/RedshiftExternalObjectsTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("RedshiftExternalSchemaQueries") struct RedshiftExternalSchemaQueriesTests { private var allQueries: [String] { [ @@ -117,7 +116,6 @@ struct RedshiftExternalSchemaQueriesTests { } } -@Suite("RedshiftExternalSchemaQueries.classifyTableType") struct RedshiftExternalTableTypeTests { @Test("a table stays an external table") func tableIsExternalTable() { @@ -154,7 +152,6 @@ struct RedshiftExternalTableTypeTests { } } -@Suite("RedshiftExternalSchemaQueries column classifiers") struct RedshiftExternalColumnClassifierTests { @Test("only an explicit false marks a column required") func nullabilityDefaultsToPermissive() { diff --git a/TableProTests/Plugins/RedshiftTableCatalogTests.swift b/TableProTests/Plugins/RedshiftTableCatalogTests.swift index d6dc6181c6..b095207ec3 100644 --- a/TableProTests/Plugins/RedshiftTableCatalogTests.swift +++ b/TableProTests/Plugins/RedshiftTableCatalogTests.swift @@ -2,7 +2,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Redshift table catalog rows") struct RedshiftTableCatalogTests { @Test("any listed type naming a view is a view, everything else a table") func listingTypes() { diff --git a/TableProTests/Plugins/RowImportRunnerTests.swift b/TableProTests/Plugins/RowImportRunnerTests.swift index 1b93d854ad..31349bea1e 100644 --- a/TableProTests/Plugins/RowImportRunnerTests.swift +++ b/TableProTests/Plugins/RowImportRunnerTests.swift @@ -51,7 +51,6 @@ private final class MockImportSink: PluginImportDataSink, @unchecked Sendable { func enableForeignKeyChecks() async throws {} } -@Suite("Row Import Runner") struct RowImportRunnerTests { private func entry(_ line: Int, _ value: String = "v") -> RowImportRunner.Entry { (line, ["c": .text(value)]) diff --git a/TableProTests/Plugins/SQLExportBatchSeparatorTests.swift b/TableProTests/Plugins/SQLExportBatchSeparatorTests.swift index ed15445961..cc7031be8f 100644 --- a/TableProTests/Plugins/SQLExportBatchSeparatorTests.swift +++ b/TableProTests/Plugins/SQLExportBatchSeparatorTests.swift @@ -42,7 +42,6 @@ private actor ExportPause { } } -@Suite("SQL export for an engine that runs scripts in batches") struct SQLExportBatchSeparatorTests { private final class ServerDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId: String diff --git a/TableProTests/Plugins/SQLExportBinaryLiteralTests.swift b/TableProTests/Plugins/SQLExportBinaryLiteralTests.swift index 9addff55e9..54131a1af4 100644 --- a/TableProTests/Plugins/SQLExportBinaryLiteralTests.swift +++ b/TableProTests/Plugins/SQLExportBinaryLiteralTests.swift @@ -13,7 +13,6 @@ import Testing /// it is a bit string rather than binary. Measured on PostgreSQL 17.11: /// `INSERT INTO b (payload) VALUES (X'414243')` answers /// `column "payload" is of type bytea but expression is of type bit`. -@Suite("SQL export binary literals") struct SQLExportBinaryLiteralTests { private let sample = Data([0x41, 0x42, 0x43]) diff --git a/TableProTests/Plugins/SQLExportCommentPhaseTests.swift b/TableProTests/Plugins/SQLExportCommentPhaseTests.swift index 5e13f098aa..0475d2dbaf 100644 --- a/TableProTests/Plugins/SQLExportCommentPhaseTests.swift +++ b/TableProTests/Plugins/SQLExportCommentPhaseTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL export comments") struct SQLExportCommentPhaseTests { private final class StubExportDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId: String diff --git a/TableProTests/Plugins/SQLExportDDLRewriterTests.swift b/TableProTests/Plugins/SQLExportDDLRewriterTests.swift index 8def9924b7..25317090f6 100644 --- a/TableProTests/Plugins/SQLExportDDLRewriterTests.swift +++ b/TableProTests/Plugins/SQLExportDDLRewriterTests.swift @@ -10,7 +10,6 @@ import Testing /// Every fixture here is the literal output of `SHOW CREATE TABLE` or `SHOW CREATE VIEW` on /// MariaDB 12.3, or of `SELECT sql FROM sqlite_master` on SQLite, so the rewriter is judged against /// what a driver really hands the export. -@Suite("SQL export DDL rewriter") struct SQLExportDDLRewriterTests { private static let stripping = SQLExportDDLRewriter( dialect: .mysql, diff --git a/TableProTests/Plugins/SQLExportDialectTests.swift b/TableProTests/Plugins/SQLExportDialectTests.swift index a610fae147..b7a80bef8f 100644 --- a/TableProTests/Plugins/SQLExportDialectTests.swift +++ b/TableProTests/Plugins/SQLExportDialectTests.swift @@ -14,7 +14,6 @@ import Testing /// The expected strings here are not a preference. Each was run against a live MariaDB 12.3 and /// sqlite3 while fixing #2630, and what each engine accepted is recorded beside it. CI reaches /// neither engine, so these tests are the record of that measurement. -@Suite("SQL export dialect") struct SQLExportDialectTests { private func dialect(for type: DatabaseType) -> SQLDialectDescriptor? { @@ -110,7 +109,6 @@ struct SQLExportDialectTests { } /// A result set has no schema, so a query export must write neither `CREATE` nor `DROP`. -@Suite("Query export options") struct QueryExportOptionsTests { private func column(_ id: String, _ label: String) -> PluginExportOptionColumn { @@ -158,7 +156,6 @@ struct QueryExportOptionsTests { /// Measured: MariaDB accepts it and the manual says it does nothing ("permitted to make porting /// easier"); sqlite3 rejects `DROP TABLE IF EXISTS "fields" CASCADE;` outright with /// `near "CASCADE": syntax error`. The clause was previously emitted for every engine. -@Suite("SQL export drop clause") struct SQLExportDropClauseTests { private final class StubExportDataSource: PluginExportDataSource, @unchecked Sendable { diff --git a/TableProTests/Plugins/SQLExportEncodingTests.swift b/TableProTests/Plugins/SQLExportEncodingTests.swift index 542179337a..6f74bba525 100644 --- a/TableProTests/Plugins/SQLExportEncodingTests.swift +++ b/TableProTests/Plugins/SQLExportEncodingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL export encoding declaration") struct SQLExportEncodingTests { private func temporaryDirectory() throws -> URL { let directory = FileManager.default.temporaryDirectory diff --git a/TableProTests/Plugins/SQLExportForeignKeyOrderTests.swift b/TableProTests/Plugins/SQLExportForeignKeyOrderTests.swift index 1995f5e544..8164ac7426 100644 --- a/TableProTests/Plugins/SQLExportForeignKeyOrderTests.swift +++ b/TableProTests/Plugins/SQLExportForeignKeyOrderTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL export foreign key ordering") struct SQLExportForeignKeyOrderTests { private final class StubExportDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId: String diff --git a/TableProTests/Plugins/SQLExportIndexPhaseTests.swift b/TableProTests/Plugins/SQLExportIndexPhaseTests.swift index 2e57a03b19..1db5216457 100644 --- a/TableProTests/Plugins/SQLExportIndexPhaseTests.swift +++ b/TableProTests/Plugins/SQLExportIndexPhaseTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL export index phase") struct SQLExportIndexPhaseTests { private final class StubExportDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId: String diff --git a/TableProTests/Plugins/SQLExportInsertModeTests.swift b/TableProTests/Plugins/SQLExportInsertModeTests.swift index 4bf685b025..c3b515fa4b 100644 --- a/TableProTests/Plugins/SQLExportInsertModeTests.swift +++ b/TableProTests/Plugins/SQLExportInsertModeTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL export insert modes") struct SQLExportInsertModeTests { private func renderer(_ dialect: SqlDialect) -> SQLExportInsertRenderer { @@ -139,7 +138,6 @@ struct SQLExportInsertModeTests { } } -@Suite("SQL export file splitting") struct SQLExportFileWriterTests { @Test("A part keeps the compound extension so the file still opens as SQL") @@ -226,7 +224,6 @@ struct SQLExportFileWriterTests { } } -@Suite("SQL export snapshot") struct SQLExportSnapshotTests { @Test("Each dialect opens its own consistent-read transaction") diff --git a/TableProTests/Plugins/SQLExportOptionsDecodingTests.swift b/TableProTests/Plugins/SQLExportOptionsDecodingTests.swift index d883263c25..47b5750401 100644 --- a/TableProTests/Plugins/SQLExportOptionsDecodingTests.swift +++ b/TableProTests/Plugins/SQLExportOptionsDecodingTests.swift @@ -10,7 +10,6 @@ import Testing /// build knew. A synthesized `Decodable` throws `keyNotFound` for the rest and never falls back to /// the property's default, and `PluginSettingsStorage.load` answers a throwing decode with nil, so /// one added option silently resets every choice the user had already made. -@Suite("SQL export options decoding") struct SQLExportOptionsDecodingTests { @Test("A payload that predates the exclusions keeps the choices it does carry") func legacyPayloadKeepsItsValues() throws { diff --git a/TableProTests/Plugins/SQLExportScriptTextTests.swift b/TableProTests/Plugins/SQLExportScriptTextTests.swift index 5d5a74d78f..0e3d57e78c 100644 --- a/TableProTests/Plugins/SQLExportScriptTextTests.swift +++ b/TableProTests/Plugins/SQLExportScriptTextTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL export script text") struct SQLExportScriptTextTests { private final class DefinitionDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId: String diff --git a/TableProTests/Plugins/SQLExportStatementBudgetTests.swift b/TableProTests/Plugins/SQLExportStatementBudgetTests.swift index aa05b18b19..4261246a1d 100644 --- a/TableProTests/Plugins/SQLExportStatementBudgetTests.swift +++ b/TableProTests/Plugins/SQLExportStatementBudgetTests.swift @@ -11,7 +11,6 @@ import Testing /// The budget only means something if the number it counts is the number the file gets, so every /// case here re-measures the statement it was handed rather than trusting the accumulator's tally. -@Suite("SQL export statement budget") struct SQLExportStatementBudgetTests { private static let prefix = "INSERT INTO `t` (`id`, `payload`) VALUES\n" private static let upsertSuffix = "\nON DUPLICATE KEY UPDATE `payload` = VALUES(`payload`)" diff --git a/TableProTests/Plugins/SQLExportStatementSizeTests.swift b/TableProTests/Plugins/SQLExportStatementSizeTests.swift index b442583316..0c486b8af4 100644 --- a/TableProTests/Plugins/SQLExportStatementSizeTests.swift +++ b/TableProTests/Plugins/SQLExportStatementSizeTests.swift @@ -9,7 +9,6 @@ import Testing /// The size limit through a whole export, rather than through the accumulator alone: the dump on /// disk, the summary the dialog shows, and the engine-specific literals inside the statements. -@Suite("SQL export statement size") struct SQLExportStatementSizeTests { private final class StubExportDataSource: PluginExportDataSource, @unchecked Sendable { let databaseTypeId: String diff --git a/TableProTests/Plugins/SQLImportFailureTests.swift b/TableProTests/Plugins/SQLImportFailureTests.swift index 083da9a607..c65ea73ab0 100644 --- a/TableProTests/Plugins/SQLImportFailureTests.swift +++ b/TableProTests/Plugins/SQLImportFailureTests.swift @@ -12,7 +12,6 @@ private struct StubError: LocalizedError { var errorDescription: String? { message } } -@Suite("SQL import failure composition") struct SQLImportFailureTests { private func statementFailure() -> PluginImportError { PluginImportError.statementFailed( diff --git a/TableProTests/Plugins/SQLIndexKeyListTests.swift b/TableProTests/Plugins/SQLIndexKeyListTests.swift index 9b38e89d94..54f90cadb9 100644 --- a/TableProTests/Plugins/SQLIndexKeyListTests.swift +++ b/TableProTests/Plugins/SQLIndexKeyListTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL index key list") struct SQLIndexKeyListTests { private static let sqlite = SQLiteIndexCatalog.lexicalFeatures diff --git a/TableProTests/Plugins/SQLLexicalFeatureMappingTests.swift b/TableProTests/Plugins/SQLLexicalFeatureMappingTests.swift index 571e931077..614b8abb9b 100644 --- a/TableProTests/Plugins/SQLLexicalFeatureMappingTests.swift +++ b/TableProTests/Plugins/SQLLexicalFeatureMappingTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import TableProSQLGrammar import Testing -@Suite("SQL lexical feature mapping") struct SQLLexicalFeatureMappingTests { @Test("Every grammar fact has exactly one kit feature, on the same bit") func everyFactHasAPartner() { diff --git a/TableProTests/Plugins/SQLStatementSplittingTests.swift b/TableProTests/Plugins/SQLStatementSplittingTests.swift index 29bdaa4d1e..fb8276aefb 100644 --- a/TableProTests/Plugins/SQLStatementSplittingTests.swift +++ b/TableProTests/Plugins/SQLStatementSplittingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL statement splitting") struct SQLStatementSplittingTests { @Test("The engine's own features keep a dollar-quoted body, a nested comment and a bracket whole") func featuresKeepEngineLiteralsWhole() { diff --git a/TableProTests/Plugins/SQLTransactionTrackingTests.swift b/TableProTests/Plugins/SQLTransactionTrackingTests.swift index 9887406ba3..b31c1062e1 100644 --- a/TableProTests/Plugins/SQLTransactionTrackingTests.swift +++ b/TableProTests/Plugins/SQLTransactionTrackingTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL transaction tracking") struct SQLTransactionTrackingTests { @Test("Every spelling that opens a transaction is recognised") func recognisesOpeningStatements() { diff --git a/TableProTests/Plugins/SQLiteCreateTableDDLTests.swift b/TableProTests/Plugins/SQLiteCreateTableDDLTests.swift index 05624eb711..0224d7feb0 100644 --- a/TableProTests/Plugins/SQLiteCreateTableDDLTests.swift +++ b/TableProTests/Plugins/SQLiteCreateTableDDLTests.swift @@ -8,7 +8,6 @@ import Testing import TableProPluginKit /// Every expectation was checked against sqlite3 3.54.0 before it was written here. -@Suite("SQLite CREATE TABLE DDL") struct SQLiteCreateTableDDLTests { private func definition( columns: [PluginColumnDefinition] = [ diff --git a/TableProTests/Plugins/SQLiteDefaultValueTests.swift b/TableProTests/Plugins/SQLiteDefaultValueTests.swift index 6d1d4fbcf0..4a3048a0d7 100644 --- a/TableProTests/Plugins/SQLiteDefaultValueTests.swift +++ b/TableProTests/Plugins/SQLiteDefaultValueTests.swift @@ -10,7 +10,6 @@ import Testing -@Suite("SQLite catalog default round trip") struct SQLiteDefaultValueTests { @Test( "A pragma default becomes SQL that recreates it", diff --git a/TableProTests/Plugins/SQLiteFileExtensionsTests.swift b/TableProTests/Plugins/SQLiteFileExtensionsTests.swift index e55420b1da..2fb4fb238b 100644 --- a/TableProTests/Plugins/SQLiteFileExtensionsTests.swift +++ b/TableProTests/Plugins/SQLiteFileExtensionsTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing @MainActor -@Suite("SQLite file extension registration") struct SQLiteFileExtensionsTests { private static let canonical: [String] = ["db", "db3", "s3db", "sl3", "sqlite", "sqlite3", "sqlitedb"] diff --git a/TableProTests/Plugins/SQLiteForeignKeyParentsTests.swift b/TableProTests/Plugins/SQLiteForeignKeyParentsTests.swift index a9aba7a9f0..2857b99724 100644 --- a/TableProTests/Plugins/SQLiteForeignKeyParentsTests.swift +++ b/TableProTests/Plugins/SQLiteForeignKeyParentsTests.swift @@ -13,7 +13,6 @@ import Testing /// the parent's own primary key has to be fetched before the rows can be grouped. The single-table /// read asked for it and the bulk read did not, and nothing made the two agree. Both now name the /// parents through this. -@Suite("SQLite Foreign Key Parents") struct SQLiteForeignKeyParentsTests { /// A `PRAGMA foreign_key_list` row with the table name already stripped: id, seq, table, from, /// to, on_update, on_delete. diff --git a/TableProTests/Plugins/SSLConfigurationTests.swift b/TableProTests/Plugins/SSLConfigurationTests.swift index 73f6413eb0..78031d823e 100644 --- a/TableProTests/Plugins/SSLConfigurationTests.swift +++ b/TableProTests/Plugins/SSLConfigurationTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SSLConfiguration boundary") struct SSLConfigurationTests { @Test("default mode is disabled and all paths empty") func defaults() { diff --git a/TableProTests/Plugins/SSLHandshakeErrorTests.swift b/TableProTests/Plugins/SSLHandshakeErrorTests.swift index 7a4364524f..d0e8a37ebb 100644 --- a/TableProTests/Plugins/SSLHandshakeErrorTests.swift +++ b/TableProTests/Plugins/SSLHandshakeErrorTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SSLHandshakeError") struct SSLHandshakeErrorTests { @Test("serverRejectedPlaintext suggests switching to Required") func testServerRejectedPlaintext() { diff --git a/TableProTests/Plugins/SnowflakeAuthTests.swift b/TableProTests/Plugins/SnowflakeAuthTests.swift index bc6910370b..7509318149 100644 --- a/TableProTests/Plugins/SnowflakeAuthTests.swift +++ b/TableProTests/Plugins/SnowflakeAuthTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("Snowflake Account Parsing") struct SnowflakeAccountTests { @Test("Plain locator gets the Snowflake domain appended") func testHostFromLocator() { @@ -51,7 +50,6 @@ struct SnowflakeAccountTests { } } -@Suite("Snowflake Connections TOML") struct SnowflakeConnectionsTOMLTests { @Test("Parses sections with key-value pairs") func testBasicSection() { @@ -99,7 +97,6 @@ struct SnowflakeConnectionsTOMLTests { } } -@Suite("Snowflake SPKI Wrapping") struct SnowflakeSPKIWrappingTests { private static let rsaAlgorithmID: [UInt8] = [ 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, diff --git a/TableProTests/Plugins/SnowflakeGeneratorTests.swift b/TableProTests/Plugins/SnowflakeGeneratorTests.swift index 8e9e231ecc..2fa950483f 100644 --- a/TableProTests/Plugins/SnowflakeGeneratorTests.swift +++ b/TableProTests/Plugins/SnowflakeGeneratorTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Snowflake Statement Generator") struct SnowflakeStatementGeneratorTests { private func generator( columns: [String] = ["id", "name", "payload"], @@ -110,7 +109,6 @@ struct SnowflakeStatementGeneratorTests { } } -@Suite("Snowflake DDL Generator") struct SnowflakeDDLGeneratorTests { private let generator = SnowflakeDDLGenerator(qualifiedTable: { "\"DB\".\"PUBLIC\".\"\($0)\"" }) @@ -226,7 +224,6 @@ struct SnowflakeDDLGeneratorTests { } } -@Suite("Snowflake Schema Queries") struct SnowflakeSchemaQueriesTests { @Test("SHOW statements quote identifiers") func testShowQuoting() { diff --git a/TableProTests/Plugins/SnowflakeImportedKeysTests.swift b/TableProTests/Plugins/SnowflakeImportedKeysTests.swift index 36a3855c7e..15ac7bc099 100644 --- a/TableProTests/Plugins/SnowflakeImportedKeysTests.swift +++ b/TableProTests/Plugins/SnowflakeImportedKeysTests.swift @@ -10,7 +10,6 @@ import Testing /// `SHOW IMPORTED KEYS` reports `pk_database_name` beside `pk_schema_name`, and the driver read only /// the second, so a key pointing into another database resolved to the current one's same-named /// table. Snowflake names objects in three parts, so the database is the half that was missing. -@Suite("Snowflake imported keys") struct SnowflakeImportedKeysTests { @Test("A key into another database reports that database") func crossDatabaseKeyReportsItsDatabase() { diff --git a/TableProTests/Plugins/SnowflakeProtocolTests.swift b/TableProTests/Plugins/SnowflakeProtocolTests.swift index 03e6c7e87e..36526ef920 100644 --- a/TableProTests/Plugins/SnowflakeProtocolTests.swift +++ b/TableProTests/Plugins/SnowflakeProtocolTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Snowflake Binding Encoder") struct SnowflakeBindingEncoderTests { @Test("Keys are 1-based string indices") func testKeysAreOneBased() { @@ -47,7 +46,6 @@ struct SnowflakeBindingEncoderTests { } } -@Suite("Snowflake Retry Policy") struct SnowflakeRetryPolicyTests { @Test("Transient statuses are retried") func testTransientStatuses() { @@ -90,7 +88,6 @@ struct SnowflakeRetryPolicyTests { } } -@Suite("Snowflake Re-Auth Classification") struct SnowflakeReAuthTests { @Test("Session and token expiry codes trigger re-authentication") func testReauthCodes() { @@ -126,7 +123,6 @@ struct SnowflakeReAuthTests { } } -@Suite("Plugin Session Context") struct PluginSessionContextTests { @Test("Round-trips through Codable") func testCodableRoundTrip() throws { @@ -145,7 +141,6 @@ struct PluginSessionContextTests { } } -@Suite("Snowflake Heartbeat Interval") struct SnowflakeHeartbeatIntervalTests { @Test("Interval is a quarter of master validity, clamped to 15 to 60 minutes") func testIntervalClamping() { diff --git a/TableProTests/Plugins/SnowflakeSQLTests.swift b/TableProTests/Plugins/SnowflakeSQLTests.swift index 2c697affcf..d9c29a0e1b 100644 --- a/TableProTests/Plugins/SnowflakeSQLTests.swift +++ b/TableProTests/Plugins/SnowflakeSQLTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing -@Suite("Snowflake SQL Escaping") struct SnowflakeSQLTests { // MARK: - Literals diff --git a/TableProTests/Plugins/SnowflakeSessionKeyTests.swift b/TableProTests/Plugins/SnowflakeSessionKeyTests.swift index 08d52c063e..7667a2cd62 100644 --- a/TableProTests/Plugins/SnowflakeSessionKeyTests.swift +++ b/TableProTests/Plugins/SnowflakeSessionKeyTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing -@Suite("Snowflake Session Key") struct SnowflakeSessionKeyTests { private func key( connectionId: String = "A", diff --git a/TableProTests/Plugins/SnowflakeStatementTypeTests.swift b/TableProTests/Plugins/SnowflakeStatementTypeTests.swift index a170215592..984f3e72e7 100644 --- a/TableProTests/Plugins/SnowflakeStatementTypeTests.swift +++ b/TableProTests/Plugins/SnowflakeStatementTypeTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing -@Suite("Snowflake Statement Type") struct SnowflakeStatementTypeTests { private func counts(_ values: [String]) -> [PluginCellValueBox] { values.map { .text($0) } diff --git a/TableProTests/Plugins/SnowflakeTypeMapperTests.swift b/TableProTests/Plugins/SnowflakeTypeMapperTests.swift index d936961d88..3290557e54 100644 --- a/TableProTests/Plugins/SnowflakeTypeMapperTests.swift +++ b/TableProTests/Plugins/SnowflakeTypeMapperTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing -@Suite("Snowflake Type Mapper") struct SnowflakeTypeMapperTests { private func column( _ type: String, diff --git a/TableProTests/Plugins/SnowflakeValueDecoderTests.swift b/TableProTests/Plugins/SnowflakeValueDecoderTests.swift index b2018f8046..9d90adbf83 100644 --- a/TableProTests/Plugins/SnowflakeValueDecoderTests.swift +++ b/TableProTests/Plugins/SnowflakeValueDecoderTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing -@Suite("Snowflake Value Decoder") struct SnowflakeValueDecoderTests { private func column(_ type: String, scale: Int? = nil) -> SnowflakeColumnMeta { SnowflakeColumnMeta( diff --git a/TableProTests/Plugins/SpannerRegistrySnapshotTests.swift b/TableProTests/Plugins/SpannerRegistrySnapshotTests.swift index 40eab84dc8..546dd39ac3 100644 --- a/TableProTests/Plugins/SpannerRegistrySnapshotTests.swift +++ b/TableProTests/Plugins/SpannerRegistrySnapshotTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Spanner registry snapshot") struct SpannerRegistrySnapshotTests { private func snapshot() throws -> PluginMetadataSnapshot { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() diff --git a/TableProTests/Plugins/SurrealDBCBORTests.swift b/TableProTests/Plugins/SurrealDBCBORTests.swift index fa10c8f64a..64bf4d3813 100644 --- a/TableProTests/Plugins/SurrealDBCBORTests.swift +++ b/TableProTests/Plugins/SurrealDBCBORTests.swift @@ -6,7 +6,6 @@ import Foundation import Testing -@Suite("SurrealDB - CBOR codec") struct SurrealDBCBORTests { private func roundTrip(_ value: SurrealValue) throws -> SurrealValue { try SurrealCBOR.decode(SurrealCBOR.encode(value)) @@ -129,7 +128,6 @@ struct SurrealDBCBORTests { } } -@Suite("SurrealDB - value display") struct SurrealDBDisplayTests { @Test("Record ids render as table:id") func recordIds() { diff --git a/TableProTests/Plugins/SurrealDBDriverTests.swift b/TableProTests/Plugins/SurrealDBDriverTests.swift index b31560b794..7b8967a38a 100644 --- a/TableProTests/Plugins/SurrealDBDriverTests.swift +++ b/TableProTests/Plugins/SurrealDBDriverTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SurrealDB - SurrealQL escaping") struct SurrealQLTests { @Test("Identifiers are backtick-quoted only when they need it") func identifiers() { @@ -68,7 +67,6 @@ struct SurrealQLTests { } } -@Suite("SurrealDB - query builder") struct SurrealQueryBuilderTests { private let scope = SurrealScope(namespace: "ns", database: "db") @@ -159,7 +157,6 @@ struct SurrealQueryBuilderTests { } } -@Suite("SurrealDB - field kinds across 2.x and 3.x") struct SurrealFieldKindTests { @Test("Optional fields parse on both versions") func optionals() { @@ -205,7 +202,6 @@ struct SurrealFieldKindTests { } } -@Suite("SurrealDB - INFO parsing across 2.x and 3.x") struct SurrealInfoParserTests { @Test("Table list reads schemafull on 3.x and full on 2.x") func schemafullFlag() { @@ -288,7 +284,6 @@ struct SurrealInfoParserTests { } } -@Suite("SurrealDB - row flattening") struct SurrealRowFlattenerTests { @Test("Columns are the union of top-level keys, id first") func union() { @@ -329,7 +324,6 @@ struct SurrealRowFlattenerTests { } } -@Suite("SurrealDB - statement generation") struct SurrealStatementGeneratorTests { private let scope = SurrealScope(namespace: "ns", database: "db") private let columns = ["id", "name", "age"] @@ -467,7 +461,6 @@ struct SurrealStatementGeneratorTests { } } -@Suite("SurrealDB - cell coding") struct SurrealCellCoderTests { @Test("Text coerces to the column's declared type") func typed() { @@ -529,7 +522,6 @@ struct SurrealCellCoderTests { } } -@Suite("SurrealDB - connection config") struct SurrealDBConnectionConfigTests { private func config(_ level: String, namespace: String = "ns", extra: [String: String] = [:]) -> SurrealDBConnectionConfig { var fields = ["sdbAuthLevel": level] diff --git a/TableProTests/Plugins/SurrealDBMetadataTests.swift b/TableProTests/Plugins/SurrealDBMetadataTests.swift index d8dcb879d4..1355711050 100644 --- a/TableProTests/Plugins/SurrealDBMetadataTests.swift +++ b/TableProTests/Plugins/SurrealDBMetadataTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SurrealDB - registry metadata") @MainActor struct SurrealDBMetadataTests { private var snapshot: PluginMetadataSnapshot? { diff --git a/TableProTests/Plugins/TriggerSQLParserTests.swift b/TableProTests/Plugins/TriggerSQLParserTests.swift index ec6351a616..93e624b3e7 100644 --- a/TableProTests/Plugins/TriggerSQLParserTests.swift +++ b/TableProTests/Plugins/TriggerSQLParserTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing -@Suite("TriggerSQLParser") struct TriggerSQLParserTests { @Test("Parses BEFORE INSERT") func beforeInsert() { diff --git a/TableProTests/Plugins/TypesenseConnectionFieldsTests.swift b/TableProTests/Plugins/TypesenseConnectionFieldsTests.swift index fa0f509ff6..ac4985026e 100644 --- a/TableProTests/Plugins/TypesenseConnectionFieldsTests.swift +++ b/TableProTests/Plugins/TypesenseConnectionFieldsTests.swift @@ -15,7 +15,6 @@ import Testing /// eagerly loaded (which the app logs as "declared no TableProProvides* capability keys ...; /// eager loading will block startup") and its type never reaches `lazyDriverURLs`, so picking /// Typesense in the connection form offers to download a plugin that is already installed. -@Suite("Typesense plugin manifest") struct TypesensePluginManifestTests { private static let infoPlist: URL = { var url = URL(fileURLWithPath: #filePath) @@ -62,7 +61,6 @@ struct TypesensePluginManifestTests { } } -@Suite("Typesense connection fields") struct TypesenseConnectionFieldsTests { private func typesenseFields() throws -> [ConnectionField] { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() diff --git a/TableProTests/Plugins/TypesenseDriverTests.swift b/TableProTests/Plugins/TypesenseDriverTests.swift index d78238b9e4..1b1e81db6f 100644 --- a/TableProTests/Plugins/TypesenseDriverTests.swift +++ b/TableProTests/Plugins/TypesenseDriverTests.swift @@ -29,7 +29,6 @@ private let booksFields: [String: TypesenseField] = [ "tag": field("tag", "string", sortable: true, optional: true), ] -@Suite("Typesense - Console Parser") struct TypesenseConsoleParserTests { @Test("Parses method, path, and JSON body") func parsesFullRequest() { @@ -77,7 +76,6 @@ struct TypesenseConsoleParserTests { } } -@Suite("Typesense - Schema") struct TypesenseSchemaTests { private let response: [String: Any] = [ "name": "books", @@ -221,7 +219,6 @@ struct TypesenseSchemaTests { } } -@Suite("Typesense - Filter Builder") struct TypesenseFilterBuilderTests { private func clause(_ column: String, _ op: String, _ value: String, second: String? = nil) throws -> String { try TypesenseFilterBuilder.clause( @@ -417,7 +414,6 @@ struct TypesenseFilterBuilderTests { } } -@Suite("Typesense - Query Builder") struct TypesenseQueryBuilderTests { @Test("A tagged search round-trips through its encoding") func taggedSearchRoundTrips() throws { @@ -554,7 +550,6 @@ struct TypesenseQueryBuilderTests { } } -@Suite("Typesense - Collection Operations") struct TypesenseOperationsTests { /// Without these the app composes its own SQL and sends it to `execute`. Measured before the /// fix: exporting sent `SELECT * FROM c`, dropping sent `DROP TABLE c` and truncating sent @@ -610,7 +605,6 @@ struct TypesenseOperationsTests { } } -@Suite("Typesense - API Keys") struct TypesenseApiKeysTests { private let payload: [String: Any] = [ "keys": [ @@ -682,7 +676,6 @@ struct TypesenseApiKeysTests { } } -@Suite("Typesense - Path Encoding") struct TypesensePathEncodingTests { @Test("A slash never survives into the path, so a segment stays one segment") func encodesSlashes() { @@ -740,7 +733,6 @@ struct TypesensePathEncodingTests { } } -@Suite("Typesense - Statement Generator") struct TypesenseStatementGeneratorTests { private let columns = ["id", "title", "year", "inprint", "authors"] diff --git a/TableProTests/Plugins/TypesenseOperationsConsoleTextTests.swift b/TableProTests/Plugins/TypesenseOperationsConsoleTextTests.swift index acaa26bba5..ef85f062dd 100644 --- a/TableProTests/Plugins/TypesenseOperationsConsoleTextTests.swift +++ b/TableProTests/Plugins/TypesenseOperationsConsoleTextTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Typesense object operations as console text") struct TypesenseOperationsConsoleTextTests { @Test("Dropping a collection is the native request") func dropIsNative() throws { diff --git a/TableProTests/Plugins/WeaviateConnectionFieldsTests.swift b/TableProTests/Plugins/WeaviateConnectionFieldsTests.swift index bf550c5d4a..1724034fa3 100644 --- a/TableProTests/Plugins/WeaviateConnectionFieldsTests.swift +++ b/TableProTests/Plugins/WeaviateConnectionFieldsTests.swift @@ -4,7 +4,6 @@ import TableProPluginKit import TableProWeaviateCore import Testing -@Suite("Weaviate registry snapshot") struct WeaviateRegistrySnapshotTests { private func snapshot() throws -> PluginMetadataSnapshot { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() @@ -45,7 +44,6 @@ struct WeaviateRegistrySnapshotTests { } } -@Suite("Weaviate connection fields") struct WeaviateConnectionFieldsTests { private func fields() throws -> [ConnectionField] { let defaults = PluginMetadataRegistry.shared.registryPluginDefaults() @@ -94,7 +92,6 @@ struct WeaviateConnectionFieldsTests { } } -@Suite("Weaviate field parity") struct WeaviateFieldParityTests { private static let repoRoot = URL(fileURLWithPath: #filePath) .deletingLastPathComponent() @@ -125,7 +122,6 @@ struct WeaviateFieldParityTests { } } -@Suite("Weaviate plugin manifest") struct WeaviatePluginManifestTests { @Test("Info.plist declares the current PluginKit ABI and the Weaviate type id") func plistDeclaresType() throws { diff --git a/TableProTests/Plugins/XLSXImportTests.swift b/TableProTests/Plugins/XLSXImportTests.swift index fcee05bd5f..0964f78fcc 100644 --- a/TableProTests/Plugins/XLSXImportTests.swift +++ b/TableProTests/Plugins/XLSXImportTests.swift @@ -7,7 +7,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("XLSX sheet parsing") struct XLSXSheetParserTests { /// `A` is 0 and `AA` is 26, so the letters are base-26 with no zero digit. Getting this wrong /// puts every column past Z in the wrong place. diff --git a/TableProTests/SOCKS/SOCKSProxyModelTests.swift b/TableProTests/SOCKS/SOCKSProxyModelTests.swift index 056cd4df59..01aab6b81a 100644 --- a/TableProTests/SOCKS/SOCKSProxyModelTests.swift +++ b/TableProTests/SOCKS/SOCKSProxyModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SOCKS proxy model") struct SOCKSProxyModelTests { @Test("SOCKSProxyConfiguration round-trips through Codable") func configurationRoundTrip() throws { diff --git a/TableProTests/SOCKS/SOCKSProxyPaneViewModelTests.swift b/TableProTests/SOCKS/SOCKSProxyPaneViewModelTests.swift index 09f5942bb3..687e3efdab 100644 --- a/TableProTests/SOCKS/SOCKSProxyPaneViewModelTests.swift +++ b/TableProTests/SOCKS/SOCKSProxyPaneViewModelTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro @MainActor -@Suite("SOCKS proxy pane view model") struct SOCKSProxyPaneViewModelTests { @Test("disabled reports no issues") func disabledNoIssues() { diff --git a/TableProTests/Services/DefaultSortResolverTests.swift b/TableProTests/Services/DefaultSortResolverTests.swift index abae4bc47a..b612f76286 100644 --- a/TableProTests/Services/DefaultSortResolverTests.swift +++ b/TableProTests/Services/DefaultSortResolverTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("DefaultSortResolver") struct DefaultSortResolverTests { private let columns = ["id", "name", "created_at"] diff --git a/TableProTests/Services/EditorWindowChromeTests.swift b/TableProTests/Services/EditorWindowChromeTests.swift index ac9bc51f8e..2a5385ce2d 100644 --- a/TableProTests/Services/EditorWindowChromeTests.swift +++ b/TableProTests/Services/EditorWindowChromeTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Editor window chrome") @MainActor struct EditorWindowChromeTests { /// The real window the app opens, not a stand-in, so removing the chrome call from diff --git a/TableProTests/Services/ExternalSchemaTrackerTests.swift b/TableProTests/Services/ExternalSchemaTrackerTests.swift index 49d262b97d..99f4a991cd 100644 --- a/TableProTests/Services/ExternalSchemaTrackerTests.swift +++ b/TableProTests/Services/ExternalSchemaTrackerTests.swift @@ -77,7 +77,6 @@ private final class ExternalSchemaMockDriver: DatabaseDriver, @unchecked Sendabl func fetchFunctions(schema: String?) async throws -> [RoutineInfo] { [] } } -@Suite("ExternalSchemaTracker") @MainActor struct ExternalSchemaTrackerTests { private func freshTracker(connectionId: UUID) -> ExternalSchemaTracker { diff --git a/TableProTests/Services/MacAnalyticsProviderTests.swift b/TableProTests/Services/MacAnalyticsProviderTests.swift index 2d1188e084..21bbe93d4a 100644 --- a/TableProTests/Services/MacAnalyticsProviderTests.swift +++ b/TableProTests/Services/MacAnalyticsProviderTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro @MainActor -@Suite("MacAnalyticsProvider write-once timestamp semantics") struct MacAnalyticsProviderTests { private static let suiteCounter = SuiteCounter() diff --git a/TableProTests/Services/MainSplitViewControllerDetailWidthTests.swift b/TableProTests/Services/MainSplitViewControllerDetailWidthTests.swift index 11b6160527..c744f2256f 100644 --- a/TableProTests/Services/MainSplitViewControllerDetailWidthTests.swift +++ b/TableProTests/Services/MainSplitViewControllerDetailWidthTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Split pane holding priority") @MainActor struct SplitPaneHoldingPriorityTests { private static let dragThatCannotResizeWindow: Float = 490 @@ -29,7 +28,6 @@ struct SplitPaneHoldingPriorityTests { } } -@Suite("MainSplitViewController detail width") @MainActor struct MainSplitViewControllerDetailWidthTests { @Test("Nil tab type falls back to the default detail minimum") diff --git a/TableProTests/Services/MainWindowToolbarValidationTests.swift b/TableProTests/Services/MainWindowToolbarValidationTests.swift index fedc4e70b5..2fb575f346 100644 --- a/TableProTests/Services/MainWindowToolbarValidationTests.swift +++ b/TableProTests/Services/MainWindowToolbarValidationTests.swift @@ -611,7 +611,6 @@ struct MainWindowToolbarRepointTests { } } -@Suite("MainWindowToolbar back and forward validation") @MainActor struct MainWindowToolbarNavigationValidationTests { private func context( @@ -670,7 +669,6 @@ struct MainWindowToolbarNavigationValidationTests { } } -@Suite("MainWindowToolbar Add Row validation") @MainActor struct MainWindowToolbarAddRowValidationTests { private func context( diff --git a/TableProTests/Services/MenuQueryScopeGuardTests.swift b/TableProTests/Services/MenuQueryScopeGuardTests.swift index 77460484f9..d4fea58cfa 100644 --- a/TableProTests/Services/MenuQueryScopeGuardTests.swift +++ b/TableProTests/Services/MenuQueryScopeGuardTests.swift @@ -22,7 +22,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Menu query scope guard") struct MenuQueryScopeGuardTests { /// Every title a tab can give a window, and therefore every title AppKit can add to the Window /// menu. Taken from `WindowTitleResolver.resolveTitle`'s own switch rather than retyped, so a diff --git a/TableProTests/Services/SampleDatabaseServiceTests.swift b/TableProTests/Services/SampleDatabaseServiceTests.swift index 5f130c2611..42f2536fba 100644 --- a/TableProTests/Services/SampleDatabaseServiceTests.swift +++ b/TableProTests/Services/SampleDatabaseServiceTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro @MainActor -@Suite("SampleDatabaseService install/reset lifecycle") struct SampleDatabaseServiceTests { private static let bundledMarker = Data("BUNDLED-CHINOOK-V1".utf8) diff --git a/TableProTests/Services/SchemaRefreshCommitCostTests.swift b/TableProTests/Services/SchemaRefreshCommitCostTests.swift index 729f642aea..8001504b6e 100644 --- a/TableProTests/Services/SchemaRefreshCommitCostTests.swift +++ b/TableProTests/Services/SchemaRefreshCommitCostTests.swift @@ -204,7 +204,6 @@ final class SingleDriverMetadataProvider: ScopedMetadataProviding { /// Oracle lists its objects one schema at a time, and a sidebar search used to leave every schema /// of the database loaded. -@Suite("SchemaRefreshService commit cost") @MainActor struct SchemaRefreshCommitCostTests { private let connectionId = UUID() diff --git a/TableProTests/Services/SchemaServiceDatabaseSwitchTests.swift b/TableProTests/Services/SchemaServiceDatabaseSwitchTests.swift index 342c57951a..f9a8578fed 100644 --- a/TableProTests/Services/SchemaServiceDatabaseSwitchTests.swift +++ b/TableProTests/Services/SchemaServiceDatabaseSwitchTests.swift @@ -101,7 +101,6 @@ private final class DatabaseCatalogDriver: DatabaseDriver, @unchecked Sendable { /// Snowflake and Trino change database on a live connection, and a schema name such as `PUBLIC` /// exists in every database they reach. -@Suite("SchemaService database switch") @MainActor struct SchemaServiceDatabaseSwitchTests { private let connectionId = UUID() diff --git a/TableProTests/Services/SchemaServiceHierarchicalTests.swift b/TableProTests/Services/SchemaServiceHierarchicalTests.swift index 4aaaac7750..5cf835d64b 100644 --- a/TableProTests/Services/SchemaServiceHierarchicalTests.swift +++ b/TableProTests/Services/SchemaServiceHierarchicalTests.swift @@ -81,7 +81,6 @@ private final class HierarchicalMockDriver: DatabaseDriver, @unchecked Sendable func rollbackTransaction() async throws {} } -@Suite("SchemaService hierarchical schema") @MainActor struct SchemaServiceHierarchicalTests { private func bigQueryTable(_ name: String, schema: String) -> TableInfo { diff --git a/TableProTests/Services/SchemaServiceRefreshTests.swift b/TableProTests/Services/SchemaServiceRefreshTests.swift index 4a4f6d1cc3..df62e8022c 100644 --- a/TableProTests/Services/SchemaServiceRefreshTests.swift +++ b/TableProTests/Services/SchemaServiceRefreshTests.swift @@ -99,7 +99,6 @@ private final class RefreshMockDriver: DatabaseDriver, @unchecked Sendable { func fetchFunctions(schema: String?) async throws -> [RoutineInfo] { [] } } -@Suite("SchemaService refresh keeps content visible") @MainActor struct SchemaServiceRefreshTests { private func loadedService( diff --git a/TableProTests/Services/SchemaServiceRoutinesTests.swift b/TableProTests/Services/SchemaServiceRoutinesTests.swift index b0ced9eaaa..9df07ad6f4 100644 --- a/TableProTests/Services/SchemaServiceRoutinesTests.swift +++ b/TableProTests/Services/SchemaServiceRoutinesTests.swift @@ -260,7 +260,6 @@ private final class BlockingAuxiliaryDriver: DatabaseDriver, @unchecked Sendable } } -@Suite("SchemaService routines") @MainActor struct SchemaServiceRoutinesTests { @Test("load caches procedures and functions alongside tables") diff --git a/TableProTests/Services/SchemaServiceSideObjectsTests.swift b/TableProTests/Services/SchemaServiceSideObjectsTests.swift index 9a41752c95..2181d80c05 100644 --- a/TableProTests/Services/SchemaServiceSideObjectsTests.swift +++ b/TableProTests/Services/SchemaServiceSideObjectsTests.swift @@ -95,7 +95,6 @@ private final class SideObjectsMockDriver: DatabaseDriver, @unchecked Sendable { } } -@Suite("SchemaService side objects") @MainActor struct SchemaServiceSideObjectsTests { private let boom = NSError(domain: "test", code: 1, userInfo: [NSLocalizedDescriptionKey: "boom"]) diff --git a/TableProTests/Services/SchemaServiceStaleSchemaTests.swift b/TableProTests/Services/SchemaServiceStaleSchemaTests.swift index a38303b1c9..e02c7675c1 100644 --- a/TableProTests/Services/SchemaServiceStaleSchemaTests.swift +++ b/TableProTests/Services/SchemaServiceStaleSchemaTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit import Testing /// Oracle lists its objects one schema at a time, and every COMMIT reports a catalog change. -@Suite("SchemaService stale schemas") @MainActor struct SchemaServiceStaleSchemaTests { private let connectionId = UUID() diff --git a/TableProTests/Services/SchemaServiceUserDefinedTypesTests.swift b/TableProTests/Services/SchemaServiceUserDefinedTypesTests.swift index 7ad8d6cc85..0051d5a265 100644 --- a/TableProTests/Services/SchemaServiceUserDefinedTypesTests.swift +++ b/TableProTests/Services/SchemaServiceUserDefinedTypesTests.swift @@ -80,7 +80,6 @@ private final class TypeMockDriver: DatabaseDriver, @unchecked Sendable { } } -@Suite("SchemaService user-defined types") @MainActor struct SchemaServiceUserDefinedTypesTests { private let mood = UserDefinedTypeInfo(name: "mood", kind: .enumeration, schema: "public", enumLabels: ["sad", "ok"]) diff --git a/TableProTests/Services/SparkleUpdatePreferencesTests.swift b/TableProTests/Services/SparkleUpdatePreferencesTests.swift index bdafe23153..71edefbda6 100644 --- a/TableProTests/Services/SparkleUpdatePreferencesTests.swift +++ b/TableProTests/Services/SparkleUpdatePreferencesTests.swift @@ -7,7 +7,6 @@ import Testing /// first and Info.plist second, so an undeclared key is `NO`, `allowsAutomaticUpdates` is then `NO` /// too, and `setAutomaticallyDownloadsUpdates` returns without writing. `SUAutomaticallyUpdate` was /// `true` in Info.plist and `false` everywhere it mattered. -@Suite("SparkleUpdatePreferences") struct SparkleUpdatePreferencesTests { /// The unit-test bundle is hosted by the app, so the process's main bundle is the app bundle. /// A runner that ever stopped hosting would fail `everyRequiredKeyIsDeclared` rather than pass diff --git a/TableProTests/Services/ToolbarHiddenSetTests.swift b/TableProTests/Services/ToolbarHiddenSetTests.swift index 284dac617b..749df572f0 100644 --- a/TableProTests/Services/ToolbarHiddenSetTests.swift +++ b/TableProTests/Services/ToolbarHiddenSetTests.swift @@ -20,7 +20,6 @@ private final class CountingToolbar: NSToolbar { /// The context is written onto a live toolbar through `isHidden`, onto the items the app placed and /// onto nothing else. These run against a real `NSToolbar`, because the rules they pin are about /// what AppKit does with the writes, which no pure test can see. -@Suite("Toolbar hidden set") @MainActor struct ToolbarHiddenSetTests { /// The app's own items in the order the default set gives them, without the spaces and tracking diff --git a/TableProTests/Services/ToolbarSourceAccessTests.swift b/TableProTests/Services/ToolbarSourceAccessTests.swift index 31a359fc96..cd1f14640d 100644 --- a/TableProTests/Services/ToolbarSourceAccessTests.swift +++ b/TableProTests/Services/ToolbarSourceAccessTests.swift @@ -24,7 +24,6 @@ import Testing /// `isVisible` whatever its receiver, and the one read allowed there is named: the switcher's /// `toolbar.isVisible`, which is whether the toolbar itself is shown and was measured to read /// correctly after a palette visit. -@Suite("Toolbar visibility reads") struct ToolbarSourceAccessTests { private static let rootDirectory: URL = { var directory = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Services/ToolbarSwitcherAnchorTests.swift b/TableProTests/Services/ToolbarSwitcherAnchorTests.swift index f96bf3e983..242f76b56b 100644 --- a/TableProTests/Services/ToolbarSwitcherAnchorTests.swift +++ b/TableProTests/Services/ToolbarSwitcherAnchorTests.swift @@ -16,7 +16,6 @@ import Testing /// The decision reads the app's own record of what it hid and `NSToolbar.items`, and nothing /// AppKit reports about visibility, because one Customize Toolbar visit is measured to leave /// `visibleItems` and `NSToolbarItem.isVisible` over-reporting for good. -@Suite("ToolbarSwitcherPresenter anchor resolution") @MainActor struct ToolbarSwitcherAnchorTests { private static let identifier = NSToolbarItem.Identifier("com.TablePro.tests.anchor") diff --git a/TableProTests/Services/UserDefinedTypeSuggestionsTests.swift b/TableProTests/Services/UserDefinedTypeSuggestionsTests.swift index 8709e3ba59..4d2142abc5 100644 --- a/TableProTests/Services/UserDefinedTypeSuggestionsTests.swift +++ b/TableProTests/Services/UserDefinedTypeSuggestionsTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("User-defined type suggestions") struct UserDefinedTypeSuggestionsTests { private func type(_ name: String, schema: String?, spelling: String? = nil) -> UserDefinedTypeInfo { UserDefinedTypeInfo(name: name, kind: .enumeration, schema: schema, columnTypeSpelling: spelling) diff --git a/TableProTests/Services/WindowTitleResolverTests.swift b/TableProTests/Services/WindowTitleResolverTests.swift index 4291d1d39c..2b33b1c38a 100644 --- a/TableProTests/Services/WindowTitleResolverTests.swift +++ b/TableProTests/Services/WindowTitleResolverTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("WindowTitleResolver.resolveTitle from payload") @MainActor struct WindowTitleResolverPayloadTitleTests { @Test("Nil payload falls back to SQL Query") @@ -259,7 +258,6 @@ struct WindowTitleResolverPayloadTitleTests { } } -@Suite("WindowTitleResolver.resolveTitle from tab") @MainActor struct WindowTitleResolverTabTitleTests { private let connection = DatabaseConnection(name: "MyConnection", type: .postgresql) @@ -294,7 +292,6 @@ struct WindowTitleResolverTabTitleTests { } } -@Suite("WindowTitleResolver.sanitizeTitle") @MainActor struct WindowTitleResolverSanitizeTests { @Test("Non-blank candidate passes through") @@ -318,7 +315,6 @@ struct WindowTitleResolverSanitizeTests { } } -@Suite("QueryTab.fileDisplayTitle") struct QueryTabFileDisplayTitleTests { @Test("Returns FileManager display name for the URL") func returnsFileManagerDisplayName() { @@ -342,7 +338,6 @@ struct QueryTabFileDisplayTitleTests { } } -@Suite("QueryTabManager.addTab with sourceFileURL") @MainActor struct QueryTabManagerAddTabSourceFileTests { @Test("Tab title uses the shared file display title helper") diff --git a/TableProTests/Services/WindowTitleResolverWindowTests.swift b/TableProTests/Services/WindowTitleResolverWindowTests.swift index e8419eca5d..4b67a0835c 100644 --- a/TableProTests/Services/WindowTitleResolverWindowTests.swift +++ b/TableProTests/Services/WindowTitleResolverWindowTests.swift @@ -12,7 +12,6 @@ import Foundation @testable import TablePro import Testing -@Suite("WindowTitleResolver.resolveWindow") @MainActor struct WindowTitleResolverWindowTests { private static func connection(name: String = "Prod DB") -> DatabaseConnection { diff --git a/TableProTests/Storage/CustomSlashCommandStorageSyncTests.swift b/TableProTests/Storage/CustomSlashCommandStorageSyncTests.swift index 68c1c907d4..81909fd411 100644 --- a/TableProTests/Storage/CustomSlashCommandStorageSyncTests.swift +++ b/TableProTests/Storage/CustomSlashCommandStorageSyncTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing import TableProSyncTransport -@Suite("CustomSlashCommandStorage sync") @MainActor struct CustomSlashCommandStorageSyncTests { private func makeStorage() throws -> (CustomSlashCommandStorage, SyncChangeTracker) { diff --git a/TableProTests/Storage/FileColumnLayoutPersisterTests.swift b/TableProTests/Storage/FileColumnLayoutPersisterTests.swift index 4087843b01..17a68ca3e2 100644 --- a/TableProTests/Storage/FileColumnLayoutPersisterTests.swift +++ b/TableProTests/Storage/FileColumnLayoutPersisterTests.swift @@ -13,7 +13,6 @@ private struct LegacyColumnLayoutPayload: Decodable { let columnWidths: [String: CGFloat] } -@Suite("FileColumnLayoutPersister") @MainActor struct FileColumnLayoutPersisterTests { private func makeIsolatedPersister() -> (FileColumnLayoutPersister, URL) { diff --git a/TableProTests/Storage/ForeignKeyLabelChoiceTests.swift b/TableProTests/Storage/ForeignKeyLabelChoiceTests.swift index 228c335246..eb3bf72f6c 100644 --- a/TableProTests/Storage/ForeignKeyLabelChoiceTests.swift +++ b/TableProTests/Storage/ForeignKeyLabelChoiceTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyLabelChoice") struct ForeignKeyLabelChoiceTests { private func roundTrip(_ choice: ForeignKeyLabelChoice) -> ForeignKeyLabelChoice { ForeignKeyLabelChoice(storedData: choice.storedData) diff --git a/TableProTests/Storage/ForeignKeyLabelColumnStoreTests.swift b/TableProTests/Storage/ForeignKeyLabelColumnStoreTests.swift index 8b1e8f51b6..0d713e7712 100644 --- a/TableProTests/Storage/ForeignKeyLabelColumnStoreTests.swift +++ b/TableProTests/Storage/ForeignKeyLabelColumnStoreTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyLabelColumnStore") @MainActor struct ForeignKeyLabelColumnStoreTests { private func makeStore() throws -> ForeignKeyLabelColumnStore { diff --git a/TableProTests/Storage/RecentTablesStoreTests.swift b/TableProTests/Storage/RecentTablesStoreTests.swift index aee33af5ce..5af2472584 100644 --- a/TableProTests/Storage/RecentTablesStoreTests.swift +++ b/TableProTests/Storage/RecentTablesStoreTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("RecentTablesStore") @MainActor struct RecentTablesStoreTests { private func makeStore() throws -> RecentTablesStore { diff --git a/TableProTests/Storage/SplitViewAutosaveSweepTests.swift b/TableProTests/Storage/SplitViewAutosaveSweepTests.swift index c10efcada7..ea6eac4e28 100644 --- a/TableProTests/Storage/SplitViewAutosaveSweepTests.swift +++ b/TableProTests/Storage/SplitViewAutosaveSweepTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("SplitViewAutosaveSweep") @MainActor struct SplitViewAutosaveSweepTests { private func key(_ name: String) -> String { diff --git a/TableProTests/TeamLibrary/TeamLibraryModelsTests.swift b/TableProTests/TeamLibrary/TeamLibraryModelsTests.swift index 319160ea7c..9bbb978b35 100644 --- a/TableProTests/TeamLibrary/TeamLibraryModelsTests.swift +++ b/TableProTests/TeamLibrary/TeamLibraryModelsTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProImport import Testing -@Suite("TeamLibraryModels") struct TeamLibraryModelsTests { @Test("pull response decodes the snake_case wire format") func decodesPullResponse() throws { diff --git a/TableProTests/Theme/BundledThemeStatementHighlightTests.swift b/TableProTests/Theme/BundledThemeStatementHighlightTests.swift index 7ccb562a05..b41097754b 100644 --- a/TableProTests/Theme/BundledThemeStatementHighlightTests.swift +++ b/TableProTests/Theme/BundledThemeStatementHighlightTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Bundled themes declare a statement highlight") struct BundledThemeStatementHighlightTests { private static let themeIds = [ diff --git a/TableProTests/Theme/ConnectionIdentityColorTests.swift b/TableProTests/Theme/ConnectionIdentityColorTests.swift index e37704c530..998bcb3b19 100644 --- a/TableProTests/Theme/ConnectionIdentityColorTests.swift +++ b/TableProTests/Theme/ConnectionIdentityColorTests.swift @@ -14,7 +14,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Connection identity colour") @MainActor struct ConnectionIdentityColorTests { private static let appearances: [NSAppearance.Name] = [ @@ -188,7 +187,6 @@ struct ConnectionIdentityColorTests { /// modifier has nothing to act on. It sat in the app unused for four months after the toolbar /// migration removed its last call site, which made "raise the tint opacity" look like a one-line /// fix for #2398 when it would have changed nothing on screen. -@Suite("Toolbar background modifier stays out of the app target") struct ToolbarBackgroundGuardTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Theme/LegibleForegroundTests.swift b/TableProTests/Theme/LegibleForegroundTests.swift index e28e346e64..f25f5b107c 100644 --- a/TableProTests/Theme/LegibleForegroundTests.swift +++ b/TableProTests/Theme/LegibleForegroundTests.swift @@ -8,7 +8,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Legible foreground") @MainActor struct LegibleForegroundTests { private static let appearances: [NSAppearance.Name] = [ diff --git a/TableProTests/Theme/MotionAccessibilityTests.swift b/TableProTests/Theme/MotionAccessibilityTests.swift index 850dce30fd..fab1079ec5 100644 --- a/TableProTests/Theme/MotionAccessibilityTests.swift +++ b/TableProTests/Theme/MotionAccessibilityTests.swift @@ -7,7 +7,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Motion accessibility") struct MotionAccessibilityTests { @Test("Reduce Motion drops the animation") func reduceMotionDropsAnimation() { diff --git a/TableProTests/Theme/ThemeDefinitionTests.swift b/TableProTests/Theme/ThemeDefinitionTests.swift index d6c60cea2f..e65969ded1 100644 --- a/TableProTests/Theme/ThemeDefinitionTests.swift +++ b/TableProTests/Theme/ThemeDefinitionTests.swift @@ -12,7 +12,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("Theme Definition") struct ThemeDefinitionTests { // MARK: - Default light theme diff --git a/TableProTests/Theme/ThemeSlotValidationTests.swift b/TableProTests/Theme/ThemeSlotValidationTests.swift index fa5b0167c7..242955efaa 100644 --- a/TableProTests/Theme/ThemeSlotValidationTests.swift +++ b/TableProTests/Theme/ThemeSlotValidationTests.swift @@ -6,7 +6,6 @@ @testable import TablePro import Testing -@Suite("Theme slot validation") struct ThemeSlotValidationTests { @Test("A matching theme fits its slot") func matchingThemeFits() { diff --git a/TableProTests/TunnelCommand/TunnelCommandBuilderTests.swift b/TableProTests/TunnelCommand/TunnelCommandBuilderTests.swift index 481e5d30a6..83a9be876a 100644 --- a/TableProTests/TunnelCommand/TunnelCommandBuilderTests.swift +++ b/TableProTests/TunnelCommand/TunnelCommandBuilderTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Tunnel command builder") struct TunnelCommandBuilderTests { private func kubectlConfig() -> TunnelCommandConfiguration { var config = TunnelCommandConfiguration() diff --git a/TableProTests/TunnelCommand/TunnelCommandImportTests.swift b/TableProTests/TunnelCommand/TunnelCommandImportTests.swift index 590030c064..313cc47b58 100644 --- a/TableProTests/TunnelCommand/TunnelCommandImportTests.swift +++ b/TableProTests/TunnelCommand/TunnelCommandImportTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Tunnel command import") @MainActor struct TunnelCommandImportTests { private func exportableCommand() -> ExportableTunnelCommand { diff --git a/TableProTests/TunnelCommand/TunnelCommandLineTests.swift b/TableProTests/TunnelCommand/TunnelCommandLineTests.swift index 74c4d40499..a95a8d19f3 100644 --- a/TableProTests/TunnelCommand/TunnelCommandLineTests.swift +++ b/TableProTests/TunnelCommand/TunnelCommandLineTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Tunnel command line") struct TunnelCommandLineTests { @Test("splits on whitespace") func splitsOnWhitespace() throws { diff --git a/TableProTests/TunnelCommand/TunnelCommandModelTests.swift b/TableProTests/TunnelCommand/TunnelCommandModelTests.swift index e5d55454ce..468ce79f26 100644 --- a/TableProTests/TunnelCommand/TunnelCommandModelTests.swift +++ b/TableProTests/TunnelCommand/TunnelCommandModelTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Tunnel command model") struct TunnelCommandModelTests { private func kubectlConfig() -> TunnelCommandConfiguration { TunnelCommandConfiguration( diff --git a/TableProTests/Utilities/MemoryPressureAdvisorTests.swift b/TableProTests/Utilities/MemoryPressureAdvisorTests.swift index 1eee08fd10..354059741c 100644 --- a/TableProTests/Utilities/MemoryPressureAdvisorTests.swift +++ b/TableProTests/Utilities/MemoryPressureAdvisorTests.swift @@ -7,7 +7,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("MemoryPressureAdvisor") @MainActor struct MemoryPressureAdvisorTests { @Test("budget returns positive value") diff --git a/TableProTests/Utilities/QualifiedSearchQueryTests.swift b/TableProTests/Utilities/QualifiedSearchQueryTests.swift index 225fb86218..1fff9ca3ea 100644 --- a/TableProTests/Utilities/QualifiedSearchQueryTests.swift +++ b/TableProTests/Utilities/QualifiedSearchQueryTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("QualifiedSearchQuery") struct QualifiedSearchQueryTests { @Test("A schema and a name") func schemaAndName() throws { diff --git a/TableProTests/Utilities/RowSortComparatorTests.swift b/TableProTests/Utilities/RowSortComparatorTests.swift index e3a8355d46..f48b7124e0 100644 --- a/TableProTests/Utilities/RowSortComparatorTests.swift +++ b/TableProTests/Utilities/RowSortComparatorTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("RowSortComparator") struct RowSortComparatorTests { @Test("numeric string ordering treats 10 > 2") func numericOrdering() { diff --git a/TableProTests/Utilities/SidebarSearchTests.swift b/TableProTests/Utilities/SidebarSearchTests.swift index fd10d5b9b3..3fa8a1456e 100644 --- a/TableProTests/Utilities/SidebarSearchTests.swift +++ b/TableProTests/Utilities/SidebarSearchTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SidebarSearch") struct SidebarSearchTests { @Test("A plain search admits every container and matches names") func plainSearch() { diff --git a/TableProTests/ViewModels/AIChatViewModelActionTests.swift b/TableProTests/ViewModels/AIChatViewModelActionTests.swift index 76a33be3e4..c7a26a1125 100644 --- a/TableProTests/ViewModels/AIChatViewModelActionTests.swift +++ b/TableProTests/ViewModels/AIChatViewModelActionTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("AIChatViewModel Query Actions") @MainActor struct AIChatViewModelActionTests { private func request( diff --git a/TableProTests/ViewModels/AIChatViewModelMentionsTests.swift b/TableProTests/ViewModels/AIChatViewModelMentionsTests.swift index 173c676e1a..c7f4d42c58 100644 --- a/TableProTests/ViewModels/AIChatViewModelMentionsTests.swift +++ b/TableProTests/ViewModels/AIChatViewModelMentionsTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AIChatViewModel @-mentions") @MainActor struct AIChatViewModelMentionsTests { @Test("attach adds item to attachedContext") diff --git a/TableProTests/ViewModels/AIChatViewModelSlashTests.swift b/TableProTests/ViewModels/AIChatViewModelSlashTests.swift index 7f0137666c..346754329c 100644 --- a/TableProTests/ViewModels/AIChatViewModelSlashTests.swift +++ b/TableProTests/ViewModels/AIChatViewModelSlashTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("AIChatViewModel runSlashCommand") @MainActor struct AIChatViewModelSlashTests { @Test("/help appends an assistant turn with the command list") diff --git a/TableProTests/ViewModels/BackupScopeModelTests.swift b/TableProTests/ViewModels/BackupScopeModelTests.swift index 97b1434281..635db32703 100644 --- a/TableProTests/ViewModels/BackupScopeModelTests.swift +++ b/TableProTests/ViewModels/BackupScopeModelTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Backup scope selection") @MainActor struct BackupScopeModelTests { diff --git a/TableProTests/ViewModels/ConnectionDataCacheTests.swift b/TableProTests/ViewModels/ConnectionDataCacheTests.swift index 823dd07ccc..4660670554 100644 --- a/TableProTests/ViewModels/ConnectionDataCacheTests.swift +++ b/TableProTests/ViewModels/ConnectionDataCacheTests.swift @@ -11,7 +11,6 @@ import Testing /// Issue #3016. The Favorites tab reads its whole Queries tree out of this cache, so the cache has /// to outlive a tab switch and has to publish what it loads. -@Suite("Connection data cache") @MainActor struct ConnectionDataCacheTests { private func snapshot(folderNamed name: String) -> ConnectionFavoritesSnapshot { diff --git a/TableProTests/ViewModels/ConnectionFormChildObservationTests.swift b/TableProTests/ViewModels/ConnectionFormChildObservationTests.swift index de3d22ea8d..4d0b82aeca 100644 --- a/TableProTests/ViewModels/ConnectionFormChildObservationTests.swift +++ b/TableProTests/ViewModels/ConnectionFormChildObservationTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Connection form child observation") struct ConnectionFormChildObservationTests { private final class ChangeCounter { private(set) var sends = 0 diff --git a/TableProTests/ViewModels/ConnectionFormEditsCoverageTests.swift b/TableProTests/ViewModels/ConnectionFormEditsCoverageTests.swift index 94b0f3d674..11e1711d15 100644 --- a/TableProTests/ViewModels/ConnectionFormEditsCoverageTests.swift +++ b/TableProTests/ViewModels/ConnectionFormEditsCoverageTests.swift @@ -13,7 +13,6 @@ import Testing /// `DatabaseConnection` is either written by the form or carried over untouched. /// A property that is neither is one the connection form silently resets on save, /// which is how the favorite mark, the sort order and the AI tool grants were lost. -@Suite("Connection form edits coverage") struct ConnectionFormEditsCoverageTests { private static let writtenByForm: Set = [ "name", diff --git a/TableProTests/ViewModels/ConnectionFormEditsTests.swift b/TableProTests/ViewModels/ConnectionFormEditsTests.swift index 4b13677e76..739a30651a 100644 --- a/TableProTests/ViewModels/ConnectionFormEditsTests.swift +++ b/TableProTests/ViewModels/ConnectionFormEditsTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Connection form edits") struct ConnectionFormEditsTests { private func edits( additionalFields: [String: String] = [:], diff --git a/TableProTests/ViewModels/ConnectionFormTransportTests.swift b/TableProTests/ViewModels/ConnectionFormTransportTests.swift index bac65fbdbf..20db2a68ea 100644 --- a/TableProTests/ViewModels/ConnectionFormTransportTests.swift +++ b/TableProTests/ViewModels/ConnectionFormTransportTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Connection form transport") struct ConnectionFormTransportTests { private func coordinator(type: DatabaseType = .mysql) -> ConnectionFormCoordinator { let coordinator = ConnectionFormCoordinator(connectionId: nil) diff --git a/TableProTests/ViewModels/DatabaseSwitcherRefreshTests.swift b/TableProTests/ViewModels/DatabaseSwitcherRefreshTests.swift index 72a00eb961..2a66b61d7e 100644 --- a/TableProTests/ViewModels/DatabaseSwitcherRefreshTests.swift +++ b/TableProTests/ViewModels/DatabaseSwitcherRefreshTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Database switcher refresh") @MainActor struct DatabaseSwitcherRefreshTests { private func makeViewModel(currentDatabase: String? = nil) -> DatabaseSwitcherViewModel { diff --git a/TableProTests/ViewModels/DatabaseTypeChooserModelTests.swift b/TableProTests/ViewModels/DatabaseTypeChooserModelTests.swift index cbffd75188..e1004b3927 100644 --- a/TableProTests/ViewModels/DatabaseTypeChooserModelTests.swift +++ b/TableProTests/ViewModels/DatabaseTypeChooserModelTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Database type chooser model") struct DatabaseTypeChooserModelTests { /// Named explicitly rather than taken from `PluginManager`, which loads no plugins under XCTest. private func model() -> DatabaseTypeChooserModel { diff --git a/TableProTests/ViewModels/ERDiagramSchemaKeyTests.swift b/TableProTests/ViewModels/ERDiagramSchemaKeyTests.swift index 8e28237e48..8084c64390 100644 --- a/TableProTests/ViewModels/ERDiagramSchemaKeyTests.swift +++ b/TableProTests/ViewModels/ERDiagramSchemaKeyTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("ER diagram schema key") @MainActor struct ERDiagramSchemaKeyTests { @Test("A schema key carries the schema the diagram was opened on") diff --git a/TableProTests/ViewModels/FavoriteSelectionTests.swift b/TableProTests/ViewModels/FavoriteSelectionTests.swift index 24d2215f48..2ed2b4ab03 100644 --- a/TableProTests/ViewModels/FavoriteSelectionTests.swift +++ b/TableProTests/ViewModels/FavoriteSelectionTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("FavoriteSelection") struct FavoriteSelectionTests { private func roundTrip(_ selection: FavoriteSelection) -> FavoriteSelection? { FavoriteSelection(rawValue: selection.rawValue) diff --git a/TableProTests/ViewModels/FavoritesExpansionStateTests.swift b/TableProTests/ViewModels/FavoritesExpansionStateTests.swift index 0bfab919b7..9fc73c3577 100644 --- a/TableProTests/ViewModels/FavoritesExpansionStateTests.swift +++ b/TableProTests/ViewModels/FavoritesExpansionStateTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro @MainActor -@Suite("FavoritesExpansionState") struct FavoritesExpansionStateTests { private func makeState() throws -> (FavoritesExpansionState, UserDefaults, String) { let suite = "FavoritesExpansionStateTests.\(UUID().uuidString)" diff --git a/TableProTests/ViewModels/FavoritesLinkedFolderTests.swift b/TableProTests/ViewModels/FavoritesLinkedFolderTests.swift index 0d291d2e38..31eb7602c7 100644 --- a/TableProTests/ViewModels/FavoritesLinkedFolderTests.swift +++ b/TableProTests/ViewModels/FavoritesLinkedFolderTests.swift @@ -10,7 +10,6 @@ import Testing /// Adding a folder that is already linked used to be refused outright, which pointed the user at a /// list the folder was invisible in whenever it had been disabled. -@Suite("Linked SQL folder outcome") @MainActor struct FavoritesLinkedFolderTests { private func makeViewModel() -> FavoritesSidebarViewModel { diff --git a/TableProTests/ViewModels/FavoritesSidebarViewModelTests.swift b/TableProTests/ViewModels/FavoritesSidebarViewModelTests.swift index 5e02a752b3..e04569a47c 100644 --- a/TableProTests/ViewModels/FavoritesSidebarViewModelTests.swift +++ b/TableProTests/ViewModels/FavoritesSidebarViewModelTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("FavoriteNode") struct FavoriteNodeTests { // MARK: - Helpers @@ -295,7 +294,6 @@ struct FavoriteNodeTests { /// Issue #3016. The view model publishes the Favorites tab's whole Queries tree, but that tree /// lives in a cache of its own, and SwiftUI hears only the object a property wrapper names. -@Suite("Favorites sidebar cache observation") @MainActor struct FavoritesSidebarCacheObservationTests { private func waitForEmission(from counter: EmissionCounter, timeout: TimeInterval = 5) async { diff --git a/TableProTests/ViewModels/JSONRowInspectorViewModelTests.swift b/TableProTests/ViewModels/JSONRowInspectorViewModelTests.swift index a390caf2e2..fab58a294f 100644 --- a/TableProTests/ViewModels/JSONRowInspectorViewModelTests.swift +++ b/TableProTests/ViewModels/JSONRowInspectorViewModelTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro @MainActor -@Suite("JSONRowInspectorViewModel") struct JSONRowInspectorViewModelTests { private static let connectionId = UUID(uuidString: "00000000-0000-0000-0000-0000000000AA") ?? UUID() diff --git a/TableProTests/ViewModels/QueryPlanViewStateStoreTests.swift b/TableProTests/ViewModels/QueryPlanViewStateStoreTests.swift index 7deef9e002..af89dacb25 100644 --- a/TableProTests/ViewModels/QueryPlanViewStateStoreTests.swift +++ b/TableProTests/ViewModels/QueryPlanViewStateStoreTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query plan view state store") @MainActor struct QueryPlanViewStateStoreTests { @Test("The same plan in the same tab gets back the state it was left with") diff --git a/TableProTests/ViewModels/QuickSwitcherCrossSchemaTests.swift b/TableProTests/ViewModels/QuickSwitcherCrossSchemaTests.swift index d70567ecd4..0a459c4a5f 100644 --- a/TableProTests/ViewModels/QuickSwitcherCrossSchemaTests.swift +++ b/TableProTests/ViewModels/QuickSwitcherCrossSchemaTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Quick switcher across schemas") @MainActor struct QuickSwitcherCrossSchemaTests { private func table(_ name: String, _ schema: String?, type: TableInfo.TableType = .table) -> TableInfo { diff --git a/TableProTests/ViewModels/QuickSwitcherHistoryItemTests.swift b/TableProTests/ViewModels/QuickSwitcherHistoryItemTests.swift index a175842e5b..3cca879054 100644 --- a/TableProTests/ViewModels/QuickSwitcherHistoryItemTests.swift +++ b/TableProTests/ViewModels/QuickSwitcherHistoryItemTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Quick Switcher history items") struct QuickSwitcherHistoryItemTests { private func makeEntry(query: String, connectionId: UUID = UUID(), at date: Date = Date()) -> QueryHistoryEntry { QueryHistoryEntry( diff --git a/TableProTests/ViewModels/QuickSwitcherRecentIdentityTests.swift b/TableProTests/ViewModels/QuickSwitcherRecentIdentityTests.swift index 433bbb5df1..1e7df69789 100644 --- a/TableProTests/ViewModels/QuickSwitcherRecentIdentityTests.swift +++ b/TableProTests/ViewModels/QuickSwitcherRecentIdentityTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Open Quickly Recent identity") @MainActor struct QuickSwitcherRecentIdentityTests { private let connectionId = UUID() diff --git a/TableProTests/ViewModels/RemoteFilePaneValidationTests.swift b/TableProTests/ViewModels/RemoteFilePaneValidationTests.swift index fbc65339fc..374ae2e544 100644 --- a/TableProTests/ViewModels/RemoteFilePaneValidationTests.swift +++ b/TableProTests/ViewModels/RemoteFilePaneValidationTests.swift @@ -14,7 +14,6 @@ import Testing /// of it that answered whenever SSH was enabled told every MySQL and PostgreSQL connection with a /// tunnel that it needed a remote database file path, and disabled Save and Test on all of them. @MainActor -@Suite("Remote file pane validation") struct RemoteFilePaneValidationTests { private func coordinator(type: DatabaseType) -> ConnectionFormCoordinator { let coordinator = ConnectionFormCoordinator(connectionId: nil) diff --git a/TableProTests/ViewModels/SSLPaneViewModelTests.swift b/TableProTests/ViewModels/SSLPaneViewModelTests.swift index 8adcceeae6..d7e4b467c1 100644 --- a/TableProTests/ViewModels/SSLPaneViewModelTests.swift +++ b/TableProTests/ViewModels/SSLPaneViewModelTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SSLPaneViewModel") @MainActor struct SSLPaneViewModelTests { @Test("resetForType applies engine's native default for PostgreSQL") diff --git a/TableProTests/ViewModels/SidebarViewModelTests.swift b/TableProTests/ViewModels/SidebarViewModelTests.swift index 94149fbb5f..47f8471a1b 100644 --- a/TableProTests/ViewModels/SidebarViewModelTests.swift +++ b/TableProTests/ViewModels/SidebarViewModelTests.swift @@ -83,7 +83,6 @@ private func makeRef(_ name: String, database: String? = nil, schema: String? = // MARK: - Tests -@Suite("SidebarViewModel") struct SidebarViewModelTests { // MARK: - Batch Toggle Truncate @@ -295,7 +294,6 @@ private func makeViewModel( ) } -@Suite("SidebarViewModel multi-section") struct SidebarViewModelMultiSectionTests { @Test("tables of kind splits by TableType raw value") @MainActor @@ -523,7 +521,6 @@ struct SidebarViewModelMultiSectionTests { } } -@Suite("SidebarViewModel search debounce") struct SidebarViewModelSearchDebounceTests { @Test("filterQuery updates immediately on first non-empty input") @MainActor diff --git a/TableProTests/ViewModels/VersionHistoryViewModelTests.swift b/TableProTests/ViewModels/VersionHistoryViewModelTests.swift index 186774bb11..89a29599c9 100644 --- a/TableProTests/ViewModels/VersionHistoryViewModelTests.swift +++ b/TableProTests/ViewModels/VersionHistoryViewModelTests.swift @@ -62,7 +62,6 @@ private actor FakeVersionHistoryProvider: VersionHistoryProvider { } @MainActor -@Suite("VersionHistoryViewModel") struct VersionHistoryViewModelTests { private static let past = VersionHistoryReference.savedQueryVersion(id: 7) private static let older = VersionHistoryReference.savedQueryVersion(id: 3) @@ -239,7 +238,6 @@ struct VersionHistoryViewModelTests { } } -@Suite("VersionComparison") struct VersionComparisonTests { @Test("Equal text is identical, different text is a line diff that keeps blank lines") func outcomes() { @@ -263,7 +261,6 @@ struct VersionComparisonTests { } } -@Suite("VersionHistoryPage") struct VersionHistoryPageTests { @Test("The current version's baseline is the newest past version, a past version's is the current one") func baselines() { diff --git a/TableProTests/Views/AIChat/AIChatCodeBlockDetectionTests.swift b/TableProTests/Views/AIChat/AIChatCodeBlockDetectionTests.swift index a732a216e5..9d2a006c1b 100644 --- a/TableProTests/Views/AIChat/AIChatCodeBlockDetectionTests.swift +++ b/TableProTests/Views/AIChat/AIChatCodeBlockDetectionTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("AIChatCodeBlockView.detectLanguage") struct AIChatCodeBlockDetectionTests { @Test("SQL prefixes are detected case-insensitively") func sqlPrefixes() { diff --git a/TableProTests/Views/AIChat/AIChatMessageSpacingTests.swift b/TableProTests/Views/AIChat/AIChatMessageSpacingTests.swift index bfd119fe03..4b6d138cce 100644 --- a/TableProTests/Views/AIChat/AIChatMessageSpacingTests.swift +++ b/TableProTests/Views/AIChat/AIChatMessageSpacingTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("AI chat message spacing") @MainActor struct AIChatMessageSpacingTests { private func turn(_ role: ChatRole) -> ChatTurn { diff --git a/TableProTests/Views/AIChat/ChatComposerScrollViewTests.swift b/TableProTests/Views/AIChat/ChatComposerScrollViewTests.swift index 53d01396a3..1373f53339 100644 --- a/TableProTests/Views/AIChat/ChatComposerScrollViewTests.swift +++ b/TableProTests/Views/AIChat/ChatComposerScrollViewTests.swift @@ -8,7 +8,6 @@ import AppKit import Testing @MainActor -@Suite("ChatComposerScrollView layout") struct ChatComposerScrollViewTests { private func makeComposer(width: CGFloat, height: CGFloat = 40) -> ChatComposerScrollView { let textView = ChatComposerNSTextView.make() @@ -109,7 +108,6 @@ struct ChatComposerScrollViewTests { } @MainActor -@Suite("ChatComposerNSTextView accessibility") struct ChatComposerTextViewAccessibilityTests { /// The placeholder is painted in `draw(_:)` and never reaches the accessibility tree, so this /// value is the only name the AI chat field has. It went unset from #2097 until #2995 because diff --git a/TableProTests/Views/AIChat/ChatContentWidthTests.swift b/TableProTests/Views/AIChat/ChatContentWidthTests.swift index 9dc52a627e..2eeac32e19 100644 --- a/TableProTests/Views/AIChat/ChatContentWidthTests.swift +++ b/TableProTests/Views/AIChat/ChatContentWidthTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Chat content width") @MainActor struct ChatContentWidthTests { @Test("A pane conversation is capped at nothing and a reading one at a column") diff --git a/TableProTests/Views/AIChat/ChatImageDropReportTests.swift b/TableProTests/Views/AIChat/ChatImageDropReportTests.swift index a4646c2906..12345aa51f 100644 --- a/TableProTests/Views/AIChat/ChatImageDropReportTests.swift +++ b/TableProTests/Views/AIChat/ChatImageDropReportTests.swift @@ -11,7 +11,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Chat image drop report") struct ChatImageDropReportTests { @Test("A drop with nothing to report says nothing") func noFailuresIsSilent() { diff --git a/TableProTests/Views/AIChat/CodeBlockHeightEstimatorTests.swift b/TableProTests/Views/AIChat/CodeBlockHeightEstimatorTests.swift index 7e082ac4c7..f572fbb7a5 100644 --- a/TableProTests/Views/AIChat/CodeBlockHeightEstimatorTests.swift +++ b/TableProTests/Views/AIChat/CodeBlockHeightEstimatorTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Code block height estimation") struct CodeBlockHeightEstimatorTests { private static var font: NSFont { NSFont.monospacedSystemFont(ofSize: 12, weight: .regular) } diff --git a/TableProTests/Views/AIChat/ComposerHighlightPreferenceTests.swift b/TableProTests/Views/AIChat/ComposerHighlightPreferenceTests.swift index a21a2b6fed..01abff1984 100644 --- a/TableProTests/Views/AIChat/ComposerHighlightPreferenceTests.swift +++ b/TableProTests/Views/AIChat/ComposerHighlightPreferenceTests.swift @@ -13,7 +13,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Composer highlight preference") struct ComposerHighlightPreferenceTests { @Test("The highlight paints when it is on and no system setting overrides it") func paintsWhenEnabled() { diff --git a/TableProTests/Views/AIChat/MarkdownBlockParserTests.swift b/TableProTests/Views/AIChat/MarkdownBlockParserTests.swift index 77689223bf..8ccc9695d3 100644 --- a/TableProTests/Views/AIChat/MarkdownBlockParserTests.swift +++ b/TableProTests/Views/AIChat/MarkdownBlockParserTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("MarkdownBlockParser") struct MarkdownBlockParserTests { @Test("Closed fenced code block is marked closed") func closedFence() { diff --git a/TableProTests/Views/AIChat/MarkdownInlineRepairTests.swift b/TableProTests/Views/AIChat/MarkdownInlineRepairTests.swift index ef478890f3..60d72c37f8 100644 --- a/TableProTests/Views/AIChat/MarkdownInlineRepairTests.swift +++ b/TableProTests/Views/AIChat/MarkdownInlineRepairTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Markdown inline repair for streaming tails") struct MarkdownInlineRepairTests { private func repaired(_ source: String) -> String { MarkdownInlineRepair.repairingDanglingSyntax(source) diff --git a/TableProTests/Views/ArrayValueEditorModelTests.swift b/TableProTests/Views/ArrayValueEditorModelTests.swift index 5aedbd6df3..d0765077bc 100644 --- a/TableProTests/Views/ArrayValueEditorModelTests.swift +++ b/TableProTests/Views/ArrayValueEditorModelTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Array Value Editor Model") struct ArrayValueEditorModelTests { private let labels = ["sad", "ok", "happy"] diff --git a/TableProTests/Views/Backup/BackupOutcomeRowTests.swift b/TableProTests/Views/Backup/BackupOutcomeRowTests.swift index 63aaff2b37..e9a5db0ea6 100644 --- a/TableProTests/Views/Backup/BackupOutcomeRowTests.swift +++ b/TableProTests/Views/Backup/BackupOutcomeRowTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Backup outcome rows") struct BackupOutcomeRowTests { private func outcome( _ database: String, diff --git a/TableProTests/Views/Backup/BackupResultSheetSkippedSettingsTests.swift b/TableProTests/Views/Backup/BackupResultSheetSkippedSettingsTests.swift index d41f05e274..c98e2bbf36 100644 --- a/TableProTests/Views/Backup/BackupResultSheetSkippedSettingsTests.swift +++ b/TableProTests/Views/Backup/BackupResultSheetSkippedSettingsTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("BackupResultSheet skipped settings note") struct BackupResultSheetSkippedSettingsTests { @Test("No note when nothing was skipped") func noSettings() { diff --git a/TableProTests/Views/Compare/CompareCountedStringTests.swift b/TableProTests/Views/Compare/CompareCountedStringTests.swift index dedcf7e262..47549b7bdf 100644 --- a/TableProTests/Views/Compare/CompareCountedStringTests.swift +++ b/TableProTests/Views/Compare/CompareCountedStringTests.swift @@ -12,7 +12,6 @@ import Testing /// counted noun: `String(format:)` resolves a plural variation, but only when the catalog declares /// one. A sentence whose counted noun follows a later argument cannot be reached that way, so those /// carry their own singular in Swift and are pinned here as separate keys. -@Suite("Compare counted strings") struct CompareCountedStringTests { @Test("A single change reads as one change") func singleChangeReadsAsSingular() { diff --git a/TableProTests/Views/Components/DiagramScrollViewTests.swift b/TableProTests/Views/Components/DiagramScrollViewTests.swift index 66177a2437..c4832e23e2 100644 --- a/TableProTests/Views/Components/DiagramScrollViewTests.swift +++ b/TableProTests/Views/Components/DiagramScrollViewTests.swift @@ -10,7 +10,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Diagram scroll view") @MainActor struct DiagramScrollViewTests { private struct Fixture { diff --git a/TableProTests/Views/Components/DiagramViewportControllerTests.swift b/TableProTests/Views/Components/DiagramViewportControllerTests.swift index 0d6378e6aa..f80c1df000 100644 --- a/TableProTests/Views/Components/DiagramViewportControllerTests.swift +++ b/TableProTests/Views/Components/DiagramViewportControllerTests.swift @@ -10,7 +10,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Diagram Viewport Controller") @MainActor struct DiagramViewportControllerTests { private func makeScrollView(content: CGSize, visible: CGSize) -> DiagramScrollView { diff --git a/TableProTests/Views/Components/DiagramZoomCommandTests.swift b/TableProTests/Views/Components/DiagramZoomCommandTests.swift index 3dd48a9251..79874d34a5 100644 --- a/TableProTests/Views/Components/DiagramZoomCommandTests.swift +++ b/TableProTests/Views/Components/DiagramZoomCommandTests.swift @@ -10,7 +10,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Diagram zoom commands") @MainActor struct DiagramZoomCommandTests { private struct Fixture { diff --git a/TableProTests/Views/Components/HighlightCapTests.swift b/TableProTests/Views/Components/HighlightCapTests.swift index fe6342caa4..fdfee7c42d 100644 --- a/TableProTests/Views/Components/HighlightCapTests.swift +++ b/TableProTests/Views/Components/HighlightCapTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Highlight Capping") struct HighlightCapTests { private static let maxHighlightLength = 10_000 diff --git a/TableProTests/Views/Components/IntegrationStatusIndicatorTests.swift b/TableProTests/Views/Components/IntegrationStatusIndicatorTests.swift index d17b57c34e..0059e86d8e 100644 --- a/TableProTests/Views/Components/IntegrationStatusIndicatorTests.swift +++ b/TableProTests/Views/Components/IntegrationStatusIndicatorTests.swift @@ -2,7 +2,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("IntegrationStatusIndicator") struct IntegrationStatusIndicatorTests { @Test("Running status exposes a localized accessibility label") func runningLabel() { diff --git a/TableProTests/Views/Components/PopoverPresenterTests.swift b/TableProTests/Views/Components/PopoverPresenterTests.swift index 1f731f9bf7..28e63f07ff 100644 --- a/TableProTests/Views/Components/PopoverPresenterTests.swift +++ b/TableProTests/Views/Components/PopoverPresenterTests.swift @@ -13,7 +13,6 @@ import Testing /// 320x320 box it invented and then resize the window from the origin it had already chosen. The /// popover walked up and left off its own anchor. These assert the size is known before anything is /// presented, since that is the only input the placement has. -@Suite("Popover presenter publishes its content size before showing") @MainActor struct PopoverPresenterTests { private struct FixedContent: View { diff --git a/TableProTests/Views/Components/SplitDividerCursorGeometryTests.swift b/TableProTests/Views/Components/SplitDividerCursorGeometryTests.swift index 5671f39ae9..28123a9c48 100644 --- a/TableProTests/Views/Components/SplitDividerCursorGeometryTests.swift +++ b/TableProTests/Views/Components/SplitDividerCursorGeometryTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Split divider cursor geometry") @MainActor struct SplitDividerCursorGeometryTests { @Test("A vertical split places one padded, full-height rect over the divider") diff --git a/TableProTests/Views/Connection/ConnectionRecoveryPresentationTests.swift b/TableProTests/Views/Connection/ConnectionRecoveryPresentationTests.swift index adee360c7f..0a997f5ebd 100644 --- a/TableProTests/Views/Connection/ConnectionRecoveryPresentationTests.swift +++ b/TableProTests/Views/Connection/ConnectionRecoveryPresentationTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Connection recovery presentation") @MainActor struct ConnectionRecoveryPresentationTests { private static let failure = ConnectionFailureInfo(message: "The plugin is turned off.") diff --git a/TableProTests/Views/Connection/HostListSelectionTests.swift b/TableProTests/Views/Connection/HostListSelectionTests.swift index e785c6ea05..1f4d8c017c 100644 --- a/TableProTests/Views/Connection/HostListSelectionTests.swift +++ b/TableProTests/Views/Connection/HostListSelectionTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Host list selection after delete") struct HostListSelectionTests { @Test("removing middle row selects row that takes its place") func removeMiddle() { diff --git a/TableProTests/Views/ConnectionForm/ClearedSecretSaveTests.swift b/TableProTests/Views/ConnectionForm/ClearedSecretSaveTests.swift index c70b00e892..13e1a55b7b 100644 --- a/TableProTests/Views/ConnectionForm/ClearedSecretSaveTests.swift +++ b/TableProTests/Views/ConnectionForm/ClearedSecretSaveTests.swift @@ -11,7 +11,6 @@ import Testing /// Emptying a password field and saving has to delete the stored secret. Leaving it behind means /// the next connect still authenticates with the old password, an encrypted export still carries /// it, and a duplicate copies it. -@Suite("Cleared secrets are deleted on save") @MainActor struct ClearedSecretSaveTests { private final class ScriptedKeychain: KeychainStoring, @unchecked Sendable { diff --git a/TableProTests/Views/ConnectionForm/LoadableExtensionListModelTests.swift b/TableProTests/Views/ConnectionForm/LoadableExtensionListModelTests.swift index 2a8a8eb91f..8aa63299e5 100644 --- a/TableProTests/Views/ConnectionForm/LoadableExtensionListModelTests.swift +++ b/TableProTests/Views/ConnectionForm/LoadableExtensionListModelTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Extensions list in the connection form") struct LoadableExtensionListModelTests { private let directory: URL diff --git a/TableProTests/Views/ConnectionForm/NetworkPaneDatabaseFieldTests.swift b/TableProTests/Views/ConnectionForm/NetworkPaneDatabaseFieldTests.swift index a6fbdec3ea..aa9976111b 100644 --- a/TableProTests/Views/ConnectionForm/NetworkPaneDatabaseFieldTests.swift +++ b/TableProTests/Views/ConnectionForm/NetworkPaneDatabaseFieldTests.swift @@ -11,7 +11,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection form database field") @MainActor struct NetworkPaneDatabaseFieldTests { private func model(for type: DatabaseType) -> NetworkPaneViewModel { diff --git a/TableProTests/Views/ConnectionForm/NetworkPaneSocketForwardTests.swift b/TableProTests/Views/ConnectionForm/NetworkPaneSocketForwardTests.swift index a0d896a218..c93ebb443a 100644 --- a/TableProTests/Views/ConnectionForm/NetworkPaneSocketForwardTests.swift +++ b/TableProTests/Views/ConnectionForm/NetworkPaneSocketForwardTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Network pane socket forwarding") @MainActor struct NetworkPaneSocketForwardTests { @Test("An absolute socket file path raises no issue") diff --git a/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneExtensionTests.swift b/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneExtensionTests.swift index 9a7697511b..d169f46202 100644 --- a/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneExtensionTests.swift +++ b/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneExtensionTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection form extensions") @MainActor struct AdvancedPaneExtensionTests { private let vec = LoadableExtension(path: "/opt/homebrew/lib/vec0.dylib") diff --git a/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneViewModelTests.swift b/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneViewModelTests.swift index 530e911c22..cb75ba406b 100644 --- a/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneViewModelTests.swift +++ b/TableProTests/Views/ConnectionForm/ViewModels/AdvancedPaneViewModelTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Advanced pane external access") @MainActor struct AdvancedPaneViewModelTests { @Test("Loads external access from the connection") diff --git a/TableProTests/Views/DataGridCellSelectionFillTests.swift b/TableProTests/Views/DataGridCellSelectionFillTests.swift index 09893d4f3f..cbb0c7960d 100644 --- a/TableProTests/Views/DataGridCellSelectionFillTests.swift +++ b/TableProTests/Views/DataGridCellSelectionFillTests.swift @@ -10,7 +10,6 @@ import Testing /// The cell-range wash has to stay visible when the grid loses focus. Thinning the unemphasized /// selection colour out to 28% put it at 1.09:1 against a white grid, which reads as no selection /// at all, so the colour is now used at the opacity AppKit uses it at. -@Suite("Data grid cell selection fill") @MainActor struct DataGridCellSelectionFillTests { /// The fill is built inside the appearance block. A dynamic colour resolves against whatever diff --git a/TableProTests/Views/DatabaseSwitcher/SchemaFormRulesTests.swift b/TableProTests/Views/DatabaseSwitcher/SchemaFormRulesTests.swift index aeb4f17a18..0206456253 100644 --- a/TableProTests/Views/DatabaseSwitcher/SchemaFormRulesTests.swift +++ b/TableProTests/Views/DatabaseSwitcher/SchemaFormRulesTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Schema Form Rules") struct SchemaFormRulesTests { private let privileges = [ PluginPrivilegeDescriptor(name: "USAGE", label: "Usage"), diff --git a/TableProTests/Views/DatabaseTreeTypeSelectTests.swift b/TableProTests/Views/DatabaseTreeTypeSelectTests.swift index 7b8238d748..d287902b42 100644 --- a/TableProTests/Views/DatabaseTreeTypeSelectTests.swift +++ b/TableProTests/Views/DatabaseTreeTypeSelectTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Database tree type select") struct DatabaseTreeTypeSelectTests { private static let upArrow: UInt16 = 126 private static let downArrow: UInt16 = 125 diff --git a/TableProTests/Views/ERDiagram/DiagramPaintCoverageTests.swift b/TableProTests/Views/ERDiagram/DiagramPaintCoverageTests.swift index 67906da7f0..deff235b29 100644 --- a/TableProTests/Views/ERDiagram/DiagramPaintCoverageTests.swift +++ b/TableProTests/Views/ERDiagram/DiagramPaintCoverageTests.swift @@ -13,7 +13,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Diagram paint coverage under magnification") @MainActor struct DiagramPaintCoverageTests { private static let canvasSize = CGSize(width: 2_400, height: 1_600) diff --git a/TableProTests/Views/ERDiagram/ERDiagramAccessibilityTests.swift b/TableProTests/Views/ERDiagram/ERDiagramAccessibilityTests.swift index 27ce60ec34..0ed0447ccc 100644 --- a/TableProTests/Views/ERDiagram/ERDiagramAccessibilityTests.swift +++ b/TableProTests/Views/ERDiagram/ERDiagramAccessibilityTests.swift @@ -11,7 +11,6 @@ import AppKit @testable import TablePro import Testing -@Suite("ER diagram accessibility") @MainActor struct ERDiagramAccessibilityTests { private func column(_ name: String, primaryKey: Bool = false, foreignKey: Bool = false) -> ERColumnDisplay { diff --git a/TableProTests/Views/ERDiagram/ERDiagramPointerInputTests.swift b/TableProTests/Views/ERDiagram/ERDiagramPointerInputTests.swift index 0b2654af72..4f99786364 100644 --- a/TableProTests/Views/ERDiagram/ERDiagramPointerInputTests.swift +++ b/TableProTests/Views/ERDiagram/ERDiagramPointerInputTests.swift @@ -11,7 +11,6 @@ import AppKit @testable import TablePro import Testing -@Suite("ER diagram pointer input") @MainActor struct ERDiagramPointerInputTests { @MainActor diff --git a/TableProTests/Views/ERDiagram/ERDiagramSelfReferenceTests.swift b/TableProTests/Views/ERDiagram/ERDiagramSelfReferenceTests.swift index 04ef7fc765..69529f82fc 100644 --- a/TableProTests/Views/ERDiagram/ERDiagramSelfReferenceTests.swift +++ b/TableProTests/Views/ERDiagram/ERDiagramSelfReferenceTests.swift @@ -14,7 +14,6 @@ import Testing /// Smallest possible node (one column), a mid-sized one, and a very tall one. private let selfLoopNodeHeights: [CGFloat] = [58, 212, 916] -@Suite("ER diagram self-referencing relationships") @MainActor struct ERDiagramSelfReferenceTests { diff --git a/TableProTests/Views/Editor/AIEditorContextMenuTests.swift b/TableProTests/Views/Editor/AIEditorContextMenuTests.swift index 11b3cb3fa2..0b00c0b2c7 100644 --- a/TableProTests/Views/Editor/AIEditorContextMenuTests.swift +++ b/TableProTests/Views/Editor/AIEditorContextMenuTests.swift @@ -8,7 +8,6 @@ import AppKit import Testing @MainActor -@Suite("Editor context menu AI group") struct AIEditorContextMenuTests { private func builtMenu( availability: AIQueryActionAvailability, diff --git a/TableProTests/Views/Editor/EditorContextMenuRoutingTests.swift b/TableProTests/Views/Editor/EditorContextMenuRoutingTests.swift index 32dca25433..bc8075458d 100644 --- a/TableProTests/Views/Editor/EditorContextMenuRoutingTests.swift +++ b/TableProTests/Views/Editor/EditorContextMenuRoutingTests.swift @@ -13,7 +13,6 @@ import TableProTextEngine import Testing @MainActor -@Suite("Editor context menu routing") struct EditorContextMenuRoutingTests { @Test("A menu assigned to the text view wins over the standard editing items") func assignedMenuIsResolved() { diff --git a/TableProTests/Views/Editor/EditorLifecycleTeardownTests.swift b/TableProTests/Views/Editor/EditorLifecycleTeardownTests.swift index 8797d9ec7b..7d8c761aca 100644 --- a/TableProTests/Views/Editor/EditorLifecycleTeardownTests.swift +++ b/TableProTests/Views/Editor/EditorLifecycleTeardownTests.swift @@ -42,7 +42,6 @@ private struct DismantleProbe: NSViewControllerRepresentable { } @MainActor -@Suite("Editor lifecycle teardown") struct EditorLifecycleTeardownTests { @Test("releaseHeavyState keeps the document") func releaseHeavyStateKeepsDocument() { diff --git a/TableProTests/Views/Editor/EditorPeripheralsTests.swift b/TableProTests/Views/Editor/EditorPeripheralsTests.swift index 2821e75c8e..4614648599 100644 --- a/TableProTests/Views/Editor/EditorPeripheralsTests.swift +++ b/TableProTests/Views/Editor/EditorPeripheralsTests.swift @@ -11,7 +11,6 @@ import Testing /// A gutter can be shown without line numbers so it can host the fold rail alone, and that is what left a 30pt /// column holding a 14pt control, blank whenever the document had nothing to fold. Every editor in the app builds /// its peripherals here so the two can never be set apart again. -@Suite("Editor peripherals") struct EditorPeripheralsTests { @Test("A gutter is shown exactly when line numbers are", arguments: [true, false]) diff --git a/TableProTests/Views/Editor/EditorThemeBridgeTests.swift b/TableProTests/Views/Editor/EditorThemeBridgeTests.swift index d474ad6574..f231d5f39a 100644 --- a/TableProTests/Views/Editor/EditorThemeBridgeTests.swift +++ b/TableProTests/Views/Editor/EditorThemeBridgeTests.swift @@ -11,7 +11,6 @@ import AppKit import TableProEditorKit import Testing -@Suite("Editor theme bridge") struct EditorThemeBridgeTests { @MainActor @Test("The theme's operator and function colours reach the editor") diff --git a/TableProTests/Views/Editor/FoldCommandBehaviourTests.swift b/TableProTests/Views/Editor/FoldCommandBehaviourTests.swift index 1662cb83ed..5cb48300f3 100644 --- a/TableProTests/Views/Editor/FoldCommandBehaviourTests.swift +++ b/TableProTests/Views/Editor/FoldCommandBehaviourTests.swift @@ -13,7 +13,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Fold commands") @MainActor struct FoldCommandBehaviourTests { private let script = """ diff --git a/TableProTests/Views/Editor/FoldGutterLayoutTests.swift b/TableProTests/Views/Editor/FoldGutterLayoutTests.swift index 89f4dd7d35..24d018510c 100644 --- a/TableProTests/Views/Editor/FoldGutterLayoutTests.swift +++ b/TableProTests/Views/Editor/FoldGutterLayoutTests.swift @@ -11,7 +11,6 @@ import TableProGrammars import TableProTextEngine import Testing -@Suite("Fold gutter layout") @MainActor struct FoldGutterLayoutTests { diff --git a/TableProTests/Views/Editor/FoldPreviewHitTestTests.swift b/TableProTests/Views/Editor/FoldPreviewHitTestTests.swift index ae84cfd0f6..d32508077e 100644 --- a/TableProTests/Views/Editor/FoldPreviewHitTestTests.swift +++ b/TableProTests/Views/Editor/FoldPreviewHitTestTests.swift @@ -13,7 +13,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Fold preview hit testing") @MainActor struct FoldPreviewHitTestTests { private let script = """ diff --git a/TableProTests/Views/Editor/FoldPreviewMetricsTests.swift b/TableProTests/Views/Editor/FoldPreviewMetricsTests.swift index 011de1a008..a0a1dd4a7f 100644 --- a/TableProTests/Views/Editor/FoldPreviewMetricsTests.swift +++ b/TableProTests/Views/Editor/FoldPreviewMetricsTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing @testable import TablePro -@Suite("Fold preview metrics") struct FoldPreviewMetricsTests { private let font = NSFont.monospacedSystemFont(ofSize: 12, weight: .regular) diff --git a/TableProTests/Views/Editor/FoldTabOwnershipTests.swift b/TableProTests/Views/Editor/FoldTabOwnershipTests.swift index 5fc7904754..f77a91d17b 100644 --- a/TableProTests/Views/Editor/FoldTabOwnershipTests.swift +++ b/TableProTests/Views/Editor/FoldTabOwnershipTests.swift @@ -12,7 +12,6 @@ import Testing /// They used to live in a window wide property that persistence read for whichever tab was selected, with the tab's /// own copy cleared the first time its view appeared. Switching between two tabs that both had folds could then write /// one tab's regions onto the other, and the guard against it compared document lengths. -@Suite("Fold tab ownership") @MainActor struct FoldTabOwnershipTests { private func makeCoordinator(tabManager: QueryTabManager) -> MainContentCoordinator { diff --git a/TableProTests/Views/Editor/KeywordUppercaseHelperTests.swift b/TableProTests/Views/Editor/KeywordUppercaseHelperTests.swift index b6639c83db..56eda52d89 100644 --- a/TableProTests/Views/Editor/KeywordUppercaseHelperTests.swift +++ b/TableProTests/Views/Editor/KeywordUppercaseHelperTests.swift @@ -3,7 +3,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("KeywordUppercaseHelper") struct KeywordUppercaseHelperTests { // MARK: - isWordBoundary diff --git a/TableProTests/Views/Editor/QueryCompletionAdapterLifecycleTests.swift b/TableProTests/Views/Editor/QueryCompletionAdapterLifecycleTests.swift index c87e03f2e0..28aa658559 100644 --- a/TableProTests/Views/Editor/QueryCompletionAdapterLifecycleTests.swift +++ b/TableProTests/Views/Editor/QueryCompletionAdapterLifecycleTests.swift @@ -17,7 +17,6 @@ import TableProPluginKit import TableProTextEngine import Testing -@Suite("Query Completion Adapter Lifecycle") struct QueryCompletionAdapterLifecycleTests { @Test("engine returns keyword completions with no schema provider") func keywordsAvailableWithoutSchema() async { diff --git a/TableProTests/Views/Editor/QueryCompletionProfileRegistryTests.swift b/TableProTests/Views/Editor/QueryCompletionProfileRegistryTests.swift index 76a5d71237..9319a58f4d 100644 --- a/TableProTests/Views/Editor/QueryCompletionProfileRegistryTests.swift +++ b/TableProTests/Views/Editor/QueryCompletionProfileRegistryTests.swift @@ -26,7 +26,6 @@ private final class LeaseCountingMetadataProvider: ScopedMetadataProviding { func browseScope(for connectionId: UUID) -> DatabaseScope? { scope } } -@Suite("Query completion profile registry") @MainActor struct QueryCompletionProfileRegistryTests { actor Counter { diff --git a/TableProTests/Views/Editor/QueryCompletionRankingTests.swift b/TableProTests/Views/Editor/QueryCompletionRankingTests.swift index b0d0b1ef61..0867c20954 100644 --- a/TableProTests/Views/Editor/QueryCompletionRankingTests.swift +++ b/TableProTests/Views/Editor/QueryCompletionRankingTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Query Completion Ranking") struct QueryCompletionRankingTests { // MARK: - The session pool diff --git a/TableProTests/Views/Editor/QueryDiagnosticsRefreshTests.swift b/TableProTests/Views/Editor/QueryDiagnosticsRefreshTests.swift index 598ea4575b..6edc41aaaf 100644 --- a/TableProTests/Views/Editor/QueryDiagnosticsRefreshTests.swift +++ b/TableProTests/Views/Editor/QueryDiagnosticsRefreshTests.swift @@ -23,7 +23,6 @@ private final class DocumentReplacementRecorder: TextViewCoordinator { } @MainActor -@Suite("Query diagnostics refresh") struct QueryDiagnosticsRefreshTests { private func makeEditor(_ text: String = "") -> (SQLEditorCoordinator, TextViewController) { let coordinator = SQLEditorCoordinator() @@ -135,7 +134,6 @@ struct QueryDiagnosticsRefreshTests { } @MainActor -@Suite("Query diagnostic messages") struct QueryDiagnosticMessageTests { private func makeChecked(_ text: String) -> (QueryDiagnosticsController, TextViewController) { let controller = EditorControllerFixture.make(string: text) diff --git a/TableProTests/Views/Editor/RemoveInvisibleCharactersCommandTests.swift b/TableProTests/Views/Editor/RemoveInvisibleCharactersCommandTests.swift index 4a2a403736..c03f6385ce 100644 --- a/TableProTests/Views/Editor/RemoveInvisibleCharactersCommandTests.swift +++ b/TableProTests/Views/Editor/RemoveInvisibleCharactersCommandTests.swift @@ -11,7 +11,6 @@ import TableProTextEngine import Testing @MainActor -@Suite("Remove Invisible Characters command") struct RemoveInvisibleCharactersCommandTests { private func makeEditor(_ text: String) -> (SQLEditorCoordinator, TextViewController) { let controller = EditorControllerFixture.make(string: text) diff --git a/TableProTests/Views/Editor/SQLCompletionAdapterFuzzyTests.swift b/TableProTests/Views/Editor/SQLCompletionAdapterFuzzyTests.swift index 263eff552f..4ecd58fcaf 100644 --- a/TableProTests/Views/Editor/SQLCompletionAdapterFuzzyTests.swift +++ b/TableProTests/Views/Editor/SQLCompletionAdapterFuzzyTests.swift @@ -9,7 +9,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SQL Completion Fuzzy Matching") struct SQLCompletionAdapterFuzzyTests { /// Helper: wraps SQLCompletionProvider.fuzzyMatchScore as a bool match /// to preserve existing test semantics after the fuzzy logic was unified. diff --git a/TableProTests/Views/Editor/SQLCompletionProviderConcurrencyTests.swift b/TableProTests/Views/Editor/SQLCompletionProviderConcurrencyTests.swift index 9f134499c2..5fa95f6da2 100644 --- a/TableProTests/Views/Editor/SQLCompletionProviderConcurrencyTests.swift +++ b/TableProTests/Views/Editor/SQLCompletionProviderConcurrencyTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import Testing -@Suite("SQL Completion Provider Concurrency") struct SQLCompletionProviderConcurrencyTests { private func makeProvider() -> SQLCompletionProvider { SQLCompletionProvider(schemaProvider: SQLSchemaProvider()) diff --git a/TableProTests/Views/Editor/SQLCompletionProviderFuzzyDedupeTests.swift b/TableProTests/Views/Editor/SQLCompletionProviderFuzzyDedupeTests.swift index 809724722e..f5979d404d 100644 --- a/TableProTests/Views/Editor/SQLCompletionProviderFuzzyDedupeTests.swift +++ b/TableProTests/Views/Editor/SQLCompletionProviderFuzzyDedupeTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("SQL Completion Fuzzy Dedupe") struct SQLCompletionProviderFuzzyDedupeTests { private func makeProvider() -> SQLCompletionProvider { SQLCompletionProvider(schemaProvider: SQLSchemaProvider()) diff --git a/TableProTests/Views/Editor/SQLEditorCoordinatorCleanupTests.swift b/TableProTests/Views/Editor/SQLEditorCoordinatorCleanupTests.swift index ad09423765..9e252288e9 100644 --- a/TableProTests/Views/Editor/SQLEditorCoordinatorCleanupTests.swift +++ b/TableProTests/Views/Editor/SQLEditorCoordinatorCleanupTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("SQLEditorCoordinator Cleanup") struct SQLEditorCoordinatorCleanupTests { // MARK: - destroy() Safety diff --git a/TableProTests/Views/Editor/SQLEditorCoordinatorEscapeMenuTests.swift b/TableProTests/Views/Editor/SQLEditorCoordinatorEscapeMenuTests.swift index 41f337e544..e1e60a10d1 100644 --- a/TableProTests/Views/Editor/SQLEditorCoordinatorEscapeMenuTests.swift +++ b/TableProTests/Views/Editor/SQLEditorCoordinatorEscapeMenuTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing @MainActor -@Suite("SQLEditorCoordinator menu escape") struct SQLEditorCoordinatorEscapeMenuTests { @Test("handleEscapeFromMenu returns false when no editor is focused") func returnsFalseWhenNothingToHandle() { diff --git a/TableProTests/Views/Editor/SQLEditorCoordinatorTests.swift b/TableProTests/Views/Editor/SQLEditorCoordinatorTests.swift index 4e34728612..8719c29eb4 100644 --- a/TableProTests/Views/Editor/SQLEditorCoordinatorTests.swift +++ b/TableProTests/Views/Editor/SQLEditorCoordinatorTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("SQLEditorCoordinator") struct SQLEditorCoordinatorTests { @Test("Initial isDestroyed is false") func initialIsDestroyedIsFalse() { diff --git a/TableProTests/Views/Editor/SQLFoldPerformanceGuardTests.swift b/TableProTests/Views/Editor/SQLFoldPerformanceGuardTests.swift index b1972695ea..2013b9e42c 100644 --- a/TableProTests/Views/Editor/SQLFoldPerformanceGuardTests.swift +++ b/TableProTests/Views/Editor/SQLFoldPerformanceGuardTests.swift @@ -16,7 +16,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("SQL folding performance guards") @MainActor struct SQLFoldPerformanceGuardTests { diff --git a/TableProTests/Views/Editor/StatementNavigationCommandTests.swift b/TableProTests/Views/Editor/StatementNavigationCommandTests.swift index e5e3562581..9a690b7f6e 100644 --- a/TableProTests/Views/Editor/StatementNavigationCommandTests.swift +++ b/TableProTests/Views/Editor/StatementNavigationCommandTests.swift @@ -16,7 +16,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Statement navigation commands") @MainActor struct StatementNavigationCommandTests { diff --git a/TableProTests/Views/Editor/StatementRunControllerTests.swift b/TableProTests/Views/Editor/StatementRunControllerTests.swift index 17e11c426a..fa59d83833 100644 --- a/TableProTests/Views/Editor/StatementRunControllerTests.swift +++ b/TableProTests/Views/Editor/StatementRunControllerTests.swift @@ -16,7 +16,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Statement run controls") @MainActor struct StatementRunControllerTests { diff --git a/TableProTests/Views/Editor/StatementRunPerformanceGuardTests.swift b/TableProTests/Views/Editor/StatementRunPerformanceGuardTests.swift index 1bc731c94d..9c604f18e2 100644 --- a/TableProTests/Views/Editor/StatementRunPerformanceGuardTests.swift +++ b/TableProTests/Views/Editor/StatementRunPerformanceGuardTests.swift @@ -17,7 +17,6 @@ import TableProSQLGrammar import TableProTextEngine import Testing -@Suite("Statement decoration performance guards") struct StatementRunPerformanceGuardTests { @Test("A full scan of a large script stays fast enough to run on a typing pause") diff --git a/TableProTests/Views/Export/ExportTreeBuilderTests.swift b/TableProTests/Views/Export/ExportTreeBuilderTests.swift index 5613d48e53..721feb8609 100644 --- a/TableProTests/Views/Export/ExportTreeBuilderTests.swift +++ b/TableProTests/Views/Export/ExportTreeBuilderTests.swift @@ -12,7 +12,6 @@ import Testing /// to open a real connection and click Export. These pin the ones that shipped as bugs: a schema /// section that stayed shut over a correctly ticked row, a container listed with no objects in it, /// and a row losing its checkboxes across the reload a format change causes. -@Suite("Export tree building") @MainActor struct ExportTreeBuilderTests { private final class FakeReader: ExportMetadataReading { @@ -357,7 +356,6 @@ struct ExportTreeBuilderTests { /// What the export dialog's own `information_schema.TABLES` read makes of each `TABLE_TYPE` it can /// be answered with. The read builds a driver of its own, so no test reaches it through /// `ExportMetadataReading`; the mapping is pinned here and the reader has nothing else to decide. -@Suite("Export catalog table types") struct ExportCatalogTableTypeTests { /// Measured on MySQL 8.4.11 and MariaDB 11.4.13: every one of `information_schema`'s 78 and 82 /// objects is `SYSTEM VIEW`. Read as a system table, `PluginExportObjectKind.from` answers diff --git a/TableProTests/Views/FieldDrivenListEmphasisTests.swift b/TableProTests/Views/FieldDrivenListEmphasisTests.swift index 3e7277cb40..81db7d2be5 100644 --- a/TableProTests/Views/FieldDrivenListEmphasisTests.swift +++ b/TableProTests/Views/FieldDrivenListEmphasisTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Field driven list row emphasis") @MainActor struct FieldDrivenListEmphasisTests { /// The headless test host never gives a window the keyboard, so the one input the chooser rule diff --git a/TableProTests/Views/FieldDrivenListEntryTests.swift b/TableProTests/Views/FieldDrivenListEntryTests.swift index 098608eed9..d947a3de6d 100644 --- a/TableProTests/Views/FieldDrivenListEntryTests.swift +++ b/TableProTests/Views/FieldDrivenListEntryTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Field driven list entries") struct FieldDrivenListEntryTests { private struct Item: Identifiable, Equatable { let id: String diff --git a/TableProTests/Views/FieldDrivenListMenuTests.swift b/TableProTests/Views/FieldDrivenListMenuTests.swift index 1be3d2ccef..e8f1be35a9 100644 --- a/TableProTests/Views/FieldDrivenListMenuTests.swift +++ b/TableProTests/Views/FieldDrivenListMenuTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Field driven list context menu") @MainActor struct FieldDrivenListMenuTests { private static let rowCount = 3 diff --git a/TableProTests/Views/Filter/CellFilterMenuBuilderTests.swift b/TableProTests/Views/Filter/CellFilterMenuBuilderTests.swift index 433be9efc8..7f8bc059bf 100644 --- a/TableProTests/Views/Filter/CellFilterMenuBuilderTests.swift +++ b/TableProTests/Views/Filter/CellFilterMenuBuilderTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cell filter menu builder") @MainActor struct CellFilterMenuBuilderTests { private func operators( diff --git a/TableProTests/Views/Filter/FilterFocusStateTests.swift b/TableProTests/Views/Filter/FilterFocusStateTests.swift index 67e4570a65..e733582887 100644 --- a/TableProTests/Views/Filter/FilterFocusStateTests.swift +++ b/TableProTests/Views/Filter/FilterFocusStateTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Filter Focus State") struct FilterFocusStateTests { @Test("Claims focus when requested id matches identity") func testClaimFocus_newRequestClaims() { diff --git a/TableProTests/Views/Filter/FilterPanelActionsTests.swift b/TableProTests/Views/Filter/FilterPanelActionsTests.swift index 2fbb738b5f..d06c8fb0df 100644 --- a/TableProTests/Views/Filter/FilterPanelActionsTests.swift +++ b/TableProTests/Views/Filter/FilterPanelActionsTests.swift @@ -19,7 +19,6 @@ private final class RecordingFilterPanelActions: FilterPanelActions { func focusGrid() { calls.append("focus") } } -@Suite("Filter panel actions") @MainActor struct FilterPanelActionsTests { @Test("Removing a row reloads only when it was running, and clears when nothing is left running") diff --git a/TableProTests/Views/Filter/FilterValueTextFieldTests.swift b/TableProTests/Views/Filter/FilterValueTextFieldTests.swift index 2ab80570ff..070e3a70ad 100644 --- a/TableProTests/Views/Filter/FilterValueTextFieldTests.swift +++ b/TableProTests/Views/Filter/FilterValueTextFieldTests.swift @@ -10,7 +10,6 @@ import SwiftUI import TableProPluginKit import Testing -@Suite("Filter Value Text Field Suggestions") struct FilterValueTextFieldTests { @Test("Prefix match is case-insensitive and preserves original case") func testSuggestions_prefixMatchCaseInsensitive() { diff --git a/TableProTests/Views/FilterCaseSensitivityPresentationTests.swift b/TableProTests/Views/FilterCaseSensitivityPresentationTests.swift index 46ad2f053b..495c0c16c8 100644 --- a/TableProTests/Views/FilterCaseSensitivityPresentationTests.swift +++ b/TableProTests/Views/FilterCaseSensitivityPresentationTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Filter Case Sensitivity Presentation") struct FilterCaseSensitivityPresentationTests { private func presentation( _ filterOperator: FilterOperator, diff --git a/TableProTests/Views/GroupMenuEntriesTests.swift b/TableProTests/Views/GroupMenuEntriesTests.swift index 22828d0547..33f04b06ae 100644 --- a/TableProTests/Views/GroupMenuEntriesTests.swift +++ b/TableProTests/Views/GroupMenuEntriesTests.swift @@ -6,7 +6,6 @@ @testable import TablePro import Testing -@Suite("Group menu entries") struct GroupMenuEntriesTests { private func group( _ name: String, diff --git a/TableProTests/Views/Highlight/HighlightRuleEditingTests.swift b/TableProTests/Views/Highlight/HighlightRuleEditingTests.swift index 0dfd7e5256..14451078e3 100644 --- a/TableProTests/Views/Highlight/HighlightRuleEditingTests.swift +++ b/TableProTests/Views/Highlight/HighlightRuleEditingTests.swift @@ -8,7 +8,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Highlight rule editing") @MainActor struct HighlightRuleEditingTests { private func rule( diff --git a/TableProTests/Views/HistoryRowTintTests.swift b/TableProTests/Views/HistoryRowTintTests.swift index 43eff34050..98ae6a8c0b 100644 --- a/TableProTests/Views/HistoryRowTintTests.swift +++ b/TableProTests/Views/HistoryRowTintTests.swift @@ -8,7 +8,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("History row tints on a selection fill") @MainActor struct HistoryRowTintTests { private func entry(wasSuccessful: Bool) -> QueryHistoryEntry { diff --git a/TableProTests/Views/Hosting/HostingViewSizingOptionsTests.swift b/TableProTests/Views/Hosting/HostingViewSizingOptionsTests.swift index 86be653e7f..de28bde35c 100644 --- a/TableProTests/Views/Hosting/HostingViewSizingOptionsTests.swift +++ b/TableProTests/Views/Hosting/HostingViewSizingOptionsTests.swift @@ -11,7 +11,6 @@ import Testing /// AppKit view. CLAUDE.md's rule about that cost, and about a nested minimum reaching the window's /// split dividers, is written entirely in terms of `NSHostingController`; `NSHostingView` inherits /// none of it. A host pinned to a container it does not size states `[]`. -@Suite("Hosting view sizing options") struct HostingViewSizingOptionsTests { /// Each host is pinned by constraints or by the enclosing table's own row geometry, so none of /// them may publish a size of its own. A window's `contentView` is deliberately not on this diff --git a/TableProTests/Views/IconOnlyControlLabelTests.swift b/TableProTests/Views/IconOnlyControlLabelTests.swift index b82132db31..11700185f8 100644 --- a/TableProTests/Views/IconOnlyControlLabelTests.swift +++ b/TableProTests/Views/IconOnlyControlLabelTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing -@Suite("Icon-only control labels") struct IconOnlyControlLabelTests { private static let labelMarker = "} label: {" diff --git a/TableProTests/Views/Main/AIChatInsertQueryTests.swift b/TableProTests/Views/Main/AIChatInsertQueryTests.swift index 7ad8d680da..5fe1ffc01f 100644 --- a/TableProTests/Views/Main/AIChatInsertQueryTests.swift +++ b/TableProTests/Views/Main/AIChatInsertQueryTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("AIChatInsertQuery") struct AIChatInsertQueryTests { @Test("Reuses the selected query tab only when it is empty") @MainActor diff --git a/TableProTests/Views/Main/CellFilterApplyTests.swift b/TableProTests/Views/Main/CellFilterApplyTests.swift index a76c48faa5..3f298e07d8 100644 --- a/TableProTests/Views/Main/CellFilterApplyTests.swift +++ b/TableProTests/Views/Main/CellFilterApplyTests.swift @@ -18,7 +18,6 @@ private final class CellFilterLayoutPersister: ColumnLayoutPersisting { } /// The cell menu's Filter item, from the menu the data tab's delegate builds to the query it runs. -@Suite("Cell filter apply") @MainActor struct CellFilterApplyTests { private let rows = TableRows.from( diff --git a/TableProTests/Views/Main/ClearQueryResultsTests.swift b/TableProTests/Views/Main/ClearQueryResultsTests.swift index 5c3b1c0558..ba240b549d 100644 --- a/TableProTests/Views/Main/ClearQueryResultsTests.swift +++ b/TableProTests/Views/Main/ClearQueryResultsTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("ClearQueryResults") struct ClearQueryResultsTests { @Test("Clearing results empties rows, result sets, and execution state") @MainActor diff --git a/TableProTests/Views/Main/CommandActionsBulkCloseTests.swift b/TableProTests/Views/Main/CommandActionsBulkCloseTests.swift index 212b0e01b2..fc42c25c56 100644 --- a/TableProTests/Views/Main/CommandActionsBulkCloseTests.swift +++ b/TableProTests/Views/Main/CommandActionsBulkCloseTests.swift @@ -13,7 +13,7 @@ import SwiftUI import TableProPluginKit import Testing -@MainActor @Suite("CommandActions Bulk Close") +@MainActor struct CommandActionsBulkCloseTests { private struct Window { let actions: MainContentCommandActions diff --git a/TableProTests/Views/Main/CommandActionsCloseSelectionTests.swift b/TableProTests/Views/Main/CommandActionsCloseSelectionTests.swift index f6dbc0fc6d..414a8c2946 100644 --- a/TableProTests/Views/Main/CommandActionsCloseSelectionTests.swift +++ b/TableProTests/Views/Main/CommandActionsCloseSelectionTests.swift @@ -12,7 +12,7 @@ import SwiftUI @testable import TablePro import Testing -@MainActor @Suite("CommandActions close selection") +@MainActor struct CommandActionsCloseSelectionTests { private struct Harness { let actions: MainContentCommandActions diff --git a/TableProTests/Views/Main/CommandActionsDispatchTests.swift b/TableProTests/Views/Main/CommandActionsDispatchTests.swift index 6423352c8c..bd5f5c10de 100644 --- a/TableProTests/Views/Main/CommandActionsDispatchTests.swift +++ b/TableProTests/Views/Main/CommandActionsDispatchTests.swift @@ -40,7 +40,7 @@ private final class CommandActionsLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@MainActor @Suite("CommandActions Dispatch") +@MainActor struct CommandActionsDispatchTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/CommandActionsFocusGateTests.swift b/TableProTests/Views/Main/CommandActionsFocusGateTests.swift index 45cb73c293..cc75669e48 100644 --- a/TableProTests/Views/Main/CommandActionsFocusGateTests.swift +++ b/TableProTests/Views/Main/CommandActionsFocusGateTests.swift @@ -12,7 +12,7 @@ import SwiftUI @testable import TablePro import Testing -@MainActor @Suite("CommandActions focus gate") +@MainActor struct CommandActionsFocusGateTests { private func makeSUT() -> MainContentCommandActions { let connection = TestFixtures.makeConnection() diff --git a/TableProTests/Views/Main/CoordinatorColumnVisibilityTests.swift b/TableProTests/Views/Main/CoordinatorColumnVisibilityTests.swift index 2ada5371aa..f398f61843 100644 --- a/TableProTests/Views/Main/CoordinatorColumnVisibilityTests.swift +++ b/TableProTests/Views/Main/CoordinatorColumnVisibilityTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator column visibility helpers") @MainActor struct CoordinatorColumnVisibilityTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/CoordinatorEditorLoadTests.swift b/TableProTests/Views/Main/CoordinatorEditorLoadTests.swift index dada4694d6..8c6fba3bb1 100644 --- a/TableProTests/Views/Main/CoordinatorEditorLoadTests.swift +++ b/TableProTests/Views/Main/CoordinatorEditorLoadTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("CoordinatorEditorLoad") struct CoordinatorEditorLoadTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/CoordinatorQueryRoutingTests.swift b/TableProTests/Views/Main/CoordinatorQueryRoutingTests.swift index a1c96ac8dd..c9fbe3e2d5 100644 --- a/TableProTests/Views/Main/CoordinatorQueryRoutingTests.swift +++ b/TableProTests/Views/Main/CoordinatorQueryRoutingTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("CoordinatorQueryRouting") struct CoordinatorQueryRoutingTests { @MainActor private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/CoordinatorRowImportTests.swift b/TableProTests/Views/Main/CoordinatorRowImportTests.swift index 4463d3e95d..c06d8a8df0 100644 --- a/TableProTests/Views/Main/CoordinatorRowImportTests.swift +++ b/TableProTests/Views/Main/CoordinatorRowImportTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Coordinator row import entry") @MainActor struct CoordinatorRowImportTests { private final class ErrorRecorder { diff --git a/TableProTests/Views/Main/CoordinatorSidebarActionsTests.swift b/TableProTests/Views/Main/CoordinatorSidebarActionsTests.swift index 9d19f5e255..c652b4cdd0 100644 --- a/TableProTests/Views/Main/CoordinatorSidebarActionsTests.swift +++ b/TableProTests/Views/Main/CoordinatorSidebarActionsTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("CoordinatorSidebarActions") struct CoordinatorSidebarActionsTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/DefaultSortInitialQueryTests.swift b/TableProTests/Views/Main/DefaultSortInitialQueryTests.swift index f07aa8fc41..75a226ef61 100644 --- a/TableProTests/Views/Main/DefaultSortInitialQueryTests.swift +++ b/TableProTests/Views/Main/DefaultSortInitialQueryTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("Default sort resolves before the first table query is dispatched") @MainActor struct DefaultSortInitialQueryTests { private func makeCoordinator(tableName: String) -> (MainContentCoordinator, QueryTabManager, Int) { diff --git a/TableProTests/Views/Main/EditorTabActivationTests.swift b/TableProTests/Views/Main/EditorTabActivationTests.swift index df6a498278..4a28436ca1 100644 --- a/TableProTests/Views/Main/EditorTabActivationTests.swift +++ b/TableProTests/Views/Main/EditorTabActivationTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Editor Tab Activation") struct EditorTabActivationTests { private static func resolve( clickCount: Int, diff --git a/TableProTests/Views/Main/EditorTabLabelResolverTests.swift b/TableProTests/Views/Main/EditorTabLabelResolverTests.swift index 7a62f62842..646553e89d 100644 --- a/TableProTests/Views/Main/EditorTabLabelResolverTests.swift +++ b/TableProTests/Views/Main/EditorTabLabelResolverTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Editor tab labels") @MainActor struct EditorTabLabelResolverTests { private func tableTab(_ name: String, database: String = "", schema: String? = nil) -> QueryTab { diff --git a/TableProTests/Views/Main/EditorTabMiddleClickTests.swift b/TableProTests/Views/Main/EditorTabMiddleClickTests.swift index 2daf0326b4..fc0db3622b 100644 --- a/TableProTests/Views/Main/EditorTabMiddleClickTests.swift +++ b/TableProTests/Views/Main/EditorTabMiddleClickTests.swift @@ -19,7 +19,6 @@ import Testing /// the only factory that reports 2 is `NSEvent(cgEvent:)`, whose location is a screen point. The /// button half of the contract is covered on its own below. @MainActor -@Suite("Editor tab middle click") struct EditorTabMiddleClickTests { /// Chosen so the track measures the 604pt the strip's other tests use: the view gives up /// `stripInset` at the leading edge and the new-tab button plus its spacing at the trailing. @@ -230,7 +229,6 @@ struct EditorTabMiddleClickTests { /// `buttonNumber` is the only thing that tells the wheel button from the side buttons, and /// `NSEvent(cgEvent:)` is the one factory that can carry it into a test. -@Suite("Middle mouse button") struct NSEventMouseButtonTests { private func press(_ button: CGMouseButton) throws -> NSEvent { let cgEvent = try #require( diff --git a/TableProTests/Views/Main/EditorTabRunLayoutTests.swift b/TableProTests/Views/Main/EditorTabRunLayoutTests.swift index d4de4acc19..414f92b2b1 100644 --- a/TableProTests/Views/Main/EditorTabRunLayoutTests.swift +++ b/TableProTests/Views/Main/EditorTabRunLayoutTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Editor tab run layout") struct EditorTabRunLayoutTests { private static let trackWidth: CGFloat = 604 diff --git a/TableProTests/Views/Main/EditorTabStripAccessoryControllerTests.swift b/TableProTests/Views/Main/EditorTabStripAccessoryControllerTests.swift index 04c69197a1..33e02fa3d3 100644 --- a/TableProTests/Views/Main/EditorTabStripAccessoryControllerTests.swift +++ b/TableProTests/Views/Main/EditorTabStripAccessoryControllerTests.swift @@ -14,7 +14,6 @@ import Testing /// stale value in full screen while the windowed layout still looks right. `fullScreenMinHeight` /// left at its default of zero measured as zero drawn pixels once the menu bar auto-hid: the strip /// disappears on entering full screen and does not come back for the rest of the session. -@Suite("Editor tab strip accessory") @MainActor struct EditorTabStripAccessoryControllerTests { @Test("The band is configured as a bottom accessory that keeps its own height") diff --git a/TableProTests/Views/Main/EditorTabStripChromeTests.swift b/TableProTests/Views/Main/EditorTabStripChromeTests.swift index 0fa0dde19a..a1ed50c125 100644 --- a/TableProTests/Views/Main/EditorTabStripChromeTests.swift +++ b/TableProTests/Views/Main/EditorTabStripChromeTests.swift @@ -29,7 +29,6 @@ import Testing /// holds above the container's other content, so the first two attempts at this strip painted the /// glass over the selected tab's own title and then over its close button, leaving a tab whose /// label was dimmer than its neighbours' and which had no visible way to close it. -@Suite("Editor tab strip chrome") @MainActor struct EditorTabStripChromeTests { private static let width: CGFloat = 600 diff --git a/TableProTests/Views/Main/EditorTabStripGestureConventionTests.swift b/TableProTests/Views/Main/EditorTabStripGestureConventionTests.swift index 31c920b1c6..ec633bfa69 100644 --- a/TableProTests/Views/Main/EditorTabStripGestureConventionTests.swift +++ b/TableProTests/Views/Main/EditorTabStripGestureConventionTests.swift @@ -21,7 +21,6 @@ import Foundation import Testing -@Suite("Editor tab strip gesture convention") struct EditorTabStripGestureConventionTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Views/Main/EditorTabStripGlassGuardTests.swift b/TableProTests/Views/Main/EditorTabStripGlassGuardTests.swift index cde93120c7..12c01a89f1 100644 --- a/TableProTests/Views/Main/EditorTabStripGlassGuardTests.swift +++ b/TableProTests/Views/Main/EditorTabStripGlassGuardTests.swift @@ -10,7 +10,6 @@ import Foundation import Testing -@Suite("Editor tab strip glass") struct EditorTabStripGlassGuardTests { /// The strip may carry exactly one Liquid Glass surface, and it is the new-tab button. /// diff --git a/TableProTests/Views/Main/EditorTabStripInteractionTests.swift b/TableProTests/Views/Main/EditorTabStripInteractionTests.swift index 94e99f7109..efb930d5e5 100644 --- a/TableProTests/Views/Main/EditorTabStripInteractionTests.swift +++ b/TableProTests/Views/Main/EditorTabStripInteractionTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Editor tab strip interaction") struct EditorTabStripInteractionTests { private static let trackWidth: CGFloat = 604 diff --git a/TableProTests/Views/Main/EditorTabStripLayoutTests.swift b/TableProTests/Views/Main/EditorTabStripLayoutTests.swift index e6fd49fba0..3738247159 100644 --- a/TableProTests/Views/Main/EditorTabStripLayoutTests.swift +++ b/TableProTests/Views/Main/EditorTabStripLayoutTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Editor tab strip layout") struct EditorTabStripLayoutTests { private static let ids = (0..<5).map { _ in UUID() } diff --git a/TableProTests/Views/Main/EditorTabStripSurfacesTests.swift b/TableProTests/Views/Main/EditorTabStripSurfacesTests.swift index 11d34849ac..10a4efadcf 100644 --- a/TableProTests/Views/Main/EditorTabStripSurfacesTests.swift +++ b/TableProTests/Views/Main/EditorTabStripSurfacesTests.swift @@ -14,7 +14,6 @@ import SwiftUI @testable import TablePro import Testing -@Suite("Editor tab strip surfaces") @MainActor struct EditorTabStripSurfacesTests { /// The two appearances that can actually be instantiated, and no more. diff --git a/TableProTests/Views/Main/EvictionTests.swift b/TableProTests/Views/Main/EvictionTests.swift index ed824077a7..2bc463655d 100644 --- a/TableProTests/Views/Main/EvictionTests.swift +++ b/TableProTests/Views/Main/EvictionTests.swift @@ -10,7 +10,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cross-Window Tab Eviction") @MainActor struct EvictionTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/ExtractTableNameTests.swift b/TableProTests/Views/Main/ExtractTableNameTests.swift index d430e243e8..6b4332e89e 100644 --- a/TableProTests/Views/Main/ExtractTableNameTests.swift +++ b/TableProTests/Views/Main/ExtractTableNameTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("ExtractTableName") @MainActor struct ExtractTableNameTests { private func makeCoordinator(type: DatabaseType = .mysql) -> MainContentCoordinator { diff --git a/TableProTests/Views/Main/FKNavigationTests.swift b/TableProTests/Views/Main/FKNavigationTests.swift index b182f240cd..0a72e68235 100644 --- a/TableProTests/Views/Main/FKNavigationTests.swift +++ b/TableProTests/Views/Main/FKNavigationTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("FKNavigation") struct FKNavigationTests { @Test("makeFKReferencePayload targets the referenced table and carries the FK filter") @MainActor diff --git a/TableProTests/Views/Main/FilterRestoreTests.swift b/TableProTests/Views/Main/FilterRestoreTests.swift index 20603b20c4..b84e1ddf2d 100644 --- a/TableProTests/Views/Main/FilterRestoreTests.swift +++ b/TableProTests/Views/Main/FilterRestoreTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("FilterRestore") @MainActor struct FilterRestoreTests { private func settings( diff --git a/TableProTests/Views/Main/FilterTypingBeforeFirstLoadTests.swift b/TableProTests/Views/Main/FilterTypingBeforeFirstLoadTests.swift index 9f1e649d8a..e4747ddd57 100644 --- a/TableProTests/Views/Main/FilterTypingBeforeFirstLoadTests.swift +++ b/TableProTests/Views/Main/FilterTypingBeforeFirstLoadTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("Filter values are typed from the schema before a table's first rows load") @MainActor struct FilterTypingBeforeFirstLoadTests { private static let schema = SchemaColumnStore.Entry( diff --git a/TableProTests/Views/Main/GridReloadViewportTests.swift b/TableProTests/Views/Main/GridReloadViewportTests.swift index a089e18b7d..7699973b50 100644 --- a/TableProTests/Views/Main/GridReloadViewportTests.swift +++ b/TableProTests/Views/Main/GridReloadViewportTests.swift @@ -18,7 +18,6 @@ private final class NoopReloadLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("Grid viewport across a reload") @MainActor struct GridReloadViewportTests { private struct Fixture { diff --git a/TableProTests/Views/Main/InspectorFieldEditStagingTests.swift b/TableProTests/Views/Main/InspectorFieldEditStagingTests.swift index 267fced4eb..7252041319 100644 --- a/TableProTests/Views/Main/InspectorFieldEditStagingTests.swift +++ b/TableProTests/Views/Main/InspectorFieldEditStagingTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Row inspector edits reach the grid") @MainActor struct InspectorFieldEditStagingTests { @MainActor diff --git a/TableProTests/Views/Main/MainContentCoordinatorAddRowTests.swift b/TableProTests/Views/Main/MainContentCoordinatorAddRowTests.swift index cdd66fc506..e5bf59f5f8 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorAddRowTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorAddRowTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator add row") @MainActor struct MainContentCoordinatorAddRowTests { private func makeCoordinator( @@ -122,7 +121,6 @@ struct MainContentCoordinatorAddRowTests { } } -@Suite("MainContentCommandActions result view") @MainActor struct MainContentCommandActionsResultViewTests { private func makeActions( diff --git a/TableProTests/Views/Main/MainContentCoordinatorDisplayStateTests.swift b/TableProTests/Views/Main/MainContentCoordinatorDisplayStateTests.swift index 3f4f3e2b19..c9fe02c5aa 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorDisplayStateTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorDisplayStateTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator retained grid display state") @MainActor struct MainContentCoordinatorDisplayStateTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/MainContentCoordinatorGridSelectionTests.swift b/TableProTests/Views/Main/MainContentCoordinatorGridSelectionTests.swift index 1804fbb61d..7989124e02 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorGridSelectionTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorGridSelectionTests.swift @@ -22,7 +22,6 @@ private final class StubColumnLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("MainContentCoordinator grid selection capture and restore") @MainActor struct MainContentCoordinatorGridSelectionTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/MainContentCoordinatorLazyLoadTests.swift b/TableProTests/Views/Main/MainContentCoordinatorLazyLoadTests.swift index 858c55cbb3..5725fe9ab0 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorLazyLoadTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorLazyLoadTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator lazyLoadCurrentTabIfNeeded") @MainActor struct MainContentCoordinatorLazyLoadTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/MainContentCoordinatorRefreshTests.swift b/TableProTests/Views/Main/MainContentCoordinatorRefreshTests.swift index 164cdb2932..5079b91349 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorRefreshTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorRefreshTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator handleRefresh") @MainActor struct MainContentCoordinatorRefreshTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/MainContentCoordinatorSelectionResetTests.swift b/TableProTests/Views/Main/MainContentCoordinatorSelectionResetTests.swift index c695ccc337..90b71e4c21 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorSelectionResetTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorSelectionResetTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator selection reset") @MainActor struct MainContentCoordinatorSelectionResetTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/MainContentCoordinatorTabSwitchTests.swift b/TableProTests/Views/Main/MainContentCoordinatorTabSwitchTests.swift index af8880555b..f203f5800e 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorTabSwitchTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorTabSwitchTests.swift @@ -29,7 +29,6 @@ private final class RetargetColumnLayoutPersister: ColumnLayoutPersisting { } } -@Suite("MainContentCoordinator handleTabChange") @MainActor struct MainContentCoordinatorTabSwitchTests { private func makeCoordinator( diff --git a/TableProTests/Views/Main/MainContentCoordinatorTableMetadataTests.swift b/TableProTests/Views/Main/MainContentCoordinatorTableMetadataTests.swift index 8644f07115..88fc7aebfc 100644 --- a/TableProTests/Views/Main/MainContentCoordinatorTableMetadataTests.swift +++ b/TableProTests/Views/Main/MainContentCoordinatorTableMetadataTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("MainContentCoordinator table metadata cache") @MainActor struct MainContentCoordinatorTableMetadataTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/MaintenanceSheetIdentityTests.swift b/TableProTests/Views/Main/MaintenanceSheetIdentityTests.swift index 34d55a09b4..f3f986b94b 100644 --- a/TableProTests/Views/Main/MaintenanceSheetIdentityTests.swift +++ b/TableProTests/Views/Main/MaintenanceSheetIdentityTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Maintenance sheet identity") struct MaintenanceSheetIdentityTests { private func operation(_ name: String) -> PluginMaintenanceOperation { PluginMaintenanceOperation(name: name, appliesTo: [.table], scope: .object) diff --git a/TableProTests/Views/Main/MaterializedViewRowWriteTests.swift b/TableProTests/Views/Main/MaterializedViewRowWriteTests.swift index e9cd7a5bd9..082a777944 100644 --- a/TableProTests/Views/Main/MaterializedViewRowWriteTests.swift +++ b/TableProTests/Views/Main/MaterializedViewRowWriteTests.swift @@ -25,7 +25,6 @@ private final class MaterializedViewClipboard: ClipboardProvider { var hasGridRows: Bool { gridRows != nil } } -@Suite("Materialized view row writes") @MainActor struct MaterializedViewRowWriteTests { private func makeCoordinator() -> MainContentCoordinator { diff --git a/TableProTests/Views/Main/MultiConnectionNavigationTests.swift b/TableProTests/Views/Main/MultiConnectionNavigationTests.swift index 0de4b84a14..4b3990db4d 100644 --- a/TableProTests/Views/Main/MultiConnectionNavigationTests.swift +++ b/TableProTests/Views/Main/MultiConnectionNavigationTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Multi-Connection Navigation") struct MultiConnectionNavigationTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/OpenTableTabTests.swift b/TableProTests/Views/Main/OpenTableTabTests.swift index 93b876d2bb..a7d6e98d5d 100644 --- a/TableProTests/Views/Main/OpenTableTabTests.swift +++ b/TableProTests/Views/Main/OpenTableTabTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("OpenTableTab") struct OpenTableTabTests { // MARK: - Empty tabs path (no switching) diff --git a/TableProTests/Views/Main/PaginationCoordinatorTests.swift b/TableProTests/Views/Main/PaginationCoordinatorTests.swift index 0fb225b3a7..279f041cca 100644 --- a/TableProTests/Views/Main/PaginationCoordinatorTests.swift +++ b/TableProTests/Views/Main/PaginationCoordinatorTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("PaginationCoordinator navigation") @MainActor struct PaginationCoordinatorTests { private func makeCoordinator( diff --git a/TableProTests/Views/Main/QuickHighlightOrderingTests.swift b/TableProTests/Views/Main/QuickHighlightOrderingTests.swift index d565bccabb..e62d0afea2 100644 --- a/TableProTests/Views/Main/QuickHighlightOrderingTests.swift +++ b/TableProTests/Views/Main/QuickHighlightOrderingTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Quick highlight ordering") @MainActor struct QuickHighlightOrderingTests { private func makeCoordinator() -> (MainContentCoordinator, UUID) { diff --git a/TableProTests/Views/Main/ResultBufferHandoffGuardTests.swift b/TableProTests/Views/Main/ResultBufferHandoffGuardTests.swift index 2b4f8699e2..deb5b0a772 100644 --- a/TableProTests/Views/Main/ResultBufferHandoffGuardTests.swift +++ b/TableProTests/Views/Main/ResultBufferHandoffGuardTests.swift @@ -17,7 +17,6 @@ import Testing @testable import TablePro -@Suite("Result buffer handoff guard") struct ResultBufferHandoffGuardTests { @Test("Every file that replaces a tab's results also hands the row buffer back") func replacementSitesFlushTheBuffer() throws { diff --git a/TableProTests/Views/Main/ResultPinningTests.swift b/TableProTests/Views/Main/ResultPinningTests.swift index 47048ba638..51ce416410 100644 --- a/TableProTests/Views/Main/ResultPinningTests.swift +++ b/TableProTests/Views/Main/ResultPinningTests.swift @@ -4,7 +4,6 @@ import Testing @testable import TablePro -@Suite("ResultPinning") struct ResultPinningTests { @Test("A new execution replaces unpinned results and keeps pinned ones") @MainActor diff --git a/TableProTests/Views/Main/ResultStatusBarLayoutTests.swift b/TableProTests/Views/Main/ResultStatusBarLayoutTests.swift index 1dded0c212..f4dc82d9f4 100644 --- a/TableProTests/Views/Main/ResultStatusBarLayoutTests.swift +++ b/TableProTests/Views/Main/ResultStatusBarLayoutTests.swift @@ -21,7 +21,6 @@ import Testing /// context, which cannot touch a static on a `@MainActor` suite. private let statusBarHostWidths: [CGFloat] = [1_400, 1_200, 900, 720, 600, 500, 440, 400, 380, 320, 300] -@Suite("ResultStatusBar Layout") @MainActor struct ResultStatusBarLayoutTests { private func makeBar( diff --git a/TableProTests/Views/Main/ResultSwitchIdentityTests.swift b/TableProTests/Views/Main/ResultSwitchIdentityTests.swift index 530c13e77b..f8e8a8dd31 100644 --- a/TableProTests/Views/Main/ResultSwitchIdentityTests.swift +++ b/TableProTests/Views/Main/ResultSwitchIdentityTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro -@Suite("Result switch identity") @MainActor struct ResultSwitchIdentityTests { private func makeCoordinator() -> (MainContentCoordinator, QueryTabManager) { diff --git a/TableProTests/Views/Main/RowCountTaskLifecycleTests.swift b/TableProTests/Views/Main/RowCountTaskLifecycleTests.swift index 595542083d..f0aea875b0 100644 --- a/TableProTests/Views/Main/RowCountTaskLifecycleTests.swift +++ b/TableProTests/Views/Main/RowCountTaskLifecycleTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Row count task lifecycle") @MainActor struct RowCountTaskLifecycleTests { @Test("A tab's second row count cancels its first") diff --git a/TableProTests/Views/Main/SaveCompletionTests.swift b/TableProTests/Views/Main/SaveCompletionTests.swift index 2d00196a1f..1d5a818e97 100644 --- a/TableProTests/Views/Main/SaveCompletionTests.swift +++ b/TableProTests/Views/Main/SaveCompletionTests.swift @@ -44,7 +44,7 @@ private final class StubSaveDriver: PluginDatabaseDriver, @unchecked Sendable { } } -@MainActor @Suite("Save Completion") +@MainActor struct SaveCompletionTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/SeedBufferFromErrorResultTests.swift b/TableProTests/Views/Main/SeedBufferFromErrorResultTests.swift index 93feee23c5..c69c91aca1 100644 --- a/TableProTests/Views/Main/SeedBufferFromErrorResultTests.swift +++ b/TableProTests/Views/Main/SeedBufferFromErrorResultTests.swift @@ -150,7 +150,6 @@ private final class SeedFixture { } } -@Suite("Seeding the row buffer from an error result") @MainActor struct SeedBufferFromErrorResultTests { private static let previous = TableRows.from( diff --git a/TableProTests/Views/Main/SessionStateFactoryTests.swift b/TableProTests/Views/Main/SessionStateFactoryTests.swift index b77c792b37..490d860b17 100644 --- a/TableProTests/Views/Main/SessionStateFactoryTests.swift +++ b/TableProTests/Views/Main/SessionStateFactoryTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("SessionStateFactory") struct SessionStateFactoryTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/SharedSidebarSyncTests.swift b/TableProTests/Views/Main/SharedSidebarSyncTests.swift index a0377db1b9..06ce56d74d 100644 --- a/TableProTests/Views/Main/SharedSidebarSyncTests.swift +++ b/TableProTests/Views/Main/SharedSidebarSyncTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Shared Sidebar Sync Invariants") struct SharedSidebarSyncTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/SidebarObjectSelectionTests.swift b/TableProTests/Views/Main/SidebarObjectSelectionTests.swift index 1f18bdaf6c..e7b5336621 100644 --- a/TableProTests/Views/Main/SidebarObjectSelectionTests.swift +++ b/TableProTests/Views/Main/SidebarObjectSelectionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("SidebarObjectSelection") struct SidebarObjectSelectionTests { private let connectionId = UUID() diff --git a/TableProTests/Views/Main/SourceFileDiskChangeHandlingTests.swift b/TableProTests/Views/Main/SourceFileDiskChangeHandlingTests.swift index b5c79c9d04..b728308ff3 100644 --- a/TableProTests/Views/Main/SourceFileDiskChangeHandlingTests.swift +++ b/TableProTests/Views/Main/SourceFileDiskChangeHandlingTests.swift @@ -9,7 +9,7 @@ import SwiftUI @testable import TablePro import Testing -@MainActor @Suite("Source file disk change handling") +@MainActor struct SourceFileDiskChangeHandlingTests { private struct Harness { let coordinator: MainContentCoordinator diff --git a/TableProTests/Views/Main/SourceFileEncodingSaveTests.swift b/TableProTests/Views/Main/SourceFileEncodingSaveTests.swift index ffbece7107..83f8016e37 100644 --- a/TableProTests/Views/Main/SourceFileEncodingSaveTests.swift +++ b/TableProTests/Views/Main/SourceFileEncodingSaveTests.swift @@ -9,7 +9,7 @@ import SwiftUI @testable import TablePro import Testing -@MainActor @Suite("Source file encoding on save") +@MainActor struct SourceFileEncodingSaveTests { private final class ReportedErrors { var entries: [(title: String, message: String)] = [] diff --git a/TableProTests/Views/Main/StructureActionHandlerTests.swift b/TableProTests/Views/Main/StructureActionHandlerTests.swift index 9a3081bc88..e969f94a3f 100644 --- a/TableProTests/Views/Main/StructureActionHandlerTests.swift +++ b/TableProTests/Views/Main/StructureActionHandlerTests.swift @@ -10,7 +10,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("StructureViewActionHandler") +@MainActor struct StructureActionHandlerTests { // MARK: - Helpers diff --git a/TableProTests/Views/Main/TabCloseProtectionTests.swift b/TableProTests/Views/Main/TabCloseProtectionTests.swift index 50f99b13b0..8e93116b0d 100644 --- a/TableProTests/Views/Main/TabCloseProtectionTests.swift +++ b/TableProTests/Views/Main/TabCloseProtectionTests.swift @@ -13,7 +13,7 @@ import SwiftUI import TableProPluginKit import Testing -@MainActor @Suite("Tab close protection") +@MainActor struct TabCloseProtectionTests { private static let columns = ["id", "name", "email"] private static let originalRow: [PluginCellValue] = [.text("1"), .text("ada"), .text("ada@example.com")] diff --git a/TableProTests/Views/Main/TabExecutionObservationTests.swift b/TableProTests/Views/Main/TabExecutionObservationTests.swift index f5a4ae0857..dc6d429743 100644 --- a/TableProTests/Views/Main/TabExecutionObservationTests.swift +++ b/TableProTests/Views/Main/TabExecutionObservationTests.swift @@ -14,7 +14,6 @@ import Testing @testable import TablePro @MainActor -@Suite("Tab execution observation") struct TabExecutionObservationTests { private final class ChangeCounter { private(set) var sends = 0 diff --git a/TableProTests/Views/Main/TableSelectionChangeTests.swift b/TableProTests/Views/Main/TableSelectionChangeTests.swift index b442c46a75..252c122730 100644 --- a/TableProTests/Views/Main/TableSelectionChangeTests.swift +++ b/TableProTests/Views/Main/TableSelectionChangeTests.swift @@ -11,7 +11,6 @@ import TableProPluginKit import Testing @testable import TablePro -@Suite("TableSelectionAction") struct TableSelectionChangeTests { // MARK: - Single click (exactly one table added) diff --git a/TableProTests/Views/Main/TableTabSchemaResolutionTests.swift b/TableProTests/Views/Main/TableTabSchemaResolutionTests.swift index 92276d041c..94088a9d45 100644 --- a/TableProTests/Views/Main/TableTabSchemaResolutionTests.swift +++ b/TableProTests/Views/Main/TableTabSchemaResolutionTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("TableTabSchemaResolution") struct TableTabSchemaResolutionTests { @MainActor private func makeCoordinator( @@ -217,7 +216,6 @@ struct TableTabSchemaResolutionTests { /// A table tab must carry the schema the row was listed under. SQL Server has no /// session-level schema, so a tab that opens without one queries an unqualified /// name and the server answers "Invalid object name" (#2004). -@Suite("TableTabListingSchema") @MainActor struct TableTabListingSchemaTests { private func withCoordinator( diff --git a/TableProTests/Views/Main/TriggerStructTests.swift b/TableProTests/Views/Main/TriggerStructTests.swift index 402879bfe1..708aef9daf 100644 --- a/TableProTests/Views/Main/TriggerStructTests.swift +++ b/TableProTests/Views/Main/TriggerStructTests.swift @@ -12,7 +12,6 @@ import Testing // MARK: - InspectorTrigger Tests -@Suite("InspectorTrigger") struct InspectorTriggerTests { private func trigger( tableName: String? = "users", @@ -84,7 +83,6 @@ struct InspectorTriggerTests { // MARK: - PendingChangeTrigger Tests -@Suite("PendingChangeTrigger") struct PendingChangeTriggerTests { private func makeTrigger( hasDataChanges: Bool = false, diff --git a/TableProTests/Views/Main/ValueFilterEditedRowTests.swift b/TableProTests/Views/Main/ValueFilterEditedRowTests.swift index 72be60fac4..55b84a333a 100644 --- a/TableProTests/Views/Main/ValueFilterEditedRowTests.swift +++ b/TableProTests/Views/Main/ValueFilterEditedRowTests.swift @@ -18,7 +18,6 @@ private final class EditedRowLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("Value filter after an edit takes a row out of its match") @MainActor struct ValueFilterEditedRowTests { private struct Fixture { diff --git a/TableProTests/Views/Menu/MenuItemImageVisibilityTests.swift b/TableProTests/Views/Menu/MenuItemImageVisibilityTests.swift index 677372a2e0..63e206dc9c 100644 --- a/TableProTests/Views/Menu/MenuItemImageVisibilityTests.swift +++ b/TableProTests/Views/Menu/MenuItemImageVisibilityTests.swift @@ -11,7 +11,6 @@ import Testing /// From macOS 27 AppKit hides menu item symbol images by default. Where the image is the only thing /// telling two rows apart, a connection colour, a folder colour, an engine glyph, a Safe Mode level, /// a drift warning, the row loses its meaning rather than its decoration. -@Suite("Menu item image visibility") struct MenuItemImageVisibilityTests { @Test("An informative image is set and, on macOS 27, marked visible") func informativeImageIsMarkedVisible() { diff --git a/TableProTests/Views/MenuDisclosureIndicatorTests.swift b/TableProTests/Views/MenuDisclosureIndicatorTests.swift index 5c3c1acf0b..7b40582ae6 100644 --- a/TableProTests/Views/MenuDisclosureIndicatorTests.swift +++ b/TableProTests/Views/MenuDisclosureIndicatorTests.swift @@ -19,7 +19,6 @@ import Foundation import Testing -@Suite("Menu disclosure indicators") struct MenuDisclosureIndicatorTests { private static let labelMarker = "} label: {" diff --git a/TableProTests/Views/QueryPlan/DiagramZoomTests.swift b/TableProTests/Views/QueryPlan/DiagramZoomTests.swift index 0f5e2ad5be..56954416eb 100644 --- a/TableProTests/Views/QueryPlan/DiagramZoomTests.swift +++ b/TableProTests/Views/QueryPlan/DiagramZoomTests.swift @@ -9,7 +9,6 @@ import CoreGraphics @testable import TablePro import Testing -@Suite("Diagram Zoom") struct DiagramZoomTests { @Test("pinch scales from the gesture start") func scalesFromGestureStart() { diff --git a/TableProTests/Views/QueryPlan/QueryPlanDiagramCanvasViewTests.swift b/TableProTests/Views/QueryPlan/QueryPlanDiagramCanvasViewTests.swift index 8dbdb4c8b3..8ac2d7fda6 100644 --- a/TableProTests/Views/QueryPlan/QueryPlanDiagramCanvasViewTests.swift +++ b/TableProTests/Views/QueryPlan/QueryPlanDiagramCanvasViewTests.swift @@ -10,7 +10,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Query plan diagram canvas") @MainActor struct QueryPlanDiagramCanvasViewTests { @MainActor diff --git a/TableProTests/Views/QueryPlan/QueryPlanDiagramLayoutTests.swift b/TableProTests/Views/QueryPlan/QueryPlanDiagramLayoutTests.swift index 43409f56a0..abcea2aff1 100644 --- a/TableProTests/Views/QueryPlan/QueryPlanDiagramLayoutTests.swift +++ b/TableProTests/Views/QueryPlan/QueryPlanDiagramLayoutTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Diagram Layout") struct QueryPlanDiagramLayoutTests { private func node( _ operation: String, diff --git a/TableProTests/Views/QueryPlan/QueryPlanOutlineColumnVisibilityTests.swift b/TableProTests/Views/QueryPlan/QueryPlanOutlineColumnVisibilityTests.swift index a88958c8d4..77c12ee4fe 100644 --- a/TableProTests/Views/QueryPlan/QueryPlanOutlineColumnVisibilityTests.swift +++ b/TableProTests/Views/QueryPlan/QueryPlanOutlineColumnVisibilityTests.swift @@ -13,7 +13,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Query Plan Outline Column Visibility") @MainActor struct QueryPlanOutlineColumnVisibilityTests { private func node( diff --git a/TableProTests/Views/QueryPlan/QueryPlanOutlineSortTests.swift b/TableProTests/Views/QueryPlan/QueryPlanOutlineSortTests.swift index 1af678eb5c..14f5a85987 100644 --- a/TableProTests/Views/QueryPlan/QueryPlanOutlineSortTests.swift +++ b/TableProTests/Views/QueryPlan/QueryPlanOutlineSortTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Outline Sort") @MainActor struct QueryPlanOutlineSortTests { private func node( diff --git a/TableProTests/Views/QueryPlan/QueryPlanPresentationTests.swift b/TableProTests/Views/QueryPlan/QueryPlanPresentationTests.swift index a31a81370e..d8df9e75eb 100644 --- a/TableProTests/Views/QueryPlan/QueryPlanPresentationTests.swift +++ b/TableProTests/Views/QueryPlan/QueryPlanPresentationTests.swift @@ -10,7 +10,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Query Plan Presentation") struct QueryPlanPresentationTests { private var samplePlan: QueryPlan { QueryPlan( diff --git a/TableProTests/Views/QuickSwitcherObjectKindTests.swift b/TableProTests/Views/QuickSwitcherObjectKindTests.swift index e47c0888ac..1a424d54dc 100644 --- a/TableProTests/Views/QuickSwitcherObjectKindTests.swift +++ b/TableProTests/Views/QuickSwitcherObjectKindTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Quick Switcher object kind") @MainActor struct QuickSwitcherObjectKindTests { @Test("A cross-connection row keeps the table type it was built from") diff --git a/TableProTests/Views/ReduceMotionGateTests.swift b/TableProTests/Views/ReduceMotionGateTests.swift index afcf3e5264..ddb1a42b32 100644 --- a/TableProTests/Views/ReduceMotionGateTests.swift +++ b/TableProTests/Views/ReduceMotionGateTests.swift @@ -12,7 +12,6 @@ import Foundation import Testing -@Suite("Reduce Motion gate") struct ReduceMotionGateTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Views/Results/CellEditorArrowExitTests.swift b/TableProTests/Views/Results/CellEditorArrowExitTests.swift index 9bd2c5df82..e172d41920 100644 --- a/TableProTests/Views/Results/CellEditorArrowExitTests.swift +++ b/TableProTests/Views/Results/CellEditorArrowExitTests.swift @@ -10,7 +10,6 @@ import Testing /// Up and Down carry the inline editor to the adjacent row, so a value that holds line breaks has /// to keep them for its own lines and give them up only at the line at that end (#2569). -@Suite("Cell editor arrow exit") struct CellEditorArrowExitTests { private func exit(_ value: String, selection: NSRange) -> CellEditorArrowExit { CellEditorArrowExit(text: value as NSString, selection: selection) diff --git a/TableProTests/Views/Results/CellEditorMovementTargetTests.swift b/TableProTests/Views/Results/CellEditorMovementTargetTests.swift index e0768909de..fc50c5e8da 100644 --- a/TableProTests/Views/Results/CellEditorMovementTargetTests.swift +++ b/TableProTests/Views/Results/CellEditorMovementTargetTests.swift @@ -21,7 +21,6 @@ private final class StubLayoutPersister: ColumnLayoutPersisting { /// Where the inline editor goes when it is left with Tab, Shift+Tab, Up or Down, and what moving /// the cell cursor there costs. Tab wraps across rows because that is what Tab means; Up and Down /// hold the column and stop at the ends (#2569). -@Suite("Cell editor movement target") @MainActor struct CellEditorMovementTargetTests { private struct Grid { diff --git a/TableProTests/Views/Results/CellInteractionResolverTests.swift b/TableProTests/Views/Results/CellInteractionResolverTests.swift index 61aecbeb10..07debf610e 100644 --- a/TableProTests/Views/Results/CellInteractionResolverTests.swift +++ b/TableProTests/Views/Results/CellInteractionResolverTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("CellInteractionResolver - read-only path") struct CellInteractionResolverReadOnlyTests { private let resolver = CellInteractionResolver() @@ -88,7 +87,6 @@ struct CellInteractionResolverReadOnlyTests { } } -@Suite("CellInteractionResolver - editable path") struct CellInteractionResolverEditableTests { private let resolver = CellInteractionResolver() @@ -181,7 +179,6 @@ struct CellInteractionResolverEditableTests { } } -@Suite("CellInteractionResolver - binary values") struct CellInteractionResolverBinaryTests { private let resolver = CellInteractionResolver() @@ -227,7 +224,6 @@ struct CellInteractionResolverBinaryTests { } } -@Suite("CellInteractionResolver - foreign key columns") struct CellInteractionResolverForeignKeyTests { private let resolver = CellInteractionResolver() @@ -326,7 +322,6 @@ private enum ContextFactory { } } -@Suite("CellInteractionResolver - image content") struct CellInteractionResolverImageTests { private let resolver = CellInteractionResolver() private let markup = "" diff --git a/TableProTests/Views/Results/CellOverlayEditorMovementTests.swift b/TableProTests/Views/Results/CellOverlayEditorMovementTests.swift index f6807086fb..56ac7c94fa 100644 --- a/TableProTests/Views/Results/CellOverlayEditorMovementTests.swift +++ b/TableProTests/Views/Results/CellOverlayEditorMovementTests.swift @@ -11,7 +11,6 @@ import Testing /// The overlay is a text view rather than a field editor, so the four selectors AppKit would have /// turned into an `NSTextMovement` are read here instead (#2569). -@Suite("Cell overlay editor movement") @MainActor struct CellOverlayEditorMovementTests { private struct Editing { diff --git a/TableProTests/Views/Results/CellOverlayTextLayoutTests.swift b/TableProTests/Views/Results/CellOverlayTextLayoutTests.swift index 470f93832a..76db0d4b6d 100644 --- a/TableProTests/Views/Results/CellOverlayTextLayoutTests.swift +++ b/TableProTests/Views/Results/CellOverlayTextLayoutTests.swift @@ -11,7 +11,6 @@ import Testing /// A cell holds one value, so an inline overlay behaves like a field editor and scrolls a long line /// rather than wrapping it. Wrapping made TextKit 2 lay the whole paragraph out before the overlay /// could appear: 206ms for a 256KB value and 816ms for 1MB, against 7ms unwrapped (#2381). -@Suite("Cell overlay text layout") @MainActor struct CellOverlayTextLayoutTests { private func makeTextView(width: CGFloat = 140) -> NSTextView { diff --git a/TableProTests/Views/Results/CellPositionTests.swift b/TableProTests/Views/Results/CellPositionTests.swift index 1992024c05..83d834495c 100644 --- a/TableProTests/Views/Results/CellPositionTests.swift +++ b/TableProTests/Views/Results/CellPositionTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("CellPosition") struct CellPositionTests { @Test("Equal positions are equal") func equalPositionsAreEqual() { @@ -55,7 +54,6 @@ struct CellPositionTests { } } -@Suite("RowVisualState") struct RowVisualStateTests { @Test("Empty state has all flags false and empty modifiedColumns") func emptyState() { diff --git a/TableProTests/Views/Results/CellSelectionTests.swift b/TableProTests/Views/Results/CellSelectionTests.swift index 2f2ac09ee3..72e866d4e5 100644 --- a/TableProTests/Views/Results/CellSelectionTests.swift +++ b/TableProTests/Views/Results/CellSelectionTests.swift @@ -3,7 +3,6 @@ import Foundation @testable import TablePro import Testing -@Suite("GridRect") struct GridRectTests { @Test("rect from two coords spans the bounding box regardless of order") func betweenCoordsHandlesOrder() { @@ -39,7 +38,6 @@ struct GridRectTests { } } -@Suite("GridSelection") struct GridSelectionTests { private let rect = GridRect(rows: 0...2, columns: 0...1) private let active = GridCoord(row: 0, displayColumn: 0) @@ -147,7 +145,6 @@ private final class OneRowTableSource: NSObject, NSTableViewDataSource { func numberOfRows(in tableView: NSTableView) -> Int { 1 } } -@Suite("GridSelection column markers") struct GridSelectionColumnMarkerTests { /// A marker whose block no longer reaches the last row is not a whole column any more. Keeping /// it told the heading and the column commands otherwise, while the fill, the copy and the @@ -184,7 +181,6 @@ struct GridSelectionColumnMarkerTests { } } -@Suite("GridSelectionController gestures") @MainActor struct GridSelectionControllerTests { @Test("plain click without drag leaves the selection empty") diff --git a/TableProTests/Views/Results/DataGridBodyChromeTests.swift b/TableProTests/Views/Results/DataGridBodyChromeTests.swift index 7a3fff2e94..9e7b21af84 100644 --- a/TableProTests/Views/Results/DataGridBodyChromeTests.swift +++ b/TableProTests/Views/Results/DataGridBodyChromeTests.swift @@ -23,7 +23,6 @@ private final class BodyChromeLayoutPersister: ColumnLayoutPersisting { /// /// These measure through `rect(ofColumn:)` and through the rendered pixels, never through the chrome /// type's own arithmetic, so they cannot pass by agreeing with themselves. -@Suite("Data grid body chrome") @MainActor struct DataGridBodyChromeTests { private struct Grid { diff --git a/TableProTests/Views/Results/DataGridCellAccessoryAppearanceTests.swift b/TableProTests/Views/Results/DataGridCellAccessoryAppearanceTests.swift index 82707f11ff..a6fbe8b99a 100644 --- a/TableProTests/Views/Results/DataGridCellAccessoryAppearanceTests.swift +++ b/TableProTests/Views/Results/DataGridCellAccessoryAppearanceTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("DataGridCell accessory appearance") @MainActor struct DataGridCellAccessoryAppearanceTests { private struct InkMetrics { diff --git a/TableProTests/Views/Results/DataGridCellAppearanceTests.swift b/TableProTests/Views/Results/DataGridCellAppearanceTests.swift index 7bfc51a180..663b4927dc 100644 --- a/TableProTests/Views/Results/DataGridCellAppearanceTests.swift +++ b/TableProTests/Views/Results/DataGridCellAppearanceTests.swift @@ -12,7 +12,6 @@ import Testing @testable import TablePro -@Suite("Data grid cell appearance") @MainActor struct DataGridCellAppearanceTests { private let palette = DataGridCellPalette( diff --git a/TableProTests/Views/Results/DataGridCellCommitBinaryTests.swift b/TableProTests/Views/Results/DataGridCellCommitBinaryTests.swift index 843dd65bfe..2dafcd0c89 100644 --- a/TableProTests/Views/Results/DataGridCellCommitBinaryTests.swift +++ b/TableProTests/Views/Results/DataGridCellCommitBinaryTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Cell commit - typed binary writes survive delegate notification") @MainActor struct DataGridCellCommitBinaryTests { @Test("PluginCellValue.fromOptional(.bytes.asText) lossily becomes .null") diff --git a/TableProTests/Views/Results/DataGridCellFactoryPerfTests.swift b/TableProTests/Views/Results/DataGridCellFactoryPerfTests.swift index 8a6c4a6f84..de62cfe21d 100644 --- a/TableProTests/Views/Results/DataGridCellFactoryPerfTests.swift +++ b/TableProTests/Views/Results/DataGridCellFactoryPerfTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Column Width Optimization") @MainActor struct ColumnWidthOptimizationTests { private func tableRows( @@ -252,7 +251,6 @@ struct ColumnWidthOptimizationTests { } } -@Suite("Fit To Content Width") @MainActor struct FitToContentWidthTests { private func makeTableRows(values: [String], column: String = "data") -> TableRows { @@ -356,7 +354,6 @@ struct FitToContentWidthTests { } } -@Suite("Change Reapplication Version Tracking") struct ChangeReapplyVersionTests { @Test("Version tracking skips redundant work") func versionTrackingSkipsRedundantWork() { diff --git a/TableProTests/Views/Results/DataGridColumnGeometryRepaintTests.swift b/TableProTests/Views/Results/DataGridColumnGeometryRepaintTests.swift index e078464272..c19f98bf95 100644 --- a/TableProTests/Views/Results/DataGridColumnGeometryRepaintTests.swift +++ b/TableProTests/Views/Results/DataGridColumnGeometryRepaintTests.swift @@ -21,7 +21,6 @@ private final class NoopColumnLayoutPersister: ColumnLayoutPersisting { /// drew it. AppKit resizes a row view only when the table's total width moves, which it does not /// while the columns still fit inside the viewport, so every column geometry change on a grid /// narrower than its scroll view used to leave the body painting the layout it last drew (#2449). -@Suite("Data grid column geometry repaint") @MainActor struct DataGridColumnGeometryRepaintTests { private struct Grid { diff --git a/TableProTests/Views/Results/DataGridColumnPoolTests.swift b/TableProTests/Views/Results/DataGridColumnPoolTests.swift index 677d22dc32..99f5468ce4 100644 --- a/TableProTests/Views/Results/DataGridColumnPoolTests.swift +++ b/TableProTests/Views/Results/DataGridColumnPoolTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("DataGridColumnPool") @MainActor struct DataGridColumnPoolTests { private func makeTableView() -> NSTableView { diff --git a/TableProTests/Views/Results/DataGridColumnWidthOwnershipTests.swift b/TableProTests/Views/Results/DataGridColumnWidthOwnershipTests.swift index 89c8e60e47..9ddb680653 100644 --- a/TableProTests/Views/Results/DataGridColumnWidthOwnershipTests.swift +++ b/TableProTests/Views/Results/DataGridColumnWidthOwnershipTests.swift @@ -18,7 +18,6 @@ private final class NoopColumnLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("Legacy column width ownership") @MainActor struct DataGridColumnWidthOwnershipTests { private static let plainWidth: CGFloat = 210 diff --git a/TableProTests/Views/Results/DataGridEmptyResultColumnsTests.swift b/TableProTests/Views/Results/DataGridEmptyResultColumnsTests.swift index 7fa8510400..2883b003fa 100644 --- a/TableProTests/Views/Results/DataGridEmptyResultColumnsTests.swift +++ b/TableProTests/Views/Results/DataGridEmptyResultColumnsTests.swift @@ -100,7 +100,6 @@ private final class HostedGrid { } } -@Suite("Data grid over a result with no columns") @MainActor struct DataGridEmptyResultColumnsTests { private static func result(_ columns: [String], rowCount: Int = 1) -> TableRows { diff --git a/TableProTests/Views/Results/DataGridMountTeardownTests.swift b/TableProTests/Views/Results/DataGridMountTeardownTests.swift index f988d207d7..3fa5070040 100644 --- a/TableProTests/Views/Results/DataGridMountTeardownTests.swift +++ b/TableProTests/Views/Results/DataGridMountTeardownTests.swift @@ -21,7 +21,6 @@ private final class StubLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("DataGridView mount teardown") @MainActor struct DataGridMountTeardownTests { private func makeCoordinator() -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/DataGridPendingChangeMarkTests.swift b/TableProTests/Views/Results/DataGridPendingChangeMarkTests.swift index d5cbe22694..be11411aea 100644 --- a/TableProTests/Views/Results/DataGridPendingChangeMarkTests.swift +++ b/TableProTests/Views/Results/DataGridPendingChangeMarkTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("Pending change marks") @MainActor struct DataGridPendingChangeMarkTests { private let palette = DataGridCellPalette( diff --git a/TableProTests/Views/Results/DataGridPerformanceTests.swift b/TableProTests/Views/Results/DataGridPerformanceTests.swift index 1a709fdb06..2bc360eb47 100644 --- a/TableProTests/Views/Results/DataGridPerformanceTests.swift +++ b/TableProTests/Views/Results/DataGridPerformanceTests.swift @@ -10,7 +10,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("Sort Key Caching") struct SortKeyCachingTests { @Test("Pre-extracted sort keys match inline comparison") func preExtractedKeysMatchInline() { diff --git a/TableProTests/Views/Results/DataGridRowGutterTests.swift b/TableProTests/Views/Results/DataGridRowGutterTests.swift index ad1c43f570..d9d1086f5a 100644 --- a/TableProTests/Views/Results/DataGridRowGutterTests.swift +++ b/TableProTests/Views/Results/DataGridRowGutterTests.swift @@ -107,7 +107,6 @@ private struct GutterGrid { } } -@Suite("Pinned row gutter") @MainActor struct DataGridRowGutterTests { @Test("the gutter holds the leading edge at every horizontal scroll offset") @@ -268,7 +267,6 @@ struct DataGridRowGutterTests { } } -@Suite("Scrolling a column clear of the pinned gutter") @MainActor struct GutterAwareColumnScrollTests { @Test("a column reached from off screen lands clear of the gutter") @@ -321,7 +319,6 @@ struct GutterAwareColumnScrollTests { } } -@Suite("Select rows intersecting the selection") @MainActor struct SelectIntersectingRowsTests { @Test("a cell rectangle widens to every column of every row it covers") diff --git a/TableProTests/Views/Results/DataGridRowViewCopyTests.swift b/TableProTests/Views/Results/DataGridRowViewCopyTests.swift index 09b407f9a3..a431fa31a1 100644 --- a/TableProTests/Views/Results/DataGridRowViewCopyTests.swift +++ b/TableProTests/Views/Results/DataGridRowViewCopyTests.swift @@ -46,7 +46,6 @@ private final class DataGridRowViewCopyDelegateSpy: DataGridViewDelegate { } } -@Suite("DataGridRowView context menu copy") @MainActor struct DataGridRowViewCopyTests { private func makeCoordinator( diff --git a/TableProTests/Views/Results/DataGridRowViewSetValueTests.swift b/TableProTests/Views/Results/DataGridRowViewSetValueTests.swift index 3bc7cad8df..45bfda5570 100644 --- a/TableProTests/Views/Results/DataGridRowViewSetValueTests.swift +++ b/TableProTests/Views/Results/DataGridRowViewSetValueTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DataGridRowView Set Value presets") @MainActor struct DataGridRowViewSetValueTests { @Test("date column offers CURRENT_DATE only") diff --git a/TableProTests/Views/Results/DataGridUpdateSnapshotTests.swift b/TableProTests/Views/Results/DataGridUpdateSnapshotTests.swift index d8a139b418..5bfe4cc041 100644 --- a/TableProTests/Views/Results/DataGridUpdateSnapshotTests.swift +++ b/TableProTests/Views/Results/DataGridUpdateSnapshotTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("DataGridUpdateSnapshot reload gate") struct DataGridUpdateSnapshotTests { private func makeSnapshot( rowDisplayCount: Int = 3, diff --git a/TableProTests/Views/Results/DisplayRowMappingTests.swift b/TableProTests/Views/Results/DisplayRowMappingTests.swift index 4773035d23..b4c08f1202 100644 --- a/TableProTests/Views/Results/DisplayRowMappingTests.swift +++ b/TableProTests/Views/Results/DisplayRowMappingTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("DisplayRowMapping") struct DisplayRowMappingTests { private func makeTableRows() -> TableRows { let rows: ContiguousArray = [ diff --git a/TableProTests/Views/Results/Extensions/CellPasteRoutingTests.swift b/TableProTests/Views/Results/Extensions/CellPasteRoutingTests.swift index 4b443e7a53..c0cc7be748 100644 --- a/TableProTests/Views/Results/Extensions/CellPasteRoutingTests.swift +++ b/TableProTests/Views/Results/Extensions/CellPasteRoutingTests.swift @@ -45,7 +45,6 @@ private final class StubClipboard: ClipboardProvider { var hasGridRows: Bool { hasGridRowsValue } } -@Suite("pasteCellsFromClipboard routing") @MainActor struct CellPasteRoutingTests { private func makeCoordinator(columns: [String], rowCount: Int) -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/Extensions/ColumnIndexCacheTests.swift b/TableProTests/Views/Results/Extensions/ColumnIndexCacheTests.swift index c01e08f483..1c36b94b06 100644 --- a/TableProTests/Views/Results/Extensions/ColumnIndexCacheTests.swift +++ b/TableProTests/Views/Results/Extensions/ColumnIndexCacheTests.swift @@ -11,7 +11,6 @@ private final class StubColumnLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("TableViewCoordinator column index cache") @MainActor struct ColumnIndexCacheTests { private func makeCoordinator() -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/Extensions/DataGridSelectionTests.swift b/TableProTests/Views/Results/Extensions/DataGridSelectionTests.swift index 792604eb3d..94c76b273c 100644 --- a/TableProTests/Views/Results/Extensions/DataGridSelectionTests.swift +++ b/TableProTests/Views/Results/Extensions/DataGridSelectionTests.swift @@ -29,7 +29,6 @@ private final class StubTableView: NSTableView { override var selectedRowIndexes: IndexSet { stubbedSelection } } -@Suite("DataGridView+Selection.tableViewSelectionDidChange") @MainActor struct DataGridSelectionTests { private func makeCoordinator(box: SelectionBox) -> TableViewCoordinator { @@ -94,7 +93,6 @@ struct DataGridSelectionTests { } } -@Suite("DataGridView+Selection published row selection") @MainActor struct PublishedRowSelectionTests { private func makeCoordinator(box: SelectionBox) -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/Extensions/FillColumnTests.swift b/TableProTests/Views/Results/Extensions/FillColumnTests.swift index ebd34fe1ad..e8c45fbb8f 100644 --- a/TableProTests/Views/Results/Extensions/FillColumnTests.swift +++ b/TableProTests/Views/Results/Extensions/FillColumnTests.swift @@ -22,7 +22,6 @@ private final class NoopColumnLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("Fill Column") @MainActor struct FillColumnTests { private func makeCoordinator( diff --git a/TableProTests/Views/Results/Extensions/InlineEditEligibilityTests.swift b/TableProTests/Views/Results/Extensions/InlineEditEligibilityTests.swift index de1e091d5e..c7809ceddc 100644 --- a/TableProTests/Views/Results/Extensions/InlineEditEligibilityTests.swift +++ b/TableProTests/Views/Results/Extensions/InlineEditEligibilityTests.swift @@ -16,7 +16,6 @@ private final class StubColumnLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("Inline edit eligibility") @MainActor struct InlineEditEligibilityTests { private func makeCoordinator(columnType: ColumnType, value: String) -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/FocusedColumnResolutionTests.swift b/TableProTests/Views/Results/FocusedColumnResolutionTests.swift index 48356bee1e..96256efd18 100644 --- a/TableProTests/Views/Results/FocusedColumnResolutionTests.swift +++ b/TableProTests/Views/Results/FocusedColumnResolutionTests.swift @@ -21,7 +21,6 @@ private final class FocusedColumnLayoutPersister: ColumnLayoutPersisting { /// ahead of the data and which the reader can reorder. Preview FK Reference used to turn it into a /// data index by subtracting 1, so the menu command previewed the wrong column or silently nothing /// while the key-equivalent path on the same cell worked. -@Suite("Focused column resolution") @MainActor struct FocusedColumnResolutionTests { private func makeGrid(columns: [String]) -> (tableView: NSTableView, schema: ColumnIdentitySchema) { diff --git a/TableProTests/Views/Results/ForeignKeyPickerEntryTests.swift b/TableProTests/Views/Results/ForeignKeyPickerEntryTests.swift index adf849e10b..6665bf3205 100644 --- a/TableProTests/Views/Results/ForeignKeyPickerEntryTests.swift +++ b/TableProTests/Views/Results/ForeignKeyPickerEntryTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("ForeignKeyPickerEntry") struct ForeignKeyPickerEntryTests { private let integerKey = ColumnType.integer(rawType: "INTEGER") private let textKey = ColumnType.text(rawType: "VARCHAR(8)") diff --git a/TableProTests/Views/Results/GridColumnDisplayOrderTests.swift b/TableProTests/Views/Results/GridColumnDisplayOrderTests.swift index 0a8e87bd66..f4749a175d 100644 --- a/TableProTests/Views/Results/GridColumnDisplayOrderTests.swift +++ b/TableProTests/Views/Results/GridColumnDisplayOrderTests.swift @@ -99,7 +99,6 @@ private struct ReorderableGrid { } } -@Suite("Column display order") @MainActor struct GridColumnDisplayOrderTests { @Test("a display position resolves to the data index of the column drawn there") diff --git a/TableProTests/Views/Results/GridDragClampTests.swift b/TableProTests/Views/Results/GridDragClampTests.swift index e09712b4f5..37f8d3274b 100644 --- a/TableProTests/Views/Results/GridDragClampTests.swift +++ b/TableProTests/Views/Results/GridDragClampTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("GridDragClamp") struct GridDragClampTests { private let firstPresented = 1 private let lastPresented = 4 diff --git a/TableProTests/Views/Results/HeaderSortCycleTests.swift b/TableProTests/Views/Results/HeaderSortCycleTests.swift index cf5ad46215..bfa6123d43 100644 --- a/TableProTests/Views/Results/HeaderSortCycleTests.swift +++ b/TableProTests/Views/Results/HeaderSortCycleTests.swift @@ -8,7 +8,6 @@ import TableProPluginKit @testable import TablePro import Testing -@Suite("HeaderSortCycle - single column") struct HeaderSortCycleSingleColumnTests { @Test("No active sort starts ascending") func noActiveSortStartsAscending() { @@ -93,7 +92,6 @@ struct HeaderSortCycleSingleColumnTests { } } -@Suite("HeaderSortCycle - multi-column shift-click") struct HeaderSortCycleMultiColumnTests { @Test("Shift-click on unsorted column adds it ascending") func shiftClickUnsortedAddsAscending() { @@ -185,7 +183,6 @@ struct HeaderSortCycleMultiColumnTests { } } -@Suite("HeaderSortCycle - source and first-click direction") struct HeaderSortCycleSourceTests { @Test("A default sort's first click reverses it, and the result is the user's") func defaultSortFirstClickReverses() { diff --git a/TableProTests/Views/Results/HexEditorTests.swift b/TableProTests/Views/Results/HexEditorTests.swift index dcb015faff..6913bc80b7 100644 --- a/TableProTests/Views/Results/HexEditorTests.swift +++ b/TableProTests/Views/Results/HexEditorTests.swift @@ -10,7 +10,6 @@ import Testing // swiftlint:disable force_unwrapping -@Suite("Hex Editor") @MainActor struct HexEditorTests { // MARK: - BlobFormattingService Round-Trip diff --git a/TableProTests/Views/Results/KeyHandlingTableViewCopyTests.swift b/TableProTests/Views/Results/KeyHandlingTableViewCopyTests.swift index 985567c75a..a3948c09de 100644 --- a/TableProTests/Views/Results/KeyHandlingTableViewCopyTests.swift +++ b/TableProTests/Views/Results/KeyHandlingTableViewCopyTests.swift @@ -32,7 +32,6 @@ private final class KeyHandlingCopyDelegateSpy: DataGridViewDelegate { } } -@Suite("KeyHandlingTableView selection-scoped commands") @MainActor struct KeyHandlingTableViewCopyTests { private func makeSUT( diff --git a/TableProTests/Views/Results/KeyHandlingTableViewOverlayTests.swift b/TableProTests/Views/Results/KeyHandlingTableViewOverlayTests.swift index f4670d666b..f62d73672f 100644 --- a/TableProTests/Views/Results/KeyHandlingTableViewOverlayTests.swift +++ b/TableProTests/Views/Results/KeyHandlingTableViewOverlayTests.swift @@ -18,7 +18,6 @@ private final class StubColumnLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("KeyHandlingTableView overlay stacking") @MainActor struct KeyHandlingTableViewOverlayTests { private func makeCoordinator() -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/ResultChartCanvasTests.swift b/TableProTests/Views/Results/ResultChartCanvasTests.swift index 60da9bbfa7..c6e167cf3e 100644 --- a/TableProTests/Views/Results/ResultChartCanvasTests.swift +++ b/TableProTests/Views/Results/ResultChartCanvasTests.swift @@ -9,7 +9,6 @@ import SwiftUI import Testing @MainActor -@Suite("ResultChartCanvas") struct ResultChartCanvasTests { @Test("Every chart type renders in both appearances", arguments: ResultChartType.allCases, [ColorScheme.light, .dark]) func renders(type: ResultChartType, colorScheme: ColorScheme) { diff --git a/TableProTests/Views/Results/ResultChartLocalizationTests.swift b/TableProTests/Views/Results/ResultChartLocalizationTests.swift index b1f76130b1..8d8c6a70d9 100644 --- a/TableProTests/Views/Results/ResultChartLocalizationTests.swift +++ b/TableProTests/Views/Results/ResultChartLocalizationTests.swift @@ -10,7 +10,6 @@ import Testing /// A count that reads "with 1 points" is a defect the compiler cannot see, and the string catalog /// is the only place the plural can live: `String(format:)` resolves a plural variation, but only /// when the catalog declares one. -@Suite("Result chart localization") struct ResultChartLocalizationTests { @Test("The chart accessibility summary declares a plural for its point count") func accessibilitySummaryHasPluralVariations() throws { diff --git a/TableProTests/Views/Results/ResultChartSelectionTests.swift b/TableProTests/Views/Results/ResultChartSelectionTests.swift index b83df51642..05d072668b 100644 --- a/TableProTests/Views/Results/ResultChartSelectionTests.swift +++ b/TableProTests/Views/Results/ResultChartSelectionTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Result chart selection") struct ResultChartSelectionTests { @Test("Categorical selection includes every series at the selected X value") func categoricalSelectionIncludesEverySeries() throws { diff --git a/TableProTests/Views/Results/ResultChartToolbarTests.swift b/TableProTests/Views/Results/ResultChartToolbarTests.swift index 1bca392ade..4eefe30da7 100644 --- a/TableProTests/Views/Results/ResultChartToolbarTests.swift +++ b/TableProTests/Views/Results/ResultChartToolbarTests.swift @@ -8,7 +8,6 @@ import SwiftUI import Testing @MainActor -@Suite("Result chart toolbar") struct ResultChartToolbarTests { @Test("Controls stack when the result pane is narrow") func controlsStackAtNarrowWidth() throws { diff --git a/TableProTests/Views/Results/ResultMapHitTestingTests.swift b/TableProTests/Views/Results/ResultMapHitTestingTests.swift index 20f12fcb5b..7c852880ac 100644 --- a/TableProTests/Views/Results/ResultMapHitTestingTests.swift +++ b/TableProTests/Views/Results/ResultMapHitTestingTests.swift @@ -12,7 +12,6 @@ import Testing /// coordinator where only a running app could reach it. It did not work, and nothing said so. The /// hit test is pure now so this suite can prove it without a map view: a renderer's `path` and its /// `point(for:)` both work unattached. -@Suite("ResultMapHitTesting") @MainActor struct ResultMapHitTestingTests { /// Six separated boxes over San Francisco, in the same shape the projector produces. diff --git a/TableProTests/Views/Results/ResultsJsonViewTests.swift b/TableProTests/Views/Results/ResultsJsonViewTests.swift index abdb136211..7c94cac511 100644 --- a/TableProTests/Views/Results/ResultsJsonViewTests.swift +++ b/TableProTests/Views/Results/ResultsJsonViewTests.swift @@ -13,7 +13,6 @@ import Testing @testable import TablePro -@Suite("ResultsJsonView") struct ResultsJsonViewTests { private func makeTableRows() -> TableRows { let rows: ContiguousArray = [ diff --git a/TableProTests/Views/Results/RowNumberColumnSizingTests.swift b/TableProTests/Views/Results/RowNumberColumnSizingTests.swift index 32ba76dfc3..1ec1a932d0 100644 --- a/TableProTests/Views/Results/RowNumberColumnSizingTests.swift +++ b/TableProTests/Views/Results/RowNumberColumnSizingTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Row Number Column Sizing") @MainActor struct RowNumberColumnSizingTests { @Test("Single-digit max number sizes to the configured floor") diff --git a/TableProTests/Views/Results/RowVisualIndexTests.swift b/TableProTests/Views/Results/RowVisualIndexTests.swift index a9126c82d7..0be66ecc07 100644 --- a/TableProTests/Views/Results/RowVisualIndexTests.swift +++ b/TableProTests/Views/Results/RowVisualIndexTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("RowVisualIndex row identity") @MainActor struct RowVisualIndexTests { private func makeManager() -> DataChangeManager { diff --git a/TableProTests/Views/Results/SelectAllCellSelectionTests.swift b/TableProTests/Views/Results/SelectAllCellSelectionTests.swift index 92ee1faaf4..d65599cd9e 100644 --- a/TableProTests/Views/Results/SelectAllCellSelectionTests.swift +++ b/TableProTests/Views/Results/SelectAllCellSelectionTests.swift @@ -112,7 +112,6 @@ private struct SelectAllGrid { } } -@Suite("KeyHandlingTableView.selectAll") @MainActor struct SelectAllCellSelectionTests { /// `selectAll` falls through to AppKit's own when the grid presents no data columns, and that diff --git a/TableProTests/Views/Results/SortableHeaderCellTests.swift b/TableProTests/Views/Results/SortableHeaderCellTests.swift index b2a9334ce0..9efa1aa879 100644 --- a/TableProTests/Views/Results/SortableHeaderCellTests.swift +++ b/TableProTests/Views/Results/SortableHeaderCellTests.swift @@ -5,7 +5,6 @@ import Testing @testable import TablePro @MainActor -@Suite("SortableHeaderCell") struct SortableHeaderCellTests { @Test("Title rect uses data cell horizontal padding") func titleRectUsesDataCellHorizontalPadding() { @@ -119,7 +118,6 @@ struct SortableHeaderCellTests { } @MainActor -@Suite("DataGridView.makeRowNumberColumn") struct DataGridRowNumberColumnTests { @Test("Row-number column header uses a right-aligned SortableHeaderCell") func rowNumberHeaderIsRightAlignedSortableCell() throws { diff --git a/TableProTests/Views/Results/SortableHeaderRenderingTests.swift b/TableProTests/Views/Results/SortableHeaderRenderingTests.swift index 57406933cd..c2336d434c 100644 --- a/TableProTests/Views/Results/SortableHeaderRenderingTests.swift +++ b/TableProTests/Views/Results/SortableHeaderRenderingTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SortableHeaderView chrome rendering") @MainActor struct SortableHeaderRenderingTests { private struct Grid { diff --git a/TableProTests/Views/Results/SortableHeaderViewTests.swift b/TableProTests/Views/Results/SortableHeaderViewTests.swift index 70c59f4c3f..eaeaf3b94d 100644 --- a/TableProTests/Views/Results/SortableHeaderViewTests.swift +++ b/TableProTests/Views/Results/SortableHeaderViewTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("SortableHeaderView comment height") @MainActor struct SortableHeaderViewTests { private struct Grid { diff --git a/TableProTests/Views/Results/TableViewCoordinatorColumnJumpTests.swift b/TableProTests/Views/Results/TableViewCoordinatorColumnJumpTests.swift index ebd619612f..557fa505d1 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorColumnJumpTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorColumnJumpTests.swift @@ -17,7 +17,6 @@ private final class ColumnJumpLayoutPersister: ColumnLayoutPersisting { func clear(for key: ColumnLayoutTableKey) {} } -@Suite("Jump to Column in the grid") @MainActor struct TableViewCoordinatorColumnJumpTests { private func makeCoordinator( diff --git a/TableProTests/Views/Results/TableViewCoordinatorDisplayCacheTests.swift b/TableProTests/Views/Results/TableViewCoordinatorDisplayCacheTests.swift index e33aecfd28..c76ab11c8a 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorDisplayCacheTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorDisplayCacheTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("TableViewCoordinator display cache invalidation") @MainActor struct TableViewCoordinatorDisplayCacheTests { private func makeCoordinator( diff --git a/TableProTests/Views/Results/TableViewCoordinatorDisplayStateTests.swift b/TableProTests/Views/Results/TableViewCoordinatorDisplayStateTests.swift index f83fce4e6d..6bd3c4c183 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorDisplayStateTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorDisplayStateTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("TableViewCoordinator retained display state") @MainActor struct TableViewCoordinatorDisplayStateTests { private static let rows = TableRows( diff --git a/TableProTests/Views/Results/TableViewCoordinatorFindTests.swift b/TableProTests/Views/Results/TableViewCoordinatorFindTests.swift index 43aceaa63e..e41b0774eb 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorFindTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorFindTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("TableViewCoordinator find over binary columns") @MainActor struct TableViewCoordinatorFindTests { /// Row 0 decodes under Text, row 1 does not and falls back to hex `0x89504E47`. diff --git a/TableProTests/Views/Results/TableViewCoordinatorHighlightTests.swift b/TableProTests/Views/Results/TableViewCoordinatorHighlightTests.swift index dd57f78c17..cb2a47619e 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorHighlightTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorHighlightTests.swift @@ -61,7 +61,6 @@ private final class HighlightGrid { } } -@Suite("Grid coordinator highlight rules") @MainActor struct TableViewCoordinatorHighlightTests { private let paid = HighlightRule(columnName: "status", value: "paid", color: .green) diff --git a/TableProTests/Views/Results/TableViewCoordinatorLayoutTests.swift b/TableProTests/Views/Results/TableViewCoordinatorLayoutTests.swift index 58e39fbec5..b0cae5e5a3 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorLayoutTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorLayoutTests.swift @@ -28,7 +28,6 @@ private final class FakeColumnLayoutPersister: ColumnLayoutPersisting { } } -@Suite("TableViewCoordinator.savedColumnLayout") @MainActor struct TableViewCoordinatorLayoutTests { private func makeCoordinator( diff --git a/TableProTests/Views/Results/TableViewCoordinatorPopoverDismissalTests.swift b/TableProTests/Views/Results/TableViewCoordinatorPopoverDismissalTests.swift index 8d54707b1c..610cfa4657 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorPopoverDismissalTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorPopoverDismissalTests.swift @@ -14,7 +14,6 @@ import Testing /// than an identity. Replacing the rows moves that record elsewhere, so an editor left open across /// the replacement commits its edit onto whichever record now sits at the position. That is the /// `Selection indices are display positions` invariant, and the answer is to close the editor. -@Suite("TableViewCoordinator closes editors whose rows were replaced") @MainActor struct TableViewCoordinatorPopoverDismissalTests { private func makeCoordinator() -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/TableViewCoordinatorRowCountCacheTests.swift b/TableProTests/Views/Results/TableViewCoordinatorRowCountCacheTests.swift index d3f5c4ccb8..006eb4ed56 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorRowCountCacheTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorRowCountCacheTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("TableViewCoordinator cachedRowCount sync") @MainActor struct TableViewCoordinatorRowCountCacheTests { private func makeCoordinator(rows: ContiguousArray) -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/TableViewCoordinatorRowIdentityTests.swift b/TableProTests/Views/Results/TableViewCoordinatorRowIdentityTests.swift index 44bd790522..ec788afe1f 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorRowIdentityTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorRowIdentityTests.swift @@ -26,7 +26,6 @@ private final class RowStore { } } -@Suite("TableViewCoordinator row identity") @MainActor struct TableViewCoordinatorRowIdentityTests { private func makeManager() -> DataChangeManager { diff --git a/TableProTests/Views/Results/TableViewCoordinatorValueFilterTests.swift b/TableProTests/Views/Results/TableViewCoordinatorValueFilterTests.swift index b3f45cacd6..5be4715cd2 100644 --- a/TableProTests/Views/Results/TableViewCoordinatorValueFilterTests.swift +++ b/TableProTests/Views/Results/TableViewCoordinatorValueFilterTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("TableViewCoordinator value filter") @MainActor struct TableViewCoordinatorValueFilterTests { private func makeCoordinator() -> TableViewCoordinator { diff --git a/TableProTests/Views/Results/TreeFilterTests.swift b/TableProTests/Views/Results/TreeFilterTests.swift index 208e3a0a0a..bf9d2646bd 100644 --- a/TableProTests/Views/Results/TreeFilterTests.swift +++ b/TableProTests/Views/Results/TreeFilterTests.swift @@ -3,7 +3,6 @@ import Testing @testable import TablePro -@Suite("TreeFilter") struct TreeFilterTests { @Test("nested matches preserve identities and reveal their ancestors") func nestedMatchesPreserveIdentitiesAndRevealAncestors() throws { @@ -214,7 +213,6 @@ struct TreeFilterTests { } } -@Suite("TreeProjectionCache") @MainActor struct TreeProjectionCacheTests { @Test("repeated reads for the same document and query compute once") @@ -261,7 +259,6 @@ struct TreeProjectionCacheTests { } } -@Suite("TreeDisclosureState") struct TreeDisclosureStateTests { private let auto: Set = ["$.match"] private let defaults: Set = ["$.top"] diff --git a/TableProTests/Views/Results/ValueFilterChangeGuardTests.swift b/TableProTests/Views/Results/ValueFilterChangeGuardTests.swift index 62defb8771..1b56025335 100644 --- a/TableProTests/Views/Results/ValueFilterChangeGuardTests.swift +++ b/TableProTests/Views/Results/ValueFilterChangeGuardTests.swift @@ -42,7 +42,6 @@ private final class DeferringDelegate: DataGridViewDelegate { } } -@Suite("Value filter change guard") @MainActor struct ValueFilterChangeGuardTests { private func makeCoordinator(delegate: (any DataGridViewDelegate)? = nil) -> TableViewCoordinator { diff --git a/TableProTests/Views/RowInspector/FieldEditorContextPolicyTests.swift b/TableProTests/Views/RowInspector/FieldEditorContextPolicyTests.swift index 769f9d7896..c78d47498c 100644 --- a/TableProTests/Views/RowInspector/FieldEditorContextPolicyTests.swift +++ b/TableProTests/Views/RowInspector/FieldEditorContextPolicyTests.swift @@ -8,7 +8,6 @@ import SwiftUI import Testing @MainActor -@Suite("FieldEditorContext policy") struct FieldEditorContextPolicyTests { private func makeContext( isReadOnly: Bool, diff --git a/TableProTests/Views/RowInspector/FieldExpansionPolicyTests.swift b/TableProTests/Views/RowInspector/FieldExpansionPolicyTests.swift index c4a5e78472..164f638d9b 100644 --- a/TableProTests/Views/RowInspector/FieldExpansionPolicyTests.swift +++ b/TableProTests/Views/RowInspector/FieldExpansionPolicyTests.swift @@ -11,7 +11,6 @@ import Foundation import Testing @MainActor -@Suite("Field expansion policy") struct FieldExpansionPolicyTests { /// Only these three consume `isExpanded`. Offering the control anywhere else flipped an icon /// and resized nothing, which is what the docs page had to be narrowed to match. diff --git a/TableProTests/Views/RowInspector/InspectorEditPolicyTests.swift b/TableProTests/Views/RowInspector/InspectorEditPolicyTests.swift index 1765758578..b647a99367 100644 --- a/TableProTests/Views/RowInspector/InspectorEditPolicyTests.swift +++ b/TableProTests/Views/RowInspector/InspectorEditPolicyTests.swift @@ -13,7 +13,6 @@ import TableProPluginKit import Testing @MainActor -@Suite("Inspector edit policy") struct InspectorEditPolicyTests { private func makeField( name: String = "payload", diff --git a/TableProTests/Views/Shared/FieldEditorResolverTests.swift b/TableProTests/Views/Shared/FieldEditorResolverTests.swift index 2338699ec6..1d5fd7bb4c 100644 --- a/TableProTests/Views/Shared/FieldEditorResolverTests.swift +++ b/TableProTests/Views/Shared/FieldEditorResolverTests.swift @@ -9,7 +9,6 @@ import Foundation import Testing @MainActor -@Suite("FieldEditorResolver") struct FieldEditorResolverTests { @Test("JSON column resolves to .json") func jsonColumnReturnsJson() { @@ -198,7 +197,6 @@ struct FieldEditorResolverTests { } @MainActor -@Suite("FieldEditorResolver image content") struct FieldEditorResolverImageTests { private func encodedPng() -> Data { guard let representation = NSBitmapImageRep( diff --git a/TableProTests/Views/Shared/SelectionAwareTintTests.swift b/TableProTests/Views/Shared/SelectionAwareTintTests.swift index fc77087df9..ab75f48a6f 100644 --- a/TableProTests/Views/Shared/SelectionAwareTintTests.swift +++ b/TableProTests/Views/Shared/SelectionAwareTintTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Selection Aware Tint") struct SelectionAwareTintTests { @Test("A prominent selection background takes the selected-content colour") func prominentBackgroundUsesSelectedContentColor() { diff --git a/TableProTests/Views/Shared/TextValueEditorDefaultsTests.swift b/TableProTests/Views/Shared/TextValueEditorDefaultsTests.swift index 307bcfb6f3..43d7cab0be 100644 --- a/TableProTests/Views/Shared/TextValueEditorDefaultsTests.swift +++ b/TableProTests/Views/Shared/TextValueEditorDefaultsTests.swift @@ -8,7 +8,6 @@ import AppKit import Testing @MainActor -@Suite("TextValueEditor defaults") struct TextValueEditorDefaultsTests { @Test("every automatic substitution is off, so a typed value reaches the database unchanged") func substitutionsAreDisabled() { diff --git a/TableProTests/Views/Sidebar/DatabaseTreeDoubleClickIntentTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeDoubleClickIntentTests.swift index 0411845690..15e9dc1c19 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeDoubleClickIntentTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeDoubleClickIntentTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Database tree double-click intent") struct DatabaseTreeDoubleClickIntentTests { private func tableRef(_ name: String, type: TableInfo.TableType = .table) -> DatabaseTreeTableRef { DatabaseTreeTableRef( diff --git a/TableProTests/Views/Sidebar/DatabaseTreeFilterQualifiedSearchTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeFilterQualifiedSearchTests.swift index f0aa548b59..125bd3ab13 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeFilterQualifiedSearchTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeFilterQualifiedSearchTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseTreeFilter qualified and cross-schema search") struct DatabaseTreeFilterQualifiedSearchTests { private func table(_ name: String, schema: String?) -> TableInfo { TableInfo(name: name, type: .table, rowCount: 0, schema: schema) diff --git a/TableProTests/Views/Sidebar/DatabaseTreeFilterTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeFilterTests.swift index bdc4a30067..08b1ad9b78 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeFilterTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeFilterTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseTreeFilter") struct DatabaseTreeFilterTests { private func table(_ name: String) -> TableInfo { TableInfo(name: name, type: .table, rowCount: 0) diff --git a/TableProTests/Views/Sidebar/DatabaseTreeMenuSpecTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeMenuSpecTests.swift index f937467bb9..d6ab12ad1a 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeMenuSpecTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeMenuSpecTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Database tree contextual menu") struct DatabaseTreeMenuSpecTests { private func tableRef(_ name: String, type: TableInfo.TableType = .table) -> DatabaseTreeTableRef { DatabaseTreeTableRef( diff --git a/TableProTests/Views/Sidebar/DatabaseTreeNodeTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeNodeTests.swift index f4bff23bff..d521bef621 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeNodeTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeNodeTests.swift @@ -3,7 +3,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("DatabaseTreeNode") struct DatabaseTreeNodeTests { private func tableRef(_ name: String, schema: String? = "public") -> DatabaseTreeTableRef { DatabaseTreeTableRef(database: "shop", schema: schema, table: TableInfo(name: name, type: .table, rowCount: 0)) diff --git a/TableProTests/Views/Sidebar/DatabaseTreeRenameTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeRenameTests.swift index 235ecb30d6..31d64fd65c 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeRenameTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeRenameTests.swift @@ -8,7 +8,6 @@ import Foundation import Testing /// The three answers `RenameNameDecision` gives are separate because two of them are not failures. -@Suite("Object tree rename") struct DatabaseTreeRenameTests { @Test("A new name commits") func newNameCommits() { diff --git a/TableProTests/Views/Sidebar/DatabaseTreeSelectionPolicyTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeSelectionPolicyTests.swift index 6f43a91fc7..09e4fda9a5 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeSelectionPolicyTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeSelectionPolicyTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Database tree selection policy") struct DatabaseTreeSelectionPolicyTests { private func tableRef(_ name: String) -> DatabaseTreeTableRef { DatabaseTreeTableRef( diff --git a/TableProTests/Views/Sidebar/DatabaseTreeSelectionProjectionTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeSelectionProjectionTests.swift index 7bfa4e8cc6..0521c5333f 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeSelectionProjectionTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeSelectionProjectionTests.swift @@ -11,7 +11,6 @@ import Testing /// The tree publishes this projection into `windowState.selectedTables`, which is what the Table /// menu's Truncate, Copy Name and Delete commands read. -@Suite("Database tree selection projection") struct DatabaseTreeSelectionProjectionTests { private func table(_ name: String, schema: String? = "public") -> TableInfo { TableInfo(name: name, type: .table, rowCount: nil, schema: schema) diff --git a/TableProTests/Views/Sidebar/DatabaseTreeSelectionTests.swift b/TableProTests/Views/Sidebar/DatabaseTreeSelectionTests.swift index eabb69c325..3224749c43 100644 --- a/TableProTests/Views/Sidebar/DatabaseTreeSelectionTests.swift +++ b/TableProTests/Views/Sidebar/DatabaseTreeSelectionTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Database Tree Selection Identity") struct DatabaseTreeSelectionTests { private func makeTable(_ name: String, schema: String? = nil) -> TableInfo { TableInfo(name: name, type: .table, rowCount: nil, schema: schema) @@ -46,7 +45,6 @@ struct DatabaseTreeSelectionTests { } } -@Suite("Selection Delta") struct SelectionDeltaTests { @Test("Single addition is detected") func singleAdditionDetected() { diff --git a/TableProTests/Views/Sidebar/FavoriteDatabaseMenuTests.swift b/TableProTests/Views/Sidebar/FavoriteDatabaseMenuTests.swift index 069f7a200d..39052038e1 100644 --- a/TableProTests/Views/Sidebar/FavoriteDatabaseMenuTests.swift +++ b/TableProTests/Views/Sidebar/FavoriteDatabaseMenuTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("FavoriteDatabaseMenu") struct FavoriteDatabaseMenuTests { @Test("One database that is not a favorite offers Add to Favorites with nothing checked") func singleNonFavorite() { diff --git a/TableProTests/Views/Sidebar/FavoritesEmptyStateTests.swift b/TableProTests/Views/Sidebar/FavoritesEmptyStateTests.swift index 573195ae20..08d9e0b002 100644 --- a/TableProTests/Views/Sidebar/FavoritesEmptyStateTests.swift +++ b/TableProTests/Views/Sidebar/FavoritesEmptyStateTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("FavoritesEmptyState") struct FavoritesEmptyStateTests { private func input( isInitialLoadComplete: Bool = true, diff --git a/TableProTests/Views/Sidebar/FavoritesMenuSpecTests.swift b/TableProTests/Views/Sidebar/FavoritesMenuSpecTests.swift index 266876cb4d..22af93c361 100644 --- a/TableProTests/Views/Sidebar/FavoritesMenuSpecTests.swift +++ b/TableProTests/Views/Sidebar/FavoritesMenuSpecTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Favorites contextual menu") struct FavoritesMenuSpecTests { private func context( clicked: FavoritesOutlineNode.Kind?, diff --git a/TableProTests/Views/Sidebar/FavoritesOutlineSelectionTests.swift b/TableProTests/Views/Sidebar/FavoritesOutlineSelectionTests.swift index 11ef0adf5f..b9e5b66253 100644 --- a/TableProTests/Views/Sidebar/FavoritesOutlineSelectionTests.swift +++ b/TableProTests/Views/Sidebar/FavoritesOutlineSelectionTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Favorites outline selection") @MainActor struct FavoritesOutlineSelectionTests { private func table(_ name: String, schema: String? = "public") -> TableInfo { diff --git a/TableProTests/Views/Sidebar/FavoritesRenameTests.swift b/TableProTests/Views/Sidebar/FavoritesRenameTests.swift index a9910c2660..190f57da29 100644 --- a/TableProTests/Views/Sidebar/FavoritesRenameTests.swift +++ b/TableProTests/Views/Sidebar/FavoritesRenameTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro -@Suite("Favorites rename") struct FavoritesRenameResolverTests { private let folderId = UUID() @@ -83,7 +82,6 @@ struct FavoritesRenameResolverTests { /// The editor lives inside the cell now, which is what makes `NSOutlineView` lay it out through a /// disclosure change instead of leaving it painted over a neighbouring row. -@Suite("Favorites rename cell") @MainActor struct FavoritesRenameCellTests { private func makeCell() -> FavoritesOutlineCellView { diff --git a/TableProTests/Views/Sidebar/FavoritesTreeBuilderTests.swift b/TableProTests/Views/Sidebar/FavoritesTreeBuilderTests.swift index 52551aa036..f93c59d577 100644 --- a/TableProTests/Views/Sidebar/FavoritesTreeBuilderTests.swift +++ b/TableProTests/Views/Sidebar/FavoritesTreeBuilderTests.swift @@ -11,7 +11,6 @@ import Testing /// Issue #3045. A connection reads its own folders and favorites plus every global one, and the two /// tables are read separately, so a favorite can arrive naming a folder that did not. Placing one /// by `folderId == parentId` alone put it at no level at all. -@Suite("Favorites tree builder") struct FavoritesTreeBuilderTests { private func folder( id: UUID = UUID(), diff --git a/TableProTests/Views/Sidebar/HierarchicalSchemaSearchTests.swift b/TableProTests/Views/Sidebar/HierarchicalSchemaSearchTests.swift index 0acdc6e99e..66456a0cd6 100644 --- a/TableProTests/Views/Sidebar/HierarchicalSchemaSearchTests.swift +++ b/TableProTests/Views/Sidebar/HierarchicalSchemaSearchTests.swift @@ -10,7 +10,6 @@ import Testing /// Oracle, Snowflake, BigQuery and the other engines grouped by hierarchical schema list every /// schema of the database, and the sidebar filter judges each one without reading it. -@Suite("Hierarchical schema search") struct HierarchicalSchemaSearchTests { private func table(_ name: String, _ schema: String) -> TableInfo { TableInfo(name: name, type: .table, rowCount: nil, schema: schema) @@ -198,7 +197,6 @@ struct HierarchicalSchemaSearchTests { /// The measured case behind the change: a search over 200 schemas, three of which hold a match. /// Before it, the first keystroke loaded every schema, two queries each here and three on Oracle. -@Suite("Hierarchical schema search cost") @MainActor struct HierarchicalSchemaSearchCostTests { private let connectionId = UUID() diff --git a/TableProTests/Views/Sidebar/SidebarMenuBuilderTests.swift b/TableProTests/Views/Sidebar/SidebarMenuBuilderTests.swift index 38e92d7f21..1793a25ed4 100644 --- a/TableProTests/Views/Sidebar/SidebarMenuBuilderTests.swift +++ b/TableProTests/Views/Sidebar/SidebarMenuBuilderTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Sidebar menu builder") @MainActor struct SidebarMenuBuilderTests { private func build(_ sections: [DatabaseTreeMenuSection]) -> NSMenu { diff --git a/TableProTests/Views/Sidebar/SidebarMenuTargetTests.swift b/TableProTests/Views/Sidebar/SidebarMenuTargetTests.swift index c6a1b5ee72..30c3aa8922 100644 --- a/TableProTests/Views/Sidebar/SidebarMenuTargetTests.swift +++ b/TableProTests/Views/Sidebar/SidebarMenuTargetTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("Sidebar Menu Target") struct SidebarMenuTargetTests { @Test("Clicking inside the selection acts on the whole selection") func clickInsideSelectionActsOnSelection() { diff --git a/TableProTests/Views/Sidebar/SidebarOutlineScaffoldTests.swift b/TableProTests/Views/Sidebar/SidebarOutlineScaffoldTests.swift index 1198cc7e93..da3f706a6f 100644 --- a/TableProTests/Views/Sidebar/SidebarOutlineScaffoldTests.swift +++ b/TableProTests/Views/Sidebar/SidebarOutlineScaffoldTests.swift @@ -14,7 +14,6 @@ import Testing /// The two sidebar lists are configured from one place now. They had drifted apart on exactly the /// settings nobody looks at twice, so these assert the settings rather than the drift. -@Suite("Sidebar outline scaffold") @MainActor struct SidebarOutlineScaffoldTests { private func makeScrollView( @@ -102,7 +101,6 @@ struct SidebarOutlineScaffoldTests { } } -@Suite("Database tree object group hierarchy") @MainActor struct DatabaseTreeObjectGroupHierarchyTests { /// The outline coalesces its selection sync onto the next main-actor hop, so the assertion waits @@ -557,7 +555,6 @@ private final class WriteCountingDefaults: UserDefaults { /// Both lists host their rows through one base now. They used to inset by different amounts, so the /// two tabs of a single sidebar drew rows at different heights. -@Suite("Sidebar hosting cell") @MainActor struct SidebarHostingCellViewTests { @Test("A row is hosted once and its content swapped on reuse") diff --git a/TableProTests/Views/Sidebar/SidebarPartitionRowTests.swift b/TableProTests/Views/Sidebar/SidebarPartitionRowTests.swift index 09c51f6ef9..1a27441e55 100644 --- a/TableProTests/Views/Sidebar/SidebarPartitionRowTests.swift +++ b/TableProTests/Views/Sidebar/SidebarPartitionRowTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("What a partition row and its parent say") struct SidebarPartitionRowTests { @Test("A table the engine says nothing about shows no count, and an empty parent shows zero") func countLabelSeparatesUnknownFromEmpty() { @@ -80,7 +79,6 @@ struct SidebarPartitionRowTests { } } -@Suite("A refresh notices a partition count that moved on its own") struct PartitionCountRefreshTests { private func table(_ name: String, partitionCount: Int?) -> TableInfo { TableInfo( diff --git a/TableProTests/Views/Sidebar/SidebarRecentSelectionTests.swift b/TableProTests/Views/Sidebar/SidebarRecentSelectionTests.swift index 820e37ffd7..61804c99a8 100644 --- a/TableProTests/Views/Sidebar/SidebarRecentSelectionTests.swift +++ b/TableProTests/Views/Sidebar/SidebarRecentSelectionTests.swift @@ -13,7 +13,6 @@ import Testing /// table taken when it was opened. These are the properties that make tagging a Recent row with /// that copy correct: the copy still identifies the same table, so the row highlights and the /// selection means what the rest of the app expects it to mean. -@Suite("Sidebar recent selection identity") struct SidebarRecentSelectionTests { private func table( _ name: String, diff --git a/TableProTests/Views/Sidebar/SidebarRootShapeResolverTests.swift b/TableProTests/Views/Sidebar/SidebarRootShapeResolverTests.swift index 4d3e2b4094..4bda22b0c7 100644 --- a/TableProTests/Views/Sidebar/SidebarRootShapeResolverTests.swift +++ b/TableProTests/Views/Sidebar/SidebarRootShapeResolverTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro /// The one thing that still differs between the three sidebar modes now that they share an outline. -@Suite("Sidebar root shape") struct SidebarRootShapeResolverTests { /// Oracle, Snowflake, BigQuery and Trino. They have no database dimension, so the layout /// preference cannot apply and the schema shape wins outright. diff --git a/TableProTests/Views/SidebarContextMenuLogicTests.swift b/TableProTests/Views/SidebarContextMenuLogicTests.swift index bb9d87377b..6804f01793 100644 --- a/TableProTests/Views/SidebarContextMenuLogicTests.swift +++ b/TableProTests/Views/SidebarContextMenuLogicTests.swift @@ -10,7 +10,6 @@ import SwiftUI import TableProPluginKit import Testing -@Suite("SidebarContextMenuLogicTests") struct SidebarContextMenuLogicTests { // MARK: - isView diff --git a/TableProTests/Views/SidebarNavigationResultTests.swift b/TableProTests/Views/SidebarNavigationResultTests.swift index 470c1ae15f..d28ccfea9c 100644 --- a/TableProTests/Views/SidebarNavigationResultTests.swift +++ b/TableProTests/Views/SidebarNavigationResultTests.swift @@ -17,7 +17,6 @@ import Testing @testable import TablePro -@Suite("SidebarNavigationResult") struct SidebarNavigationResultTests { // MARK: - .skip (programmatic sync, no navigation) diff --git a/TableProTests/Views/SidebarRowForegroundTests.swift b/TableProTests/Views/SidebarRowForegroundTests.swift index 56a139b6b7..a4fd4ae30c 100644 --- a/TableProTests/Views/SidebarRowForegroundTests.swift +++ b/TableProTests/Views/SidebarRowForegroundTests.swift @@ -9,7 +9,6 @@ import Testing /// Emphasis is not a role any more. AppKit publishes the row's background prominence into the /// hosted view, so `.primary` and `.secondary` answer it themselves and only the active-object /// tint has a decision to make. -@Suite("Sidebar row foreground") struct SidebarRowForegroundTests { @Test("The active tint outranks the system dimming") func activeBeatsSystem() { diff --git a/TableProTests/Views/SortableHeaderEmphasisTests.swift b/TableProTests/Views/SortableHeaderEmphasisTests.swift index 8a27139e6d..ad1b44d3ac 100644 --- a/TableProTests/Views/SortableHeaderEmphasisTests.swift +++ b/TableProTests/Views/SortableHeaderEmphasisTests.swift @@ -7,7 +7,6 @@ import AppKit @testable import TablePro import Testing -@Suite("Sortable header emphasis") @MainActor struct SortableHeaderEmphasisTests { @Test("Emphasis needs both the key window and table focus") diff --git a/TableProTests/Views/Structure/ForeignKeyReferenceMenusTests.swift b/TableProTests/Views/Structure/ForeignKeyReferenceMenusTests.swift index 14ddc9843d..6ac091ab6c 100644 --- a/TableProTests/Views/Structure/ForeignKeyReferenceMenusTests.swift +++ b/TableProTests/Views/Structure/ForeignKeyReferenceMenusTests.swift @@ -49,7 +49,6 @@ private final class ScriptedColumnProvider: ScopedMetadataProviding { } } -@Suite("Foreign key reference menus") @MainActor struct ForeignKeyReferenceMenusTests { private static let connectionId = UUID(uuidString: "00000000-0000-0000-0000-0000000000CD") ?? UUID() diff --git a/TableProTests/Views/Structure/InvalidIndexNoteTests.swift b/TableProTests/Views/Structure/InvalidIndexNoteTests.swift index 4663f9e460..b7ac2a9347 100644 --- a/TableProTests/Views/Structure/InvalidIndexNoteTests.swift +++ b/TableProTests/Views/Structure/InvalidIndexNoteTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Invalid index note") struct InvalidIndexNoteTests { private static func index(_ name: String, valid: Bool = true) -> IndexInfo { IndexInfo(name: name, columns: ["code"], isUnique: false, isPrimary: false, type: "BTREE", isValid: valid) diff --git a/TableProTests/Views/Structure/MaterializedViewConcurrentRefreshTests.swift b/TableProTests/Views/Structure/MaterializedViewConcurrentRefreshTests.swift index 2a2c35c478..b7c2627e50 100644 --- a/TableProTests/Views/Structure/MaterializedViewConcurrentRefreshTests.swift +++ b/TableProTests/Views/Structure/MaterializedViewConcurrentRefreshTests.swift @@ -82,7 +82,6 @@ private final class ParkingProvider: ScopedMetadataProviding { } } -@Suite("Materialized view concurrent refresh note") struct MaterializedViewConcurrentRefreshNoteTests { @Test("Nothing is shown before the server has answered") func nothingBeforeAnAnswer() { diff --git a/TableProTests/Views/Structure/StructureColumnFieldRegistrationTests.swift b/TableProTests/Views/Structure/StructureColumnFieldRegistrationTests.swift index b67df3b14f..de900e6ca4 100644 --- a/TableProTests/Views/Structure/StructureColumnFieldRegistrationTests.swift +++ b/TableProTests/Views/Structure/StructureColumnFieldRegistrationTests.swift @@ -13,7 +13,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("Structure column field registration") +@MainActor struct StructureColumnFieldRegistrationTests { @Test("MySQL and MariaDB expose the same structure fields") func mysqlAndMariaDBAgree() { diff --git a/TableProTests/Views/Structure/StructureEditGateTests.swift b/TableProTests/Views/Structure/StructureEditGateTests.swift index 31cd026091..0afc9a7b2f 100644 --- a/TableProTests/Views/Structure/StructureEditGateTests.swift +++ b/TableProTests/Views/Structure/StructureEditGateTests.swift @@ -12,7 +12,6 @@ import Testing /// capability flags, and every call site in the Structure tab asks it rather than reading a flag of /// its own. They used to read them separately, which is how the footer, the Edit menu's Add Row, the /// row context menu and the grid's own paste path each got to a different answer. (#2726) -@Suite("Structure Edit Gate") @MainActor struct StructureEditGateTests { private func gate(_ kind: TableInfo.TableType, _ type: DatabaseType = .postgresql) -> StructureEditGate { diff --git a/TableProTests/Views/Structure/StructureEditingSupportBooleanParsingTests.swift b/TableProTests/Views/Structure/StructureEditingSupportBooleanParsingTests.swift index 9151dfbe7d..cc45290b70 100644 --- a/TableProTests/Views/Structure/StructureEditingSupportBooleanParsingTests.swift +++ b/TableProTests/Views/Structure/StructureEditingSupportBooleanParsingTests.swift @@ -12,7 +12,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("StructureEditingSupport Boolean Parsing") @MainActor struct StructureEditingSupportBooleanParsingTests { private static let postgresOrderedFields: [StructureColumnField] = [ diff --git a/TableProTests/Views/Structure/StructureEditingSupportFieldDiffTests.swift b/TableProTests/Views/Structure/StructureEditingSupportFieldDiffTests.swift index 050a02671f..0d6d731b6e 100644 --- a/TableProTests/Views/Structure/StructureEditingSupportFieldDiffTests.swift +++ b/TableProTests/Views/Structure/StructureEditingSupportFieldDiffTests.swift @@ -13,7 +13,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("StructureEditingSupport Field Diff") @MainActor struct StructureEditingSupportFieldDiffTests { // MARK: - Fixtures @@ -246,7 +245,6 @@ struct StructureEditingSupportFieldDiffTests { // MARK: - undoDelete(for:at:) -@Suite("StructureChangeManager Row-Specific Undo Delete") @MainActor struct StructureChangeManagerUndoDeleteTests { private func makeManagerWithSchema() -> StructureChangeManager { diff --git a/TableProTests/Views/Structure/StructureEditingSupportIndexKeyTests.swift b/TableProTests/Views/Structure/StructureEditingSupportIndexKeyTests.swift index bcf2a509ac..7ae9d73fdd 100644 --- a/TableProTests/Views/Structure/StructureEditingSupportIndexKeyTests.swift +++ b/TableProTests/Views/Structure/StructureEditingSupportIndexKeyTests.swift @@ -9,7 +9,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Structure editing index key parts") @MainActor struct StructureEditingSupportIndexKeyTests { private static let columns = ["owner's_id", "created_at", "tenant_id", "a", "b", "c", "email", "name", "created"] diff --git a/TableProTests/Views/Structure/StructureFooterPolicyTests.swift b/TableProTests/Views/Structure/StructureFooterPolicyTests.swift index 0ab86e7711..56f214f3f1 100644 --- a/TableProTests/Views/Structure/StructureFooterPolicyTests.swift +++ b/TableProTests/Views/Structure/StructureFooterPolicyTests.swift @@ -11,7 +11,6 @@ import Testing /// tooltip from three different switches, and only the Foreign Keys one asked about the object at /// all. So a view offered an enabled "Add Column" over a statement PostgreSQL always refuses, with /// nothing to explain it. (#2726) -@Suite("Structure Footer Policy") struct StructureFooterPolicyTests { private func resolve( tab: StructureTab, diff --git a/TableProTests/Views/Structure/StructureGeneratedColumnFieldTests.swift b/TableProTests/Views/Structure/StructureGeneratedColumnFieldTests.swift index ba1bd02b4c..2f39aa68f7 100644 --- a/TableProTests/Views/Structure/StructureGeneratedColumnFieldTests.swift +++ b/TableProTests/Views/Structure/StructureGeneratedColumnFieldTests.swift @@ -12,7 +12,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("Generated column structure fields") +@MainActor struct StructureGeneratedColumnFieldTests { private func column() -> EditableColumnDefinition { var column = EditableColumnDefinition.placeholder() diff --git a/TableProTests/Views/Structure/StructureGridDelegateAddRowTests.swift b/TableProTests/Views/Structure/StructureGridDelegateAddRowTests.swift index 8bc5b07ebd..16f3dcbb6e 100644 --- a/TableProTests/Views/Structure/StructureGridDelegateAddRowTests.swift +++ b/TableProTests/Views/Structure/StructureGridDelegateAddRowTests.swift @@ -12,7 +12,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("StructureGridDelegate add and delete row routing") +@MainActor struct StructureGridDelegateAddRowTests { private func makeDelegate( selectedTab: StructureTab = .columns, diff --git a/TableProTests/Views/Structure/StructureGridDelegateInspectorTests.swift b/TableProTests/Views/Structure/StructureGridDelegateInspectorTests.swift index 283780049a..0caab48847 100644 --- a/TableProTests/Views/Structure/StructureGridDelegateInspectorTests.swift +++ b/TableProTests/Views/Structure/StructureGridDelegateInspectorTests.swift @@ -8,7 +8,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("Structure grid delegates as inspector row sources") +@MainActor struct StructureGridDelegateInspectorTests { private func connection() -> DatabaseConnection { DatabaseConnection( diff --git a/TableProTests/Views/Structure/StructureIndexTypeMenuTests.swift b/TableProTests/Views/Structure/StructureIndexTypeMenuTests.swift index c174641206..18c83c71fc 100644 --- a/TableProTests/Views/Structure/StructureIndexTypeMenuTests.swift +++ b/TableProTests/Views/Structure/StructureIndexTypeMenuTests.swift @@ -11,7 +11,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("Structure index type menu") +@MainActor struct StructureIndexTypeMenuTests { private func connection() -> DatabaseConnection { DatabaseConnection(name: "Test", host: "localhost", port: 5_432, database: "test", username: "u", type: .postgresql) diff --git a/TableProTests/Views/Structure/StructureInspectorRowBuilderTests.swift b/TableProTests/Views/Structure/StructureInspectorRowBuilderTests.swift index b96f4f9753..e57b525f12 100644 --- a/TableProTests/Views/Structure/StructureInspectorRowBuilderTests.swift +++ b/TableProTests/Views/Structure/StructureInspectorRowBuilderTests.swift @@ -8,7 +8,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("StructureInspectorRowBuilder") +@MainActor struct StructureInspectorRowBuilderTests { private func loadedManager() -> StructureChangeManager { let manager = StructureChangeManager() diff --git a/TableProTests/Views/Structure/StructureNullDefaultTests.swift b/TableProTests/Views/Structure/StructureNullDefaultTests.swift index 0740ef4ce6..72e7c6815b 100644 --- a/TableProTests/Views/Structure/StructureNullDefaultTests.swift +++ b/TableProTests/Views/Structure/StructureNullDefaultTests.swift @@ -12,7 +12,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("Structure NULL default") +@MainActor struct StructureNullDefaultTests { private func column(default defaultValue: String?, isNullable: Bool = true) -> EditableColumnDefinition { var column = EditableColumnDefinition.placeholder() diff --git a/TableProTests/Views/Structure/StructureRowMenuRouteTests.swift b/TableProTests/Views/Structure/StructureRowMenuRouteTests.swift index 4845886856..733b9516df 100644 --- a/TableProTests/Views/Structure/StructureRowMenuRouteTests.swift +++ b/TableProTests/Views/Structure/StructureRowMenuRouteTests.swift @@ -30,7 +30,6 @@ private final class StructureRouteLayoutPersister: ColumnLayoutPersisting { /// runner: an open contextual menu is not a child of the application element, and the titles that /// would discriminate (`Export Results…`) also sit in the menu bar, so an app-rooted query answers /// from there whatever the contextual menu holds. -@Suite("Structure row menu route") @MainActor struct StructureRowMenuRouteTests { /// Only the structure menu builds this. diff --git a/TableProTests/Views/Structure/StructureRowProviderBooleanOptionsTests.swift b/TableProTests/Views/Structure/StructureRowProviderBooleanOptionsTests.swift index 9d99647fcb..6d909ff121 100644 --- a/TableProTests/Views/Structure/StructureRowProviderBooleanOptionsTests.swift +++ b/TableProTests/Views/Structure/StructureRowProviderBooleanOptionsTests.swift @@ -12,7 +12,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("StructureRowProvider boolean options") +@MainActor struct StructureRowProviderBooleanOptionsTests { private func makeManager() -> StructureChangeManager { let manager = StructureChangeManager() diff --git a/TableProTests/Views/Structure/StructureRowProviderTests.swift b/TableProTests/Views/Structure/StructureRowProviderTests.swift index fd59219cda..e899cdce4a 100644 --- a/TableProTests/Views/Structure/StructureRowProviderTests.swift +++ b/TableProTests/Views/Structure/StructureRowProviderTests.swift @@ -8,7 +8,7 @@ import Foundation import TableProPluginKit import Testing -@MainActor @Suite("StructureRowProvider filter and sort") +@MainActor struct StructureRowProviderTests { private func makeColumn(_ name: String) -> EditableColumnDefinition { EditableColumnDefinition( @@ -119,7 +119,7 @@ struct StructureRowProviderTests { } } -@MainActor @Suite("StructureRowProvider modified and deleted state") +@MainActor struct StructureRowProviderChangeStateTests { private func loadedManager() -> StructureChangeManager { let manager = StructureChangeManager() diff --git a/TableProTests/Views/Structure/StructureServerSupportTests.swift b/TableProTests/Views/Structure/StructureServerSupportTests.swift index 74a1a0ed24..95646ddf9d 100644 --- a/TableProTests/Views/Structure/StructureServerSupportTests.swift +++ b/TableProTests/Views/Structure/StructureServerSupportTests.swift @@ -74,7 +74,7 @@ private final class DefaultStructureStubDriver: PluginDatabaseDriver, @unchecked } } -@MainActor @Suite("Structure server support") +@MainActor struct StructureServerSupportTests { private static let additionalFields: Set = [ .primaryKey, .generated, .generationExpression diff --git a/TableProTests/Views/Structure/StructureTabAvailabilityTests.swift b/TableProTests/Views/Structure/StructureTabAvailabilityTests.swift index 36abc1bd38..4b01c5801c 100644 --- a/TableProTests/Views/Structure/StructureTabAvailabilityTests.swift +++ b/TableProTests/Views/Structure/StructureTabAvailabilityTests.swift @@ -7,7 +7,6 @@ import Foundation @testable import TablePro import Testing -@Suite("Structure tab availability") struct StructureTabAvailabilityTests { private static let legacyMySQL = StructureServerSupport( unsupportedColumnFields: [], diff --git a/TableProTests/Views/Structure/StructureTabDataStateTests.swift b/TableProTests/Views/Structure/StructureTabDataStateTests.swift index 1e191d6be9..f24bf763b1 100644 --- a/TableProTests/Views/Structure/StructureTabDataStateTests.swift +++ b/TableProTests/Views/Structure/StructureTabDataStateTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("StructureTabDataState") struct StructureTabDataStateTests { @Test("a fresh state has no data and needs every tab fetched") func freshStateNeedsFetch() { diff --git a/TableProTests/Views/SwitchContainerTests.swift b/TableProTests/Views/SwitchContainerTests.swift index 04bff7bdf9..a6c7530103 100644 --- a/TableProTests/Views/SwitchContainerTests.swift +++ b/TableProTests/Views/SwitchContainerTests.swift @@ -11,7 +11,6 @@ import Testing @testable import TablePro -@Suite("SwitchContainer") @MainActor struct SwitchContainerTests { @Test("switchContainer routes Oracle to a schema switch") diff --git a/TableProTests/Views/SwitchDatabaseTests.swift b/TableProTests/Views/SwitchDatabaseTests.swift index baea8f208f..f142ffa895 100644 --- a/TableProTests/Views/SwitchDatabaseTests.swift +++ b/TableProTests/Views/SwitchDatabaseTests.swift @@ -15,7 +15,6 @@ import Testing @testable import TablePro -@Suite("SwitchDatabase") @MainActor struct SwitchDatabaseTests { private func withConnectedCoordinator( diff --git a/TableProTests/Views/SwitchSchemaTests.swift b/TableProTests/Views/SwitchSchemaTests.swift index 6b62a91503..1bd3c069ee 100644 --- a/TableProTests/Views/SwitchSchemaTests.swift +++ b/TableProTests/Views/SwitchSchemaTests.swift @@ -34,7 +34,6 @@ private final class SchemaSwitchLatch { } } -@Suite("SwitchSchema") @MainActor struct SwitchSchemaTests { /// A schema switch waiting for the driver is dropped when the connection is closed and opened diff --git a/TableProTests/Views/TableRowLogicTests.swift b/TableProTests/Views/TableRowLogicTests.swift index c2b3811b84..b2f7560eec 100644 --- a/TableProTests/Views/TableRowLogicTests.swift +++ b/TableProTests/Views/TableRowLogicTests.swift @@ -10,7 +10,6 @@ import Testing @testable import TablePro -@Suite("TableRowLogicTests") struct TableRowLogicTests { // MARK: - Accessibility Label diff --git a/TableProTests/Views/Toolbar/ConnectionSwitcherFilterTests.swift b/TableProTests/Views/Toolbar/ConnectionSwitcherFilterTests.swift index 5aa96dd724..789bbc1dde 100644 --- a/TableProTests/Views/Toolbar/ConnectionSwitcherFilterTests.swift +++ b/TableProTests/Views/Toolbar/ConnectionSwitcherFilterTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Connection Switcher Filter") struct ConnectionSwitcherFilterTests { @Test("Empty or whitespace query matches every connection") func emptyQueryMatches() { @@ -49,7 +48,6 @@ struct ConnectionSwitcherFilterTests { } } -@Suite("Connection Switcher Selection") struct ConnectionSwitcherSelectionTests { @Test("Empty list yields no selection") func emptyList() { @@ -82,7 +80,6 @@ struct ConnectionSwitcherSelectionTests { } } -@Suite("Connection Switcher Sections") struct ConnectionSwitcherSectionsTests { private func connection(_ name: String, groupId: UUID? = nil, sortOrder: Int = 0) -> DatabaseConnection { DatabaseConnection(name: name, groupId: groupId, sortOrder: sortOrder) diff --git a/TableProTests/Views/Toolbar/MainWindowToolbarIdentifierTests.swift b/TableProTests/Views/Toolbar/MainWindowToolbarIdentifierTests.swift index 0c44039bb9..084aab333c 100644 --- a/TableProTests/Views/Toolbar/MainWindowToolbarIdentifierTests.swift +++ b/TableProTests/Views/Toolbar/MainWindowToolbarIdentifierTests.swift @@ -13,7 +13,6 @@ import Testing /// toolbar identifier and autosaves its configuration, so a repeated identifier is a launch crash /// rather than a duplicated button. @MainActor -@Suite("Main window toolbar identifiers") struct MainWindowToolbarIdentifierTests { @Test("No identifier is listed twice in the default set") func defaultIdentifiersAreUnique() { diff --git a/TableProTests/Views/TrailingPaneHouseRuleTests.swift b/TableProTests/Views/TrailingPaneHouseRuleTests.swift index 4388326222..b893becd03 100644 --- a/TableProTests/Views/TrailingPaneHouseRuleTests.swift +++ b/TableProTests/Views/TrailingPaneHouseRuleTests.swift @@ -12,7 +12,6 @@ import Foundation import Testing -@Suite("Connection window pane house rules") struct TrailingPaneHouseRuleTests { private static let repositoryRoot: URL = { var url = URL(fileURLWithPath: #filePath) diff --git a/TableProTests/Views/TransferAlertWindowOwnershipTests.swift b/TableProTests/Views/TransferAlertWindowOwnershipTests.swift index 32c2d27400..19d202727e 100644 --- a/TableProTests/Views/TransferAlertWindowOwnershipTests.swift +++ b/TableProTests/Views/TransferAlertWindowOwnershipTests.swift @@ -17,7 +17,6 @@ import Testing /// `AlertHelper.resolveWindow` falls back to the same key window and a sheet window clears /// `isContentWindow` (it is not an `NSPanel` and it is `.titled`). Nothing at runtime can tell a /// dying sheet from a healthy one, so the rule has to hold at the call site (#2314). -@Suite("Transfer alert window ownership") struct TransferAlertWindowOwnershipTests { private static let directories = [ "TablePro/Views/Import", diff --git a/TableProTests/Views/TransferFailureReportTests.swift b/TableProTests/Views/TransferFailureReportTests.swift index 15527a9c0a..8fba6179a1 100644 --- a/TableProTests/Views/TransferFailureReportTests.swift +++ b/TableProTests/Views/TransferFailureReportTests.swift @@ -9,7 +9,6 @@ import Foundation import TableProPluginKit import Testing -@Suite("Transfer failure report") @MainActor struct TransferFailureReportTests { private func failure(line: Int, message: String, statement: String) -> PluginImportResult.ImportStatementError { diff --git a/TableProTests/Views/UserFacingEmDashGuardTests.swift b/TableProTests/Views/UserFacingEmDashGuardTests.swift index 18d9520019..116b54b583 100644 --- a/TableProTests/Views/UserFacingEmDashGuardTests.swift +++ b/TableProTests/Views/UserFacingEmDashGuardTests.swift @@ -14,7 +14,6 @@ import Testing /// value", the one Finder and Activity Monitor use in list columns, and it is a glyph rather than a /// sentence to rewrite. Log messages are not user-facing. The JetBrains keychain service names need /// no exemption: they spell the character `\u{2014}`, so the literal never appears in the source. -@Suite("User-facing strings carry no em dash") struct UserFacingEmDashGuardTests { private static let emDash: Character = "\u{2014}" private static let placeholderGlyph = "\"\u{2014}\"" @@ -110,7 +109,6 @@ struct UserFacingEmDashGuardTests { } } -@Suite("Em dash guard classifies lines correctly") struct UserFacingEmDashClassifierTests { private func offends(_ line: String, previous: String = "") -> Bool { UserFacingEmDashGuardTests.carriesProseEmDash(line: line, previous: previous) diff --git a/TableProTests/Views/Welcome/WelcomeDragTokenTests.swift b/TableProTests/Views/Welcome/WelcomeDragTokenTests.swift index ff4e4257a8..d4d595b574 100644 --- a/TableProTests/Views/Welcome/WelcomeDragTokenTests.swift +++ b/TableProTests/Views/Welcome/WelcomeDragTokenTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProConnectionLibrary import Testing -@Suite("Welcome drag token") struct WelcomeDragTokenTests { @Test("A saved connection row round-trips with its section") func connectionRoundTrip() throws { diff --git a/TableProTests/Views/Welcome/WelcomeImportMenuButtonTests.swift b/TableProTests/Views/Welcome/WelcomeImportMenuButtonTests.swift index b9b7338539..ef75b4b401 100644 --- a/TableProTests/Views/Welcome/WelcomeImportMenuButtonTests.swift +++ b/TableProTests/Views/Welcome/WelcomeImportMenuButtonTests.swift @@ -9,7 +9,6 @@ import Testing @testable import TablePro @MainActor -@Suite("WelcomeImportMenuButton") struct WelcomeImportMenuButtonTests { private final class Recorder { var fired: [String] = [] diff --git a/TableProTests/Views/Welcome/WelcomeListStateTests.swift b/TableProTests/Views/Welcome/WelcomeListStateTests.swift index f472482f57..d8c50985c2 100644 --- a/TableProTests/Views/Welcome/WelcomeListStateTests.swift +++ b/TableProTests/Views/Welcome/WelcomeListStateTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("WelcomeListState") struct WelcomeListStateTests { private func input( hasAnyConnection: Bool = true, diff --git a/TableProTests/Views/Welcome/WelcomeMenuSpecTests.swift b/TableProTests/Views/Welcome/WelcomeMenuSpecTests.swift index b7926a2de4..897ef40c92 100644 --- a/TableProTests/Views/Welcome/WelcomeMenuSpecTests.swift +++ b/TableProTests/Views/Welcome/WelcomeMenuSpecTests.swift @@ -8,7 +8,6 @@ import Foundation import TableProConnectionLibrary import Testing -@Suite("Welcome menu spec") struct WelcomeMenuSpecTests { private func context( rows: [LibraryRowID], diff --git a/TableProTests/Views/Welcome/WelcomeRowPresentationTests.swift b/TableProTests/Views/Welcome/WelcomeRowPresentationTests.swift index f9653503c1..3f1ea0909f 100644 --- a/TableProTests/Views/Welcome/WelcomeRowPresentationTests.swift +++ b/TableProTests/Views/Welcome/WelcomeRowPresentationTests.swift @@ -9,7 +9,6 @@ import TableProConnectionLibrary import Testing @MainActor -@Suite("Welcome row presentation") struct WelcomeRowPresentationTests { private func tag(_ name: String) -> ConnectionTag { ConnectionTag(name: name, color: .blue) diff --git a/TableProTests/Views/Welcome/WelcomeSheetGateTests.swift b/TableProTests/Views/Welcome/WelcomeSheetGateTests.swift index 34e80d928c..4c90038065 100644 --- a/TableProTests/Views/Welcome/WelcomeSheetGateTests.swift +++ b/TableProTests/Views/Welcome/WelcomeSheetGateTests.swift @@ -8,7 +8,6 @@ import Testing @testable import TablePro -@Suite("WelcomeSheetGate") struct WelcomeSheetGateTests { @Test("A first launch shows the sheet") func firstLaunch() { diff --git a/TableProTests/Views/WhatsNewContentTests.swift b/TableProTests/Views/WhatsNewContentTests.swift index c4080b7c95..7b6c7c1885 100644 --- a/TableProTests/Views/WhatsNewContentTests.swift +++ b/TableProTests/Views/WhatsNewContentTests.swift @@ -2,7 +2,6 @@ import Foundation @testable import TablePro import Testing -@Suite("WhatsNewContent") struct WhatsNewContentTests { @Test("Takes the title from the leading heading and keeps the rest as body") func parsesTitleAndBody() { diff --git a/scripts/ci/check-test-suite-attributes.py b/scripts/ci/check-test-suite-attributes.py new file mode 100644 index 0000000000..6f4436ab0f --- /dev/null +++ b/scripts/ci/check-test-suite-attributes.py @@ -0,0 +1,273 @@ +#!/usr/bin/env python3 +"""Check no top-level type in TableProTests carries a @Suite that has no trait. + +Swift Testing finds a type's @Test functions without any @Suite on it, so `@Suite("Some name")` +only renames the type in Xcode's test navigator and in the result bundle. What it costs is compile +time, and the cost grows with the square of how many there are. @Suite is a peer macro, and a peer +macro may introduce uniquely named declarations, so the compiler files every top-level one in +module-scope lookup under a single placeholder for "some unique name". Each @Suite expansion emits +declarations that refer to each other by unique name, and every one of those lookups walks the +whole placeholder list, expanding every other top-level @Suite in the module to see what it +declared. + +Measured on the macOS Tests build job (Xcode 26.4.1, 3 vCPU, 7 GB): with 2,336 top-level @Suite +attributes in TableProTests, 2,200 of them carrying only a display name, the target's emit-module +job ran for 544 to 626 seconds, the longest compile job in the whole build, and half of the samples +taken in it sat in that lookup. Removing 2,173 of those 2,200 took the emit-module job to 290 +seconds on the same runner, and the target's compile batches, summed, from 3,958 to 2,373 seconds. The emit-module +window had tracked the count as it grew: 238 seconds at 1,644 suites, 340 at 1,826, 622 at 2,163. + +So a top-level @Suite is allowed only when it carries a trait (.serialized, .enabled(if:), +.disabled, .timeLimit, a tag), which is the one thing an unannotated type cannot express. Nested +suites and @Test functions are not checked: their expansions are members of a type, and member +lookup does not walk the module. A nested @Suite still costs emit-module time that grows linearly, +so it is not a way to keep a display name for free. + +Only TableProTests is scanned. The cost is quadratic in each module's own count, and the other +test modules hold 108 top-level suites or fewer, where it stays under a second. + +Pure text, no Xcode: it runs on Ubuntu in about a second, and test_check_test_suite_attributes.py +pins what it must and must not report. +""" + +from __future__ import annotations + +import re +import sys +from pathlib import Path + +SCANNED = "TableProTests" +ATTRIBUTE = re.compile(r"@(?:Testing\.)?Suite\b") +INTERESTING = re.compile(r'[{}"#/@]') + + +class SwiftText: + """Enough of a Swift lexer to tell code from comments and string literals, and to find the + brace depth of a position. Regex literals are not recognised; test sources do not put braces + or quotes in them.""" + + def __init__(self, text: str) -> None: + self.text = text + + def comment_end(self, index: int) -> int | None: + text = self.text + if text.startswith("//", index): + newline = text.find("\n", index) + return len(text) if newline < 0 else newline + if not text.startswith("/*", index): + return None + depth = 0 + position = index + while position < len(text): + if text.startswith("/*", position): + depth += 1 + position += 2 + elif text.startswith("*/", position): + depth -= 1 + position += 2 + if depth == 0: + return position + else: + position += 1 + return len(text) + + def string_end(self, index: int) -> int | None: + text = self.text + hashes = 0 + while text.startswith("#", index + hashes): + hashes += 1 + opening = index + hashes + if not text.startswith('"', opening): + return None + multiline = text.startswith('"""', opening) + delimiter = ('"""' if multiline else '"') + "#" * hashes + escape = "\\" + "#" * hashes + position = opening + (3 if multiline else 1) + while position < len(text): + if text.startswith(escape, position): + after = position + len(escape) + if text.startswith("(", after): + position = self.balanced_end(after) + else: + position = after + 1 + elif text.startswith(delimiter, position): + return position + len(delimiter) + elif not multiline and text[position] == "\n": + return position + else: + position += 1 + return len(text) + + def non_code_end(self, index: int) -> int | None: + """The end of the comment or string literal that starts at `index`, if one does.""" + comment = self.comment_end(index) + if comment is not None: + return comment + return self.string_end(index) + + def balanced_end(self, index: int) -> int: + """The position just past the bracket that closes the one at `index`.""" + text = self.text + closing = {"(": ")", "[": "]", "{": "}"} + stack = [closing[text[index]]] + position = index + 1 + while position < len(text) and stack: + skipped = self.non_code_end(position) + if skipped is not None: + position = skipped + continue + character = text[position] + if character in closing: + stack.append(closing[character]) + elif character == stack[-1]: + stack.pop() + position += 1 + return position + + def top_level_attributes(self) -> tuple[list[tuple[int, int]], bool]: + """(start, end) of every @Suite attribute at brace depth zero, arguments included, and whether + the file's braces balanced. When they do not, depth zero cannot be told from a nested scope, + so the attributes found are not a complete answer.""" + text = self.text + found: list[tuple[int, int]] = [] + depth = 0 + balanced = True + position = 0 + while True: + match = INTERESTING.search(text, position) + if match is None: + return found, balanced and depth == 0 + position = match.start() + skipped = self.non_code_end(position) + if skipped is not None: + position = skipped + continue + character = text[position] + if character == "{": + depth += 1 + elif character == "}": + if depth == 0: + balanced = False + else: + depth -= 1 + elif character == "@" and depth == 0: + attribute = ATTRIBUTE.match(text, position) + if attribute is not None: + end = self.arguments_end(attribute.end()) + found.append((position, end)) + position = end + continue + position += 1 + + def arguments_end(self, index: int) -> int: + position = index + while position < len(self.text) and self.text[position] in " \t": + position += 1 + if position < len(self.text) and self.text[position] == "(": + return self.balanced_end(position) + return index + + def arguments(self, start: int, end: int) -> list[str]: + """The top-level arguments of an attribute's argument list, comments removed.""" + text = self.text + opening = text.find("(", start, end) + if opening < 0: + return [] + items: list[str] = [] + current: list[str] = [] + position = opening + 1 + closing = end - 1 + while position < closing: + comment = self.comment_end(position) + if comment is not None: + current.append(" ") + position = comment + continue + skipped = self.string_end(position) + if skipped is None and text[position] in "([{": + skipped = self.balanced_end(position) + if skipped is not None: + current.append(text[position:skipped]) + position = skipped + continue + if text[position] == ",": + items.append("".join(current).strip()) + current = [] + else: + current.append(text[position]) + position += 1 + items.append("".join(current).strip()) + return [item for item in items if item] + + +def is_string_literal(expression: str) -> bool: + return SwiftText(expression).string_end(0) == len(expression) + + +def carries_a_trait(arguments: list[str]) -> bool: + return any(not is_string_literal(argument) for argument in arguments) + + +def scan(root: Path) -> tuple[list[tuple[str, int, str]], list[str]]: + """The top-level @Suite attributes with no trait, and the files whose braces did not balance.""" + found: list[tuple[str, int, str]] = [] + unreadable: list[str] = [] + for path in sorted((root / SCANNED).rglob("*.swift")): + text = path.read_text(encoding="utf-8", errors="replace") + if "Suite" not in text: + continue + source = SwiftText(text) + attributes, balanced = source.top_level_attributes() + relative = path.relative_to(root).as_posix() + if not balanced: + unreadable.append(relative) + for start, end in attributes: + if carries_a_trait(source.arguments(start, end)): + continue + line = text.count("\n", 0, start) + 1 + attribute = " ".join(text[start:end].split()) + found.append((relative, line, attribute)) + return found, unreadable + + +def offenders(root: Path) -> list[tuple[str, int, str]]: + return scan(root)[0] + + +def main_for(root: Path) -> int: + found, unreadable = scan(root) + if not found and not unreadable: + return 0 + + for path in unreadable: + print(f"{path}: braces do not balance as this check reads them, so it cannot tell top level from nested") + if unreadable: + print( + "The check reads Swift braces without a compiler and does not understand a regex literal or an #if whose " + "branches open a scope differently. Restructure the file so each branch opens and closes its own braces." + ) + print() + if not found: + return 1 + + for path, line, attribute in found: + print(f"{path}:{line}: {attribute}") + print() + print( + f"{len(found)} top-level @Suite attribute(s) with no trait. Each top-level @Suite adds compile time to the " + "test module quadratically, because every @Suite expansion walks every other top-level @Suite." + ) + print( + "Leave the type unannotated: Swift Testing finds its @Test functions anyway, and a @Test display name is " + "fine. Keep @Suite only to carry a trait such as .serialized or .enabled(if:)." + ) + return 1 + + +def main() -> int: + root = Path(sys.argv[1]).resolve() if len(sys.argv) > 1 else Path(__file__).resolve().parents[2] + return main_for(root) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/ci/test_check_test_suite_attributes.py b/scripts/ci/test_check_test_suite_attributes.py new file mode 100644 index 0000000000..a9e7c1b404 --- /dev/null +++ b/scripts/ci/test_check_test_suite_attributes.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +"""Fixture tests for check-test-suite-attributes.py.""" + +from __future__ import annotations + +import importlib.util +import io +import shutil +import sys +import tempfile +import unittest +from contextlib import redirect_stdout +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +SPEC = importlib.util.spec_from_file_location( + "check_test_suite_attributes", Path(__file__).with_name("check-test-suite-attributes.py") +) +check = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(check) + +REJECTED = { + "DisplayName.swift": ('@Suite("Display name")\nstruct DisplayNameTests {}\n', 1), + "SameLineAsActor.swift": ('import Testing\n\n@MainActor @Suite("Display name")\nstruct ActorTests {}\n', 3), + "SameLineAsType.swift": ('@Suite("Display name") struct SameLineTests {}\n', 1), + "Wrapped.swift": ('@Suite(\n "Display name"\n)\nstruct WrappedTests {}\n', 1), + "Bare.swift": ("@Suite\nstruct BareTests {}\n", 1), + "Empty.swift": ("@Suite()\nstruct EmptyTests {}\n", 1), + "RawString.swift": ('@Suite(#"A "quoted" name"#)\nstruct RawStringTests {}\n', 1), + "EscapedQuote.swift": ('@Suite("A \\"quoted\\" name")\nstruct EscapedQuoteTests {}\n', 1), + "Qualified.swift": ('@Testing.Suite("Display name")\nstruct QualifiedTests {}\n', 1), + "CommentInArguments.swift": ('@Suite("Display name" /* , .serialized */)\nstruct CommentTests {}\n', 1), + "Conditional.swift": ('#if DEBUG\n @Suite("Display name")\n struct ConditionalTests {}\n#endif\n', 2), + "AfterMultilineString.swift": ( + 'let sql = """\n }\n """\n\n@Suite("Display name")\nstruct AfterStringTests {}\n', + 5, + ), +} + +ACCEPTED = { + "Serialized.swift": '@Suite("Display name", .serialized)\nstruct SerializedTests {}\n', + "TraitOnly.swift": "@Suite(.serialized)\nstruct TraitOnlyTests {}\n", + "WrappedTraits.swift": ( + '@Suite(\n "Display name",\n .serialized,\n .enabled(if: Server.isConfigured)\n)\n' + "struct WrappedTraitsTests {}\n" + ), + "ConditionWithString.swift": ( + '@Suite("Display name", .enabled(if: ProcessInfo.processInfo.environment["CI"] == nil))\n' + "struct ConditionTests {}\n" + ), + "Nested.swift": 'struct OuterTests {\n @Suite("Nested")\n struct InnerTests {}\n}\n', + "NestedInExtension.swift": 'extension OuterTests {\n @MainActor @Suite("Nested")\n struct MoreTests {}\n}\n', + "BracesInStrings.swift": ( + "struct BraceTests {\n" + ' let brace = "}"\n' + ' let raw = #"}"}"#\n' + ' let interpolated = "\\(["}": "}"].count) }"\n' + ' let block = """\n }\n """\n' + ' @Suite("Nested")\n' + " struct InnerTests {}\n" + "}\n" + ), + "Comments.swift": ( + '// @Suite("Commented out")\n' + '/* @Suite("Commented out") /* nested } */ @Suite("Still commented out") */\n' + "struct CommentedTests {}\n" + ), + "Strings.swift": 'let text = "@Suite(\\"In a string\\")"\nlet block = """\n@Suite("In a string")\n"""\n', + "OtherAttribute.swift": "@SuiteHelper\nstruct HelperTests {}\n", + "TestDisplayName.swift": 'struct NamedTests {\n @Test("A display name")\n func named() {}\n}\n', +} + + +class CheckTestSuiteAttributesTests(unittest.TestCase): + def setUp(self) -> None: + self.root = Path(tempfile.mkdtemp()) + + def tearDown(self) -> None: + shutil.rmtree(self.root) + + def write(self, directory: str, name: str, text: str) -> None: + folder = self.root / directory + folder.mkdir(parents=True, exist_ok=True) + (folder / name).write_text(text, encoding="utf-8") + + def test_every_suite_without_a_trait_is_reported_on_its_own_line(self) -> None: + for name, (text, _) in REJECTED.items(): + self.write("TableProTests/Rejected", name, text) + found = {(path, line) for path, line, _ in check.offenders(self.root)} + expected = {(f"TableProTests/Rejected/{name}", line) for name, (_, line) in REJECTED.items()} + self.assertEqual(found, expected) + + def test_suites_with_traits_nested_suites_and_non_code_are_not_reported(self) -> None: + for name, text in ACCEPTED.items(): + self.write("TableProTests/Accepted", name, text) + self.assertEqual(check.offenders(self.root), []) + + def test_the_report_quotes_the_attribute_on_one_line(self) -> None: + self.write("TableProTests", "Wrapped.swift", REJECTED["Wrapped.swift"][0]) + self.write("TableProTests", "SameLineAsActor.swift", REJECTED["SameLineAsActor.swift"][0]) + self.assertEqual( + check.offenders(self.root), + [ + ("TableProTests/SameLineAsActor.swift", 3, '@Suite("Display name")'), + ("TableProTests/Wrapped.swift", 1, '@Suite( "Display name" )'), + ], + ) + + def test_only_the_app_test_target_is_scanned(self) -> None: + self.write("TableProTests", "App.swift", REJECTED["DisplayName.swift"][0]) + self.write("Packages/Core/Tests/CoreTests", "Package.swift", REJECTED["DisplayName.swift"][0]) + self.write("TableProUITests", "UI.swift", REJECTED["DisplayName.swift"][0]) + found = [path for path, _, _ in check.offenders(self.root)] + self.assertEqual(found, ["TableProTests/App.swift"]) + + def test_a_failure_names_the_site_the_cause_and_the_remedy(self) -> None: + self.write("TableProTests", "App.swift", REJECTED["DisplayName.swift"][0]) + output = io.StringIO() + with redirect_stdout(output): + self.assertEqual(check.main_for(self.root), 1) + text = output.getvalue() + self.assertIn('TableProTests/App.swift:1: @Suite("Display name")', text) + self.assertIn("quadratically", text) + self.assertIn("Leave the type unannotated", text) + + def test_a_clean_tree_passes_silently(self) -> None: + self.write("TableProTests", "App.swift", ACCEPTED["Serialized.swift"]) + output = io.StringIO() + with redirect_stdout(output): + self.assertEqual(check.main_for(self.root), 0) + self.assertEqual(output.getvalue(), "") + + def test_a_file_whose_braces_do_not_balance_fails_instead_of_passing(self) -> None: + conditional_header = ( + "#if canImport(AppKit)\n" + "extension Foo: NSObjectProtocol {\n" + "#else\n" + "extension Foo {\n" + "#endif\n" + " func a() {}\n" + "}\n\n" + '@Suite("After the conditional header")\n' + "struct AfterTests {}\n" + ) + self.write("TableProTests", "ConditionalHeader.swift", conditional_header) + self.write("TableProTests", "ExtraClose.swift", '}\n@Suite("After a stray brace")\nstruct StrayTests {}\n') + _, unreadable = check.scan(self.root) + self.assertEqual( + unreadable, + ["TableProTests/ConditionalHeader.swift", "TableProTests/ExtraClose.swift"], + ) + output = io.StringIO() + with redirect_stdout(output): + self.assertEqual(check.main_for(self.root), 1) + self.assertIn("TableProTests/ConditionalHeader.swift: braces do not balance", output.getvalue()) + + def test_the_repository_itself_is_clean(self) -> None: + self.assertEqual(check.scan(ROOT), ([], [])) + + +if __name__ == "__main__": + sys.exit(unittest.main())