[K/N][Tests] Migrate dylib-interop-exe tests

^KT-61259
This commit is contained in:
Vladimir Sukharev
2024-02-15 13:57:30 +01:00
committed by Space Team
parent 83d851dd61
commit 2b2c685827
56 changed files with 278 additions and 397 deletions
@@ -963,73 +963,6 @@ createInterop("workerSignals") {
}
if (PlatformInfo.isAppleTarget(project)) {
createInterop("objcSmoke") {
it.defFile 'interop/objc/objcSmoke.def'
it.headers "$projectDir/interop/objc/smoke.h"
}
createInterop("objcTests") {
it.defFile 'interop/objc/objcTests.def'
it.headers fileTree("$projectDir/interop/objc/tests") { include '**/*.h' }
}
createInterop("objcMisc") {
it.defFile 'interop/objc_with_initializer/objc_misc.def'
it.headers "$projectDir/interop/objc_with_initializer/objc_misc.h"
}
createInterop("objcMessaging") {
it.defFile 'interop/objc/msg_send/messaging.def'
it.headers "$projectDir/interop/objc/msg_send/messaging.h"
}
createInterop("foreignException") {
it.defFile 'interop/objc/foreignException/objc_wrap.def'
it.headers "$projectDir/interop/objc/foreignException/objc_wrap.h"
}
createInterop("foreignExceptionMode_default") {
it.defFile 'interop/objc/foreignException/objcExceptionMode.def'
it.headers "$projectDir/interop/objc/foreignException/objc_wrap.h"
}
createInterop("foreignExceptionMode_wrap") {
it.defFile 'interop/objc/foreignException/objcExceptionMode.def'
it.headers "$projectDir/interop/objc/foreignException/objc_wrap.h"
it.extraOpts '-Xforeign-exception-mode', "objc-wrap"
}
createInterop("objcKt43517") {
it.defFile 'framework/kt43517/kt43517.def'
}
createInterop("objc_kt42172") {
it.defFile 'interop/objc/kt42172/objclib.def'
it.headers "$projectDir/interop/objc/kt42172/objclib.h"
}
createInterop("objc_kt55938") {
it.defFile 'interop/objc/kt55938/objclib.def'
it.headers "$projectDir/interop/objc/kt55938/objclib.h"
}
createInterop("objc_include_categories") {
it.defFile 'interop/objc/include_categories/objc_include_categories.def'
it.headers "$projectDir/interop/objc/include_categories/objc_include_categories.h"
}
createInterop("frameworkForwardDeclarations") {
it.defFile 'framework/forwardDeclarations/clib.def'
}
createInterop("objc_kt56402") {
it.defFile 'interop/objc/kt56402/objclib.def'
it.headers "$projectDir/interop/objc/kt56402/objclib.h"
}
createInterop("objc_friendly_dealloc") {
it.defFile 'interop/objc/objc_friendly_dealloc/objclib.def'
it.headers "$projectDir/interop/objc/objc_friendly_dealloc/objclib.h"
}
createInterop("objCAction") {
it.defFile 'interop/objc/objCAction/objclib.def'
it.headers "$projectDir/interop/objc/objCAction/objclib.h"
}
createInterop("kt63423_dispose_on_main_stress") {
it.defFile 'interop/objc/kt63423_dispose_on_main_stress/objclib.def'
it.headers "$projectDir/interop/objc/kt63423_dispose_on_main_stress/objclib.h"
@@ -1157,160 +1090,6 @@ if (PlatformInfo.isAppleTarget(project)) {
UtilsKt.dependsOnPlatformLibs(it)
}
interopTest("interop_objc_global_initializer") {
useGoldenData = true
source = "interop/objc_with_initializer/objc_test.kt"
interop = 'objcMisc'
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjcmisc.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc_with_initializer/objc_misc.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_msg_send") {
source = "interop/objc/msg_send/main.kt"
interop = 'objcMessaging'
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjcmessaging.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/msg_send/messaging.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_foreignException") {
source = "interop/objc/foreignException/objc_wrap.kt"
interop = 'foreignException'
UtilsKt.dependsOnPlatformLibs(it)
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjcexception.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/foreignException/objc_wrap.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_foreignExceptionMode_wrap") {
source = "interop/objc/foreignException/objcExceptionMode_wrap.kt"
interop = 'foreignExceptionMode_wrap'
useGoldenData = true
UtilsKt.dependsOnPlatformLibs(it)
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjcexception.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/foreignException/objc_wrap.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_foreignExceptionMode_default") {
source = "interop/objc/foreignException/objcExceptionMode_default.kt"
interop = 'foreignExceptionMode_default'
useGoldenData = true
UtilsKt.dependsOnPlatformLibs(it)
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjcexception.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/foreignException/objc_wrap.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_kt42172") {
enabled = !isNoopGC
source = "interop/objc/kt42172/main.kt"
interop = "objc_kt42172"
flags = ['-opt-in=kotlin.native.internal.InternalForKotlinNative']
useGoldenData = true
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjc_kt42172.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/kt42172/objclib.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_kt55938") {
source = "interop/objc/kt55938/main.kt"
lib = "interop/objc/kt55938/lib.kt"
interop = "objc_kt55938"
useGoldenData = true
enabled = cacheTesting != null
flags = [
"-Xauto-cache-from=$testOutputRoot/local/objc_kt55938",
"-Xauto-cache-from=$testOutputRoot/local/interop_objc_kt55938",
"-Xauto-cache-dir=$testOutputRoot/local/interop_objc_kt55938/cache",
"-Xsuppress-version-warnings", // suppresses warning about experimental language version, otherwise test fails with K2 due to -Werror
"-Werror" // to forbid retry with auto-cache disabled
]
UtilsKt.findKonanBuildTask(project, "objc_kt55938", target).configure {
it.doFirst {
def cacheDir = new File("$testOutputRoot/local/interop_objc_kt55938/cache")
cacheDir.deleteDir()
mkdir(cacheDir)
}
}
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjc_kt55938.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/kt55938/objclib.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
standaloneTest("objc_arc_contract") {
def bcFile = project.layout.buildDirectory.file("objc_arc_contract.bc").get().asFile
doBeforeBuild {
@@ -1325,24 +1104,6 @@ if (PlatformInfo.isAppleTarget(project)) {
flags = ["-native-library", bcFile.toString()]
}
interopTest("interop_objc_include_categories") {
useGoldenData = true
source = "interop/objc/include_categories/main.kt"
interop = "objc_include_categories"
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjcincludecategories.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/include_categories/objc_include_categories.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
standaloneTest("interop_kt55653") {
// Test depends on macOS-specific AppKit
enabled = (project.testTarget == 'macos_x64' || project.testTarget == 'macos_arm64' || project.testTarget == null)
@@ -1359,70 +1120,6 @@ if (PlatformInfo.isAppleTarget(project)) {
UtilsKt.dependsOnPlatformLibs(it)
}
interopTest("interop_objc_kt56402") {
// Test depends on macOS-specific AppKit
enabled = (project.testTarget == 'macos_x64' || project.testTarget == 'macos_arm64' || project.testTarget == null)
&& !isNoopGC // requires some GC
source = 'interop/objc/kt56402/main.kt'
interop = "objc_kt56402"
flags = ["-tr", "-e", "runAllTests"] // Generate test suites, but use custom entrypoint.
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjc_kt56402.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/kt56402/objclib.m"
args "-g"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
args '-framework', 'AppKit'
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
}
interopTest("interop_objc_friendly_dealloc") {
enabled = !isNoopGC // requires some GC
source = 'interop/objc/objc_friendly_dealloc/main.kt'
interop = "objc_friendly_dealloc"
flags = ["-tr"]
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjc_friendly_dealloc.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/objc_friendly_dealloc/objclib.m"
args "-lobjc", '-fno-objc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
UtilsKt.dependsOnPlatformLibs(it)
}
interopTest("interop_objCAction") {
source = 'interop/objc/objCAction/main.kt'
interop = "objCAction"
flags = ["-tr"]
doBeforeBuild {
def dylibFile = project.layout.buildDirectory.file("libobjCAction.dylib").get().asFile
mkdir(dylibFile.parentFile)
project.extensions.execClang.execClangForCompilerTests(project.target) {
args "$projectDir/interop/objc/objCAction/objclib.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', dylibFile.toString()
}
if (UtilsKt.isSimulatorTarget(project, project.target)) {
UtilsKt.codesign(project, dylibFile.toString())
}
}
UtilsKt.dependsOnPlatformLibs(it)
}
interopTest("interop_objc_kt63423_dispose_on_main_stress") {
// Test depends on macOS-specific AppKit
enabled = (project.testTarget == 'macos_x64' || project.testTarget == 'macos_arm64' || project.testTarget == null)