<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Time on Vegatron 🌈✨</title><link>https://vegatron.engineering/tags/time/</link><description>Recent content in Time on Vegatron 🌈✨</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 08 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://vegatron.engineering/tags/time/index.xml" rel="self" type="application/rss+xml"/><item><title>Kotlin's runTest</title><link>https://vegatron.engineering/posts/kotlins-run-test/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid>https://vegatron.engineering/posts/kotlins-run-test/</guid><description>&lt;h1 id="the-flaky-test">The flaky test&lt;/h1>
&lt;p>Recently we had a test that would fail.
The test would set up some mocks and run a call, then some assertions.&lt;/p>
&lt;div class="code-block">
 &lt;button type="button" class="code-copy-btn" data-copy-target="code-block-0-src" aria-label="Copy code">Copy&lt;/button>
 &lt;textarea id="code-block-0-src" class="code-src-raw" hidden tabindex="-1" aria-hidden="true">@Test
fun `non-retryable status does not retry`() = runTest {
 val engine = MockEngine { _ -&amp;gt; respondError(HttpStatusCode.Unauthorized) }

 val result = ...

 assertTrue(result.isFailure)
 ...
 assertEquals(401, ex.statusCode)
 assertEquals(1, engine.requestHistory.size)
}&lt;/textarea>
 &lt;div class="code-reveal-clip">&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@Test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fun&lt;/span> &lt;span class="nf">`non-retryable status does not retry`&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">runTest&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">engine&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">MockEngine&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="n">respondError&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nc">HttpStatusCode&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Unauthorized&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">result&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="o">..&lt;/span>&lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">assertTrue&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">isFailure&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">..&lt;/span>&lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">assertEquals&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">401&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">statusCode&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">assertEquals&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">engine&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">requestHistory&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;/div>
&lt;p>It seemed benign, almost boring.&lt;/p></description></item></channel></rss>