Preserve user-defined test targets across Package.swift regeneration
This commit is contained in:
parent
f305df0eff
commit
b13f7976cc
4 changed files with 114 additions and 2 deletions
|
|
@ -96,3 +96,67 @@ func testPackageScaffoldingAdw() {
|
|||
#expect(scaffolding["Sources/CAdw/module.modulemap"]?.contains("link \"adwaita-1\"") == true)
|
||||
#expect(scaffolding["Sources/CAdw/CAdw.h"]?.contains("#include <adwaita.h>") == true)
|
||||
}
|
||||
|
||||
// MARK: - User target preservation
|
||||
|
||||
@Test("generateMonorepoScaffolding includes user targets marker block")
|
||||
func testMonorepoPackageHasUserTargetMarkers() {
|
||||
// Build minimal MultiPackageAnalysis with one module
|
||||
let repo = Repository(
|
||||
namespaces: [Namespace(name: "Gtk", version: "4.0",
|
||||
cSharedLibrary: "libgtk-4.so.1", cIdentifierPrefix: "Gtk")]
|
||||
)
|
||||
let analysis = MultiPackageAnalysis(
|
||||
repositories: ["Gtk": repo],
|
||||
directDependencies: ["Gtk": []],
|
||||
transitiveDependencies: ["Gtk": []],
|
||||
implicitImports: ["Gtk": []],
|
||||
packageConfigs: [:]
|
||||
)
|
||||
let scaffolding = CodeGenerator.generateMonorepoScaffolding(analysis: analysis)
|
||||
let pkg = scaffolding["Package.swift"] ?? ""
|
||||
#expect(pkg.contains("// BEGIN_USER_TARGETS"))
|
||||
#expect(pkg.contains("// END_USER_TARGETS"))
|
||||
}
|
||||
|
||||
@Test("preserveUserTargets splices user block from existing into generated")
|
||||
func testPreserveUserTargets() {
|
||||
let existing = """
|
||||
targets: [
|
||||
.systemLibrary(name: "CGLib"),
|
||||
// BEGIN_USER_TARGETS
|
||||
.testTarget(name: "MyTests", dependencies: ["GLib"]),
|
||||
// END_USER_TARGETS
|
||||
]
|
||||
"""
|
||||
|
||||
let generated = """
|
||||
targets: [
|
||||
.systemLibrary(name: "CGLib"),
|
||||
// BEGIN_USER_TARGETS
|
||||
|
||||
// END_USER_TARGETS
|
||||
]
|
||||
"""
|
||||
let result = CodeGenerator.preserveUserTargets(generated: generated, existing: existing)
|
||||
#expect(result.contains("MyTests"))
|
||||
#expect(result != generated, "Result should differ from generated since existing has content")
|
||||
#expect(result.contains("// BEGIN_USER_TARGETS"))
|
||||
#expect(result.contains("// END_USER_TARGETS"))
|
||||
#expect(result.contains(".testTarget(name:"))
|
||||
}
|
||||
|
||||
@Test("preserveUserTargets returns generated unchanged when existing has no markers")
|
||||
func testPreserveUserTargetsFirstGeneration() {
|
||||
let generated = """
|
||||
targets: [
|
||||
.systemLibrary(name: "CGLib"),
|
||||
// BEGIN_USER_TARGETS
|
||||
|
||||
// END_USER_TARGETS
|
||||
]
|
||||
"""
|
||||
|
||||
let result = CodeGenerator.preserveUserTargets(generated: generated, existing: "")
|
||||
#expect(result == generated)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue