Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit bf96a490 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé
Browse files

feat(core): add logging testing module

parent c3514749
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -12,5 +12,9 @@ kotlin {
            api(projects.core.logging.api)
            api(libs.androidx.annotation)
        }

        commonTest.dependencies {
            implementation(projects.core.logging.testing)
        }
    }
}
+0 −33
Original line number Diff line number Diff line
package net.thunderbird.core.logging.legacy

import net.thunderbird.core.logging.LogEvent
import net.thunderbird.core.logging.LogLevel
import net.thunderbird.core.logging.Logger

class FakeLogger : Logger {
    val events = mutableListOf<LogEvent>()

    override fun verbose(tag: String?, message: String, throwable: Throwable?) {
        events.add(LogEvent(LogLevel.VERBOSE, tag, message, throwable, TIMESTAMP))
    }

    override fun debug(tag: String?, message: String, throwable: Throwable?) {
        events.add(LogEvent(LogLevel.DEBUG, tag, message, throwable, TIMESTAMP))
    }

    override fun info(tag: String?, message: String, throwable: Throwable?) {
        events.add(LogEvent(LogLevel.INFO, tag, message, throwable, TIMESTAMP))
    }

    override fun warn(tag: String?, message: String, throwable: Throwable?) {
        events.add(LogEvent(LogLevel.WARN, tag, message, throwable, TIMESTAMP))
    }

    override fun error(tag: String?, message: String, throwable: Throwable?) {
        events.add(LogEvent(LogLevel.ERROR, tag, message, throwable, TIMESTAMP))
    }

    private companion object {
        const val TIMESTAMP = 0L
    }
}
+4 −7
Original line number Diff line number Diff line
@@ -9,14 +9,15 @@ import assertk.assertions.isInstanceOf
import kotlin.test.Test
import net.thunderbird.core.logging.LogEvent
import net.thunderbird.core.logging.LogLevel
import net.thunderbird.core.logging.legacy.Log
import net.thunderbird.core.logging.testing.TestLogger
import net.thunderbird.core.logging.testing.TestLogger.Companion.TIMESTAMP

class LogTest {

    @Test
    fun `init should set logger`() {
        // Arrange
        val logger = FakeLogger()
        val logger = TestLogger()

        // Act
        Log.logger = logger
@@ -41,7 +42,7 @@ class LogTest {
    @Test
    fun `log should add all event to the logger`() {
        // Arrange
        val logger = FakeLogger()
        val logger = TestLogger()
        val exceptionVerbose = Exception("Verbose exception")
        val exceptionDebug = Exception("Debug exception")
        val exceptionInfo = Exception("Info exception")
@@ -126,8 +127,4 @@ class LogTest {
            ),
        )
    }

    private companion object {
        const val TIMESTAMP = 0L
    }
}
+15 −0
Original line number Diff line number Diff line
plugins {
    id(ThunderbirdPlugins.Library.kmp)
}

android {
    namespace = "net.thunderbird.core.logging.testing"
}

kotlin {
    sourceSets {
        commonMain.dependencies {
            api(projects.core.logging.api)
        }
    }
}
+99 −0
Original line number Diff line number Diff line
package net.thunderbird.core.logging.testing

import net.thunderbird.core.logging.LogEvent
import net.thunderbird.core.logging.LogLevel
import net.thunderbird.core.logging.LogMessage
import net.thunderbird.core.logging.LogTag
import net.thunderbird.core.logging.Logger

/**
 * A test logger that captures all log events in a list.
 */
class TestLogger() : Logger {

    val events: MutableList<LogEvent> = mutableListOf()

    override fun verbose(
        tag: LogTag?,
        throwable: Throwable?,
        message: () -> LogMessage,
    ) {
        events.add(
            LogEvent(
                level = LogLevel.VERBOSE,
                tag = tag,
                message = message(),
                throwable = throwable,
                timestamp = TIMESTAMP,
            ),
        )
    }

    override fun debug(
        tag: LogTag?,
        throwable: Throwable?,
        message: () -> LogMessage,
    ) {
        events.add(
            LogEvent(
                level = LogLevel.DEBUG,
                tag = tag,
                message = message(),
                throwable = throwable,
                timestamp = TIMESTAMP,
            ),
        )
    }

    override fun info(
        tag: LogTag?,
        throwable: Throwable?,
        message: () -> LogMessage,
    ) {
        events.add(
            LogEvent(
                level = LogLevel.INFO,
                tag = tag,
                message = message(),
                throwable = throwable,
                timestamp = TIMESTAMP,
            ),
        )
    }

    override fun warn(
        tag: LogTag?,
        throwable: Throwable?,
        message: () -> LogMessage,
    ) {
        events.add(
            LogEvent(
                level = LogLevel.WARN,
                tag = tag,
                message = message(),
                throwable = throwable,
                timestamp = TIMESTAMP,
            ),
        )
    }

    override fun error(
        tag: LogTag?,
        throwable: Throwable?,
        message: () -> LogMessage,
    ) {
        events.add(
            LogEvent(
                level = LogLevel.ERROR,
                tag = tag,
                message = message(),
                throwable = throwable,
                timestamp = TIMESTAMP,
            ),
        )
    }

    companion object {
        const val TIMESTAMP = 1000L
    }
}
Loading