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
}
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) {
final String frameworkName = 'ValuesGenerics'
testName = frameworkName
@@ -503,7 +503,7 @@ fun KonanTestExecutable.configureXcodeBuild() {
// Create a Frameworks folder inside the build dir.
it += "mkdir -p \"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH\""
// Copy each framework to the Frameworks dir.
it += frameworkNames.map { name ->
it += frameworkArtifactNames.map { name ->
"cp -r \"$testOutput/$testName/${project.testTarget.name}/$name.framework\" " +
"\"\$TARGET_BUILD_DIR/\$FRAMEWORKS_FOLDER_PATH/$name.framework\""
}
@@ -32,9 +32,15 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable {
@Input
lateinit var frameworkNames: List<String>
@Input
lateinit var frameworkArtifactNames: List<String>
@Input
var fullBitcode: Boolean = false
@Input
var codesign: Boolean = true
val testOutput: String = project.testOutputFramework
override val executable: String
@@ -57,6 +63,11 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable {
}
check(::testName.isInitialized) { "Test name should be set" }
check(::frameworkNames.isInitialized) { "Framework names should be set" }
if (!::frameworkArtifactNames.isInitialized) {
frameworkArtifactNames = frameworkNames
}
frameworkNames.forEach { frameworkName ->
val compileTask = project.tasks.getByName("compileKonan$frameworkName")
doBeforeBuild?.let { compileTask.doFirst(it) }
@@ -71,11 +82,11 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable {
private fun buildTestExecutable() {
val frameworkParentDirPath = "$testOutput/$testName/${project.testTarget.name}"
frameworkNames.forEach { frameworkName ->
frameworkArtifactNames.forEach { frameworkName ->
val frameworkPath = "$frameworkParentDirPath/$frameworkName.framework"
val frameworkBinaryPath = "$frameworkPath/$frameworkName"
validateBitcodeEmbedding(frameworkBinaryPath)
codesign(project, frameworkPath)
if (codesign) codesign(project, frameworkPath)
}
// create a test provider and get main entry point