[K/N][tests] Migrate interopTest tests ^KT-61259
This commit is contained in:
committed by
Space Team
parent
c227e60150
commit
bbcc5c9aed
@@ -973,82 +973,11 @@ createInterop("kt43502") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createInterop("leakMemoryWithRunningThread") {
|
|
||||||
it.defFile 'interop/leakMemoryWithRunningThread/leakMemory.def'
|
|
||||||
it.headers "$projectDir/interop/leakMemoryWithRunningThread/leakMemory.h"
|
|
||||||
it.extraOpts "-Xcompile-source", "$projectDir/interop/leakMemoryWithRunningThread/leakMemory.cpp"
|
|
||||||
}
|
|
||||||
|
|
||||||
createInterop("workerSignals") {
|
|
||||||
it.defFile "interop/workerSignals/workerSignals.def"
|
|
||||||
it.headers "$projectDir/interop/workerSignals/workerSignals.h"
|
|
||||||
it.extraOpts "-Xcompile-source", "$projectDir/interop/workerSignals/workerSignals.cpp"
|
|
||||||
}
|
|
||||||
|
|
||||||
createInterop("exceptions_throwThroughBridge") {
|
createInterop("exceptions_throwThroughBridge") {
|
||||||
it.defFile "interop/exceptions/throwThroughBridge.def"
|
it.defFile "interop/exceptions/throwThroughBridge.def"
|
||||||
it.extraOpts "-Xcompile-source", "$projectDir/interop/exceptions/throwThroughBridgeInterop.cpp"
|
it.extraOpts "-Xcompile-source", "$projectDir/interop/exceptions/throwThroughBridgeInterop.cpp"
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a task for the interop test. Configures runner and adds library and test build tasks.
|
|
||||||
*/
|
|
||||||
Task interopTestBase(String name, boolean multiFile, boolean interop2ForMainOnly, Closure<KonanInteropTest> configureClosure) {
|
|
||||||
return KotlinNativeTestKt.createTest(project, name, KonanInteropTest) { KonanInteropTest task ->
|
|
||||||
task.configure(configureClosure)
|
|
||||||
if (task.enabled) {
|
|
||||||
konanArtifacts {
|
|
||||||
def targetName = target.name
|
|
||||||
def interopLib = task.interop
|
|
||||||
def interopLib2 = task.interop2
|
|
||||||
UtilsKt.dependsOnKonanBuildingTask(task, interopLib, target)
|
|
||||||
if (interopLib2 != null) UtilsKt.dependsOnKonanBuildingTask(task, interopLib2, target)
|
|
||||||
|
|
||||||
def lib = "lib$name"
|
|
||||||
def hasIntermediateLib = task.lib != null
|
|
||||||
if (hasIntermediateLib) {
|
|
||||||
// build a library from KonanInteropTest::lib property
|
|
||||||
library(lib, targets: [targetName]) {
|
|
||||||
libraries {
|
|
||||||
artifact interopLib
|
|
||||||
if (interopLib2 != null && !interop2ForMainOnly) artifact interopLib2
|
|
||||||
}
|
|
||||||
srcFiles task.lib
|
|
||||||
baseDir "$testOutputLocal/$name"
|
|
||||||
extraOpts task.flags
|
|
||||||
extraOpts project.globalTestArgs.findAll { !it.contains("-Xpartial-linkage") }
|
|
||||||
}
|
|
||||||
UtilsKt.dependsOnKonanBuildingTask(task, lib, target)
|
|
||||||
}
|
|
||||||
|
|
||||||
program(name, targets: [targetName]) {
|
|
||||||
libraries {
|
|
||||||
artifact interopLib
|
|
||||||
if (interopLib2 != null) artifact interopLib2
|
|
||||||
if (hasIntermediateLib)
|
|
||||||
klibFile file("$testOutputLocal/$name/$targetName/${lib}.klib")
|
|
||||||
}
|
|
||||||
srcFiles multiFile ? fileTree(task.source) { include '**/*.kt' } : task.getSources()
|
|
||||||
baseDir "$testOutputLocal/$name"
|
|
||||||
linkerOpts "-L${project.layout.buildDirectory.get().asFile}"
|
|
||||||
extraOpts task.flags
|
|
||||||
extraOpts project.globalTestArgs
|
|
||||||
}
|
|
||||||
}
|
|
||||||
task.dependsOn(nativeDependencies.llvmDependency)
|
|
||||||
task.dependsOn(nativeDependencies.targetDependency(target))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Task interopTest(String name, Closure<KonanInteropTest> configureClosure) {
|
|
||||||
return interopTestBase(name, false, false, configureClosure)
|
|
||||||
}
|
|
||||||
|
|
||||||
Task interopTestMultifile(String name, Closure<KonanInteropTest> configureClosure) {
|
|
||||||
return interopTestBase(name, true, false, configureClosure)
|
|
||||||
}
|
|
||||||
|
|
||||||
standaloneTest("interop_objc_allocException") {
|
standaloneTest("interop_objc_allocException") {
|
||||||
disabled = !PlatformInfo.isAppleTarget(project)
|
disabled = !PlatformInfo.isAppleTarget(project)
|
||||||
expectedExitStatus = 0
|
expectedExitStatus = 0
|
||||||
@@ -1063,19 +992,6 @@ dynamicTest("interop_kt43502") {
|
|||||||
useGoldenData = true
|
useGoldenData = true
|
||||||
}
|
}
|
||||||
|
|
||||||
interopTest("interop_leakMemoryWithRunningThreadChecked") {
|
|
||||||
interop = 'leakMemoryWithRunningThread'
|
|
||||||
source = "interop/leakMemoryWithRunningThread/checked.kt"
|
|
||||||
expectedExitStatusChecker = { it != 0 }
|
|
||||||
outputChecker = { s -> s.contains("Cannot run checkers when there are 1 alive runtimes at the shutdown") }
|
|
||||||
}
|
|
||||||
|
|
||||||
interopTest("interop_workerSignals") {
|
|
||||||
disabled = project.testTarget == 'mingw_x64' // cross-thread signalling does not work on Windows
|
|
||||||
source = "interop/workerSignals/workerSignals.kt"
|
|
||||||
interop = "workerSignals"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (PlatformInfo.isAppleTarget(project)) {
|
if (PlatformInfo.isAppleTarget(project)) {
|
||||||
standaloneTest("interop_objc_kt61441") {
|
standaloneTest("interop_objc_kt61441") {
|
||||||
source = "interop/objc/kt61441.kt"
|
source = "interop/objc/kt61441.kt"
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
@file:OptIn(kotlin.experimental.ExperimentalNativeApi::class, kotlin.native.runtime.NativeRuntimeApi::class)
|
|
||||||
|
|
||||||
import leakMemory.*
|
|
||||||
import kotlin.concurrent.AtomicInt
|
|
||||||
import kotlin.native.concurrent.*
|
|
||||||
import kotlin.native.Platform
|
|
||||||
import kotlin.test.*
|
|
||||||
import kotlinx.cinterop.*
|
|
||||||
|
|
||||||
val global = AtomicInt(0)
|
|
||||||
|
|
||||||
fun ensureInititalized() {
|
|
||||||
// Only needed with the legacy MM. TODO: Remove when legacy MM is gone.
|
|
||||||
kotlin.native.initRuntimeIfNeeded()
|
|
||||||
// Leak memory
|
|
||||||
StableRef.create(Any())
|
|
||||||
global.value = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
fun main() {
|
|
||||||
Platform.isMemoryLeakCheckerActive = true
|
|
||||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
|
||||||
assertTrue(global.value == 0)
|
|
||||||
// Created a thread, made sure Kotlin is initialized there.
|
|
||||||
test_RunInNewThread(staticCFunction(::ensureInititalized))
|
|
||||||
assertTrue(global.value == 1)
|
|
||||||
// Now exiting. With checked shutdown we will fail, complaining there're
|
|
||||||
// unfinished threads with runtimes.
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#include "leakMemory.h"
|
|
||||||
|
|
||||||
#include <atomic>
|
|
||||||
#include <thread>
|
|
||||||
|
|
||||||
extern "C" void test_RunInNewThread(void (*f)()) {
|
|
||||||
std::atomic<bool> haveRun(false);
|
|
||||||
std::thread t([f, &haveRun]() {
|
|
||||||
f();
|
|
||||||
haveRun = true;
|
|
||||||
while (true) {}
|
|
||||||
});
|
|
||||||
t.detach();
|
|
||||||
while (!haveRun) {}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package leakMemory
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
void test_RunInNewThread(void (*)());
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void test_RunInNewThread(void (*)());
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#include "workerSignals.h"
|
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <cstring>
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
int pendingValue = 0;
|
|
||||||
thread_local int value = 0;
|
|
||||||
|
|
||||||
void signalHandler(int signal) {
|
|
||||||
value = pendingValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
extern "C" void setupSignalHandler(void) {
|
|
||||||
signal(SIGUSR1, &signalHandler);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void signalThread(uint64_t thread, int value) {
|
|
||||||
pendingValue = value;
|
|
||||||
pthread_t t = {};
|
|
||||||
memcpy(&t, &thread, sizeof(pthread_t));
|
|
||||||
auto result = pthread_kill(t, SIGUSR1);
|
|
||||||
assert(result == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" int getValue(void) {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
language = C
|
|
||||||
headerFilter = **/workerSignals.h
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void setupSignalHandler(void);
|
|
||||||
void signalThread(uint64_t thread, int value);
|
|
||||||
int getValue(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
@file:OptIn(kotlin.ExperimentalStdlibApi::class, ObsoleteWorkersApi::class)
|
|
||||||
|
|
||||||
import kotlin.native.concurrent.*
|
|
||||||
import kotlin.test.*
|
|
||||||
import workerSignals.*
|
|
||||||
|
|
||||||
const val defaultValue = 0
|
|
||||||
const val newValue = 42
|
|
||||||
|
|
||||||
fun main() {
|
|
||||||
setupSignalHandler()
|
|
||||||
|
|
||||||
withWorker {
|
|
||||||
val before = execute(TransferMode.SAFE, {}) {
|
|
||||||
getValue()
|
|
||||||
}.result
|
|
||||||
assertEquals(defaultValue, getValue())
|
|
||||||
assertEquals(defaultValue, before)
|
|
||||||
|
|
||||||
signalThread(platformThreadId, newValue)
|
|
||||||
val after = execute(TransferMode.SAFE, {}) {
|
|
||||||
getValue()
|
|
||||||
}.result
|
|
||||||
assertEquals(defaultValue, getValue())
|
|
||||||
assertEquals(newValue, after)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -416,22 +416,6 @@ open class KonanDriverTest : KonanStandaloneTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KonanInteropTest : KonanStandaloneTest() {
|
|
||||||
/**
|
|
||||||
* Name of the interop library
|
|
||||||
*/
|
|
||||||
@Input
|
|
||||||
lateinit var interop: String
|
|
||||||
|
|
||||||
@Input
|
|
||||||
@Optional
|
|
||||||
var interop2: String? = null
|
|
||||||
|
|
||||||
@Input
|
|
||||||
@Optional
|
|
||||||
var lib: String? = null
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test task to check a library built by `-produce dynamic`.
|
* Test task to check a library built by `-produce dynamic`.
|
||||||
* C source code should contain `testlib` as a reference to a testing library.
|
* C source code should contain `testlib` as a reference to a testing library.
|
||||||
|
|||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
// EXIT_CODE: !0
|
||||||
|
// OUTPUT_REGEX: Cannot run checkers when there are 1 alive runtimes at the shutdown.*
|
||||||
|
// MODULE: cinterop
|
||||||
|
// FILE: leakMemory.def
|
||||||
|
---
|
||||||
|
void test_RunInNewThread(void (*)());
|
||||||
|
|
||||||
|
// FILE: leakMemory.h
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void test_RunInNewThread(void (*)());
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// FILE: leakMemory.cpp
|
||||||
|
#include "leakMemory.h"
|
||||||
|
|
||||||
|
#include <atomic>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
extern "C" void test_RunInNewThread(void (*f)()) {
|
||||||
|
std::atomic<bool> haveRun(false);
|
||||||
|
std::thread t([f, &haveRun]() {
|
||||||
|
f();
|
||||||
|
haveRun = true;
|
||||||
|
while (true) {}
|
||||||
|
});
|
||||||
|
t.detach();
|
||||||
|
while (!haveRun) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: main(cinterop)
|
||||||
|
// FILE: main.kt
|
||||||
|
@file:OptIn(
|
||||||
|
kotlin.experimental.ExperimentalNativeApi::class,
|
||||||
|
kotlin.native.runtime.NativeRuntimeApi::class,
|
||||||
|
kotlinx.cinterop.ExperimentalForeignApi::class
|
||||||
|
)
|
||||||
|
|
||||||
|
import leakMemory.*
|
||||||
|
import kotlin.concurrent.AtomicInt
|
||||||
|
import kotlin.native.concurrent.*
|
||||||
|
import kotlin.native.Platform
|
||||||
|
import kotlin.test.*
|
||||||
|
import kotlinx.cinterop.*
|
||||||
|
|
||||||
|
val global = AtomicInt(0)
|
||||||
|
|
||||||
|
fun ensureInititalized() {
|
||||||
|
// Leak memory
|
||||||
|
StableRef.create(Any())
|
||||||
|
global.value = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
Platform.isMemoryLeakCheckerActive = true
|
||||||
|
kotlin.native.runtime.Debugging.forceCheckedShutdown = true
|
||||||
|
assertTrue(global.value == 0)
|
||||||
|
// Created a thread, made sure Kotlin is initialized there.
|
||||||
|
test_RunInNewThread(staticCFunction(::ensureInititalized))
|
||||||
|
assertTrue(global.value == 1)
|
||||||
|
// Now exiting. With checked shutdown we will fail, complaining there're
|
||||||
|
// unfinished threads with runtimes.
|
||||||
|
}
|
||||||
+1
-6
@@ -1,4 +1,3 @@
|
|||||||
// TARGET_BACKEND: NATIVE
|
|
||||||
// MODULE: cinterop
|
// MODULE: cinterop
|
||||||
// FILE: leakMemoryWithRunningThreadUnchecked.def
|
// FILE: leakMemoryWithRunningThreadUnchecked.def
|
||||||
---
|
---
|
||||||
@@ -51,14 +50,12 @@ import kotlinx.cinterop.*
|
|||||||
val global = AtomicInt(0)
|
val global = AtomicInt(0)
|
||||||
|
|
||||||
fun ensureInititalized() {
|
fun ensureInititalized() {
|
||||||
// Only needed with the legacy MM. TODO: Remove when legacy MM is gone.
|
|
||||||
kotlin.native.initRuntimeIfNeeded()
|
|
||||||
// Leak memory
|
// Leak memory
|
||||||
StableRef.create(Any())
|
StableRef.create(Any())
|
||||||
global.value = 1
|
global.value = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
fun box(): String {
|
fun main() {
|
||||||
Platform.isMemoryLeakCheckerActive = true
|
Platform.isMemoryLeakCheckerActive = true
|
||||||
kotlin.native.runtime.Debugging.forceCheckedShutdown = false
|
kotlin.native.runtime.Debugging.forceCheckedShutdown = false
|
||||||
assertTrue(global.value == 0)
|
assertTrue(global.value == 0)
|
||||||
@@ -67,6 +64,4 @@ fun box(): String {
|
|||||||
assertTrue(global.value == 1)
|
assertTrue(global.value == 1)
|
||||||
// Now exiting. With unchecked shutdown, we exit quietly, even though there're
|
// Now exiting. With unchecked shutdown, we exit quietly, even though there're
|
||||||
// unfinished threads with runtimes.
|
// unfinished threads with runtimes.
|
||||||
|
|
||||||
return "OK"
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
// Cross-thread signalling does not work on Windows
|
||||||
|
// DISABLE_NATIVE: targetFamily=MINGW
|
||||||
|
// MODULE: cinterop
|
||||||
|
// FILE: workerSignals.def
|
||||||
|
---
|
||||||
|
#include <stdint.h>
|
||||||
|
void setupSignalHandler(void);
|
||||||
|
void signalThread(uint64_t thread, int value);
|
||||||
|
int getValue(void);
|
||||||
|
|
||||||
|
// FILE: workerSignals.cpp
|
||||||
|
#include <cassert>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstring>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
int pendingValue = 0;
|
||||||
|
thread_local int value = 0;
|
||||||
|
|
||||||
|
void signalHandler(int signal) {
|
||||||
|
value = pendingValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
extern "C" void setupSignalHandler(void) {
|
||||||
|
signal(SIGUSR1, &signalHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void signalThread(uint64_t thread, int value) {
|
||||||
|
pendingValue = value;
|
||||||
|
pthread_t t = {};
|
||||||
|
memcpy(&t, &thread, sizeof(pthread_t));
|
||||||
|
auto result = pthread_kill(t, SIGUSR1);
|
||||||
|
assert(result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int getValue(void) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: main(cinterop)
|
||||||
|
// FILE: main.kt
|
||||||
|
@file:OptIn(kotlin.ExperimentalStdlibApi::class, ObsoleteWorkersApi::class, kotlinx.cinterop.ExperimentalForeignApi::class)
|
||||||
|
|
||||||
|
import kotlin.native.concurrent.*
|
||||||
|
import kotlin.test.*
|
||||||
|
import workerSignals.*
|
||||||
|
|
||||||
|
const val defaultValue = 0
|
||||||
|
const val newValue = 42
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
setupSignalHandler()
|
||||||
|
|
||||||
|
withWorker {
|
||||||
|
val before = execute(TransferMode.SAFE, {}) {
|
||||||
|
getValue()
|
||||||
|
}.result
|
||||||
|
assertEquals(defaultValue, getValue())
|
||||||
|
assertEquals(defaultValue, before)
|
||||||
|
|
||||||
|
signalThread(platformThreadId, newValue)
|
||||||
|
val after = execute(TransferMode.SAFE, {}) {
|
||||||
|
getValue()
|
||||||
|
}.result
|
||||||
|
assertEquals(defaultValue, getValue())
|
||||||
|
assertEquals(newValue, after)
|
||||||
|
}
|
||||||
|
}
|
||||||
-6
@@ -225,12 +225,6 @@ public class FirNativeCodegenLocalTestGenerated extends AbstractNativeCodegenBox
|
|||||||
runTest("native/native.tests/testData/codegen/cinterop/kt64105.kt");
|
runTest("native/native.tests/testData/codegen/cinterop/kt64105.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
|
|
||||||
public void testLeakMemoryWithRunningThreadUnchecked() {
|
|
||||||
runTest("native/native.tests/testData/codegen/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("toKString.kt")
|
@TestMetadata("toKString.kt")
|
||||||
public void testToKString() {
|
public void testToKString() {
|
||||||
|
|||||||
+33
@@ -46,6 +46,39 @@ public class FirNativeStandaloneTestGenerated extends AbstractNativeBlackBoxTest
|
|||||||
runTest("native/native.tests/testData/standalone/kt56048.kt");
|
runTest("native/native.tests/testData/standalone/kt56048.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("workerSignals.kt")
|
||||||
|
public void testWorkerSignals() {
|
||||||
|
runTest("native/native.tests/testData/standalone/workerSignals.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("native/native.tests/testData/standalone/checkers")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@Tag("standalone")
|
||||||
|
@EnforcedProperty(property = ClassLevelProperty.TEST_KIND, propertyValue = "STANDALONE_NO_TR")
|
||||||
|
@UseStandardTestCaseGroupProvider()
|
||||||
|
@Tag("frontend-fir")
|
||||||
|
@FirPipeline()
|
||||||
|
public class Checkers {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInCheckers() {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone/checkers"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("leakMemoryWithRunningThreadChecked.kt")
|
||||||
|
public void testLeakMemoryWithRunningThreadChecked() {
|
||||||
|
runTest("native/native.tests/testData/standalone/checkers/leakMemoryWithRunningThreadChecked.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
|
||||||
|
public void testLeakMemoryWithRunningThreadUnchecked() {
|
||||||
|
runTest("native/native.tests/testData/standalone/checkers/leakMemoryWithRunningThreadUnchecked.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Nested
|
@Nested
|
||||||
@TestMetadata("native/native.tests/testData/standalone/console")
|
@TestMetadata("native/native.tests/testData/standalone/console")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
|||||||
-6
@@ -215,12 +215,6 @@ public class NativeCodegenLocalTestGenerated extends AbstractNativeCodegenBoxTes
|
|||||||
runTest("native/native.tests/testData/codegen/cinterop/kt64105.kt");
|
runTest("native/native.tests/testData/codegen/cinterop/kt64105.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
|
|
||||||
public void testLeakMemoryWithRunningThreadUnchecked() {
|
|
||||||
runTest("native/native.tests/testData/codegen/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("toKString.kt")
|
@TestMetadata("toKString.kt")
|
||||||
public void testToKString() {
|
public void testToKString() {
|
||||||
|
|||||||
+31
@@ -43,6 +43,37 @@ public class NativeStandaloneTestGenerated extends AbstractNativeBlackBoxTest {
|
|||||||
runTest("native/native.tests/testData/standalone/kt56048.kt");
|
runTest("native/native.tests/testData/standalone/kt56048.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("workerSignals.kt")
|
||||||
|
public void testWorkerSignals() {
|
||||||
|
runTest("native/native.tests/testData/standalone/workerSignals.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("native/native.tests/testData/standalone/checkers")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@Tag("standalone")
|
||||||
|
@EnforcedProperty(property = ClassLevelProperty.TEST_KIND, propertyValue = "STANDALONE_NO_TR")
|
||||||
|
@UseStandardTestCaseGroupProvider()
|
||||||
|
public class Checkers {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInCheckers() {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone/checkers"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("leakMemoryWithRunningThreadChecked.kt")
|
||||||
|
public void testLeakMemoryWithRunningThreadChecked() {
|
||||||
|
runTest("native/native.tests/testData/standalone/checkers/leakMemoryWithRunningThreadChecked.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
|
||||||
|
public void testLeakMemoryWithRunningThreadUnchecked() {
|
||||||
|
runTest("native/native.tests/testData/standalone/checkers/leakMemoryWithRunningThreadUnchecked.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Nested
|
@Nested
|
||||||
@TestMetadata("native/native.tests/testData/standalone/console")
|
@TestMetadata("native/native.tests/testData/standalone/console")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
|||||||
Reference in New Issue
Block a user