Write tests for dynamic versions with ivy and maven resolvers
and refactor tests #KT-27051 fixed this commit is just a confirmation of the fix: either it worked from the beginning, or was fixed by some unrelated change
This commit is contained in:
+30
-32
@@ -37,11 +37,7 @@ class MainKtsTest {
|
|||||||
@Test
|
@Test
|
||||||
fun testResolveJunit() {
|
fun testResolveJunit() {
|
||||||
val res = evalFile(File("testData/hello-resolve-junit.main.kts"))
|
val res = evalFile(File("testData/hello-resolve-junit.main.kts"))
|
||||||
|
assertSucceeded(res)
|
||||||
Assert.assertTrue(
|
|
||||||
"test failed:\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
|
||||||
res is ResultWithDiagnostics.Success
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Test
|
// @Test
|
||||||
@@ -51,44 +47,34 @@ class MainKtsTest {
|
|||||||
// TODO: 2. implement proper handling of pom-typed dependencies (e.g. consider to reimplement it on aether as in JarRepositoryManager (from IDEA))
|
// TODO: 2. implement proper handling of pom-typed dependencies (e.g. consider to reimplement it on aether as in JarRepositoryManager (from IDEA))
|
||||||
fun testResolveWithArtifactType() {
|
fun testResolveWithArtifactType() {
|
||||||
val res = evalFile(File("testData/resolve-moneta.main.kts"))
|
val res = evalFile(File("testData/resolve-moneta.main.kts"))
|
||||||
|
assertSucceeded(res)
|
||||||
Assert.assertTrue(
|
|
||||||
"test failed:\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
|
||||||
res is ResultWithDiagnostics.Success
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testResolveJunitDynamicVer() {
|
||||||
|
val errRes = evalFile(File("testData/hello-resolve-junit-dynver-error.main.kts"))
|
||||||
|
assertFailed("Unresolved reference: assertThrows", errRes)
|
||||||
|
|
||||||
|
val res = evalFile(File("testData/hello-resolve-junit-dynver.main.kts"))
|
||||||
|
assertSucceeded(res)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testUnresolvedJunit() {
|
fun testUnresolvedJunit() {
|
||||||
val res = evalFile(File("testData/hello-unresolved-junit.main.kts"))
|
val res = evalFile(File("testData/hello-unresolved-junit.main.kts"))
|
||||||
|
assertFailed("Unresolved reference: junit", res)
|
||||||
Assert.assertTrue(
|
|
||||||
"test failed - expecting a failure with the message \"Unresolved reference: junit\" but received " +
|
|
||||||
(if (res is ResultWithDiagnostics.Failure) "failure" else "success") +
|
|
||||||
":\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
|
||||||
res is ResultWithDiagnostics.Failure && res.reports.any { it.message.contains("Unresolved reference: junit") })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testResolveError() {
|
fun testResolveError() {
|
||||||
val res = evalFile(File("testData/hello-resolve-error.main.kts"))
|
val res = evalFile(File("testData/hello-resolve-error.main.kts"))
|
||||||
|
assertFailed("Unrecognized set of arguments to ivy resolver: abracadabra", res)
|
||||||
Assert.assertTrue(
|
|
||||||
"test failed - expecting a failure with the message \"Unrecognized set of arguments to maven resolver: abracadabra\" but received " +
|
|
||||||
(if (res is ResultWithDiagnostics.Failure) "failure" else "success") +
|
|
||||||
":\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
|
||||||
res is ResultWithDiagnostics.Failure && res.reports.any { it.message.contains("Unrecognized set of arguments to ivy resolver: abracadabra") })
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testResolveLog4jAndDocopt() {
|
fun testResolveLog4jAndDocopt() {
|
||||||
val res = evalFile(File("testData/resolve-log4j-and-docopt.main.kts"))
|
val res = evalFile(File("testData/resolve-log4j-and-docopt.main.kts"))
|
||||||
|
assertSucceeded(res)
|
||||||
Assert.assertTrue(
|
|
||||||
"test failed:\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
|
||||||
res is ResultWithDiagnostics.Success
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -96,15 +82,27 @@ class MainKtsTest {
|
|||||||
|
|
||||||
val out = captureOut {
|
val out = captureOut {
|
||||||
val res = evalFile(File("testData/import-test.main.kts"))
|
val res = evalFile(File("testData/import-test.main.kts"))
|
||||||
|
assertSucceeded(res)
|
||||||
Assert.assertTrue(
|
|
||||||
"test failed:\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
|
||||||
res is ResultWithDiagnostics.Success
|
|
||||||
)
|
|
||||||
}.lines()
|
}.lines()
|
||||||
|
|
||||||
Assert.assertEquals(listOf("Hi from common", "Hi from middle", "sharedVar == 5"), out)
|
Assert.assertEquals(listOf("Hi from common", "Hi from middle", "sharedVar == 5"), out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun assertSucceeded(res: ResultWithDiagnostics<EvaluationResult>) {
|
||||||
|
Assert.assertTrue(
|
||||||
|
"test failed:\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
||||||
|
res is ResultWithDiagnostics.Success
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertFailed(expectedError: String, res: ResultWithDiagnostics<EvaluationResult>) {
|
||||||
|
Assert.assertTrue(
|
||||||
|
"test failed - expecting a failure with the message \"$expectedError\" but received " +
|
||||||
|
(if (res is ResultWithDiagnostics.Failure) "failure" else "success") +
|
||||||
|
":\n ${res.reports.joinToString("\n ") { it.message + if (it.exception == null) "" else ": ${it.exception}" }}",
|
||||||
|
res is ResultWithDiagnostics.Failure && res.reports.any { it.message.contains("$expectedError") }
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun captureOut(body: () -> Unit): String {
|
private fun captureOut(body: () -> Unit): String {
|
||||||
|
|||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
@file:DependsOn("junit:junit:(4.11,4.12]")
|
||||||
|
|
||||||
|
org.junit.Assert.assertThrows(NullPointerException::class.java) {
|
||||||
|
throw null!!
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Hello, World!")
|
||||||
|
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
@file:DependsOn("junit:junit:(4.12,5.0)")
|
||||||
|
|
||||||
|
org.junit.Assert.assertThrows(NullPointerException::class.java) {
|
||||||
|
throw null!!
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Hello, World!")
|
||||||
|
|
||||||
+21
-4
@@ -107,6 +107,17 @@ done
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testResolveStdJUnitDynVer() {
|
||||||
|
val (_, err) = captureOutAndErr {
|
||||||
|
Assert.assertNull(compileScript("args-junit-dynver-error.kts", StandardArgsScriptTemplateWithMavenResolving::class))
|
||||||
|
}
|
||||||
|
Assert.assertTrue("Expecting error: unresolved reference: assertThrows", err.contains("error: unresolved reference: assertThrows"))
|
||||||
|
|
||||||
|
val scriptClass = compileScript("args-junit-dynver.kts", StandardArgsScriptTemplateWithMavenResolving::class)
|
||||||
|
Assert.assertNotNull(scriptClass)
|
||||||
|
}
|
||||||
|
|
||||||
private fun compileScript(
|
private fun compileScript(
|
||||||
scriptFileName: String,
|
scriptFileName: String,
|
||||||
scriptTemplate: KClass<out Any>,
|
scriptTemplate: KClass<out Any>,
|
||||||
@@ -170,18 +181,24 @@ done
|
|||||||
private fun String.linesSplitTrim() =
|
private fun String.linesSplitTrim() =
|
||||||
split('\n','\r').map(String::trim).filter(String::isNotBlank)
|
split('\n','\r').map(String::trim).filter(String::isNotBlank)
|
||||||
|
|
||||||
private fun captureOut(body: () -> Unit): String {
|
private fun captureOut(body: () -> Unit): String = captureOutAndErr(body).first
|
||||||
|
|
||||||
|
private fun captureOutAndErr(body: () -> Unit): Pair<String, String> {
|
||||||
val outStream = ByteArrayOutputStream()
|
val outStream = ByteArrayOutputStream()
|
||||||
|
val errStream = ByteArrayOutputStream()
|
||||||
val prevOut = System.out
|
val prevOut = System.out
|
||||||
|
val prevErr = System.err
|
||||||
System.setOut(PrintStream(outStream))
|
System.setOut(PrintStream(outStream))
|
||||||
|
System.setErr(PrintStream(errStream))
|
||||||
try {
|
try {
|
||||||
body()
|
body()
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
System.out.flush()
|
System.out.flush()
|
||||||
|
System.err.flush()
|
||||||
System.setOut(prevOut)
|
System.setOut(prevOut)
|
||||||
|
System.setErr(prevErr)
|
||||||
}
|
}
|
||||||
return outStream.toString()
|
return outStream.toString() to errStream.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
@file:DependsOn("junit:junit:(4.11,4.12]")
|
||||||
|
|
||||||
|
org.junit.Assert.assertThrows(NullPointerException::class.java) {
|
||||||
|
throw null!!
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Hello, world!")
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
@file:DependsOn("junit:junit:(4.12,5.0)")
|
||||||
|
|
||||||
|
org.junit.Assert.assertThrows(NullPointerException::class.java) {
|
||||||
|
throw null!!
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Hello, world!")
|
||||||
|
|
||||||
Reference in New Issue
Block a user