Best Kotest code snippet using io.kotest.core.config.LogLevel.from
AbstractProjectConfig.kt
Source:AbstractProjectConfig.kt
...17/**18 * Project-wide configuration. Extensions returned by an19 * instance of this class will be applied to all [Spec] and [TestCase]s.20 *21 * Create an object or class that is derived from this class and place it in your source.22 *23 * It will be detected at runtime and used to configure the test engine.24 *25 * For example, you could create this object and place the source in `src/main/kotlin/my/test/package`.26 *27 * object KotestProjectConfig : AbstractProjectConfig() {28 * override val failOnEmptyTestSuite = true29 * override val testCaseOrder = TestCaseOrder.Random30 * }31 *32 */33abstract class AbstractProjectConfig {34 /**35 * List of project wide [Extension] instances....
build.gradle.kts
Source:build.gradle.kts
...133 manifest {134 attributes["Implementation-Title"] = "Gradle Jar File Example"135 attributes["Main-Class"] = "pl.setblack.kstones.web.MainKt"136 }137 from(configurations.runtimeClasspath.get().map({ if (it.isDirectory) it else zipTree(it) }))138 with(tasks.jar.get() as CopySpec)139}140tasks {141 "build" {142 dependsOn(fatJar)143 }144}...
NaverHttpClientKtorTest.kt
Source:NaverHttpClientKtorTest.kt
1package com.hojongs.navermapskt.http.client.ktor2import com.hojongs.navermapskt.NaverClientConfig3import com.hojongs.navermapskt.geocode.Geocode4import com.hojongs.navermapskt.geocode.GeocodeRequest5import com.hojongs.navermapskt.reversegc.ReverseGCRequest6import com.hojongs.navermapskt.staticmap.StaticMapRequest7import io.kotest.assertions.throwables.*8import io.kotest.core.spec.style.*9import io.kotest.matchers.*10import io.ktor.client.features.*11import io.ktor.http.*12import kotlinx.serialization.decodeFromString13import kotlinx.serialization.json.Json14internal class NaverHttpClientKtorTest : DescribeSpec({15 fun getEnv(envName: String) =16 System.getenv(envName)17 ?: throw Exception("Env variable is required : $envName")18 val config = NaverClientConfig(19 getEnv("NAVER_MAPS_CLIENT_ID"),20 getEnv("NAVER_MAPS_CLIENT_SECRET"),21 )22 val client = NaverHttpClientKtor(config)23 afterSpec {24 client.close()25 }26 describe("geocode") {27 it("return correct geocode with status OK") {28 val geocode = client.geocode(GeocodeRequest("ë¶ë¹êµ¬ ë¶ì ë¡ 6"))29 geocode.status shouldBe "OK"30 geocode.addresses?.get(0)?.roadAddress shouldBe "경기ë ì±ë¨ì ë¶ë¹êµ¬ ë¶ì ë¡ 6 NAVER그린í©í 리"31 }32 it("throw exception with Unauthorized when client secret is invalid") {33 val config = NaverClientConfig(34 System.getenv("NAVER_MAPS_CLIENT_ID"),35 "asdfasdf"36 )37 val client = NaverHttpClientKtor(config)38 val exception = shouldThrow<ClientRequestException> {39 client.geocode(GeocodeRequest(""))40 }41 exception.response.status shouldBe HttpStatusCode.Unauthorized42 }43 it("throw exception with Unauthorized when client id and client secret are empty") {44 val config = NaverClientConfig("", "")45 val client = NaverHttpClientKtor(config)46 val exception = shouldThrow<ClientRequestException> {47 client.geocode(GeocodeRequest(""))48 }49 exception.response.status shouldBe HttpStatusCode.Unauthorized50 }51 it("error when query is empty string") {52 val geocode = client.geocode(GeocodeRequest(""))53 print(geocode)54 geocode.status shouldBe "INVALID_REQUEST"55 geocode.errorMessage shouldBe "query is INVALID"56 }57 }58 describe("reverseGeocode") {59 it("return correct response") {60 val reverseGcResponse = client.reverseGeocode(61 ReverseGCRequest(62 "129.1133567",63 "35.2982640",64 output = ReverseGCRequest.Output.JSON,65 )66 )67 reverseGcResponse.status.name shouldBe "ok"68 reverseGcResponse.results[0].let {69 it.name shouldBe "legalcode"70 it.region.area1.name shouldBe "ë¶ì°ê´ìì"71 }72 reverseGcResponse.results[1].name shouldBe "admcode"73 }74 }75 describe("staticMap") {76 it("return correct png") {77 val bytes = client.staticMap(78 StaticMapRequest(79 w = 300,80 h = 300,81 centerOrMarkers = StaticMapRequest.CenterOrMarkers.Center(82 center = "127.1054221,37.3591614",83 level = 16,84 ),85 )86 )87 val expected = javaClass88 .getResource("/staticmap.png")!!89 .readBytes()90 bytes shouldBe expected91 }92 }93 describe("json") {94 it("success decoding json") {95 // given96 val str =97 javaClass98 .getResource("/geocode.json")!!99 .readText()100 shouldNotThrow<Throwable> {101 Json.decodeFromString<Geocode>(str)102 }103 }104 }105 describe("logLevel") {106 listOf(107 "ALL",108 "HEADERS",109 "BODY",110 "INFO",111 "NONE",112 ).forEach { logLevel ->113 it("$logLevel: should work as logLevel") {114 val config = NaverClientConfig("", "")115 shouldNotThrow<IllegalArgumentException> {116 NaverHttpClientKtor(config, logLevel)117 }118 }119 }120 }121})...
applyConfigFromAbstractProjectConfig.kt
Source:applyConfigFromAbstractProjectConfig.kt
...3import io.kotest.core.config.ProjectConfiguration4import io.kotest.core.listeners.AfterProjectListener5import io.kotest.core.listeners.BeforeProjectListener6/**7 * Applies settings from a [AbstractProjectConfig] instance to the given [ProjectConfiguration].8 */9internal fun applyConfigFromProjectConfig(config: AbstractProjectConfig, configuration: ProjectConfiguration) {10 // assertions11 config.assertionMode?.let { configuration.assertionMode = it }12 config.globalAssertSoftly?.let { configuration.globalAssertSoftly = it }13 // outputs14 config.displaySpecIfNoActiveTests?.let { configuration.displaySpecIfNoActiveTests = it }15 // project run options16 config.failOnIgnoredTests?.let { configuration.failOnIgnoredTests = it }17 config.failOnEmptyTestSuite?.let { configuration.failOnEmptyTestSuite = it }18 config.testCaseOrder?.let { configuration.testCaseOrder = it }19 config.specExecutionOrder?.let { configuration.specExecutionOrder = it }20 config.writeSpecFailureFile?.let { configuration.writeSpecFailureFile = it }21 config.projectWideFailFast?.let { configuration.projectWideFailFast = it }...
applyConfigFromSystemProperties.kt
Source:applyConfigFromSystemProperties.kt
...53internal fun projectTimeout(): Duration? {54 val d = sysprop(KotestEngineProperties.projectTimeout)?.toLong() ?: return null55 return Duration.milliseconds(d)56}57internal fun logLevel(fromConfiguration: LogLevel): LogLevel {58 val levelProp = syspropOrEnv(KotestEngineProperties.logLevel)?.let { LogLevel.from(it) }59 return levelProp ?: fromConfiguration60}...
ApplyConfigTest.kt
Source:ApplyConfigTest.kt
...13import io.kotest.matchers.shouldBe14private const val key = KotestEngineProperties.logLevel15@Isolate16class ApplyConfigTest : FunSpec({17 test("log level can come from sys props") {18 val expected = LogLevel.Info19 val config = ProjectConfiguration()20 config.logLevel shouldBe LogLevel.Off21 withEnvironment(key, LogLevel.Error.name, OverrideMode.SetOrOverride) {22 withSystemProperty(key, expected.name, OverrideMode.SetOrOverride) {23 applyConfigFromSystemProperties(config)24 }25 }26 config.logLevel shouldBe expected27 }28 test("log level can come from env vars with dots in name") {29 val expected = LogLevel.Info30 val config = ProjectConfiguration()31 config.logLevel shouldBe LogLevel.Off32 withEnvironment(key, expected.name, OverrideMode.SetOrOverride) {33 applyConfigFromSystemProperties(config)34 }35 config.logLevel shouldBe expected36 }37 test("log level can come from env vars with underscores in name") {38 val expected = LogLevel.Info39 val config = ProjectConfiguration()40 config.logLevel shouldBe LogLevel.Off41 withEnvironment(key.replace('.', '_'), expected.name, OverrideMode.SetOrOverride) {42 applyConfigFromSystemProperties(config)43 }44 config.logLevel shouldBe expected45 }46 test("log level can come from AbstractProjectConfig") {47 val expected = LogLevel.Info48 val config = ProjectConfiguration()49 config.logLevel shouldBe LogLevel.Off50 applyConfigFromProjectConfig(object : AbstractProjectConfig() {51 override val logLevel = expected52 }, config)53 config.logLevel shouldBe expected54 }55})...
LogLevel.kt
Source:LogLevel.kt
...12 level > other.level -> 113 else -> 014 }15 companion object {16 fun from(level: String?): LogLevel = when (level) {17 "trace" -> Trace18 "debug" -> Debug19 "warn" -> Warn20 "info" -> Info21 "error" -> Error22 else -> Off23 }24 }25}
from
Using AI Code Generation
1when (logLevel) {2}3when (logLevel) {4}5when (logLevel) {6}7when (logLevel) {8}9when (logLevel) {10}11when (logLevel) {12}13when (logLevel) {14}15when (logLevel) {16}17when (logLevel) {18}19when (logLevel) {20}21when (logLevel) {
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!