From 8c72c310d5d9da41ad5444ef02ea5232f4131ab0 Mon Sep 17 00:00:00 2001 From: ltheussl Date: Mon, 3 Oct 2005 17:14:54 +0000 Subject: [PATCH] MPCHANGELOG-70: Fix regexp's for username with spaces + tests. Thanks to Arnaud Bailly. git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@293395 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/svnlib/SvnChangeLogParser.java | 5 +++-- changelog/src/test-resources/svnlib/svnlog.txt | 9 ++++++++- .../maven/svnlib/SvnChangeLogParserTest.java | 18 +++++++++++------- changelog/xdocs/changes.xml | 3 +++ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/changelog/src/main/org/apache/maven/svnlib/SvnChangeLogParser.java b/changelog/src/main/org/apache/maven/svnlib/SvnChangeLogParser.java index b0b812c7..9cad37bf 100644 --- a/changelog/src/main/org/apache/maven/svnlib/SvnChangeLogParser.java +++ b/changelog/src/main/org/apache/maven/svnlib/SvnChangeLogParser.java @@ -82,7 +82,7 @@ class SvnChangeLogParser implements ChangeLogParser /** The pattern used to match svn header lines */ private static final String pattern = "^r(\\d+)\\s+\\|\\s+" + // revision number - "(\\(\\S+\\s+\\S+\\)|\\S+)\\s+\\|\\s+" + // author username + "([^|]+)\\|\\s+" + // author username "(\\d+-\\d+-\\d+ " + // date 2002-08-24 "\\d+:\\d+:\\d+) " + // time 16:01:00 "([\\-+])(\\d\\d)(\\d\\d)"; // gmt offset -0400 @@ -198,7 +198,8 @@ class SvnChangeLogParser implements ChangeLogParser currentRevision = headerRegexp.getParen(1); currentLogEntry = new ChangeLogEntry(); - currentLogEntry.setAuthor(headerRegexp.getParen(2)); + /* set author to be trimmed author field */ + currentLogEntry.setAuthor(headerRegexp.getParen(2).trim()); currentLogEntry.setDate(parseDate()); status = GET_FILE; diff --git a/changelog/src/test-resources/svnlib/svnlog.txt b/changelog/src/test-resources/svnlib/svnlog.txt index aa1af793..069cde51 100644 --- a/changelog/src/test-resources/svnlib/svnlog.txt +++ b/changelog/src/test-resources/svnlib/svnlog.txt @@ -1,11 +1,18 @@ ------------------------------------------------------------------------ -r15 | kaz | 2002-08-26 14:33:26 -0400 (Mon, 26 Aug 2002) | 3 lines +r16 | kaz | 2002-08-26 20:33:26 -0400 (Mon, 26 Aug 2002) | 3 lines Changed paths: M /poolserver/trunk/build.xml M /poolserver/trunk/project.properties Minor formatting changes. +------------------------------------------------------------------------ +r15 | kaz toto | 2002-08-26 10:24:58 -0400 (Mon, 26 Aug 2002) | 3 lines +Changed paths: + M /poolserver/trunk/build.xml + +Added white space to test author parsing. + ------------------------------------------------------------------------ r14 | kaz | 2002-08-26 10:24:58 -0400 (Mon, 26 Aug 2002) | 3 lines Changed paths: diff --git a/changelog/src/test/org/apache/maven/svnlib/SvnChangeLogParserTest.java b/changelog/src/test/org/apache/maven/svnlib/SvnChangeLogParserTest.java index 2da70a9f..1f7f55e0 100644 --- a/changelog/src/test/org/apache/maven/svnlib/SvnChangeLogParserTest.java +++ b/changelog/src/test/org/apache/maven/svnlib/SvnChangeLogParserTest.java @@ -77,18 +77,22 @@ public class SvnChangeLogParserTest extends TestCase FileInputStream fis = new FileInputStream(testFile); List entries = new ArrayList(parser.parse(fis)); - assertEquals("Wrong number of entries returned", 13, entries.size()); + assertEquals("Wrong number of entries returned", 14, entries.size()); ChangeLogEntry entry = (ChangeLogEntry) entries.get(0); assertEquals("Entry 0 was parsed incorrectly", "kaz\n" + - DATE.parse("Mon Aug 26 14:33:26 EDT 2002") + "\n" + - "[/poolserver/trunk/build.xml, 15, " + - "/poolserver/trunk/project.properties, 15]\n" + + DATE.parse("Mon Aug 26 20:33:26 EDT 2002") + "\n" + + "[/poolserver/trunk/build.xml, 16, " + + "/poolserver/trunk/project.properties, 16]\n" + "Minor formatting changes.\n\n", entry.toString()); + /* check author with space was parsed correctly */ + entry = (ChangeLogEntry) entries.get(1); + assertEquals("Entry 0 was parsed incorrectly", + "kaz toto",entry.getAuthor()); - entry = (ChangeLogEntry) entries.get(6); + entry = (ChangeLogEntry) entries.get(7); assertEquals("Entry 6 was parsed incorrectly", "(no author)\n" + DATE.parse("Fri Aug 23 11:11:52 EDT 2002") + "\n" + @@ -96,7 +100,7 @@ public class SvnChangeLogParserTest extends TestCase "Testing script out again ...\n\n", entry.toString()); - entry = (ChangeLogEntry) entries.get(8); + entry = (ChangeLogEntry) entries.get(9); assertEquals("Entry 8 was parsed incorrectly", "pete\n" + DATE.parse("Fri Aug 23 11:03:39 EDT 2002") + "\n" + @@ -105,7 +109,7 @@ public class SvnChangeLogParserTest extends TestCase "subversion).\n\n", entry.toString()); - entry = (ChangeLogEntry) entries.get(12); + entry = (ChangeLogEntry) entries.get(13); assertEquals("Entry 12 was parsed incorrectly", "DOMAIN\\user\n" + DATE.parse("Wed Aug 21 00:20:25 EDT 2002") + "\n" + diff --git a/changelog/xdocs/changes.xml b/changelog/xdocs/changes.xml index d6036237..e6431bfe 100644 --- a/changelog/xdocs/changes.xml +++ b/changelog/xdocs/changes.xml @@ -24,6 +24,9 @@ Emmanuel Venisse + + Incorrect parsing of SVN log files when username contains spaces. + Avoid NullPointerException when no type is given Corrected parsing of VSS results