From 0b869898ed67c70c78c981d9458bcf19dcf20ecc Mon Sep 17 00:00:00 2001 From: t Date: Tue, 14 Jul 2026 12:56:09 -0700 Subject: [PATCH] fix(ios-qa): make generated Swift manifests valid on first run --- ios-qa/scripts/gen-accessors-tool/Package.swift | 5 ----- ios-qa/templates/Package.swift.template | 7 +------ test/skill-e2e-ios-swift-build.test.ts | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ios-qa/scripts/gen-accessors-tool/Package.swift b/ios-qa/scripts/gen-accessors-tool/Package.swift index 653b68f36..f71c58793 100644 --- a/ios-qa/scripts/gen-accessors-tool/Package.swift +++ b/ios-qa/scripts/gen-accessors-tool/Package.swift @@ -31,10 +31,5 @@ let package = Package( ], path: "Sources/GenAccessors" ), - .testTarget( - name: "GenAccessorsTests", - dependencies: ["GenAccessors"], - path: "Tests/GenAccessorsTests" - ), ] ) diff --git a/ios-qa/templates/Package.swift.template b/ios-qa/templates/Package.swift.template index 88d6bd319..427a3399d 100644 --- a/ios-qa/templates/Package.swift.template +++ b/ios-qa/templates/Package.swift.template @@ -1,3 +1,4 @@ +// swift-tools-version:5.9 // AUTO-GENERATED from gstack/ios-qa/templates/Package.swift.template // // Drop-in SPM package definition for the DebugBridge stack. Three targets: @@ -18,7 +19,6 @@ // CI invariant: `swift build -c release` + `nm -j build/Release/ // | grep -q DebugBridge && exit 1`. -// swift-tools-version:5.9 import PackageDescription let package = Package( @@ -58,10 +58,5 @@ let package = Package( .define("DEBUG", .when(configuration: .debug)), ] ), - .testTarget( - name: "DebugBridgeCoreTests", - dependencies: ["DebugBridgeCore"], - path: "Tests/DebugBridgeCoreTests" - ), ] ) diff --git a/test/skill-e2e-ios-swift-build.test.ts b/test/skill-e2e-ios-swift-build.test.ts index 8a8c3b92b..6b4242f5e 100644 --- a/test/skill-e2e-ios-swift-build.test.ts +++ b/test/skill-e2e-ios-swift-build.test.ts @@ -25,6 +25,7 @@ import { join } from 'path'; const ROOT = join(import.meta.dir, '..'); const FIXTURE_PATH = join(ROOT, 'test/fixtures/ios-qa/FixtureApp'); const TEMPLATES_PATH = join(ROOT, 'ios-qa/templates'); +const GEN_ACCESSORS_PACKAGE = join(ROOT, 'ios-qa/scripts/gen-accessors-tool/Package.swift'); // Parity: canonical Obj-C touch templates must match the fixture's working // copy. The fixture is the only place the .m / .h are exercised end-to-end @@ -59,6 +60,19 @@ describe('template ↔ fixture parity', () => { // app gets the transitive set with one dependency entry. expect(tmpl).toMatch(/name:\s*"DebugBridgeUI"[\s\S]*?dependencies:\s*\["DebugBridgeCore",\s*"DebugBridgeTouch"\]/); }); + + test('generated Swift packages only reference shipped test directories', () => { + const genAccessorsPackage = readFileSync(GEN_ACCESSORS_PACKAGE, 'utf-8'); + const debugBridgePackage = readFileSync(join(TEMPLATES_PATH, 'Package.swift.template'), 'utf-8'); + + expect(genAccessorsPackage).not.toContain('Tests/GenAccessorsTests'); + expect(debugBridgePackage).not.toContain('Tests/DebugBridgeCoreTests'); + }); + + test('Package.swift.template keeps swift-tools-version on the first line', () => { + const tmpl = readFileSync(join(TEMPLATES_PATH, 'Package.swift.template'), 'utf-8'); + expect(tmpl.split(/\r?\n/, 1)[0]).toBe('// swift-tools-version:5.9'); + }); }); function hasSwift(): boolean {