KT-66516 Add swift export framework test
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/SwiftExportIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/SwiftExportIT.kt
index a281b97..ad0fdb6 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/SwiftExportIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/SwiftExportIT.kt
@@ -47,7 +47,7 @@
                 assertTasksExecuted(":shared:linkSwiftExportBinaryDebugStaticIosArm64")
                 assertTasksExecuted(":shared:iosArm64DebugGenerateSPMPackage")
                 assertTasksExecuted(":shared:iosArm64DebugBuildSPMPackage")
-                assertTasksExecuted(":shared:mergeIosDebugSwiftExportLibraries")
+                assertTasksExecuted(":shared:mergeIosDebugEmbedSwiftExportLibraries")
                 assertTasksExecuted(":shared:copyDebugSPMIntermediates")
                 assertTasksSkipped(":shared:embedAndSignAppleFrameworkForXcode")
 
@@ -57,6 +57,20 @@
                 assertDirectoryInProjectExists("shared/build/SPMPackage/iosArm64/Debug")
                 assertDirectoryInProjectExists("shared/build/SwiftExport/iosArm64/Debug")
             }
+
+            // Check up-to-dateness
+            build(
+                ":shared:embedAndSignAppleFrameworkForXcode",
+                environmentVariables = swiftExportEmbedAndSignEnvVariables(testBuildDir)
+            ) {
+                assertTasksUpToDate(":shared:iosArm64DebugSwiftExport")
+                assertTasksUpToDate(":shared:iosArm64MainKlibrary")
+                assertTasksUpToDate(":shared:compileSwiftExportMainKotlinIosArm64")
+                assertTasksUpToDate(":shared:linkSwiftExportBinaryDebugStaticIosArm64")
+                assertTasksUpToDate(":shared:iosArm64DebugGenerateSPMPackage")
+                assertTasksUpToDate(":shared:iosArm64DebugBuildSPMPackage")
+                assertTasksUpToDate(":shared:mergeIosDebugEmbedSwiftExportLibraries")
+            }
         }
     }
 
@@ -267,6 +281,48 @@
             assert(x64Compilation.isSuccessful)
         }
     }
+
+    @DisplayName("creates a valid .xcframework with Swift Export")
+    @GradleTest
+    fun testSwiftExportXCFrameworkTask(
+        gradleVersion: GradleVersion,
+    ) {
+        nativeProject(
+            "simpleSwiftExport",
+            gradleVersion,
+        ) {
+            projectPath.enableSwiftExport()
+
+            val frameworkPath = "shared/build/SwiftExportFramework/Debug/Shared.xcframework"
+
+            build(
+                ":shared:assembleDebugSwiftExportFramework",
+                buildOptions = defaultBuildOptions.copy(
+                    configurationCache = true,
+                )
+            ) {
+                assertDirectoryInProjectExists(frameworkPath)
+            }
+
+            projectPath
+                .resolve(frameworkPath)
+                .copyToRecursively(projectPath.resolve("FrameworkConsumer/Shared.xcframework"), followLinks = false)
+
+            projectPath
+                .resolve("shared/build")
+                .deleteRecursively()
+
+            val consumerPackage = projectPath.resolve("FrameworkConsumer")
+
+            xcodebuild(
+                workingDir = consumerPackage,
+                scheme = "FrameworkConsumer",
+                configuration = "Debug",
+                sdk = "iphonesimulator",
+                destination = "generic/platform=iOS Simulator"
+            )
+        }
+    }
 }
 
 @OptIn(EnvironmentalVariablesOverride::class)
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/simpleSwiftExport/FrameworkConsumer/Package.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/simpleSwiftExport/FrameworkConsumer/Package.swift
new file mode 100644
index 0000000..bc32d71
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/simpleSwiftExport/FrameworkConsumer/Package.swift
@@ -0,0 +1,17 @@
+// swift-tools-version: 5.10
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+    name: "FrameworkConsumer",
+    products: [
+        .library(
+            name: "FrameworkConsumer",
+            targets: ["FrameworkConsumer"]),
+    ],
+    targets: [
+        .target(name: "FrameworkConsumer", dependencies: ["Shared"]),
+        .binaryTarget(name: "Shared", path: "Shared.xcframework")
+    ]
+)
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/simpleSwiftExport/FrameworkConsumer/Sources/FrameworkConsumer/FrameworkConsumer.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/simpleSwiftExport/FrameworkConsumer/Sources/FrameworkConsumer/FrameworkConsumer.swift
new file mode 100644
index 0000000..91ffc32
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/simpleSwiftExport/FrameworkConsumer/Sources/FrameworkConsumer/FrameworkConsumer.swift
@@ -0,0 +1,12 @@
+// The Swift Programming Language
+// https://docs.swift.org/swift-book
+
+import Shared
+
+class Consumer {
+
+    func consume() {
+        _ = com.github.jetbrains.swiftexport.foo()
+        _ = com.github.jetbrains.swiftexport.bar()
+    }
+}