From 672b68d2da88633b6aa7b213380f2cd4ac1030ac Mon Sep 17 00:00:00 2001 From: Kaede Akino Date: Fri, 16 Oct 2026 20:15:25 +0800 Subject: [PATCH] test(persistence): remove bundled migration fixtures --- FrameworkTests/Fixtures/README.md | 11 -- FrameworkTests/Fixtures/V1.store | Bin 311296 -> 0 bytes FrameworkTests/Fixtures/V14.store | Bin 434176 -> 0 bytes FrameworkTests/Fixtures/V28.store | Bin 516096 -> 0 bytes .../PersistenceCompatibilityTests.swift | 110 ------------------ Scripts/generate-v28-fixture.swift | 71 ----------- TFITests/MobileAppTests.swift | 33 ------ Termind.xcodeproj/project.pbxproj | 12 -- 8 files changed, 237 deletions(-) delete mode 100644 FrameworkTests/Fixtures/README.md delete mode 100644 FrameworkTests/Fixtures/V1.store delete mode 100644 FrameworkTests/Fixtures/V14.store delete mode 100644 FrameworkTests/Fixtures/V28.store delete mode 100644 Scripts/generate-v28-fixture.swift diff --git a/FrameworkTests/Fixtures/README.md b/FrameworkTests/Fixtures/README.md deleted file mode 100644 index 14e44801..00000000 --- a/FrameworkTests/Fixtures/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Original-module SwiftData stores - -V1.store and V14.store were generated from the original `Termind` app module -before extracting `TermindPersistence`. They contain only synthetic data: a -fixed-ID host group and, in V1, a legacy provider. SQLite's backup API copied -committed contents from the WAL into these self-contained fixtures. - -Do not regenerate these fixtures using the extracted models: that would stop -checking compatibility across the original and framework module identities. -The source revision is recorded below. -726a2eb909adba3ced6a507c4704886f787e5f66 diff --git a/FrameworkTests/Fixtures/V1.store b/FrameworkTests/Fixtures/V1.store deleted file mode 100644 index ad9654d79337795a7246a3214f89abb91d749fa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311296 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 O4t3gy`uoD+@P7bPPsX4C diff --git a/FrameworkTests/Fixtures/V14.store b/FrameworkTests/Fixtures/V14.store deleted file mode 100644 index 27484777eaa80c859da7bf26868700b59e47f87e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434176 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 diff --git a/FrameworkTests/PersistenceCompatibilityTests.swift b/FrameworkTests/PersistenceCompatibilityTests.swift index ef5fd2a8..bb862177 100644 --- a/FrameworkTests/PersistenceCompatibilityTests.swift +++ b/FrameworkTests/PersistenceCompatibilityTests.swift @@ -4,8 +4,6 @@ import TermindDomain import TermindPersistence import Testing -private final class FixtureBundle: NSObject {} - @Suite @MainActor struct PersistenceCompatibilityTests { @Test func version35DropsRetiredImporterTableAndPreservesNativeHistoryOnReopen() throws { @@ -111,27 +109,6 @@ struct PersistenceCompatibilityTests { #expect(SSHKeyRef(label: "").storage == .iCloud) } - @Test(arguments: [1, 14]) - func originalAppModuleStoresOpenWithoutLosingData(version: Int) throws { - let source = try #require( - Bundle(for: FixtureBundle.self).url(forResource: "V\(version)", withExtension: "store")) - let directory = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) - try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) - defer { try? FileManager.default.removeItem(at: directory) } - let url = directory.appendingPathComponent("Termind.store") - try FileManager.default.copyItem(at: source, to: url) - let container = try TermindPersistence.makeContainer(url: url) - let groups = try container.mainContext.fetch(FetchDescriptor()) - #expect(groups.map(\.name) == ["Legacy fixture group"]) - #expect(groups.first?.id == UUID(uuidString: "11111111-1111-1111-1111-111111111111")) - if version == 1 { - let providers = try container.mainContext.fetch(FetchDescriptor()) - #expect(providers.map(\.name) == ["Legacy fixture provider"]) - } - #expect(try container.mainContext.fetchCount(FetchDescriptor()) == 0) - #expect(try container.mainContext.fetchCount(FetchDescriptor()) == 0) - } - @Test func fileStoreReopensWithSharedModels() throws { let directory = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) @@ -149,93 +126,6 @@ struct PersistenceCompatibilityTests { try container.mainContext.save() } - @Test - func version28FixtureMigratesAndReopensWithoutLosingData() throws { - let source = try #require(Bundle(for: FixtureBundle.self).url(forResource: "V28", withExtension: "store")) - let directory = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) - try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) - defer { try? FileManager.default.removeItem(at: directory) } - let url = directory.appendingPathComponent("Termind.store") - try FileManager.default.copyItem(at: source, to: url) - - try verifyVersion28Store(at: url) - try verifyVersion28Store(at: url) - } - - private func verifyVersion28Store(at url: URL) throws { - let container = try TermindPersistence.makeContainer(url: url) - let context = container.mainContext - let snapshot = try HostPersistence(context: context).load() - let host = try #require(snapshot.hosts.first) - let identity = try #require(snapshot.identities.first) - let key = try #require(snapshot.keys.first) - let snippet = try #require(snapshot.snippets.first) - let installationID = UUID(uuidString: "66666666-6666-6666-6666-666666666666")! - - #expect(snapshot.hosts.count == 1) - #expect(host.id == UUID(uuidString: "22222222-2222-2222-2222-222222222222")) - #expect(host.name == "V28 fixture host") - #expect(host.host == "legacy.example.invalid") - #expect(host.sshEnabled) - #expect(host.sshPort == 2222) - #expect(host.sshCharset == .gb18030) - #expect(!host.telnetEnabled) - #expect(host.telnetPort == 23) - #expect(host.telnetCharset == .utf8) - #expect(host.telnetIdentityID == nil) - #expect(host.sshIdentityID == identity.id) - #expect(host.groupID == snapshot.groups.first?.id) - #expect(snapshot.groups.map(\.name) == ["V28 fixture group"]) - #expect(host.tags == ["legacy", "ssh"]) - #expect(host.colorTag == .teal) - #expect(host.sortIndex == 2.5) - #expect(host.shellIntegrationMode == .disabled) - #expect(host.portForwardingMaxConnections == 3) - #expect(host.sftpChannelInitialPath == "/srv/legacy") - #expect( - host.environmentVariables == [ - HostEnvironmentVariable(variable: "LANG", value: "zh_CN.GB18030"), - HostEnvironmentVariable(variable: "TERM", value: "xterm-256color"), - ]) - #expect(host.startupSnippetID == snippet.id) - #expect(snippet.body == "pwd") - #expect(snippet.targetHostIDs == [host.id]) - #expect(identity.id == UUID(uuidString: "33333333-3333-3333-3333-333333333333")) - #expect(identity.username == "deploy") - #expect(identity.credentialRef == "termind.fixture.password") - #expect(identity.passwordStorage == .thisDevice) - #expect(identity.keyID == key.id) - #expect(identity.notes == "Synthetic fixture") - #expect(identity.colorTag == .purple) - #expect(key.id == UUID(uuidString: "44444444-4444-4444-4444-444444444444")) - #expect(key.label == "V28 fixture key") - #expect( - snapshot.knownHosts == [ - KnownHostEntry( - id: UUID(uuidString: "77777777-7777-7777-7777-777777777777")!, - hostname: "legacy.example.invalid", port: 2222, - fingerprint: "SHA256:fixture", addedAt: Date(timeIntervalSince1970: 50)) - ]) - try HistorySyncPersistence(context: context).prepare() - let history = try context.fetch(FetchDescriptor()).map(\.value) - #expect( - history == [ - ConnectionHistoryEntry( - id: UUID(uuidString: "55555555-5555-5555-5555-555555555555")!, - hostID: host.id, kind: .ssh, connectedAt: Date(timeIntervalSince1970: 90), - sourceDeviceID: installationID) - ]) - #expect(try context.fetch(FetchDescriptor()).first?.installationID == installationID) - #expect(try context.fetch(FetchDescriptor()).map(\.id) == [installationID]) - - let suite = "PersistenceV28.\(UUID())" - let defaults = try #require(UserDefaults(suiteName: suite)) - defer { defaults.removePersistentDomain(forName: suite) } - let settings = SettingsSyncPersistence(context: context, defaults: defaults) - try settings.prepare() - #expect(try settings.loadWorkspacePreferences() == WorkspacePreferences()) - } - @Test func memoryContainersUseTheFullSchemaAndRemainIndependent() throws { let first = try TermindPersistence.makeContainer(inMemory: true) diff --git a/Scripts/generate-v28-fixture.swift b/Scripts/generate-v28-fixture.swift deleted file mode 100644 index 172a7a39..00000000 --- a/Scripts/generate-v28-fixture.swift +++ /dev/null @@ -1,71 +0,0 @@ -import Foundation -import SwiftData -import TermindDomain -import TermindPersistence - -// V28.store source: 0dc173d4b1d190071d35bc66f80ebb767d8b950c (the parent of b0d35d24). -// Build that checkout's TermindPersistence scheme for macOS with -onlyUsePackageVersionsFromResolvedFile. -// Compile this generator with -parse-as-library, using that build's -F/-I products, GRDBSQLite module path, -// TermindPersistence/TermindDomain/TermindApplication frameworks, and AgentKit.o/Logging.o. -// Pass a new temporary store path, then use SQLite's backup API to produce the standalone fixture after exit. -// Never regenerate against current models. All data is synthetic; no password or private key is stored. -// Expected schema checksum: hh/HY7td7OFShC/UhxiuwAlJuf8IZOWsZm7U7VqLaSs= -@main -struct GenerateV28Fixture { - @MainActor - static func main() throws { - let url = URL(fileURLWithPath: CommandLine.arguments[1]) - let schema = Schema(versionedSchema: TermindSchemaV28.self) - let container = try ModelContainer( - for: schema, - configurations: [ModelConfiguration("Termind", schema: schema, url: url, cloudKitDatabase: .none)]) - let context = container.mainContext - let groupID = UUID(uuidString: "11111111-1111-1111-1111-111111111111")! - let hostID = UUID(uuidString: "22222222-2222-2222-2222-222222222222")! - let identityID = UUID(uuidString: "33333333-3333-3333-3333-333333333333")! - let keyID = UUID(uuidString: "44444444-4444-4444-4444-444444444444")! - let historyID = UUID(uuidString: "55555555-5555-5555-5555-555555555555")! - let installationID = UUID(uuidString: "66666666-6666-6666-6666-666666666666")! - let knownHostID = UUID(uuidString: "77777777-7777-7777-7777-777777777777")! - let snippetID = UUID(uuidString: "88888888-8888-8888-8888-888888888888")! - let host = TermindSchemaV28HostModels.PersistentHost( - Host( - id: hostID, name: "V28 fixture host", host: "legacy.example.invalid", port: 2222, - identityID: identityID, charset: .gb18030, groupID: groupID, - tags: ["legacy", "ssh"], colorTag: .teal, sortIndex: 2.5, - shellIntegrationMode: .disabled, startupSnippetID: snippetID, - environmentVariables: [ - HostEnvironmentVariable(variable: "LANG", value: "zh_CN.GB18030"), - HostEnvironmentVariable(variable: "TERM", value: "xterm-256color"), - ], portForwardingMaxConnections: 3)) - host.sftpSessionInitialPath = "/srv/legacy" - host.lastUsedAt = Date(timeIntervalSince1970: 100) - context.insert(host) - context.insert(PersistentHostGroup(HostGroup(id: groupID, name: "V28 fixture group"))) - context.insert( - PersistentIdentity( - Identity( - id: identityID, name: "V28 fixture identity", username: "deploy", - credentialRef: "termind.fixture.password", passwordStorage: .thisDevice, - keyID: keyID, notes: "Synthetic fixture", colorTag: .purple))) - context.insert(PersistentSSHKey(SSHKeyRef(id: keyID, label: "V28 fixture key"))) - let knownHost = TermindSchemaV29KnownHostModels.PersistentKnownHost( - KnownHostEntry( - id: knownHostID, hostname: "legacy.example.invalid", port: 2222, - fingerprint: "SHA256:fixture", addedAt: Date(timeIntervalSince1970: 50))) - knownHost.isMismatched = true - context.insert(knownHost) - context.insert( - PersistentSnippet( - Snippet(id: snippetID, title: "V28 fixture snippet", body: "pwd", targetHostIDs: [hostID]))) - context.insert( - PersistentConnectionHistoryEntry( - ConnectionHistoryEntry( - id: historyID, hostID: hostID, kind: .ssh, connectedAt: Date(timeIntervalSince1970: 90)))) - let state = PersistentVaultSyncState() - state.installationID = installationID - state.bootstrapCompleted = true - context.insert(state) - try context.save() - } -} diff --git a/TFITests/MobileAppTests.swift b/TFITests/MobileAppTests.swift index 36a7f77a..6fedc367 100644 --- a/TFITests/MobileAppTests.swift +++ b/TFITests/MobileAppTests.swift @@ -13,8 +13,6 @@ import UIKit @testable import TermindIOS -private final class MobileMigrationFixtureBundle: NSObject {} - @Suite @MainActor struct MobileAppTests { private final class MetricsPreferences: MetricsConfigurationStoring { @@ -52,37 +50,6 @@ struct MobileAppTests { await app.tailscale.shutdown() } - @Test func startupLoadsVersion28DataAfterMigrationAndRelaunch() throws { - let source = try #require( - Bundle(for: MobileMigrationFixtureBundle.self).url(forResource: "V28", withExtension: "store")) - let directory = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) - try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) - defer { try? FileManager.default.removeItem(at: directory) } - let url = directory.appendingPathComponent("Termind.store") - try FileManager.default.copyItem(at: source, to: url) - let suite = "MobileMigrationV28.\(UUID())" - let defaults = try #require(UserDefaults(suiteName: suite)) - defer { defaults.removePersistentDomain(forName: suite) } - - for _ in 0..<2 { - var dependencies = MobileAppDependencies.testing(defaults: defaults) - dependencies.container = try TermindPersistence.makeContainer(url: url) - let app = try MobileAppModel(dependencies: dependencies) - defer { app.outbox.stop() } - let host = try #require(app.library.hosts.first) - #expect(host.name == "V28 fixture host") - #expect(host.sshCharset == .gb18030) - #expect(host.sshPort == 2222) - #expect(host.sshIdentityID == app.library.identities.first?.id) - #expect(app.library.identities.first?.credentialRef == "termind.fixture.password") - let history = app.connectionHistory.entries(for: host.id) - #expect(history.count == 1) - #expect(history.first?.sourceDeviceID == UUID(uuidString: "66666666-6666-6666-6666-666666666666")) - #expect(history.first?.endedAt == nil) - #expect(try app.hosts.snapshot().value.hosts == [host]) - } - } - @Test func scenesCanUseTheSameAppRepository() throws { let repository = InMemoryHostRepository() let app = try MobileAppModel(hosts: repository) diff --git a/Termind.xcodeproj/project.pbxproj b/Termind.xcodeproj/project.pbxproj index 3d19aab4..b1195f69 100644 --- a/Termind.xcodeproj/project.pbxproj +++ b/Termind.xcodeproj/project.pbxproj @@ -85,7 +85,6 @@ D7D1BBB65020F61F7EFDDFD7 /* GhosttyTerminal in Frameworks */ = {isa = PBXBuildFile; productRef = TRMD00000000000000100012 /* GhosttyTerminal */; }; DEVK00000000000000000003 /* DeviceKit in Frameworks */ = {isa = PBXBuildFile; productRef = DEVK00000000000000000002 /* DeviceKit */; }; DEVK00000000000000000004 /* DeviceKit in Frameworks */ = {isa = PBXBuildFile; productRef = DEVK00000000000000000002 /* DeviceKit */; }; - E28A00000000000000000002 /* V28.store in Resources */ = {isa = PBXBuildFile; fileRef = E28A00000000000000000001 /* V28.store */; }; E635C54CA9F1A63D909CFCE6 /* TermindPersistence.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 244632CCDB1CA43F45C0EB54 /* TermindPersistence.framework */; }; E9A6C576AF3870A1958F9C5A /* ETSession in Frameworks */ = {isa = PBXBuildFile; productRef = 6335BE33C2C5F92BE0568DF6 /* ETSession */; }; EF2F88E4809C845C3F1BBF63 /* TermindDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A62058825D6607920F1E2A1 /* TermindDomain.framework */; }; @@ -492,7 +491,6 @@ BENC00000000000000000011 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; BENC00000000000000000012 /* termind-port-forwarding-benchmark */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "termind-port-forwarding-benchmark"; sourceTree = BUILT_PRODUCTS_DIR; }; DBE378B130478CFB00B16AA1 /* Termind.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; name = Termind.storekit; path = StoreKit/Termind.storekit; sourceTree = ""; }; - E28A00000000000000000001 /* V28.store */ = {isa = PBXFileReference; lastKnownFileType = file; name = V28.store; path = FrameworkTests/Fixtures/V28.store; sourceTree = SOURCE_ROOT; }; F04700000000000000000011 /* TFMTests/SSHForwardingPumpTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TFMTests/SSHForwardingPumpTests.swift; sourceTree = SOURCE_ROOT; }; F04700000000000000000012 /* TFMTests/SSHForwardingWireTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TFMTests/SSHForwardingWireTests.swift; sourceTree = SOURCE_ROOT; }; F1BA00000000000000000020 /* Configuration/Firebase/GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Configuration/Firebase/GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; @@ -847,14 +845,6 @@ path = Frameworks; sourceTree = ""; }; - DB9666953064BA9A005FB585 /* Persistence Test Fixtures */ = { - isa = PBXGroup; - children = ( - E28A00000000000000000001 /* V28.store */, - ); - name = "Persistence Test Fixtures"; - sourceTree = ""; - }; F04700000000000000000010 /* Forwarding Test Support */ = { isa = PBXGroup; children = ( @@ -881,7 +871,6 @@ BA4A4EAD7B8B3A380C9ED1C2 /* FrameworkTests */, A102A7EA2C3532D7FA88B0A4 /* TFITests */, F04700000000000000000010 /* Forwarding Test Support */, - DB9666953064BA9A005FB585 /* Persistence Test Fixtures */, ); sourceTree = ""; }; @@ -1449,7 +1438,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - E28A00000000000000000002 /* V28.store in Resources */, ); runOnlyForDeploymentPostprocessing = 0; };