You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by bl...@apache.org on 2015/12/08 19:02:45 UTC

parquet-mr git commit: PARQUET-349: VersionParser does not handle versions missing 'build' section

Repository: parquet-mr
Updated Branches:
  refs/heads/master 14097c64d -> f2615d9a6


PARQUET-349: VersionParser does not handle versions missing 'build' section

This change reworks the regular expression in VersionParser.java to allow for missing 'version' and 'build' sections.

Author: Reuben Kuhnert <re...@cloudera.com>

Closes #283 from sircodesalotOfTheRound/fix-version-test and squashes the following commits:

0f4a22f [Reuben Kuhnert] PARQUET-349: VersionParser does not handle versions missing 'build' section.


Project: http://git-wip-us.apache.org/repos/asf/parquet-mr/repo
Commit: http://git-wip-us.apache.org/repos/asf/parquet-mr/commit/f2615d9a
Tree: http://git-wip-us.apache.org/repos/asf/parquet-mr/tree/f2615d9a
Diff: http://git-wip-us.apache.org/repos/asf/parquet-mr/diff/f2615d9a

Branch: refs/heads/master
Commit: f2615d9a611db401cdedc022112c87ad938b5680
Parents: 14097c6
Author: Reuben Kuhnert <re...@cloudera.com>
Authored: Tue Dec 8 10:02:31 2015 -0800
Committer: Ryan Blue <bl...@apache.org>
Committed: Tue Dec 8 10:02:31 2015 -0800

----------------------------------------------------------------------
 .../java/org/apache/parquet/VersionParser.java     |  6 +++---
 .../test/java/org/apache/parquet/VersionTest.java  | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/parquet-mr/blob/f2615d9a/parquet-common/src/main/java/org/apache/parquet/VersionParser.java
----------------------------------------------------------------------
diff --git a/parquet-common/src/main/java/org/apache/parquet/VersionParser.java b/parquet-common/src/main/java/org/apache/parquet/VersionParser.java
index c1a94d3..fc4ff6c 100644
--- a/parquet-common/src/main/java/org/apache/parquet/VersionParser.java
+++ b/parquet-common/src/main/java/org/apache/parquet/VersionParser.java
@@ -31,7 +31,7 @@ import static org.apache.parquet.Preconditions.checkArgument;
  */
 public class VersionParser {
   // example: parquet-mr version 1.8.0rc2-SNAPSHOT (build ddb469afac70404ea63b72ed2f07a911a8592ff7)
-  public static final String FORMAT = "(.+) version ((.*) )?\\(build ?(.*)\\)";
+  public static final String FORMAT = "(.*?)\\s+version\\s*(?:([^(]*?)\\s*(?:\\(\\s*build\\s*([^)]*?)\\s*\\))?)?";
   public static final Pattern PATTERN = Pattern.compile(FORMAT);
 
   public static class ParsedVersion {
@@ -113,8 +113,8 @@ public class VersionParser {
     }
 
     String application = matcher.group(1);
-    String semver = matcher.group(3);
-    String appBuildHash = matcher.group(4);
+    String semver = matcher.group(2);
+    String appBuildHash = matcher.group(3);
 
     if (Strings.isNullOrEmpty(application)) {
       throw new VersionParseException("application cannot be null or empty");

http://git-wip-us.apache.org/repos/asf/parquet-mr/blob/f2615d9a/parquet-common/src/test/java/org/apache/parquet/VersionTest.java
----------------------------------------------------------------------
diff --git a/parquet-common/src/test/java/org/apache/parquet/VersionTest.java b/parquet-common/src/test/java/org/apache/parquet/VersionTest.java
index 75f8b76..30bd3bf 100644
--- a/parquet-common/src/test/java/org/apache/parquet/VersionTest.java
+++ b/parquet-common/src/test/java/org/apache/parquet/VersionTest.java
@@ -79,5 +79,22 @@ public class VersionTest {
     assertEquals(new ParsedVersion("parquet-mr", "1.6.0", null), VersionParser.parse("parquet-mr version 1.6.0 (build)"));
     assertEquals(new ParsedVersion("parquet-mr", null, null), VersionParser.parse("parquet-mr version (build)"));
     assertEquals(new ParsedVersion("parquet-mr", null, null), VersionParser.parse("parquet-mr version (build )"));
+
+    // Missing entire build section
+    assertEquals(new ParsedVersion("parquet-mr", "1.6.0", null), VersionParser.parse("parquet-mr version 1.6.0"));
+    assertEquals(new ParsedVersion("parquet-mr", "1.8.0rc4", null), VersionParser.parse("parquet-mr version 1.8.0rc4"));
+    assertEquals(new ParsedVersion("parquet-mr", "1.8.0rc4-SNAPSHOT", null), VersionParser.parse("parquet-mr version 1.8.0rc4-SNAPSHOT"));
+    assertEquals(new ParsedVersion("parquet-mr", null, null), VersionParser.parse("parquet-mr version"));
+
+
+    // Various spaces
+    assertEquals(new ParsedVersion("parquet-mr", "1.6.0", null), VersionParser.parse("parquet-mr     version    1.6.0"));
+    assertEquals(new ParsedVersion("parquet-mr", "1.8.0rc4", null), VersionParser.parse("parquet-mr     version    1.8.0rc4"));
+    assertEquals(new ParsedVersion("parquet-mr", "1.8.0rc4-SNAPSHOT", null), VersionParser.parse("parquet-mr      version    1.8.0rc4-SNAPSHOT  "));
+    assertEquals(new ParsedVersion("parquet-mr", null, null), VersionParser.parse("parquet-mr      version"));
+    assertEquals(new ParsedVersion("parquet-mr", "1.6.0", null), VersionParser.parse("parquet-mr version 1.6.0 (  build )"));
+    assertEquals(new ParsedVersion("parquet-mr", "1.6.0", null), VersionParser.parse("parquet-mr     version 1.6.0 (    build)"));
+    assertEquals(new ParsedVersion("parquet-mr", null, null), VersionParser.parse("parquet-mr     version (    build)"));
+    assertEquals(new ParsedVersion("parquet-mr", null, null), VersionParser.parse("parquet-mr    version    (build    )"));
   }
 }