[java] Improve test diff update test formatting

GitOrigin-RevId: a5ce3bc944604dd6504522eb984d5dee2279fe5c
This commit is contained in:
Bart van Helvert
2023-03-09 17:32:34 +00:00
committed by intellij-monorepo-bot
parent a1d12f8312
commit 42a397fc09
2 changed files with 576 additions and 569 deletions
@@ -4,8 +4,10 @@ package com.intellij.execution.junit
import com.intellij.openapi.editor.Document
import org.intellij.lang.annotations.Language
@Suppress("AssertBetweenInconvertibleTypes", "NewClassNamingConvention")
@Suppress("AssertBetweenInconvertibleTypes", "NewClassNamingConvention", "SameParameterValue")
class JavaTestDiffUpdateTest : JvmTestDiffUpdateTest() {
private val fileExt = "java"
@Suppress("SameParameterValue")
private fun checkHasNoDiff(
@Language("Java") before: String,
@@ -14,7 +16,7 @@ class JavaTestDiffUpdateTest : JvmTestDiffUpdateTest() {
expected: String,
actual: String,
stackTrace: String
) = checkHasNoDiff(before, testClass, testName, expected, actual, stackTrace, "java")
) = checkHasNoDiff(before, testClass, testName, expected, actual, stackTrace, fileExt)
@Suppress("SameParameterValue")
private fun checkAcceptFullDiff(
@@ -25,9 +27,8 @@ class JavaTestDiffUpdateTest : JvmTestDiffUpdateTest() {
expected: String,
actual: String,
stackTrace: String
) = checkAcceptFullDiff(before, after, testClass, testName, expected, actual, stackTrace, "java")
) = checkAcceptFullDiff(before, after, testClass, testName, expected, actual, stackTrace, fileExt)
@Suppress("SameParameterValue")
private fun checkPhysicalDiff(
@Language("Java") before: String,
@Language("Java") after: String,
@@ -38,90 +39,90 @@ class JavaTestDiffUpdateTest : JvmTestDiffUpdateTest() {
actual: String,
stackTrace: String,
change: (Document) -> Unit
) = checkPhysicalDiff(before, after, diffAfter, testClass, testName, expected, actual, stackTrace, "java", change)
) = checkPhysicalDiff(before, after, diffAfter, testClass, testName, expected, actual, stackTrace, fileExt, change)
fun `test failure when stacktrace is corrupted`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
unexpected input
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
unexpected input
""".trimIndent())
}
fun `test accept string literal diff`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.junit.Test;
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("actual", "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("actual", "actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test accept string literal diff with carriage return and line feed in expected`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.junit.Test;
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected\r\n", "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected\r\n", "actual");
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("actual", "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("actual", "actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test accept diff is not available when expected is not a string literal`() {
@@ -136,11 +137,11 @@ class JavaTestDiffUpdateTest : JvmTestDiffUpdateTest() {
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
@@ -156,269 +157,269 @@ class JavaTestDiffUpdateTest : JvmTestDiffUpdateTest() {
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test accept text block diff`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.junit.Test;
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals(""${'"'}
expected""${'"'}, "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals(""${'"'}
expected""${'"'}, "actual");
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals(""${'"'}
actual""${'"'}, "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals(""${'"'}
actual""${'"'}, "actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test physical string literal change sync`() {
checkPhysicalDiff(before = """
import org.junit.Assert;
import org.junit.Test;
checkPhysicalDiff("""
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected<caret>", "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected<caret>", "actual");
}
""".trimIndent(), after = """
import org.junit.Assert;
import org.junit.Test;
}
""".trimIndent(), after = """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expectedFoo", "actual");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expectedFoo", "actual");
}
""".trimIndent(), diffAfter = "expectedFoo", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent()) { document ->
document.insertString(myFixture.editor.caretModel.offset, "Foo")
}
}
""".trimIndent(), diffAfter = "expectedFoo", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent()) { document -> document.insertString(myFixture.editor.caretModel.offset, "Foo") }
}
fun `test physical non-string literal change sync`() {
checkPhysicalDiff(before = """
import org.junit.Assert;
import org.junit.Test;
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest<caret> {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
public class MyJUnitTest<caret> {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
""".trimIndent(), after = """
import org.junit.Assert;
import org.junit.Test;
}
""".trimIndent(), after = """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTestFoo {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
public class MyJUnitTestFoo {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual");
}
}
""".trimIndent(), diffAfter = "expected", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent()) { document ->
document.insertString(myFixture.editor.caretModel.offset, "Foo")
}
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent()) { document -> document.insertString(myFixture.editor.caretModel.offset, "Foo") }
}
fun `test accept string literal diff with escape`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.junit.Test;
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual\"");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("expected", "actual\"");
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
}
""".trimIndent(), """
import org.junit.Assert;
import org.junit.Test;
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("actual\"", "actual\"");
}
public class MyJUnitTest {
@Test
public void testFoo() {
Assert.assertEquals("actual\"", "actual\"");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual\"", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual\"", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test accept parameter reference diff`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.testng.annotations.Test;
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
@Test
void testFoo() {
doTest("expected");
}
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
public class MyJUnitTest {
@Test
void testFoo() {
doTest("expected");
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
@Test
void testFoo() {
doTest("actual");
}
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
public class MyJUnitTest {
@Test
void testFoo() {
doTest("actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.java:11)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.java:11)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test accept parameter reference diff multiple calls on same line`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.testng.annotations.Test;
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
@Test
void testFoo() {
doAnotherTest(); doTest("expected");
}
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
void doAnotherTest() { }
public class MyJUnitTest {
@Test
void testFoo() {
doAnotherTest(); doTest("expected");
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
void doAnotherTest() { }
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
@Test
void testFoo() {
doAnotherTest(); doTest("actual");
}
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
void doAnotherTest() { }
public class MyJUnitTest {
@Test
void testFoo() {
doAnotherTest(); doTest("actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.java:11)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
void doTest(String expected) {
Assert.assertEquals(expected, "actual");
}
void doAnotherTest() { }
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.java:11)
at MyJUnitTest.testFoo(MyJUnitTest.java:7)
""".trimIndent())
}
fun `test accept local variable reference diff`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.testng.annotations.Test;
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
@Test
void testFoo() {
String exp = "expected";
Assert.assertEquals(exp, "actual");
}
public class MyJUnitTest {
@Test
void testFoo() {
String exp = "expected";
Assert.assertEquals(exp, "actual");
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
@Test
void testFoo() {
String exp = "actual";
Assert.assertEquals(exp, "actual");
}
public class MyJUnitTest {
@Test
void testFoo() {
String exp = "actual";
Assert.assertEquals(exp, "actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:8)
""".trimIndent())
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:8)
""".trimIndent())
}
fun `test accept field reference diff`() {
checkAcceptFullDiff("""
import org.junit.Assert;
import org.testng.annotations.Test;
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
private String exp = "expected";
public class MyJUnitTest {
private String exp = "expected";
@Test
void testFoo() {
Assert.assertEquals(exp, "actual");
}
@Test
void testFoo() {
Assert.assertEquals(exp, "actual");
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
}
""".trimIndent(), """
import org.junit.Assert;
import org.testng.annotations.Test;
public class MyJUnitTest {
private String exp = "actual";
public class MyJUnitTest {
private String exp = "actual";
@Test
void testFoo() {
Assert.assertEquals(exp, "actual");
}
@Test
void testFoo() {
Assert.assertEquals(exp, "actual");
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:9)
""".trimIndent())
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.java:9)
""".trimIndent())
}
companion object {
private const val fileExt = "java"
}
}
@@ -5,8 +5,8 @@ import com.intellij.execution.junit.JvmTestDiffUpdateTest
import com.intellij.openapi.editor.Document
import org.intellij.lang.annotations.Language
@Suppress("NewClassNamingConvention", "SameParameterValue")
class KotlinTestDiffUpdateTest : JvmTestDiffUpdateTest() {
@Suppress("SameParameterValue")
private fun checkHasNoDiff(
@Language("kotlin") before: String,
testClass: String,
@@ -14,9 +14,8 @@ class KotlinTestDiffUpdateTest : JvmTestDiffUpdateTest() {
expected: String,
actual: String,
stackTrace: String
) = checkHasNoDiff(before, testClass, testName, expected, actual, stackTrace, "kt")
) = checkHasNoDiff(before, testClass, testName, expected, actual, stackTrace, fileExt)
@Suppress("SameParameterValue")
private fun checkAcceptFullDiff(
@Language("kotlin") before: String,
@Language("kotlin") after: String,
@@ -25,9 +24,8 @@ class KotlinTestDiffUpdateTest : JvmTestDiffUpdateTest() {
expected: String,
actual: String,
stackTrace: String
) = checkAcceptFullDiff(before, after, testClass, testName, expected, actual, stackTrace, "kt")
) = checkAcceptFullDiff(before, after, testClass, testName, expected, actual, stackTrace, fileExt)
@Suppress("SameParameterValue")
private fun checkPhysicalDiff(
@Language("kotlin") before: String,
@Language("kotlin") after: String,
@@ -38,40 +36,41 @@ class KotlinTestDiffUpdateTest : JvmTestDiffUpdateTest() {
actual: String,
stackTrace: String,
change: (Document) -> Unit
) = checkPhysicalDiff(before, after, diffAfter, testClass, testName, expected, actual, stackTrace, "kt", change)
) = checkPhysicalDiff(before, after, diffAfter, testClass, testName, expected, actual, stackTrace, fileExt, change)
fun `test accept string literal diff`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("actual", "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("actual", "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
)
}
fun `test accept diff is not available when expected is not a string literal`() {
checkHasNoDiff("""
checkHasNoDiff(
"""
import org.junit.Assert
import org.junit.Test
@@ -81,17 +80,19 @@ class KotlinTestDiffUpdateTest : JvmTestDiffUpdateTest() {
Assert.assertEquals(true, "actual")
}
}
""".trimIndent(), "MyJunitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJunitTest.testFoo(MyJunitTest.kt:7)
""".trimIndent())
""".trimIndent(), "MyJunitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJunitTest.testFoo(MyJunitTest.kt:7)
""".trimIndent()
)
}
fun `test accept diff is not available when actual is not a string literal`() {
checkHasNoDiff("""
checkHasNoDiff(
"""
import org.junit.Assert
import org.junit.Test
@@ -101,319 +102,324 @@ class KotlinTestDiffUpdateTest : JvmTestDiffUpdateTest() {
Assert.assertEquals("expected", true)
}
}
""".trimIndent(), "MyJunitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJunitTest.testFoo(MyJunitTest.kt:7)
""".trimIndent())
""".trimIndent(), "MyJunitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:120)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJunitTest.testFoo(MyJunitTest.kt:7)
""".trimIndent()
)
}
fun `test physical string literal change sync`() {
checkPhysicalDiff(before = """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expected<caret>", "actual")
}
}
""".trimIndent(), after = """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expectedFoo", "actual")
}
}
""".trimIndent(), diffAfter = "expectedFoo", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()) { document ->
document.insertString(myFixture.editor.caretModel.offset, "Foo")
}
checkPhysicalDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expected<caret>", "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expectedFoo", "actual")
}
}
""".trimIndent(), diffAfter = "expectedFoo", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
) { document -> document.insertString(myFixture.editor.caretModel.offset, "Foo") }
}
fun `test physical non-string literal change sync`() {
checkPhysicalDiff(before = """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest<caret> {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual")
}
}
""".trimIndent(), after = """
import org.junit.Assert
import org.junit.Test
class MyJUnitTestFoo {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual")
}
}
""".trimIndent(), diffAfter = "expected", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()) { document ->
document.insertString(myFixture.editor.caretModel.offset, "Foo")
}
checkPhysicalDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest<caret> {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTestFoo {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual")
}
}
""".trimIndent(), diffAfter = "expected", "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
) { document -> document.insertString(myFixture.editor.caretModel.offset, "Foo") }
}
fun `test accept string literal diff with escape`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual\"")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("actual\"", "actual\"")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual\"", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("expected", "actual\"")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("actual\"", "actual\"")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual\"", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
)
}
fun `test accept parameter reference diff`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest("expected")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest("actual")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.kt:11)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest("expected")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest("actual")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.kt:11)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
)
}
fun `test accept parameter reference diff in named call`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest(ex = "expected", other = 0)
}
private fun doTest(other: Int, ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest(ex = "actual", other = 0)
}
private fun doTest(other: Int, ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.kt:11)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest(ex = "expected", other = 0)
}
private fun doTest(other: Int, ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doTest(ex = "actual", other = 0)
}
private fun doTest(other: Int, ex: String) {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.kt:11)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
)
}
fun `test accept parameter reference diff with multiple calls on same line`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doAnotherTest(); doTest("expected")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
private fun doAnotherTest() { }
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doAnotherTest(); doTest("actual")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
private fun doAnotherTest() { }
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.kt:11)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doAnotherTest(); doTest("expected")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
private fun doAnotherTest() { }
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
doAnotherTest(); doTest("actual")
}
private fun doTest(ex: String) {
Assert.assertEquals(ex, "actual")
}
private fun doAnotherTest() { }
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.doTest(MyJUnitTest.kt:11)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
)
}
fun `test accept local variable reference diff`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
val ex = "expected"
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
val ex = "actual"
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:8)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
val ex = "expected"
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
val ex = "actual"
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:8)
""".trimIndent()
)
}
fun `test accept field reference diff`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
private val ex = "expected"
@Test
fun testFoo() {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
private val ex = "actual"
@Test
fun testFoo() {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:9)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
private val ex = "expected"
@Test
fun testFoo() {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
private val ex = "actual"
@Test
fun testFoo() {
Assert.assertEquals(ex, "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:9)
""".trimIndent()
)
}
fun `_test accept polyadic string literal diff`() {
checkAcceptFullDiff(
"""
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("exp" + "ect" + "ed", "actual")
}
}
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("exp" + "ect" + "ed", "actual")
}
}
""".trimIndent(), """
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("actual", "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
import org.junit.Assert
import org.junit.Test
class MyJUnitTest {
@Test
fun testFoo() {
Assert.assertEquals("actual", "actual")
}
}
""".trimIndent(), "MyJUnitTest", "testFoo", "expected", "actual", """
at org.junit.Assert.assertEquals(Assert.java:117)
at org.junit.Assert.assertEquals(Assert.java:146)
at MyJUnitTest.testFoo(MyJUnitTest.kt:7)
""".trimIndent()
)
}
companion object {
private const val fileExt = "kt"
}
}