mirror of https://github.com/apache/nifi.git
NIFI-8478 Addressed i18n test issues; CI supplies locale to surefire
This closes #5040 Signed-off-by: David Handermann <exceptionfactory@apache.org>
This commit is contained in:
parent
e1697a8d58
commit
cc554a6b11
|
@ -91,9 +91,16 @@ jobs:
|
||||||
df -h
|
df -h
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
env:
|
env:
|
||||||
MAVEN_OPTS: -Xmx2g -XX:ReservedCodeCacheSize=1g -XX:+UseG1GC -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Dmaven.surefire.arguments="-Duser.language=en -Duser.region=AU -Duser.timezone=Australia/Melbourne" -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
|
MAVEN_OPTS: -Xmx2g -XX:ReservedCodeCacheSize=1g -XX:+UseG1GC -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Duser.language=en -Duser.country=AU -Duser.region=AU -Duser.timezone=Australia/Melbourne -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
|
||||||
run: |
|
run: |
|
||||||
mvn -V -T 0.7C package verify -B -Pcontrib-check,include-grpc -Ddir-only -ntp -ff -pl -nifi-assembly,-nifi-toolkit/nifi-toolkit-assembly,-nifi-system-tests -nsu
|
mvn -V -T 0.7C package verify -B -Pcontrib-check,include-grpc -Ddir-only -ntp -ff -pl -nifi-assembly,-nifi-toolkit/nifi-toolkit-assembly,-nifi-system-tests -nsu
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: surefire-reports-en
|
||||||
|
path: "**/surefire-reports/TEST-*.xml"
|
||||||
|
retention-days: 1
|
||||||
- name: Disk After Build
|
- name: Disk After Build
|
||||||
run: |
|
run: |
|
||||||
df -h
|
df -h
|
||||||
|
@ -167,9 +174,16 @@ jobs:
|
||||||
df -h
|
df -h
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
env:
|
env:
|
||||||
MAVEN_OPTS: -Xmx2g -XX:ReservedCodeCacheSize=1g -XX:+UseG1GC -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Dmaven.surefire.arguments="-Duser.language=ja -Duser.region=JP -Duser.timezone=Asia/Tokyo" -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
|
MAVEN_OPTS: -Xmx2g -XX:ReservedCodeCacheSize=1g -XX:+UseG1GC -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Duser.language=ja -Duser.country=JP -Duser.region=JP -Duser.timezone=Asia/Tokyo -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
|
||||||
run: |
|
run: |
|
||||||
mvn -V -T 0.7C package verify -B -Pcontrib-check,include-grpc -Ddir-only -ntp -ff -pl -nifi-assembly,-nifi-toolkit/nifi-toolkit-assembly,-nifi-system-tests -nsu
|
mvn -V -T 0.7C package verify -B -Pcontrib-check,include-grpc -Ddir-only -ntp -ff -pl -nifi-assembly,-nifi-toolkit/nifi-toolkit-assembly,-nifi-system-tests -nsu
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: surefire-reports-ja
|
||||||
|
path: "**/surefire-reports/TEST-*.xml"
|
||||||
|
retention-days: 1
|
||||||
- name: Disk After Build
|
- name: Disk After Build
|
||||||
run: |
|
run: |
|
||||||
df -h
|
df -h
|
||||||
|
@ -234,6 +248,16 @@ jobs:
|
||||||
java-version: '8'
|
java-version: '8'
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
env:
|
env:
|
||||||
MAVEN_OPTS: -Xmx2g -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Dmaven.surefire.arguments="-Duser.language=fr -Duser.region=FR -Duser.timezone=Europe/Paris" -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
|
MAVEN_OPTS: -Xmx2g -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Duser.language=fr -Duser.country=FR -Duser.region=FR -Duser.timezone=Europe/Paris -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false
|
||||||
run: |
|
run: |
|
||||||
mvn -V -T 0.7C package -B -Ddir-only -ntp -ff -pl -nifi-assembly -pl -nifi-system-tests -nsu
|
mvn -V -T 0.7C package -B -Ddir-only -ntp -ff -pl -nifi-assembly -pl -nifi-system-tests -nsu
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
if: ${{ false }}
|
||||||
|
with:
|
||||||
|
name: surefire-reports-fr
|
||||||
|
path: |
|
||||||
|
'**/surefire-reports/TEST-*.xml'
|
||||||
|
'!**/node_modules/**'
|
||||||
|
'!**/nifi-nar-bundles/nifi-standard-bundle/nifi-jolt-transform-json-ui/**'
|
||||||
|
retention-days: 1
|
||||||
|
|
|
@ -94,7 +94,7 @@ class XmlUtilsTest {
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
logger.expected(msg)
|
logger.expected(msg)
|
||||||
assert msg =~ "SAXParseException.* DOCTYPE is disallowed when the feature"
|
assert msg =~ "SAXParseException.*DOCTYPE"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership.
|
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
* (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.nifi.util.locale;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Assume;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.text.DecimalFormatSymbols;
|
||||||
|
import java.text.NumberFormat;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testing of the test suite environment {@link java.util.Locale}. The locales specified
|
||||||
|
* in ".github/workflows/ci-workflow.yml" are exercised. This test is inert when run in alternate locales.
|
||||||
|
*/
|
||||||
|
public class TestLocaleOfTestSuite {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test behaviors associated with non-standard ".github/workflows/ci-workflow.yml" {@link java.util.Locale} "en-AU".
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testLocaleCI_EN_AU() {
|
||||||
|
final Locale locale = Locale.getDefault();
|
||||||
|
Assume.assumeTrue(locale.toLanguageTag().equals("en-AU"));
|
||||||
|
|
||||||
|
final String runtimeJavaVersion = System.getProperty("java.version");
|
||||||
|
final boolean isJava8 = Pattern.compile("1\\.8.+").matcher(runtimeJavaVersion).matches();
|
||||||
|
final String expected = (isJava8 ? "E" : "e"); // tested in Java 8 and Java 11
|
||||||
|
|
||||||
|
Assert.assertEquals(expected, DecimalFormatSymbols.getInstance(locale).getExponentSeparator());
|
||||||
|
Assert.assertEquals("1,000", NumberFormat.getInstance(locale).format(1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test behaviors associated with ".github/workflows/ci-workflow.yml" {@link java.util.Locale#JAPAN}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testLocaleCI_JA_JP() {
|
||||||
|
final Locale locale = Locale.getDefault();
|
||||||
|
Assume.assumeTrue(locale.toLanguageTag().equals("ja-JP"));
|
||||||
|
|
||||||
|
Assert.assertEquals("E", DecimalFormatSymbols.getInstance(locale).getExponentSeparator());
|
||||||
|
Assert.assertEquals("1,000", NumberFormat.getInstance(locale).format(1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test behaviors associated with ".github/workflows/ci-workflow.yml" {@link java.util.Locale#FRANCE}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testLocaleCI_FR_FR() {
|
||||||
|
final Locale locale = Locale.getDefault();
|
||||||
|
Assume.assumeTrue(locale.toLanguageTag().equals("fr-FR"));
|
||||||
|
|
||||||
|
Assert.assertEquals("E", DecimalFormatSymbols.getInstance(locale).getExponentSeparator());
|
||||||
|
Assert.assertEquals("1\u00a0000", NumberFormat.getInstance(locale).format(1000));
|
||||||
|
}
|
||||||
|
}
|
|
@ -29,7 +29,9 @@ import org.junit.Test;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
import java.text.NumberFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
@ -88,8 +90,7 @@ public class LongRunningTaskMonitorTest {
|
||||||
assertEquals("Long running task detected on processor [id=Processor-1-ID, name=Processor-1-Name, type=Processor-1-Type]. Task time: 60 seconds. Stack trace:\n" + STACKTRACE,
|
assertEquals("Long running task detected on processor [id=Processor-1-ID, name=Processor-1-Name, type=Processor-1-Type]. Task time: 60 seconds. Stack trace:\n" + STACKTRACE,
|
||||||
logMessages.getAllValues().get(0));
|
logMessages.getAllValues().get(0));
|
||||||
assertEquals("Long running task detected on processor [id=Processor-2-ID, name=Processor-2-Name, type=Processor-2-Type]. Task time: 1,000 seconds. Stack trace:\n" + STACKTRACE,
|
assertEquals("Long running task detected on processor [id=Processor-2-ID, name=Processor-2-Name, type=Processor-2-Type]. Task time: 1,000 seconds. Stack trace:\n" + STACKTRACE,
|
||||||
logMessages.getAllValues().get(1));
|
logMessages.getAllValues().get(1).replace(NumberFormat.getInstance(Locale.getDefault()).format(1000), NumberFormat.getInstance(Locale.US).format(1000)));
|
||||||
|
|
||||||
ArgumentCaptor<String> controllerBulletinMessages = ArgumentCaptor.forClass(String.class);
|
ArgumentCaptor<String> controllerBulletinMessages = ArgumentCaptor.forClass(String.class);
|
||||||
verify(eventReporter, times(2)).reportEvent(eq(Severity.WARNING), eq("Long Running Task"), controllerBulletinMessages.capture());
|
verify(eventReporter, times(2)).reportEvent(eq(Severity.WARNING), eq("Long Running Task"), controllerBulletinMessages.capture());
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
|
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
|
||||||
char decimalSeparator = decimalFormatSymbols.getDecimalSeparator();
|
char decimalSeparator = decimalFormatSymbols.getDecimalSeparator();
|
||||||
char groupingSeparator = decimalFormatSymbols.getGroupingSeparator();
|
char groupingSeparator = decimalFormatSymbols.getGroupingSeparator();
|
||||||
ff.assertContentEquals("Numbers,Timestamps,Money\n" +
|
ff.assertContentEquals(("Numbers,Timestamps,Money\n" +
|
||||||
addQuotingIfNeeded(String.format("1234%1$s456", decimalSeparator)) + "," + DateTimeFormatter.ofPattern("d/M/yy").format(localDt) + "," +
|
addQuotingIfNeeded(String.format("1234%1$s456", decimalSeparator)) + "," + DateTimeFormatter.ofPattern("d/M/yy").format(localDt) + "," +
|
||||||
addQuotingIfNeeded(String.format("$ 123%1$s45", decimalSeparator)) + "\n" +
|
addQuotingIfNeeded(String.format("$ 123%1$s45", decimalSeparator)) + "\n" +
|
||||||
addQuotingIfNeeded(String.format("1234%1$s46", decimalSeparator)) + "," + DateTimeFormatter.ofPattern("hh:mm:ss a").format(localDt) + "," +
|
addQuotingIfNeeded(String.format("1234%1$s46", decimalSeparator)) + "," + DateTimeFormatter.ofPattern("hh:mm:ss a").format(localDt) + "," +
|
||||||
|
@ -151,7 +151,15 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
addQuotingIfNeeded(String.format("9%1$s88E+08", decimalSeparator)) + "," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + "," +
|
addQuotingIfNeeded(String.format("9%1$s88E+08", decimalSeparator)) + "," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + "," +
|
||||||
addQuotingIfNeeded(String.format("¥ 1%2$s023%1$s45", decimalSeparator, groupingSeparator)) + "\n" +
|
addQuotingIfNeeded(String.format("¥ 1%2$s023%1$s45", decimalSeparator, groupingSeparator)) + "\n" +
|
||||||
addQuotingIfNeeded(String.format("9%1$s877E+08", decimalSeparator)) + ",,\n" +
|
addQuotingIfNeeded(String.format("9%1$s877E+08", decimalSeparator)) + ",,\n" +
|
||||||
addQuotingIfNeeded(String.format("9%1$s8765E+08", decimalSeparator)) + ",,\n");
|
addQuotingIfNeeded(String.format("9%1$s8765E+08", decimalSeparator)) + ",,\n").replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Workaround for interaction between {@link DecimalFormatSymbols} and use of custom {@link java.util.Locale}.
|
||||||
|
*/
|
||||||
|
private static String getExponentSeparator(final DecimalFormatSymbols decimalFormatSymbols) {
|
||||||
|
final String exponentSeparator = decimalFormatSymbols.getExponentSeparator();
|
||||||
|
return (exponentSeparator.equals("e") ? "e" : exponentSeparator + "+");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -181,7 +189,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560," + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + ",£ 1%2$s023%1$s45\n" +
|
"1%2$s234%1$s4560," + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + ",£ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s88E+08," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + ",¥ 1%2$s023%1$s45\n" +
|
"9%1$s88E+08," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + ",¥ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s877E+08,,\n" +
|
"9%1$s877E+08,,\n" +
|
||||||
"9%1$s8765E+08,,\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08,,\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -213,7 +221,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560," + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + ",£ 1%2$s023%1$s45\n" +
|
"1%2$s234%1$s4560," + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + ",£ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s88E+08," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + ",¥ 1%2$s023%1$s45\n" +
|
"9%1$s88E+08," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + ",¥ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s877E+08,,\n" +
|
"9%1$s877E+08,,\n" +
|
||||||
"9%1$s8765E+08,,\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08,,\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -244,7 +252,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560,£ 1%2$s023%1$s45\n" +
|
"1%2$s234%1$s4560,£ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s88E+08,¥ 1%2$s023%1$s45\n" +
|
"9%1$s88E+08,¥ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s877E+08,\n" +
|
"9%1$s877E+08,\n" +
|
||||||
"9%1$s8765E+08,\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08,\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -277,7 +285,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560,£ 1%2$s023%1$s45\n" +
|
"1%2$s234%1$s4560,£ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s88E+08,¥ 1%2$s023%1$s45\n" +
|
"9%1$s88E+08,¥ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s877E+08,\n" +
|
"9%1$s877E+08,\n" +
|
||||||
"9%1$s8765E+08,\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08,\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -313,7 +321,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560|" + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + "|£ 1%2$s023%1$s45\r\n" +
|
"1%2$s234%1$s4560|" + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + "|£ 1%2$s023%1$s45\r\n" +
|
||||||
"9%1$s88E+08|" + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + "|¥ 1%2$s023%1$s45\r\n" +
|
"9%1$s88E+08|" + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + "|¥ 1%2$s023%1$s45\r\n" +
|
||||||
"9%1$s877E+08||\r\n" +
|
"9%1$s877E+08||\r\n" +
|
||||||
"9%1$s8765E+08||\r\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08||\r\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -350,7 +358,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560|" + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + "|£ 1%2$s023%1$s45\n" +
|
"1%2$s234%1$s4560|" + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + "|£ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s88E+08|" + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + "|¥ 1%2$s023%1$s45\n" +
|
"9%1$s88E+08|" + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + "|¥ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s877E+08||\n" +
|
"9%1$s877E+08||\n" +
|
||||||
"9%1$s8765E+08||\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08||\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -378,7 +386,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
|
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
|
||||||
char decimalSeparator = decimalFormatSymbols.getDecimalSeparator();
|
char decimalSeparator = decimalFormatSymbols.getDecimalSeparator();
|
||||||
char groupingSeparator = decimalFormatSymbols.getGroupingSeparator();
|
char groupingSeparator = decimalFormatSymbols.getGroupingSeparator();
|
||||||
ff.assertContentEquals("'Numbers','Timestamps','Money'\n" +
|
ff.assertContentEquals(("'Numbers','Timestamps','Money'\n" +
|
||||||
addQuotingIfNeeded(String.format("1234%1$s456", decimalSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
|
addQuotingIfNeeded(String.format("1234%1$s456", decimalSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
|
||||||
DateTimeFormatter.ofPattern("d/M/yy").format(localDt) + quoteCharValue + "," +
|
DateTimeFormatter.ofPattern("d/M/yy").format(localDt) + quoteCharValue + "," +
|
||||||
addQuotingIfNeeded(String.format("$ 123%1$s45", decimalSeparator), ",", quoteCharValue, true) + "\n" +
|
addQuotingIfNeeded(String.format("$ 123%1$s45", decimalSeparator), ",", quoteCharValue, true) + "\n" +
|
||||||
|
@ -398,7 +406,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + quoteCharValue + "," +
|
DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + quoteCharValue + "," +
|
||||||
addQuotingIfNeeded(String.format("¥ 1%2$s023%1$s45", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "\n" +
|
addQuotingIfNeeded(String.format("¥ 1%2$s023%1$s45", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "\n" +
|
||||||
addQuotingIfNeeded(String.format("9%1$s877E+08", decimalSeparator), ",", quoteCharValue, true) + ",,\n" +
|
addQuotingIfNeeded(String.format("9%1$s877E+08", decimalSeparator), ",", quoteCharValue, true) + ",,\n" +
|
||||||
addQuotingIfNeeded(String.format("9%1$s8765E+08", decimalSeparator), ",", quoteCharValue, true) + ",,\n");
|
addQuotingIfNeeded(String.format("9%1$s8765E+08", decimalSeparator), ",", quoteCharValue, true) + ",,\n").replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -435,7 +443,7 @@ public class ConvertExcelToCSVProcessorTest {
|
||||||
"1%2$s234%1$s4560," + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + ",£ 1%2$s023%1$s45\n" +
|
"1%2$s234%1$s4560," + DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + ",£ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s88E+08," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + ",¥ 1%2$s023%1$s45\n" +
|
"9%1$s88E+08," + DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + ",¥ 1%2$s023%1$s45\n" +
|
||||||
"9%1$s877E+08,,\n" +
|
"9%1$s877E+08,,\n" +
|
||||||
"9%1$s8765E+08,,\n", decimalSeparator, groupingSeparator));
|
"9%1$s8765E+08,,\n", decimalSeparator, groupingSeparator).replace("E+", getExponentSeparator(decimalFormatSymbols)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -40,6 +40,7 @@ import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -556,7 +557,8 @@ public class InvokeHTTP extends AbstractProcessor {
|
||||||
REL_SUCCESS_REQ, REL_RESPONSE, REL_RETRY, REL_NO_RETRY, REL_FAILURE)));
|
REL_SUCCESS_REQ, REL_RESPONSE, REL_RETRY, REL_NO_RETRY, REL_FAILURE)));
|
||||||
|
|
||||||
// RFC 2616 Date Time Formatter with hard-coded GMT Zone
|
// RFC 2616 Date Time Formatter with hard-coded GMT Zone
|
||||||
private static final DateTimeFormatter RFC_2616_DATE_TIME = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'");
|
// https://tools.ietf.org/html/rfc2616#section-3.3 - date format header should not be localized
|
||||||
|
private static final DateTimeFormatter RFC_2616_DATE_TIME = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
|
||||||
|
|
||||||
// Multiple Header Delimiter
|
// Multiple Header Delimiter
|
||||||
private static final String MULTIPLE_HEADER_DELIMITER = ", ";
|
private static final String MULTIPLE_HEADER_DELIMITER = ", ";
|
||||||
|
|
5
pom.xml
5
pom.xml
|
@ -435,7 +435,10 @@
|
||||||
<redirectTestOutputToFile>true</redirectTestOutputToFile>
|
<redirectTestOutputToFile>true</redirectTestOutputToFile>
|
||||||
<argLine combine.children="append">-Xmx1G
|
<argLine combine.children="append">-Xmx1G
|
||||||
-Djava.net.preferIPv4Stack=true
|
-Djava.net.preferIPv4Stack=true
|
||||||
${maven.surefire.arguments}
|
-Duser.language=${user.language}
|
||||||
|
-Duser.country=${user.country}
|
||||||
|
-Duser.region=${user.region}
|
||||||
|
-Duser.timezone=${user.timezone}
|
||||||
-Dfile.encoding=UTF-8</argLine>
|
-Dfile.encoding=UTF-8</argLine>
|
||||||
</configuration>
|
</configuration>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
Loading…
Reference in New Issue