From ce9f2b7c0b490e674fedbeee76bd29da8f3b9261 Mon Sep 17 00:00:00 2001 From: Pavel Punegov <32519625+PavelPunegov@users.noreply.github.com> Date: Wed, 27 Mar 2019 12:31:09 +0300 Subject: [PATCH] Add test for multirun and check gold value on the whole execution output --- backend.native/tests/build.gradle | 10 ++++ .../org/jetbrains/kotlin/KonanTest.groovy | 46 ++++++++++--------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index a228dbb2f7e..e5c8c6f8a7e 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -2233,6 +2233,16 @@ task args0(type: RunStandaloneKonanTest) { source = "runtime/basic/args0.kt" } +task multiargs(type: RunStandaloneKonanTest) { + arguments = ["AAA", "BB", "C"] + multiRuns = true + multiArguments = [["1", "2", "3"], ["---"], ["Hello", "world"]] + goldValue = "AAA\nBB\nC\n1\n2\n3" + + "AAA\nBB\nC\n---" + + "AAA\nBB\nC\nHello\nworld\n" + source = "runtime/basic/args0.kt" +} + task spread_operator_0(type: RunKonanTest) { goldValue = "[K, o, t, l, i, n, , i, s, , c, o, o, l, , l, a, n, g, u, a, g, e]\n" source = "codegen/basics/spread_operator_0.kt" diff --git a/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy b/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy index 0fe54f20f77..9e4e8419732 100644 --- a/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy +++ b/buildSrc/plugins/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy @@ -287,6 +287,8 @@ abstract class KonanTest extends JavaExec { def times = multiRuns ? multiArguments.size() : 1 + def result = compilerMessagesText + def exitCodeMismatch = false for (int i = 0; i < times; i++) { ExecResult execResult = project.execute { @@ -305,11 +307,11 @@ abstract class KonanTest extends JavaExec { ignoreExitValue = true } - def result = compilerMessagesText + out.toString("UTF-8") + def currentResult = out.toString("UTF-8") + println(currentResult) + result += currentResult - println(result) - - def exitCodeMismatch = execResult.exitValue != expectedExitStatus + exitCodeMismatch |= execResult.exitValue != expectedExitStatus if (exitCodeMismatch) { def message = "Expected exit status: $expectedExitStatus, actual: ${execResult.exitValue}" if (this.expectedFail) { @@ -318,25 +320,25 @@ abstract class KonanTest extends JavaExec { throw new TestFailedException("Test failed on iteration $i. $message") } } - - result = result.replace(System.lineSeparator(), "\n") - def goldValueMismatch = !outputChecker.apply(result) - if (goldValueMismatch) { - def message - if (goldValue != null) { - message = "Iteration $i. Expected output: $goldValue, actual output: $result" - } else { - message = "Iteration $i. Actual output doesn't match output checker: $result" - } - if (this.expectedFail) { - println("Expected failure. $message") - } else { - throw new TestFailedException("Test failed on iteration $i. $message") - } - } - - if (!exitCodeMismatch && !goldValueMismatch && this.expectedFail) println("Unexpected pass") } + + result = result.replace(System.lineSeparator(), "\n") + def goldValueMismatch = !outputChecker.apply(result) + if (goldValueMismatch) { + def message + if (goldValue != null) { + message = "Expected output: $goldValue, actual output: $result" + } else { + message = "Actual output doesn't match output checker: $result" + } + if (this.expectedFail) { + println("Expected failure. $message") + } else { + throw new TestFailedException("Test failed. $message") + } + } + + if (!exitCodeMismatch && !goldValueMismatch && this.expectedFail) println("Unexpected pass") } }