Skip to content

Commit 1ad4d3a

Browse files
committed
Issue oshai#484 - update KLoggerNameResolver tests for jvm
1 parent d68873d commit 1ad4d3a

File tree

2 files changed

+24
-45
lines changed

2 files changed

+24
-45
lines changed
Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package io.github.oshai.kotlinlogging.internal
22

3-
import java.lang.reflect.Modifier
3+
import kotlin.reflect.KClass
44

55
/** Resolves name of java classes */
66
internal actual object KLoggerNameResolver {
77

88
/** get class name for function by the package of the function */
99
internal actual fun name(func: () -> Unit): String {
10-
return func::class.java.name.toCleanClassName()
10+
return name(func::class)
11+
}
12+
13+
internal fun name(clazz: KClass<*>): String {
14+
return clazz.java.name.toCleanClassName()
1115
}
1216

1317
private val classNameEndings = listOf("Kt$", "$")
@@ -21,26 +25,4 @@ internal actual object KLoggerNameResolver {
2125
}
2226
return this
2327
}
24-
25-
/** get class name for java class (that usually represents kotlin class) */
26-
internal fun <T : Any> name(forClass: Class<T>): String = unwrapCompanionClass(forClass).name
27-
28-
/** unwrap companion class to enclosing class given a Java Class */
29-
private fun <T : Any> unwrapCompanionClass(clazz: Class<T>): Class<*> {
30-
return clazz.enclosingClass?.let { enclosingClass ->
31-
try {
32-
enclosingClass.declaredFields
33-
.find { field ->
34-
field.name == clazz.simpleName &&
35-
Modifier.isStatic(field.modifiers) &&
36-
field.type == clazz
37-
}
38-
?.run { enclosingClass }
39-
} catch (se: SecurityException) {
40-
// The security manager isn't properly set up, so it won't be possible
41-
// to search for the target declared field.
42-
null
43-
}
44-
} ?: clazz
45-
}
4628
}

src/jvmTest/kotlin/io/github/oshai/kotlinlogging/internal/KLoggerNameResolverTest.kt

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,46 @@ import org.junit.jupiter.api.TestInstance
66
import org.junit.jupiter.params.ParameterizedTest
77
import org.junit.jupiter.params.provider.Arguments
88
import org.junit.jupiter.params.provider.MethodSource
9+
import kotlin.reflect.KClass
910

1011
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
1112
class KLoggerNameResolverTest {
1213

1314
@ParameterizedTest
1415
@MethodSource("testNames")
15-
fun testNames(expectedName: String, clazz: Class<*>) {
16+
fun testNames(expectedName: String, clazz: KClass<*>) {
1617
assertEquals(expectedName, KLoggerNameResolver.name(clazz))
1718
}
1819

1920
private fun testNames(): Stream<Arguments> =
2021
Stream.of(
21-
Arguments.of("io.github.oshai.kotlinlogging.internal.BaseClass", BaseClass::class.java),
22-
Arguments.of("io.github.oshai.kotlinlogging.internal.ChildClass", ChildClass::class.java),
22+
Arguments.of("io.github.oshai.kotlinlogging.internal.BaseClass", BaseClass::class),
23+
Arguments.of("io.github.oshai.kotlinlogging.internal.ChildClass", ChildClass::class),
2324
Arguments.of(
2425
"io.github.oshai.kotlinlogging.internal.BaseClass",
25-
BaseClass.Companion::class.java,
26+
BaseClass.Companion::class,
2627
),
2728
Arguments.of(
2829
"io.github.oshai.kotlinlogging.internal.ChildClass",
29-
ChildClass.Companion::class.java,
30+
ChildClass.Companion::class,
3031
),
31-
Arguments.of("io.github.oshai.kotlinlogging.internal.Singleton", Singleton::class.java),
32-
Arguments.of("io.github.oshai.kotlinlogging.internal.MyInterface", MyInterface::class.java),
33-
Arguments.of("java.lang.Object", Any().javaClass),
32+
Arguments.of("io.github.oshai.kotlinlogging.internal.Singleton", Singleton::class),
33+
Arguments.of("io.github.oshai.kotlinlogging.internal.MyInterface", MyInterface::class),
34+
Arguments.of("java.lang.Object", Any()::class),
3435
Arguments.of(
35-
"io.github.oshai.kotlinlogging.internal.KLoggerNameResolverTest\$testNames$1",
36-
object {}.javaClass,
36+
"io.github.oshai.kotlinlogging.internal.KLoggerNameResolverTest",
37+
object {}::class,
3738
),
3839
Arguments.of(
39-
"io.github.oshai.kotlinlogging.internal.BaseClass\$InnerClass\$Obj",
40-
BaseClass.InnerClass.Obj::class.java,
41-
),
42-
Arguments.of(
43-
"io.github.oshai.kotlinlogging.internal.BaseClass\$InnerClass\$Obj",
44-
BaseClass.InnerClass.Obj.javaClass,
40+
"io.github.oshai.kotlinlogging.internal.BaseClass",
41+
BaseClass.InnerClass.Obj::class,
4542
),
4643
Arguments.of(
47-
"io.github.oshai.kotlinlogging.internal.BaseClass\$InnerClass",
48-
BaseClass.InnerClass.CmpObj::class.java,
44+
"io.github.oshai.kotlinlogging.internal.BaseClass",
45+
BaseClass.InnerClass.CmpObj::class,
4946
),
50-
Arguments.of("io.github.oshai.kotlinlogging.internal.Foo\$Bar", Foo.Bar::class.java),
51-
Arguments.of("io.github.oshai.kotlinlogging.internal.Foo\$Bar2", Foo.Bar3.javaClass),
47+
Arguments.of("io.github.oshai.kotlinlogging.internal.Foo", Foo.Bar::class),
48+
Arguments.of("io.github.oshai.kotlinlogging.internal.Foo", Foo.Bar3::class),
5249
Arguments.of(
5350
"io.github.oshai.kotlinlogging.internal.PrivateCompanion",
5451
PrivateCompanion().companionClass,
@@ -88,7 +85,7 @@ class Foo {
8885
}
8986

9087
class PrivateCompanion {
91-
val companionClass: Class<*> = Companion::class.java
88+
val companionClass: KClass<*> = Companion::class
9289

9390
private companion object
9491
}

0 commit comments

Comments
 (0)