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

mpochatkin pushed a commit to branch IGNITE-27201
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 18d20272681a6b4d3b0c0f8eac41c982a42540f4
Author: Pochatkin Mikhail <[email protected]>
AuthorDate: Fri Jan 9 15:49:15 2026 +0300

    Fixes
---
 .../unit/ItNodeUnitStructureCommandTest.java       | 41 +++++++++++++++++++++-
 .../commands/node/unit/NodeUnitReplCommand.java    |  4 ++-
 .../cli/decorators/UnitStructureDecorator.java     | 18 +++++-----
 .../cli/decorators/UnitStructureDecoratorTest.java |  5 ++-
 4 files changed, 54 insertions(+), 14 deletions(-)

diff --git 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/unit/ItNodeUnitStructureCommandTest.java
 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/unit/ItNodeUnitStructureCommandTest.java
index 7231daa375a..9642d4af31a 100644
--- 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/unit/ItNodeUnitStructureCommandTest.java
+++ 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/unit/ItNodeUnitStructureCommandTest.java
@@ -40,6 +40,24 @@ public class ItNodeUnitStructureCommandTest extends 
CliIntegrationTest {
         testFile = 
Files.createFile(testDirectory.resolve("test.txt")).toString();
         Files.createFile(testDirectory.resolve("test2.txt"));
         Files.createFile(testDirectory.resolve("test3.txt"));
+
+        // Files with special characters
+        Files.createFile(testDirectory.resolve("file with spaces.txt"));
+        Files.createFile(testDirectory.resolve("file-with-dashes.txt"));
+        Files.createFile(testDirectory.resolve("file_with_underscores.txt"));
+        Files.createFile(testDirectory.resolve("file.multiple.dots.txt"));
+        Files.createFile(testDirectory.resolve("file(with)parentheses.txt"));
+        Files.createFile(testDirectory.resolve("UPPERCASE.TXT"));
+        Files.createFile(testDirectory.resolve("MixedCase.Txt"));
+
+        // Subdirectory with files
+        Path subDir = 
Files.createDirectory(testDirectory.resolve("sub-directory"));
+        Files.createFile(subDir.resolve("nested file.txt"));
+        Files.createFile(subDir.resolve("nested-file.txt"));
+
+        // Deeply nested directory
+        Path deepDir = 
Files.createDirectories(testDirectory.resolve("level1").resolve("level2"));
+        Files.createFile(deepDir.resolve("deep file.txt"));
     }
 
     @Test
@@ -65,6 +83,19 @@ public class ItNodeUnitStructureCommandTest extends 
CliIntegrationTest {
                 () -> assertOutputContains("test.txt"),
                 () -> assertOutputContains("test2.txt"),
                 () -> assertOutputContains("test3.txt"),
+                () -> assertOutputContains("file with spaces.txt"),
+                () -> assertOutputContains("file-with-dashes.txt"),
+                () -> assertOutputContains("file_with_underscores.txt"),
+                () -> assertOutputContains("file.multiple.dots.txt"),
+                () -> assertOutputContains("file(with)parentheses.txt"),
+                () -> assertOutputContains("UPPERCASE.TXT"),
+                () -> assertOutputContains("MixedCase.Txt"),
+                () -> assertOutputContains("sub-directory"),
+                () -> assertOutputContains("nested file.txt"),
+                () -> assertOutputContains("nested-file.txt"),
+                () -> assertOutputContains("level1"),
+                () -> assertOutputContains("level2"),
+                () -> assertOutputContains("deep file.txt"),
                 () -> assertOutputContains(" B)") // File size display
         );
     }
@@ -90,7 +121,15 @@ public class ItNodeUnitStructureCommandTest extends 
CliIntegrationTest {
                 this::assertErrOutputIsEmpty,
                 () -> assertOutputContains("test.txt"),
                 () -> assertOutputContains("test2.txt"),
-                () -> assertOutputContains("test3.txt")
+                () -> assertOutputContains("test3.txt"),
+                () -> assertOutputContains("file with spaces.txt"),
+                () -> assertOutputContains("file-with-dashes.txt"),
+                () -> assertOutputContains("file_with_underscores.txt"),
+                () -> assertOutputContains("file.multiple.dots.txt"),
+                () -> assertOutputContains("file(with)parentheses.txt"),
+                () -> assertOutputContains("sub-directory"),
+                () -> assertOutputContains("level1"),
+                () -> assertOutputContains("level2")
         );
     }
 
