You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/03/02 09:21:42 UTC

[shardingsphere] branch master updated: Use junit 5.x's API to refactor InternalUnsupportedSQLParserIT (#24421)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new d0ef4801ee4 Use junit 5.x's API to refactor InternalUnsupportedSQLParserIT (#24421)
d0ef4801ee4 is described below

commit d0ef4801ee4cb498e461a67966f7bb6a7823996c
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Mar 2 17:21:34 2023 +0800

    Use junit 5.x's API to refactor InternalUnsupportedSQLParserIT (#24421)
---
 .../internal/InternalUnsupportedMySQLParserIT.java | 18 +------
 .../InternalUnsupportedOpenGaussParserIT.java      | 18 +------
 .../InternalUnsupportedOracleParserIT.java         | 18 +------
 .../InternalUnsupportedPostgreSQLParserIT.java     | 18 +------
 .../internal/InternalUnsupportedSQL92ParserIT.java | 18 +------
 .../InternalUnsupportedSQLServerParserIT.java      | 18 +------
 .../internal/InternalUnsupportedSQLParserIT.java   | 57 +++++++++++-----------
 7 files changed, 41 insertions(+), 124 deletions(-)

diff --git a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalUnsupportedMySQLParserIT.java b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalUnsupportedMySQLParserIT.java
index 3562a17d3a1..6754b9e400d 100644
--- a/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalUnsupportedMySQLParserIT.java
+++ b/sql-parser/dialect/mysql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/mysql/internal/InternalUnsupportedMySQLParserIT.java
@@ -17,23 +17,9 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.it.mysql.internal;
 
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
 import org.apache.shardingsphere.test.it.sql.parser.internal.InternalUnsupportedSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("MySQL")
 public final class InternalUnsupportedMySQLParserIT extends InternalUnsupportedSQLParserIT {
-    
-    public InternalUnsupportedMySQLParserIT(final InternalSQLParserTestParameter testParam) {
-        super(testParam);
-    }
-    
-    @Parameters(name = "{0}")
-    public static Collection<InternalSQLParserTestParameter> getTestParameters() {
-        return getTestParameters("MySQL");
-    }
 }
diff --git a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalUnsupportedOpenGaussParserIT.java b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalUnsupportedOpenGaussParserIT.java
index ccca7a27ff0..fa6fd40a05a 100644
--- a/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalUnsupportedOpenGaussParserIT.java
+++ b/sql-parser/dialect/opengauss/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/opengauss/internal/InternalUnsupportedOpenGaussParserIT.java
@@ -17,23 +17,9 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.it.opengauss.internal;
 
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
 import org.apache.shardingsphere.test.it.sql.parser.internal.InternalUnsupportedSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("openGauss")
 public final class InternalUnsupportedOpenGaussParserIT extends InternalUnsupportedSQLParserIT {
-    
-    public InternalUnsupportedOpenGaussParserIT(final InternalSQLParserTestParameter testParam) {
-        super(testParam);
-    }
-    
-    @Parameters(name = "{0}")
-    public static Collection<InternalSQLParserTestParameter> getTestParameters() {
-        return getTestParameters("openGauss");
-    }
 }
diff --git a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalUnsupportedOracleParserIT.java b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalUnsupportedOracleParserIT.java
index 9f9db2affd1..286f9910fbd 100644
--- a/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalUnsupportedOracleParserIT.java
+++ b/sql-parser/dialect/oracle/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/oracle/internal/InternalUnsupportedOracleParserIT.java
@@ -17,23 +17,9 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.it.oracle.internal;
 
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
 import org.apache.shardingsphere.test.it.sql.parser.internal.InternalUnsupportedSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("Oracle")
 public final class InternalUnsupportedOracleParserIT extends InternalUnsupportedSQLParserIT {
-    
-    public InternalUnsupportedOracleParserIT(final InternalSQLParserTestParameter testParam) {
-        super(testParam);
-    }
-    
-    @Parameters(name = "{0}")
-    public static Collection<InternalSQLParserTestParameter> getTestParameters() {
-        return getTestParameters("Oracle");
-    }
 }
diff --git a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalUnsupportedPostgreSQLParserIT.java b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalUnsupportedPostgreSQLParserIT.java
index 9911992c5ac..70d8799f4f6 100644
--- a/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalUnsupportedPostgreSQLParserIT.java
+++ b/sql-parser/dialect/postgresql/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/postgresql/internal/InternalUnsupportedPostgreSQLParserIT.java
@@ -17,23 +17,9 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.it.postgresql.internal;
 
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
 import org.apache.shardingsphere.test.it.sql.parser.internal.InternalUnsupportedSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("PostgreSQL")
 public final class InternalUnsupportedPostgreSQLParserIT extends InternalUnsupportedSQLParserIT {
-    
-    public InternalUnsupportedPostgreSQLParserIT(final InternalSQLParserTestParameter testParam) {
-        super(testParam);
-    }
-    
-    @Parameters(name = "{0}")
-    public static Collection<InternalSQLParserTestParameter> getTestParameters() {
-        return getTestParameters("PostgreSQL");
-    }
 }
diff --git a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalUnsupportedSQL92ParserIT.java b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalUnsupportedSQL92ParserIT.java
index 2b1dada83ce..752a09f286a 100644
--- a/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalUnsupportedSQL92ParserIT.java
+++ b/sql-parser/dialect/sql92/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sql92/internal/InternalUnsupportedSQL92ParserIT.java
@@ -17,23 +17,9 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.it.sql92.internal;
 
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
 import org.apache.shardingsphere.test.it.sql.parser.internal.InternalUnsupportedSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("SQL92")
 public final class InternalUnsupportedSQL92ParserIT extends InternalUnsupportedSQLParserIT {
-    
-    public InternalUnsupportedSQL92ParserIT(final InternalSQLParserTestParameter testParam) {
-        super(testParam);
-    }
-    
-    @Parameters(name = "{0}")
-    public static Collection<InternalSQLParserTestParameter> getTestParameters() {
-        return getTestParameters("SQL92");
-    }
 }
diff --git a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalUnsupportedSQLServerParserIT.java b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalUnsupportedSQLServerParserIT.java
index 4ec4588ff0e..f1d121af2e0 100644
--- a/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalUnsupportedSQLServerParserIT.java
+++ b/sql-parser/dialect/sqlserver/src/test/java/org/apache/shardingsphere/test/it/sql/parser/it/sqlserver/internal/InternalUnsupportedSQLServerParserIT.java
@@ -17,23 +17,9 @@
 
 package org.apache.shardingsphere.test.it.sql.parser.it.sqlserver.internal;
 
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserITSettings;
 import org.apache.shardingsphere.test.it.sql.parser.internal.InternalUnsupportedSQLParserIT;
-import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Collection;
-
-@RunWith(Parameterized.class)
+@InternalSQLParserITSettings("SQLServer")
 public final class InternalUnsupportedSQLServerParserIT extends InternalUnsupportedSQLParserIT {
-    
-    public InternalUnsupportedSQLServerParserIT(final InternalSQLParserTestParameter testParam) {
-        super(testParam);
-    }
-    
-    @Parameters(name = "{0}")
-    public static Collection<InternalSQLParserTestParameter> getTestParameters() {
-        return getTestParameters("SQLServer");
-    }
 }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalUnsupportedSQLParserIT.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalUnsupportedSQLParserIT.java
index 1e78503149e..c36601ee8b6 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalUnsupportedSQLParserIT.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/InternalUnsupportedSQLParserIT.java
@@ -19,46 +19,47 @@ package org.apache.shardingsphere.test.it.sql.parser.internal;
 
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
-import org.apache.shardingsphere.sql.parser.api.SQLVisitorEngine;
-import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.SQLCases;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.registry.UnsupportedSQLCasesRegistry;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.type.SQLCaseType;
-import org.junit.Test;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.ArgumentsProvider;
+import org.junit.jupiter.params.provider.ArgumentsSource;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Properties;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public abstract class InternalUnsupportedSQLParserIT {
     
     private static final SQLCases SQL_CASES = UnsupportedSQLCasesRegistry.getInstance().getCases();
     
-    private final String sqlCaseId;
-    
-    private final String databaseType;
-    
-    private final SQLCaseType sqlCaseType;
-    
-    public InternalUnsupportedSQLParserIT(final InternalSQLParserTestParameter testParam) {
-        sqlCaseId = testParam.getSqlCaseId();
-        databaseType = testParam.getDatabaseType();
-        sqlCaseType = testParam.getSqlCaseType();
-    }
-    
-    protected static Collection<InternalSQLParserTestParameter> getTestParameters(final String databaseType) {
-        return SQL_CASES.generateTestParameters(Collections.singleton(databaseType));
-    }
-    
-    @Test(expected = Exception.class)
-    // TODO should expect SQLParsingException only
-    public final void assertUnsupportedSQL() {
+    @ParameterizedTest(name = "{0} ({1}) -> {2}")
+    @ArgumentsSource(TestCaseArgumentsProvider.class)
+    public final void assertUnsupportedSQL(final String sqlCaseId, final SQLCaseType sqlCaseType, final String databaseType) {
         String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, Collections.emptyList());
-        String databaseType = "H2".equals(this.databaseType) ? "MySQL" : this.databaseType;
         CacheOption cacheOption = new CacheOption(128, 1024L);
-        ParseASTNode parseContext = new SQLParserEngine(databaseType, cacheOption).parse(sql, false);
-        // TODO remove SQLStatement sqlStatement =
-        SQLStatement sqlStatement = new SQLVisitorEngine(databaseType, "STATEMENT", true, new Properties()).visit(parseContext);
+        assertThrows(SQLParsingException.class, () -> new SQLParserEngine("H2".equals(databaseType) ? "MySQL" : databaseType, cacheOption).parse(sql, false));
+    }
+    
+    private static class TestCaseArgumentsProvider implements ArgumentsProvider {
+        
+        @Override
+        public Stream<? extends Arguments> provideArguments(final ExtensionContext extensionContext) {
+            InternalSQLParserITSettings settings = extensionContext.getRequiredTestClass().getAnnotation(InternalSQLParserITSettings.class);
+            return null == settings ? Stream.empty() : getTestParameters(Arrays.asList(settings.value())).stream();
+        }
+        
+        private Collection<Arguments> getTestParameters(final Collection<String> databaseTypes) {
+            return SQL_CASES.generateTestParameters(databaseTypes).stream()
+                    .map(each -> Arguments.arguments(each.getSqlCaseId(), each.getSqlCaseType(), each.getDatabaseType())).collect(Collectors.toList());
+        }
     }
 }