christophsturm / filepeek

peek into kotlin or java source files.
MIT License
4 stars 6 forks source link

Download CircleCI

FilePeek

FilePeek is a library that finds sourcecode to be used in assertion libs and test runners.

Get it from bintray:

repositories {
    jcenter() // or
    // maven { url  "https://dl.bintray.com/christophsturm/maven" }
}
dependencies{
    implementation("com.christophsturm:filepeek:0.1.1")
}

example use:

    private val fileName = "src/test/kotlin/filepeektest/FilePeekTest.kt"

    private val filePeek = FilePeek(listOf("filepeek."))
    @Test
    fun `can get FileInfo`() {
        val fileInfo = filePeek.getCallerFileInfo()

        expectThat(fileInfo) {
            get(FileInfo::sourceFileName)
                .endsWith(fileName)
            get(FileInfo::line)
                .isEqualTo("""val fileInfo = filePeek.getCallerFileInfo()""")
            get(FileInfo::methodName)
                .isEqualTo("""can get FileInfo""")
        }
    }

multiline calls work too, lines are read and joined until the method call is complete.

there is also a utility class that extracts a lambda body from a method call

    @Test
    fun `extracts the body`() {
        Assertions.assertEquals(
            "name",
            LambdaBody("get", """get { name }.isEqualTo("Ziggy")""").body
        )
    }