Add test for static framework (#4008)

This commit is contained in:
SvyatoslavScherbina
2020-03-23 13:43:59 +03:00
committed by GitHub
parent 839c995266
commit 71e1f8228b
3 changed files with 46 additions and 3 deletions
+32
View File
@@ -3882,6 +3882,38 @@ if (isAppleTarget(project)) {
}*.absolutePath }*.absolutePath
} }
task testObjCExportStatic(type: FrameworkTest) {
final String frameworkName = 'KtStatic'
final String frameworkArtifactName = 'Kt'
testName = "ObjCExportStatic"
frameworkNames = [frameworkName]
frameworkArtifactNames = [frameworkArtifactName]
codesign = false
final String dir = "$testOutputFramework/$testName"
konanArtifacts {
framework(frameworkName, targets: [target.name]) {
srcDir 'objcexport'
baseDir dir
if (!useCustomDist) {
dependsOn ":${target.name}CrossDistRuntime", ':commonDistRuntime', ':distCompiler'
}
extraOpts "-Xembed-bitcode-marker"
extraOpts "-Xstatic-framework"
extraOpts project.globalTestArgs
artifactName frameworkArtifactName
}
}
swiftSources = fileTree('objcexport') {
include '*.swift'
}*.absolutePath
}
task testValuesGenericsFramework(type: FrameworkTest) { task testValuesGenericsFramework(type: FrameworkTest) {
final String frameworkName = 'ValuesGenerics' final String frameworkName = 'ValuesGenerics'
testName = frameworkName testName = frameworkName
@@ -503,7 +503,7 @@ fun KonanTestExecutable.configureXcodeBuild() {
// Create a Frameworks folder inside the build dir. // Create a Frameworks folder inside the build dir.
it += "mkdir -p \"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH\"" it += "mkdir -p \"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH\""
// Copy each framework to the Frameworks dir. // Copy each framework to the Frameworks dir.
it += frameworkNames.map { name -> it += frameworkArtifactNames.map { name ->
"cp -r \"$testOutput/$testName/${project.testTarget.name}/$name.framework\" " + "cp -r \"$testOutput/$testName/${project.testTarget.name}/$name.framework\" " +
"\"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH/$name.framework\"" "\"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH/$name.framework\""
} }
@@ -32,9 +32,15 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable {
@Input @Input
lateinit var frameworkNames: List<String> lateinit var frameworkNames: List<String>
@Input
lateinit var frameworkArtifactNames: List<String>
@Input @Input
var fullBitcode: Boolean = false var fullBitcode: Boolean = false
@Input
var codesign: Boolean = true
val testOutput: String = project.testOutputFramework val testOutput: String = project.testOutputFramework
override val executable: String override val executable: String
@@ -57,6 +63,11 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable {
} }
check(::testName.isInitialized) { "Test name should be set" } check(::testName.isInitialized) { "Test name should be set" }
check(::frameworkNames.isInitialized) { "Framework names should be set" } check(::frameworkNames.isInitialized) { "Framework names should be set" }
if (!::frameworkArtifactNames.isInitialized) {
frameworkArtifactNames = frameworkNames
}
frameworkNames.forEach { frameworkName -> frameworkNames.forEach { frameworkName ->
val compileTask = project.tasks.getByName("compileKonan$frameworkName") val compileTask = project.tasks.getByName("compileKonan$frameworkName")
doBeforeBuild?.let { compileTask.doFirst(it) } doBeforeBuild?.let { compileTask.doFirst(it) }
@@ -71,11 +82,11 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable {
private fun buildTestExecutable() { private fun buildTestExecutable() {
val frameworkParentDirPath = "$testOutput/$testName/${project.testTarget.name}" val frameworkParentDirPath = "$testOutput/$testName/${project.testTarget.name}"
frameworkNames.forEach { frameworkName -> frameworkArtifactNames.forEach { frameworkName ->
val frameworkPath = "$frameworkParentDirPath/$frameworkName.framework" val frameworkPath = "$frameworkParentDirPath/$frameworkName.framework"
val frameworkBinaryPath = "$frameworkPath/$frameworkName" val frameworkBinaryPath = "$frameworkPath/$frameworkName"
validateBitcodeEmbedding(frameworkBinaryPath) validateBitcodeEmbedding(frameworkBinaryPath)
codesign(project, frameworkPath) if (codesign) codesign(project, frameworkPath)
} }
// create a test provider and get main entry point // create a test provider and get main entry point