This is an automated email from the ASF dual-hosted git repository.

leonard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 722e638924bb2c925af6fc9e3cf17cf0d3046538
Author: Jiabao Sun <[email protected]>
AuthorDate: Tue Sep 12 14:39:33 2023 +0800

    [FLINK-33023][table-planner][JUnit5 Migration] Module: 
flink-table-planner/planner/utils (TableTestBase)
---
 .../planner/utils/InternalConfigOptionsTest.java   |  28 +++---
 .../flink/table/planner/utils/TableTestBase.scala  | 100 ++++++++++++---------
 2 files changed, 71 insertions(+), 57 deletions(-)

diff --git 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/InternalConfigOptionsTest.java
 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/InternalConfigOptionsTest.java
index 8d1c182d3ea..bb30acf1228 100644
--- 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/InternalConfigOptionsTest.java
+++ 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/utils/InternalConfigOptionsTest.java
@@ -24,12 +24,14 @@ import org.apache.flink.table.api.TableConfig;
 import org.apache.flink.table.api.TableEnvironment;
 import org.apache.flink.table.planner.delegation.PlannerBase;
 import org.apache.flink.table.planner.plan.nodes.exec.ExecNodeGraph;
+import org.apache.flink.testutils.junit.extensions.parameterized.Parameter;
+import 
org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension;
+import org.apache.flink.testutils.junit.extensions.parameterized.Parameters;
 
 import org.apache.calcite.rel.RelNode;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -40,21 +42,21 @@ import static 
org.apache.flink.table.planner.utils.JavaScalaConversionUtil.toSca
 import static org.assertj.core.api.Assertions.assertThat;
 
 /** Tests for {@link InternalConfigOptions}. */
