You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2020/10/25 07:21:34 UTC

svn commit: r1882825 - in /poi/trunk/src: java/org/apache/poi/ss/util/DateParser.java testcases/org/apache/poi/hssf/usermodel/TestBugs.java testcases/org/apache/poi/ss/formula/functions/TestDateValue.java

Author: centic
Date: Sun Oct 25 07:21:34 2020
New Revision: 1882825

URL: http://svn.apache.org/viewvc?rev=1882825&view=rev
Log:
Prevent some unit-tests from failing when non-English local is used in Maven run

Also improve the error message when parsing the date fails.

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

Modified: poi/trunk/src/java/org/apache/poi/ss/util/DateParser.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/util/DateParser.java?rev=1882825&r1=1882824&r2=1882825&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/util/DateParser.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/util/DateParser.java Sun Oct 25 07:21:34 2020
@@ -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);
+                }
 
             }
         }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1882825&r1=1882824&r2=1882825&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Sun Oct 25 07:21:34 2020
@@ -2902,7 +2902,12 @@ public final class TestBugs extends Base
     }
     @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 Base
         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);
+        }
     }
 
 

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDateValue.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDateValue.java?rev=1882825&r1=1882824&r2=1882825&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDateValue.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDateValue.java Sun Oct 25 07:21:34 2020
@@ -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
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org