diff --git 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitReplCommand.java
 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitReplCommand.java
index 9f364215e92..3c5616b0ea8 100644
--- 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitReplCommand.java
+++ 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/unit/NodeUnitReplCommand.java
@@ -21,6 +21,8 @@ import org.apache.ignite.internal.cli.commands.BaseCommand;
 import picocli.CommandLine.Command;
 
 /** Manages deployment units on node level in REPL mode. */
-@Command(name = "unit", subcommands = {NodeUnitListReplCommand.class, 
NodeUnitStructureReplCommand.class}, description = "Manages deployment units")
+@Command(name = "unit",
+        subcommands = {NodeUnitListReplCommand.class, 
NodeUnitStructureReplCommand.class},
+        description = "Manages deployment units")
 public class NodeUnitReplCommand extends BaseCommand {
 }
diff --git 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecorator.java
 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecorator.java
index f2e5c9fae90..868a9cab736 100644
--- 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecorator.java
+++ 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecorator.java
@@ -47,7 +47,7 @@ public class UnitStructureDecorator implements 
Decorator<UnitFolder, TerminalOut
         if (plain) {
             renderPlain(data, sb, "");
         } else {
-            sb.append(data.getName()).append("\n");
+            sb.append(data.getName()).append('\n');
             renderTree(data.getChildren(), sb, "");
         }
 
@@ -73,12 +73,12 @@ public class UnitStructureDecorator implements 
Decorator<UnitFolder, TerminalOut
 
             if (actualInstance instanceof UnitFile) {
                 UnitFile file = (UnitFile) actualInstance;
-                sb.append(prefix).append(connector).append(file.getName());
-                sb.append(" (").append(readableSize(file.getSize(), 
false)).append(")");
-                sb.append("\n");
+                sb.append(prefix).append(connector).append(file.getName())
+                        .append(" (").append(readableSize(file.getSize(), 
false)).append(')')
+                        .append('\n');
             } else if (actualInstance instanceof UnitFolder) {
                 UnitFolder folder = (UnitFolder) actualInstance;
-                
sb.append(prefix).append(connector).append(folder.getName()).append("\n");
+                
sb.append(prefix).append(connector).append(folder.getName()).append('\n');
                 String newPrefix = prefix + (isLast ? TREE_SPACE : 
TREE_VERTICAL);
                 renderTree(folder.getChildren(), sb, newPrefix);
             }
@@ -105,11 +105,11 @@ public class UnitStructureDecorator implements 
Decorator<UnitFolder, TerminalOut
                 UnitFile file = (UnitFile) actualInstance;
                 sb.append(prefix);
                 if (!prefix.isEmpty()) {
-                    sb.append("/");
+                    sb.append('/');
                 }
-                sb.append(file.getName());
-                sb.append(" ").append(file.getSize());
-                sb.append("\n");
+                sb.append(file.getName())
+                        .append(' ').append(file.getSize())
+                        .append('\n');
             } else if (actualInstance instanceof UnitFolder) {
                 UnitFolder subFolder = (UnitFolder) actualInstance;
                 String newPrefix = prefix.isEmpty() ? subFolder.getName() : 
prefix + "/" + subFolder.getName();
diff --git 
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecoratorTest.java
 
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecoratorTest.java
index b5e7001a6fc..35cb327bdff 100644
--- 
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecoratorTest.java
+++ 
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/decorators/UnitStructureDecoratorTest.java
@@ -21,6 +21,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.not;
 
+import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.rest.client.model.UnitEntry;
 import org.apache.ignite.rest.client.model.UnitFile;
@@ -168,14 +169,12 @@ class UnitStructureDecoratorTest {
     }
 
     private UnitFolder createFolderWithFiles(String name, UnitFile... files) {
-        List<UnitEntry> children = new java.util.ArrayList<>();
-        long totalSize = 0;
+        List<UnitEntry> children = new ArrayList<>();
 
         for (UnitFile file : files) {
             UnitEntry entry = new UnitEntry();
             entry.setActualInstance(file);
             children.add(entry);
-            totalSize += file.getSize();
         }
 
         return new UnitFolder()

Reply via email to