Reformat kotlin.test library

This commit is contained in:
Ilya Gorbunov
2018-04-27 00:46:26 +03:00
parent 06aaa990be
commit d9d7b87fd9
16 changed files with 108 additions and 91 deletions
@@ -118,7 +118,8 @@ fun assertFails(message: String?, block: () -> Unit): Throwable {
* Since inline method doesn't allow to trace where it was invoked, it is required to pass a [message] to distinguish this method call from others. * Since inline method doesn't allow to trace where it was invoked, it is required to pass a [message] to distinguish this method call from others.
*/ */
@InlineOnly @InlineOnly
inline fun <reified T : Throwable> assertFailsWith(message: String? = null, noinline block: () -> Unit): T = assertFailsWith(T::class, message, block) inline fun <reified T : Throwable> assertFailsWith(message: String? = null, noinline block: () -> Unit): T =
assertFailsWith(T::class, message, block)
/** Asserts that a [block] fails with a specific exception of type [exceptionClass] being thrown. */ /** Asserts that a [block] fails with a specific exception of type [exceptionClass] being thrown. */
fun <T : Throwable> assertFailsWith(exceptionClass: KClass<T>, block: () -> Unit): T = assertFailsWith(exceptionClass, null, block) fun <T : Throwable> assertFailsWith(exceptionClass: KClass<T>, block: () -> Unit): T = assertFailsWith(exceptionClass, null, block)
@@ -7,7 +7,9 @@ package org.junit
/** @suppress */ /** @suppress */
@Suppress("NO_ACTUAL_FOR_EXPECT") @Suppress("NO_ACTUAL_FOR_EXPECT")
@Deprecated("Use 'Test' from kotlin.test package", @Deprecated(
replaceWith = ReplaceWith("kotlin.test.Test", "kotlin.test.Test"), "Use 'Test' from kotlin.test package",
level = DeprecationLevel.WARNING) replaceWith = ReplaceWith("kotlin.test.Test", "kotlin.test.Test"),
level = DeprecationLevel.WARNING
)
expect annotation class Test() expect annotation class Test()
@@ -11,23 +11,29 @@ private var value = 5
class AnnotationsTest { class AnnotationsTest {
@BeforeTest fun setup() { @BeforeTest
fun setup() {
value *= 2 value *= 2
} }
@AfterTest fun teardown() { @AfterTest
fun teardown() {
value /= 2 value /= 2
} }
@Test fun testValue() { @Test
fun testValue() {
assertEquals(10, value) assertEquals(10, value)
} }
@Test fun testValueAgain() { @Test
fun testValueAgain() {
assertEquals(10, value) assertEquals(10, value)
} }
@Ignore @Test fun testValueWrong() { @Ignore
@Test
fun testValueWrong() {
assertEquals(20, value) assertEquals(20, value)
} }
@@ -30,24 +30,23 @@ class BasicAssertionsTest {
assertFailsWith<AssertionError> { throw AssertionError() } assertFailsWith<AssertionError> { throw AssertionError() }
} }
@Test fun testAssertFailsWithFails() { @Test
fun testAssertFailsWithFails() {
assertTrue(true) // at least one assertion required for qunit assertTrue(true) // at least one assertion required for qunit
withDefaultAsserter run@ { withDefaultAsserter run@{
try { try {
assertFailsWith<IllegalStateException> { throw IllegalArgumentException() } assertFailsWith<IllegalStateException> { throw IllegalArgumentException() }
} } catch (e: AssertionError) {
catch (e: AssertionError) {
return@run return@run
} }
throw AssertionError("Expected to fail") throw AssertionError("Expected to fail")
} }
withDefaultAsserter run@ { withDefaultAsserter run@{
try { try {
assertFailsWith<IllegalStateException> { } assertFailsWith<IllegalStateException> { }
} } catch (e: AssertionError) {
catch (e: AssertionError) {
return@run return@run
} }
throw AssertionError("Expected to fail") throw AssertionError("Expected to fail")
@@ -105,7 +104,7 @@ class BasicAssertionsTest {
@Test @Test
fun testAssertFalseFails() { fun testAssertFalseFails() {
checkFailedAssertion { assertFalse(true) } checkFailedAssertion { assertFalse(true) }
checkFailedAssertion{ assertFalse { true } } checkFailedAssertion { assertFalse { true } }
} }
@Test @Test
@@ -115,7 +114,7 @@ class BasicAssertionsTest {
@Test() @Test()
fun testAssertFailsFails() { fun testAssertFailsFails() {
checkFailedAssertion { assertFails { } } checkFailedAssertion { assertFails { } }
} }
@@ -203,8 +202,7 @@ private fun withDefaultAsserter(block: () -> Unit) {
val current = overrideAsserter(DefaultAsserter()) val current = overrideAsserter(DefaultAsserter())
try { try {
block() block()
} } finally {
finally {
overrideAsserter(current) overrideAsserter(current)
} }
} }
@@ -5,23 +5,29 @@ var value = 5
class SimpleTest { class SimpleTest {
@BeforeTest fun beforeFun() { @BeforeTest
fun beforeFun() {
value *= 2 value *= 2
} }
@AfterTest fun afterFun() { @AfterTest
fun afterFun() {
value /= 2 value /= 2
} }
@Test fun testFoo() { @Test
fun testFoo() {
assertNotEquals(value, foo()) assertNotEquals(value, foo())
} }
@Test fun testBar() { @Test
fun testBar() {
assertEquals(value, foo()) assertEquals(value, foo())
} }
@Ignore @Test fun testFooWrong() { @Ignore
@Test
fun testFooWrong() {
assertEquals(20, foo()) assertEquals(20, foo())
} }
@@ -29,7 +35,8 @@ class SimpleTest {
@Ignore @Ignore
class TestTest { class TestTest {
@Test fun emptyTest() { @Test
fun emptyTest() {
} }
} }
@@ -58,8 +58,7 @@ internal object DefaultJsAsserter : Asserter {
override fun assertTrue(lazyMessage: () -> String?, actual: Boolean) { override fun assertTrue(lazyMessage: () -> String?, actual: Boolean) {
if (!actual) { if (!actual) {
failWithMessage(lazyMessage) failWithMessage(lazyMessage)
} } else {
else {
invokeHook(true, lazyMessage) invokeHook(true, lazyMessage)
} }
} }
@@ -89,8 +88,7 @@ internal object DefaultJsAsserter : Asserter {
override val actual: Any? = a override val actual: Any? = a
override val lazyMessage: () -> String? = lazyMessage override val lazyMessage: () -> String? = lazyMessage
}) })
} } finally {
finally {
e = undefined e = undefined
a = undefined a = undefined
} }
@@ -21,9 +21,8 @@ internal fun setAdapter(adapter: dynamic) {
if (js("typeof adapter === 'string'")) { if (js("typeof adapter === 'string'")) {
NAME_TO_ADAPTER[adapter]?.let { NAME_TO_ADAPTER[adapter]?.let {
setAdapter(it.invoke()) setAdapter(it.invoke())
}?: throw IllegalArgumentException("Unsupported test framework adapter: '$adapter'") } ?: throw IllegalArgumentException("Unsupported test framework adapter: '$adapter'")
} } else {
else {
currentAdapter = adapter currentAdapter = adapter
} }
} }
@@ -74,8 +73,9 @@ internal fun detectAdapter() = when {
} }
internal val NAME_TO_ADAPTER: Map<String, () -> FrameworkAdapter> = mapOf( internal val NAME_TO_ADAPTER: Map<String, () -> FrameworkAdapter> = mapOf(
"qunit" to ::QUnitAdapter, "qunit" to ::QUnitAdapter,
"jasmine" to ::JasmineLikeAdapter, "jasmine" to ::JasmineLikeAdapter,
"mocha" to ::JasmineLikeAdapter, "mocha" to ::JasmineLikeAdapter,
"jest" to ::JasmineLikeAdapter, "jest" to ::JasmineLikeAdapter,
"auto" to ::detectAdapter) "auto" to ::detectAdapter
)
@@ -14,9 +14,10 @@ internal external object QUnit {
fun skip(name: String, testFn: (dynamic) -> Unit): Unit fun skip(name: String, testFn: (dynamic) -> Unit): Unit
} }
/** /*
* Jasmine/Mocha/Jest API * Jasmine/Mocha/Jest API
*/ */
internal external fun describe(name: String, fn: () -> Unit) internal external fun describe(name: String, fn: () -> Unit)
internal external fun xdescribe(name: String, fn: () -> Unit) internal external fun xdescribe(name: String, fn: () -> Unit)
internal external fun it(name: String, fn: () -> Unit) internal external fun it(name: String, fn: () -> Unit)
@@ -15,8 +15,7 @@ internal class JasmineLikeAdapter : FrameworkAdapter {
override fun suite(name: String, ignored: Boolean, suiteFn: () -> Unit) { override fun suite(name: String, ignored: Boolean, suiteFn: () -> Unit) {
if (ignored) { if (ignored) {
xdescribe(name, suiteFn) xdescribe(name, suiteFn)
} } else {
else {
describe(name, suiteFn) describe(name, suiteFn)
} }
} }
@@ -24,8 +23,7 @@ internal class JasmineLikeAdapter : FrameworkAdapter {
override fun test(name: String, ignored: Boolean, testFn: () -> Unit) { override fun test(name: String, ignored: Boolean, testFn: () -> Unit) {
if (ignored) { if (ignored) {
xit(name, testFn) xit(name, testFn)
} } else {
else {
it(name, testFn) it(name, testFn)
} }
} }
@@ -25,8 +25,7 @@ internal class QUnitAdapter : FrameworkAdapter {
override fun test(name: String, ignored: Boolean, testFn: () -> Unit) { override fun test(name: String, ignored: Boolean, testFn: () -> Unit) {
if (ignored or ignoredSuite) { if (ignored or ignoredSuite) {
QUnit.skip(name, wrapTest(testFn)) QUnit.skip(name, wrapTest(testFn))
} } else {
else {
QUnit.test(name, wrapTest(testFn)) QUnit.test(name, wrapTest(testFn))
} }
} }
@@ -5,7 +5,9 @@
package org.junit package org.junit
@Deprecated("Use 'Test' from kotlin.test package", @Deprecated(
replaceWith = ReplaceWith("kotlin.test.Test", "kotlin.test.Test"), "Use 'Test' from kotlin.test package",
level = DeprecationLevel.WARNING) replaceWith = ReplaceWith("kotlin.test.Test", "kotlin.test.Test"),
level = DeprecationLevel.WARNING
)
actual typealias Test = kotlin.test.Test actual typealias Test = kotlin.test.Test
@@ -6,6 +6,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("kotlin.test.junit.annotations") @file:JvmPackageName("kotlin.test.junit.annotations")
package kotlin.test package kotlin.test
public actual typealias Test = org.junit.Test public actual typealias Test = org.junit.Test
@@ -6,6 +6,7 @@
@file:kotlin.jvm.JvmMultifileClass @file:kotlin.jvm.JvmMultifileClass
@file:kotlin.jvm.JvmName("AssertionsKt") @file:kotlin.jvm.JvmName("AssertionsKt")
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") @file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
package kotlin.test package kotlin.test
import kotlin.internal.* import kotlin.internal.*
@@ -32,7 +33,8 @@ private fun <T : Throwable> assertFailsWithImpl(exceptionClass: Class<T>, messag
/** Asserts that a [block] fails with a specific exception of type [exceptionClass] being thrown. */ /** Asserts that a [block] fails with a specific exception of type [exceptionClass] being thrown. */
actual fun <T : Throwable> assertFailsWith(exceptionClass: KClass<T>, message: String?, block: () -> Unit): T = assertFailsWithImpl(exceptionClass.java, message, block) actual fun <T : Throwable> assertFailsWith(exceptionClass: KClass<T>, message: String?, block: () -> Unit): T =
assertFailsWithImpl(exceptionClass.java, message, block)
/** /**
@@ -4,6 +4,7 @@
*/ */
@file:Suppress("DEPRECATION") @file:Suppress("DEPRECATION")
package kotlin.test.tests package kotlin.test.tests
import org.junit.Assert import org.junit.Assert
@@ -12,8 +12,7 @@ class TestJVMTest {
private fun expectAssertion(checkAssertion: (String?) -> Unit, block: () -> Unit) { private fun expectAssertion(checkAssertion: (String?) -> Unit, block: () -> Unit) {
try { try {
block() block()
} } catch (e: AssertionError) {
catch (e: AssertionError) {
checkAssertion(e.message) checkAssertion(e.message)
return return
} }
@@ -30,67 +29,68 @@ class TestJVMTest {
@Test @Test
fun assertEqualsMessage() { fun assertEqualsMessage() {
expectAssertion( { msg -> expectAssertion({ msg ->
assertNotNull(msg); msg!! assertNotNull(msg); msg!!
assertTrue { msg.contains(expected.toString()) } assertTrue { msg.contains(expected.toString()) }
assertTrue { msg.contains(actual.toString()) } assertTrue { msg.contains(actual.toString()) }
assertFalse { msg.startsWith(".") } assertFalse { msg.startsWith(".") }
}, { assertEquals<Any>(expected, actual) }) }, { assertEquals<Any>(expected, actual) })
expectAssertion( { msg -> expectAssertion({ msg ->
assertNotNull(msg); msg!! assertNotNull(msg); msg!!
assertTrue { msg.contains(message) } assertTrue { msg.contains(message) }
assertTrue { msg.contains(expected.toString()) } assertTrue { msg.contains(expected.toString()) }
assertTrue { msg.contains(actual.toString()) } assertTrue { msg.contains(actual.toString()) }
} , { assertEquals<Any>(expected, actual, message) }) }, { assertEquals<Any>(expected, actual, message) })
} }
@Test @Test
fun assertNotEqualsMessage() { fun assertNotEqualsMessage() {
expectAssertion( { msg -> expectAssertion({ msg ->
assertNotNull(msg); msg!! assertNotNull(msg); msg!!
assertTrue { msg.contains(actual.toString()) } assertTrue { msg.contains(actual.toString()) }
assertFalse { msg.startsWith(".") } assertFalse { msg.startsWith(".") }
}, { assertNotEquals(actual, actual) }) }, { assertNotEquals(actual, actual) })
expectAssertion( { msg -> expectAssertion({ msg ->
assertNotNull(msg); msg!! assertNotNull(msg); msg!!
assertTrue { msg.contains(message) } assertTrue { msg.contains(message) }
assertTrue { msg.contains(actual.toString()) } assertTrue { msg.contains(actual.toString()) }
} , { assertNotEquals(actual, actual, message) }) }, { assertNotEquals(actual, actual, message) })
} }
@Test @Test
fun assertTrueMessage() { fun assertTrueMessage() {
expectAssertion( { msg -> assertNotNull(msg) }, { assertTrue(false) }) expectAssertion({ msg -> assertNotNull(msg) }, { assertTrue(false) })
expectAssertion( { msg -> assertNotNull(msg) }, { assertTrue { false } }) expectAssertion({ msg -> assertNotNull(msg) }, { assertTrue { false } })
expectAssertion( { msg -> assertNotNull(msg) }, { assertTrue(null) { false } }) expectAssertion({ msg -> assertNotNull(msg) }, { assertTrue(null) { false } })
expectAssertion( { msg -> msg!!.contains(message)}, { assertTrue(false, message)}) expectAssertion({ msg -> msg!!.contains(message) }, { assertTrue(false, message) })
expectAssertion( { msg -> msg!!.contains(message)}, { assertTrue(message) { false }}) expectAssertion({ msg -> msg!!.contains(message) }, { assertTrue(message) { false } })
} }
@Test @Test
fun assertFalseMessage() { fun assertFalseMessage() {
expectAssertion( { msg -> assertNotNull(msg) }, { assertFalse(true) }) expectAssertion({ msg -> assertNotNull(msg) }, { assertFalse(true) })
expectAssertion( { msg -> assertNotNull(msg) }, { assertFalse { true } }) expectAssertion({ msg -> assertNotNull(msg) }, { assertFalse { true } })
expectAssertion( { msg -> assertNotNull(msg) }, { assertFalse(null) { true } }) expectAssertion({ msg -> assertNotNull(msg) }, { assertFalse(null) { true } })
expectAssertion( { msg -> assertTrue(msg!!.contains(message)) }, { assertFalse(true, message)}) expectAssertion({ msg -> assertTrue(msg!!.contains(message)) }, { assertFalse(true, message) })
expectAssertion( { msg -> assertTrue(msg!!.contains(message)) }, { assertFalse(message) { true }}) expectAssertion({ msg -> assertTrue(msg!!.contains(message)) }, { assertFalse(message) { true } })
} }
@Test @Test
fun assertNotNullMessage() { fun assertNotNullMessage() {
expectAssertion( { msg -> msg!! }, { assertNotNull(null) }) expectAssertion({ msg -> msg!! }, { assertNotNull(null) })
expectAssertion( { msg -> assertTrue(msg!!.contains(message)) }, { assertNotNull(null, message)}) expectAssertion({ msg -> assertTrue(msg!!.contains(message)) }, { assertNotNull(null, message) })
} }
@Test @Test
fun assertNullMessage() { fun assertNullMessage() {
expectAssertion( { msg -> msg!! }, { assertNull(actual) }) expectAssertion({ msg -> msg!! }, { assertNull(actual) })
expectAssertion( { msg -> msg!! expectAssertion({ msg ->
assertTrue(msg.contains(message)) msg!!
assertTrue(msg.contains(actual.toString())) assertTrue(msg.contains(message))
}, { assertNull(actual, message)}) assertTrue(msg.contains(actual.toString()))
}, { assertNull(actual, message) })
} }
} }
@@ -6,6 +6,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("kotlin.test.testng.annotations") @file:JvmPackageName("kotlin.test.testng.annotations")
package kotlin.test package kotlin.test
public actual typealias Test = org.testng.annotations.Test public actual typealias Test = org.testng.annotations.Test