]> source.dussan.org Git - poi.git/commitdiff
Prevent some unit-tests from failing when non-English local is used in Maven run
authorDominik Stadler <centic@apache.org>
Sun, 25 Oct 2020 07:21:34 +0000 (07:21 +0000)
committerDominik Stadler <centic@apache.org>
Sun, 25 Oct 2020 07:21:34 +0000 (07:21 +0000)
Also improve the error message when parsing the date fails.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1882825 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/util/DateParser.java
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
src/testcases/org/apache/poi/ss/formula/functions/TestDateValue.java

index 292630006d4ac86df5facc48405af53bdde916e1..996a1384f13278dcd076bedcd2ab3754998a4f31 100644 (file)
@@ -18,6 +18,7 @@
 package org.apache.poi.ss.util;
 
 import java.text.DateFormatSymbols;
+import java.time.DateTimeException;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -83,7 +84,7 @@ public class DateParser {
 
     /**
      * Parses a date from a string.
-     * 
+     *
      * @param strVal a string with a date pattern.
      * @return a date parsed from argument.
      * @throws EvaluationException exception upon parsing.
@@ -102,7 +103,11 @@ public class DateParser {
                     : LocalDate.now(LocaleUtil.getUserTimeZone().toZoneId()).getYear();
                 int month = parseMonth(groups.get(format.monthIndex));
                 int day = Integer.parseInt(groups.get(format.dayIndex));
-                return LocalDate.of(year, month, day);
+                try {
+                    return LocalDate.of(year, month, day);
+                } catch (DateTimeException e) {
+                    throw new DateTimeException("Failed to parse date-string " + strVal);
+                }
 
             }
         }
index 129a74fd96d8ab98137fd8cb9807239873934a34..66657a0fd9d8187163501073113460e3de18e416 100644 (file)
@@ -2902,7 +2902,12 @@ public final class TestBugs extends BaseTestBugzillaIssues {
     }
     @Test
     public void test63819() throws IOException {
-        simpleTest("63819.xls");
+        LocaleUtil.setUserLocale(Locale.UK);
+        try {
+            simpleTest("63819.xls");
+        } finally {
+            LocaleUtil.resetUserLocale();
+        }
     }
 
     /**
@@ -2961,8 +2966,12 @@ public final class TestBugs extends BaseTestBugzillaIssues {
         evals.add(wb.getCreationHelper().createFormulaEvaluator());
         evals.addAll(SIMPLE_REFS.values());
 
-        HSSFFormulaEvaluator.setupEnvironment( files.toArray(new String[0]), evals.toArray(new HSSFFormulaEvaluator[0]) );
-        evals.get(0).evaluateAll();
+        try {
+            HSSFFormulaEvaluator.setupEnvironment(files.toArray(new String[0]), evals.toArray(new HSSFFormulaEvaluator[0]));
+            evals.get(0).evaluateAll();
+        } catch (RuntimeException e) {
+            throw new RuntimeException("While handling files " + files + " and evals " + evals, e);
+        }
     }
 
 
index edaa5da0429127f1ad45cb2898b0a73c254cd323..a25fa270d1606ca77d89082ae3ac4595f2d714c8 100644 (file)
@@ -50,31 +50,36 @@ public final class TestDateValue {
 
     @Test
     public void testDateValue() {
-        confirmDateValue(new StringEval("2020-02-01"), 43862);
-        confirmDateValue(new StringEval("01-02-2020"), 43862);
-        confirmDateValue(new StringEval("2020-FEB-01"), 43862);
-        confirmDateValue(new StringEval("2020-Feb-01"), 43862);
-        confirmDateValue(new StringEval("2020-FEBRUARY-01"), 43862);
-        confirmDateValue(new StringEval("FEB-01"), 43862);
-        confirmDateValue(new StringEval("2/1/2020"), 43862);
-        confirmDateValue(new StringEval("2/1"), 43862);
-        confirmDateValue(new StringEval("2020/2/1"), 43862);
-        confirmDateValue(new StringEval("2020/FEB/1"), 43862);
-        confirmDateValue(new StringEval("FEB/1/2020"), 43862);
-        confirmDateValue(new StringEval("2020/02/01"), 43862);
-
-        confirmDateValue(new StringEval(""));
-        confirmDateValue(BlankEval.instance);
-
-        confirmDateValueError(new StringEval("non-date text"));
-
-        // // EXCEL
-        confirmDateValue(new StringEval("8/22/2011"), 40777); // Serial number of a date entered as text.
-        confirmDateValue(new StringEval("22-MAY-2011"), 40685); // Serial number of a date entered as text.
-        confirmDateValue(new StringEval("2011/02/23"), 40597); // Serial number of a date entered as text.
-
-        // LibreOffice compatibility
-        confirmDateValue(new StringEval("1954-07-20"), 19925);
+        LocaleUtil.setUserLocale(Locale.ENGLISH);
+        try {
+            confirmDateValue(new StringEval("2020-02-01"), 43862);
+            confirmDateValue(new StringEval("01-02-2020"), 43862);
+            confirmDateValue(new StringEval("2020-FEB-01"), 43862);
+            confirmDateValue(new StringEval("2020-Feb-01"), 43862);
+            confirmDateValue(new StringEval("2020-FEBRUARY-01"), 43862);
+            confirmDateValue(new StringEval("FEB-01"), 43862);
+            confirmDateValue(new StringEval("2/1/2020"), 43862);
+            confirmDateValue(new StringEval("2/1"), 43862);
+            confirmDateValue(new StringEval("2020/2/1"), 43862);
+            confirmDateValue(new StringEval("2020/FEB/1"), 43862);
+            confirmDateValue(new StringEval("FEB/1/2020"), 43862);
+            confirmDateValue(new StringEval("2020/02/01"), 43862);
+
+            confirmDateValue(new StringEval(""));
+            confirmDateValue(BlankEval.instance);
+
+            confirmDateValueError(new StringEval("non-date text"));
+
+            // // EXCEL
+            confirmDateValue(new StringEval("8/22/2011"), 40777); // Serial number of a date entered as text.
+            confirmDateValue(new StringEval("22-MAY-2011"), 40685); // Serial number of a date entered as text.
+            confirmDateValue(new StringEval("2011/02/23"), 40597); // Serial number of a date entered as text.
+
+            // LibreOffice compatibility
+            confirmDateValue(new StringEval("1954-07-20"), 19925);
+        } finally {
+            LocaleUtil.setUserLocale(null);
+        }
     }
 
     private ValueEval invokeDateValue(ValueEval text) {
@@ -97,4 +102,4 @@ public final class TestDateValue {
         assertEquals(ErrorEval.class, result.getClass());
         assertEquals(ErrorEval.VALUE_INVALID.getErrorCode(), ((ErrorEval) result).getErrorCode());
     }
-}
\ No newline at end of file
+}