This is an automated email from the ASF dual-hosted git repository.
SvenO3 pushed a commit to branch
4564-ensure-correct-escaping-and-quoting-of-string-values-in-csv-export
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to
refs/heads/4564-ensure-correct-escaping-and-quoting-of-string-values-in-csv-export
by this push:
new be82944796 Add tests
be82944796 is described below
commit be829447965a2ddc254a11c962e6f5e264e2d502
Author: Sven Oehler <[email protected]>
AuthorDate: Tue Jun 23 10:04:53 2026 +0200
Add tests
---
.../export/TestConfiguredCsvOutputWriter.java | 24 +++++++++++++++
.../dataexplorer/export/TestCsvItemGenerator.java | 34 ++++++++++++++++++++++
2 files changed, 58 insertions(+)
diff --git
a/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestConfiguredCsvOutputWriter.java
b/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestConfiguredCsvOutputWriter.java
index 15a6b66e28..60c3b67388 100644
---
a/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestConfiguredCsvOutputWriter.java
+++
b/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestConfiguredCsvOutputWriter.java
@@ -25,8 +25,10 @@ import org.junit.jupiter.api.Test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
import java.util.HashMap;
+import static
org.apache.streampipes.model.datalake.param.SupportedRestQueryParams.QP_CSV_DELIMITER;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestConfiguredCsvOutputWriter extends TestConfiguredOutputWriter {
@@ -49,4 +51,26 @@ public class TestConfiguredCsvOutputWriter extends
TestConfiguredOutputWriter {
assertEquals(Expected, outputStream.toString(StandardCharsets.UTF_8));
}
}
+
+ @Test
+ public void testCsvOutputWriterEscapesConfiguredDelimiter() throws
IOException {
+ var writer = new ConfiguredCsvOutputWriter();
+ var params = new HashMap<String, String>();
+ params.put(QP_CSV_DELIMITER, "semicolon");
+ writer.configure(null, new ProvidedRestQueryParams(null, params), true);
+ var columns = Arrays.asList("time", "string;header");
+ var row = Arrays.<Object>asList(1781515964488L, "abc=;,");
+
+ try (var outputStream = new ByteArrayOutputStream()) {
+ writer.beforeFirstItem(outputStream);
+
+ writer.writeItem(outputStream, row, columns, true);
+
+ writer.afterLastItem(outputStream);
+ assertEquals(
+ "time;\"string;header\"\n1781515964488;\"abc=;,\"\n",
+ outputStream.toString(StandardCharsets.UTF_8)
+ );
+ }
+ }
}
diff --git
a/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestCsvItemGenerator.java
b/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestCsvItemGenerator.java
index d1b088bcd3..2efa579c41 100644
---
a/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestCsvItemGenerator.java
+++
b/streampipes-data-explorer-export/src/test/java/org/apache/streampipes/dataexplorer/export/TestCsvItemGenerator.java
@@ -22,6 +22,8 @@ import
org.apache.streampipes.dataexplorer.export.item.CsvItemGenerator;
import org.junit.jupiter.api.Test;
+import java.util.Arrays;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestCsvItemGenerator extends TestItemGenerator {
@@ -46,4 +48,36 @@ public class TestCsvItemGenerator extends TestItemGenerator {
assertEquals(ExpectedSemicolon, result);
}
+
+ @Test
+ public void testCsvItemWriterEscapesSpecialCharactersCommaSeparated() {
+ var writer = new CsvItemGenerator(",");
+ var row = Arrays.<Object>asList(
+ 1668578077051L,
+ "abc=;,",
+ "quoted \"value\"",
+ "line\nbreak"
+ );
+ var columns = Arrays.asList("time", "string", "quoted", "multiline");
+
+ String result = writer.createItem(row, columns);
+
+ assertEquals("1668578077051,\"abc=;,\",\"quoted
\"\"value\"\"\",\"line\nbreak\"", result);
+ }
+
+ @Test
+ public void testCsvItemWriterEscapesSpecialCharactersSemicolonSeparated() {
+ var writer = new CsvItemGenerator(";");
+ var row = Arrays.<Object>asList(
+ 1668578077051L,
+ "abc=;,",
+ "quoted \"value\"",
+ "line\nbreak"
+ );
+ var columns = Arrays.asList("time", "string", "quoted", "multiline");
+
+ String result = writer.createItem(row, columns);
+
+ assertEquals("1668578077051;\"abc=;,\";\"quoted
\"\"value\"\"\";\"line\nbreak\"", result);
+ }
}