This is an automated email from the ASF dual-hosted git repository.
liuxun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new af3930d0d [#5928] fix(CLI): Fix columns details command produces no
output (#5945)
af3930d0d is described below
commit af3930d0d762f6c7ca18f1f8a9097f4c31ce7d8a
Author: Lord of Abyss <[email protected]>
AuthorDate: Mon Dec 23 17:07:33 2024 +0800
[#5928] fix(CLI): Fix columns details command produces no output (#5945)
### What changes were proposed in this pull request?
Fix columns details command produces no output, when command without
--audit option, cli should tell user that command is not support.
### Why are the changes needed?
Fix: #5928
### Does this PR introduce _any_ user-facing change?
NO
### How was this patch tested?
local test.
---
.../apache/gravitino/cli/GravitinoCommandLine.java | 3 ++
.../apache/gravitino/cli/TestColumnCommands.java | 47 ++++++++++++++++++++++
2 files changed, 50 insertions(+)
diff --git
a/clients/cli/src/main/java/org/apache/gravitino/cli/GravitinoCommandLine.java
b/clients/cli/src/main/java/org/apache/gravitino/cli/GravitinoCommandLine.java
index 9545b2a66..bc825443e 100644
---
a/clients/cli/src/main/java/org/apache/gravitino/cli/GravitinoCommandLine.java
+++
b/clients/cli/src/main/java/org/apache/gravitino/cli/GravitinoCommandLine.java
@@ -777,6 +777,9 @@ public class GravitinoCommandLine extends
TestableCommandLine {
case CommandActions.DETAILS:
if (line.hasOption(GravitinoOptions.AUDIT)) {
newColumnAudit(url, ignore, metalake, catalog, schema, table,
column).handle();
+ } else {
+ System.err.println(ErrorMessages.UNSUPPORTED_ACTION);
+ Main.exit(-1);
}
break;
diff --git
a/clients/cli/src/test/java/org/apache/gravitino/cli/TestColumnCommands.java
b/clients/cli/src/test/java/org/apache/gravitino/cli/TestColumnCommands.java
index e26759e2d..2eb4c5364 100644
--- a/clients/cli/src/test/java/org/apache/gravitino/cli/TestColumnCommands.java
+++ b/clients/cli/src/test/java/org/apache/gravitino/cli/TestColumnCommands.java
@@ -19,12 +19,18 @@
package org.apache.gravitino.cli;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.nio.charset.StandardCharsets;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
import org.apache.gravitino.cli.commands.AddColumn;
@@ -38,17 +44,30 @@ import
org.apache.gravitino.cli.commands.UpdateColumnDefault;
import org.apache.gravitino.cli.commands.UpdateColumnName;
import org.apache.gravitino.cli.commands.UpdateColumnNullability;
import org.apache.gravitino.cli.commands.UpdateColumnPosition;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class TestColumnCommands {
private CommandLine mockCommandLine;
private Options mockOptions;
+ private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
+ private final ByteArrayOutputStream errContent = new ByteArrayOutputStream();
+ private final PrintStream originalOut = System.out;
+ private final PrintStream originalErr = System.err;
@BeforeEach
void setUp() {
mockCommandLine = mock(CommandLine.class);
mockOptions = mock(Options.class);
+ System.setOut(new PrintStream(outContent));
+ System.setErr(new PrintStream(errContent));
+ }
+
+ @AfterEach
+ public void restoreStreams() {
+ System.setOut(originalOut);
+ System.setErr(originalErr);
}
@Test
@@ -98,6 +117,34 @@ class TestColumnCommands {
verify(mockAudit).handle();
}
+ @Test
+ void testColumnDetailsCommand() {
+ Main.useExit = false;
+
when(mockCommandLine.hasOption(GravitinoOptions.METALAKE)).thenReturn(true);
+
when(mockCommandLine.getOptionValue(GravitinoOptions.METALAKE)).thenReturn("metalake_demo");
+ when(mockCommandLine.hasOption(GravitinoOptions.NAME)).thenReturn(true);
+ when(mockCommandLine.getOptionValue(GravitinoOptions.NAME))
+ .thenReturn("catalog.schema.users.name");
+ GravitinoCommandLine commandLine =
+ spy(
+ new GravitinoCommandLine(
+ mockCommandLine, mockOptions, CommandEntities.COLUMN,
CommandActions.DETAILS));
+
+ assertThrows(RuntimeException.class, commandLine::handleCommandLine);
+ verify(commandLine, never())
+ .newColumnAudit(
+ GravitinoCommandLine.DEFAULT_URL,
+ false,
+ "metalake_demo",
+ "catalog",
+ "schema",
+ "users",
+ "name");
+
+ String output = new String(errContent.toByteArray(),
StandardCharsets.UTF_8).trim();
+ assertEquals(output, ErrorMessages.UNSUPPORTED_ACTION);
+ }
+
@Test
void testAddColumn() {
AddColumn mockAddColumn = mock(AddColumn.class);