LogGradleErrorForTreeHerderTest.kt (3845B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 import org.junit.jupiter.api.Assertions.assertLinesMatch 6 import org.junit.jupiter.api.Test 7 8 class LogGradleErrorForTreeHerderJupiterTest { 9 private fun assertEqualLines(expected: String, actual: String) { 10 assertLinesMatch( 11 expected.split("\n"), 12 actual.trimEnd('\n').split("\n")) 13 } 14 15 @Test 16 fun `getIndentedMessage formats a single exception message correctly`() { 17 val exception = RuntimeException("Test message") 18 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 19 assertEqualLines(""" 20 Test message 21 """.trimIndent(), actualMessage) 22 } 23 24 @Test 25 fun `getIndentedMessage formats an exception with a single cause correctly`() { 26 val cause = IllegalStateException("Cause message") 27 val exception = RuntimeException("Test message", cause) 28 val actualMessage: String = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 29 assertEqualLines(""" 30 Test message 31 > Cause message 32 """.trimIndent(), actualMessage) 33 } 34 35 @Test 36 fun `getIndentedMessage formats an exception with multiple nested causes correctly`() { 37 val deepestCause = NullPointerException("Deepest cause\nDeepest cause 2") 38 val middleCause = IllegalArgumentException("Middle cause\nMiddle cause 2", deepestCause) 39 val exception = RuntimeException("Top-level message", middleCause) 40 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 41 assertEqualLines(""" 42 Top-level message 43 > Middle cause 44 Middle cause 2 45 > Deepest cause 46 Deepest cause 2 47 """.trimIndent(), actualMessage) 48 } 49 50 @Test 51 fun `getIndentedMessage handles an exception with a null message`() { 52 val exception = RuntimeException(null as String?) 53 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 54 assertEqualLines(""" 55 56 """.trimIndent(), actualMessage) 57 } 58 59 @Test 60 fun `getIndentedMessage handles an exception with an empty message`() { 61 val exception = RuntimeException("") 62 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 63 assertEqualLines(""" 64 65 """.trimIndent(), actualMessage) 66 } 67 68 @Test 69 fun `getIndentedMessage handles an exception message with newlines`() { 70 val exception = RuntimeException("First line\nSecond line") 71 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 72 assertEqualLines(""" 73 First line 74 Second line 75 """.trimIndent(), actualMessage) 76 } 77 78 @Test 79 fun `getIndentedMessage handles an exception message with newlines and a cause`() { 80 val cause = IllegalStateException("Cause\nAnother cause line") 81 val exception = RuntimeException("First line\nSecond line", cause) 82 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 83 assertEqualLines(""" 84 First line 85 Second line 86 > Cause 87 Another cause line 88 """.trimIndent(), actualMessage) 89 } 90 91 @Test 92 fun `getIndentedMessage handles a cause with a null message`() { 93 val cause = IllegalStateException(null as String?) 94 val exception = RuntimeException("Test message", cause) 95 val actualMessage = LogGradleErrorForTreeHerder.getIndentedMessage(exception) 96 assertEqualLines(""" 97 Test message 98 > 99 """.trimIndent(), actualMessage) 100 } 101 }