-@RunWith(Parameterized.class)
-public class InternalConfigOptionsTest extends TableTestBase {
+@ExtendWith(ParameterizedTestExtension.class)
+class InternalConfigOptionsTest extends TableTestBase {
 
     private TableEnvironment tEnv;
     private PlannerBase planner;
 
-    @Parameterized.Parameters(name = "plannerMode = {0}")
-    public static Collection<String> parameters() {
+    @Parameters(name = "plannerMode = {0}")
+    private static Collection<String> parameters() {
         return Arrays.asList("STREAMING", "BATCH");
     }
 
-    @Parameterized.Parameter public String plannerMode;
+    @Parameter private String plannerMode;
 
-    @Before
-    public void setUp() {
+    @BeforeEach
+    void setUp() {
         if (plannerMode.equals("STREAMING")) {
             StreamTableTestUtil util = 
streamTestUtil(TableConfig.getDefault());
             tEnv = util.getTableEnv();
@@ -66,8 +68,8 @@ public class InternalConfigOptionsTest extends TableTestBase {
         }
     }
 
-    @Test
-    public void testTranslateExecNodeGraphWithInternalTemporalConf() {
+    @TestTemplate
+    void testTranslateExecNodeGraphWithInternalTemporalConf() {
         Table table =
                 tEnv.sqlQuery("SELECT LOCALTIME, LOCALTIMESTAMP, CURRENT_TIME, 
CURRENT_TIMESTAMP");
         RelNode relNode = planner.optimize(TableTestUtil.toRelNode(table));
diff --git 
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/utils/TableTestBase.scala
 
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/utils/TableTestBase.scala
index 7fc23d8281f..d8920bc62c0 100644
--- 
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/utils/TableTestBase.scala
+++ 
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/utils/TableTestBase.scala
@@ -22,7 +22,6 @@ import org.apache.flink.api.common.typeinfo.{AtomicType, 
TypeInformation}
 import org.apache.flink.api.java.typeutils.{PojoTypeInfo, RowTypeInfo, 
TupleTypeInfo}
 import org.apache.flink.api.scala.typeutils.CaseClassTypeInfo
 import org.apache.flink.configuration.BatchExecutionOptions
-import org.apache.flink.core.testutils.FlinkMatchers.containsMessage
 import 
org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonParseException
 import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode
 import org.apache.flink.streaming.api.{environment, TimeCharacteristic}
@@ -67,6 +66,7 @@ import org.apache.flink.table.sources.{StreamTableSource, 
TableSource}
 import org.apache.flink.table.types.logical.LogicalType
 import org.apache.flink.table.types.utils.TypeConversions
 import org.apache.flink.table.typeutils.FieldInfoUtils
+import 
org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension
 import org.apache.flink.types.Row
 import org.apache.flink.util.{FlinkUserCodeClassLoaders, MutableURLClassLoader}
 import org.apache.flink.util.jackson.JacksonMapperFactory
@@ -79,35 +79,27 @@ import org.apache.calcite.avatica.util.TimeUnit
 import org.apache.calcite.rel.RelNode
 import org.apache.calcite.sql.{SqlExplainLevel, SqlIntervalQualifier}
 import org.apache.calcite.sql.parser.SqlParserPos
-import org.junit.Assert.{assertEquals, assertThat, assertTrue, fail}
-import org.junit.Rule
-import org.junit.rules.{ExpectedException, TemporaryFolder, TestName}
+import org.assertj.core.api.Assertions.{assertThat, assertThatExceptionOfType, 
fail}
+import org.junit.jupiter.api.Assertions.{assertEquals, assertTrue}
+import org.junit.jupiter.api.extension.{BeforeEachCallback, ExtendWith, 
ExtensionContext, RegisterExtension}
+import org.junit.jupiter.api.io.TempDir
+import org.junit.platform.commons.support.AnnotationSupport
 
 import java.io.{File, IOException}
 import java.net.URL
-import java.nio.file.{Files, Paths}
+import java.nio.file.{Files, Path, Paths}
 import java.time.Duration
 import java.util.Collections
 
 /** Test base for testing Table API / SQL plans. */
 abstract class TableTestBase {
 
-  // used for accurate exception information checking.
-  val expectedException: ExpectedException = ExpectedException.none()
-
   // used for get test case method name
+  @RegisterExtension
   val testName: TestName = new TestName
 
-  val _tempFolder = new TemporaryFolder
-
-  @Rule
-  def tempFolder: TemporaryFolder = _tempFolder
-
-  @Rule
-  def thrown: ExpectedException = expectedException
-
-  @Rule
-  def name: TestName = testName
+  @TempDir
+  var tempFolder: Path = _
 
   def streamTestUtil(tableConfig: TableConfig = TableConfig.getDefault): 
StreamTableTestUtil =
     StreamTableTestUtil(this, tableConfig = tableConfig)
@@ -127,9 +119,36 @@ abstract class TableTestBase {
     val expectedString = 
FlinkRelOptUtil.toString(TableTestUtil.toRelNode(expected))
     val actualString = 
FlinkRelOptUtil.toString(TableTestUtil.toRelNode(actual))
     assertEquals(
-      "Logical plans do not match",
       LogicalPlanFormatUtils.formatTempTableId(expectedString),
-      LogicalPlanFormatUtils.formatTempTableId(actualString))
+      LogicalPlanFormatUtils.formatTempTableId(actualString),
+      "Logical plans do not match")
+  }
+}
+
+class TestName extends BeforeEachCallback {
+
+  private val bracketsRegex = """\[.*\]""".r
+
+  private var methodName: String = _
+
+  def getMethodName: String = methodName
+
+  override def beforeEach(context: ExtensionContext): Unit = {
+    if (hasParameterizedTestExtension(context)) {
+      val displayName = context.getDisplayName match {
+        case bracketsRegex(_*) => context.getDisplayName
+        case _ => s"[${context.getDisplayName}]"
+      }
+      methodName = s"${context.getTestMethod.get().getName}$displayName"
+    } else {
+      methodName = context.getTestMethod.get().getName
+    }
+  }
+
+  private def hasParameterizedTestExtension(context: ExtensionContext): 
Boolean = {
+    Option(AnnotationSupport.findAnnotation(context.getTestClass, 
classOf[ExtendWith]).orElse(null))
+      .map(_.value)
+      .exists(_.contains(classOf[ParameterizedTestExtension]))
   }
 }
 
@@ -622,7 +641,7 @@ abstract class TableTestUtilBase(test: TableTestBase, 
isStreamingMode: Boolean)
     val optimizedPlan = getOptimizedRelPlan(Array(optimizedRel), Array.empty, 
withRowType = false)
     val result = notExpected.forall(!optimizedPlan.contains(_))
     val message = s"\nactual plan:\n$optimizedPlan\nnot 
expected:\n${notExpected.mkString(", ")}"
-    assertTrue(message, result)
+    assertTrue(result, message)
   }
 
   /**
@@ -752,14 +771,9 @@ abstract class TableTestUtilBase(test: TableTestBase, 
isStreamingMode: Boolean)
       sql: String,
       message: String,
       clazz: Class[_ <: Throwable] = classOf[ValidationException]): Unit = {
-    try {
-      verifyExplain(sql)
-      fail(s"Expected a $clazz, but no exception is thrown.")
-    } catch {
-      case e: Throwable =>
-        assertTrue(clazz.isAssignableFrom(e.getClass))
-        assertThat(e, containsMessage(message))
-    }
+    assertThatExceptionOfType(clazz)
+      .isThrownBy(() => verifyExplain(sql))
+      .withMessageContaining(message)
   }
 
   /**
@@ -841,22 +855,20 @@ abstract class TableTestUtilBase(test: TableTestBase, 
isStreamingMode: Boolean)
       fail(s"$testMethodFileName regenerated.")
     } else {
       val expected = String.join("\n", Files.readAllLines(path))
-      assertEquals(
-        TableTestUtil.replaceExecNodeId(TableTestUtil.getPrettyJson(expected)),
-        
TableTestUtil.replaceExecNodeId(TableTestUtil.getPrettyJson(jsonPlanWithoutFlinkVersion))
-      )
+      assertThat(
+        
TableTestUtil.replaceExecNodeId(TableTestUtil.getPrettyJson(jsonPlanWithoutFlinkVersion)))
+        
.isEqualTo(TableTestUtil.replaceExecNodeId(TableTestUtil.getPrettyJson(expected)))
       // check json serde round trip as well
       val expectedWithFlinkVersion = JsonTestUtils.writeToString(
         JsonTestUtils
           .setFlinkVersion(JsonTestUtils.readFromString(expected), 
FlinkVersion.current()))
-      assertEquals(
-        
TableTestUtil.replaceExecNodeId(TableTestUtil.getFormattedJson(expectedWithFlinkVersion)),
+      assertThat(
         TableTestUtil.replaceExecNodeId(
-          TableTestUtil.getFormattedJson(
-            getPlanner
-              .loadPlan(PlanReference.fromJsonString(expectedWithFlinkVersion))
-              .asJsonString()))
-      )
+          TableTestUtil.getFormattedJson(getPlanner
+            .loadPlan(PlanReference.fromJsonString(expectedWithFlinkVersion))
+            .asJsonString())))
+        .isEqualTo(
+          
TableTestUtil.replaceExecNodeId(TableTestUtil.getFormattedJson(expectedWithFlinkVersion)))
     }
   }
 
@@ -1127,16 +1139,16 @@ abstract class TableTestUtilBase(test: TableTestBase, 
isStreamingMode: Boolean)
   def assertEqualsOrExpand(tag: String, actual: String, expand: Boolean = 
true): Unit = {
     val expected = s"$${$tag}"
     if (!expand) {
-      diffRepository.assertEquals(test.name.getMethodName, tag, expected, 
actual)
+      diffRepository.assertEquals(test.testName.getMethodName, tag, expected, 
actual)
       return
     }
-    val expanded = diffRepository.expand(test.name.getMethodName, tag, 
expected)
+    val expanded = diffRepository.expand(test.testName.getMethodName, tag, 
expected)
     if (expanded != null && !expanded.equals(expected)) {
       // expected does exist, check result
-      diffRepository.assertEquals(test.name.getMethodName, tag, expected, 
actual)
+      diffRepository.assertEquals(test.testName.getMethodName, tag, expected, 
actual)
     } else {
       // expected does not exist, update
-      diffRepository.expand(test.name.getMethodName, tag, actual)
+      diffRepository.expand(test.testName.getMethodName, tag, actual)
     }
   }
 }

Reply via email to