From d7969707bee284a4cf1582255a6e65f1b8c6d584 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Fri, 25 Apr 2008 06:54:57 +0000
Subject: [PATCH] SE-21 implemented and unit tested

SVN: 5802
---
 .../ant/task/subversion/SVNUtilities.java     | 10 ++++---
 .../SVNRepositoryProjectContextTest.java      | 30 ++++++++++++++++++-
 .../ant/task/subversion/SVNUtilitiesTest.java |  4 +++
 ant_tasks/sourceTest/java/tests.xml           |  2 +-
 4 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/ant_tasks/source/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilities.java b/ant_tasks/source/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilities.java
index 354776874ef..54799161ac4 100644
--- a/ant_tasks/source/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilities.java
+++ b/ant_tasks/source/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilities.java
@@ -58,11 +58,13 @@ class SVNUtilities
     /** A project all other projects depend on implicitely. */
     static final String BUILD_RESOURCES_PROJECT = "build_resources";
 
+    private static final String RELEASE_PATTERN_PREFIX = "((S|[0-9]+\\.)[0-9]+)\\.";
+    
     /** The regular expression that a release tag has to match. */
-    static final String RELEASE_TAG_PATTERN_STRING = "([0-9]+)\\.([0-9]+)\\.([0-9]+)";
+    static final String RELEASE_TAG_PATTERN_STRING = RELEASE_PATTERN_PREFIX + "[0-9]+";
 
     /** The regular expression that a release branch has to match. */
-    static final String RELEASE_BRANCH_PATTERN_STRING = "([0-9]+)\\.([0-9]+)\\.x";
+    static final String RELEASE_BRANCH_PATTERN_STRING = RELEASE_PATTERN_PREFIX + "x";
 
     /**
      * A class that holds the information about an operating system process when it is finished.
@@ -371,7 +373,7 @@ class SVNUtilities
         final Matcher tagMatcher = Pattern.compile(RELEASE_TAG_PATTERN_STRING).matcher(tagName);
         boolean matches = tagMatcher.matches();
         assert matches;
-        return String.format("%s.%s.x", tagMatcher.group(1), tagMatcher.group(2));
+        return String.format("%s.x", tagMatcher.group(1));
     }
 
     static String getFirstTagForBranch(String branchName)
@@ -380,7 +382,7 @@ class SVNUtilities
                 Pattern.compile(RELEASE_BRANCH_PATTERN_STRING).matcher(branchName);
         boolean matches = branchMatcher.matches();
         assert matches;
-        return String.format("%s.%s.0", branchMatcher.group(1), branchMatcher.group(2));
+        return String.format("%s.0", branchMatcher.group(1));
     }
 
 }
diff --git a/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNRepositoryProjectContextTest.java b/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNRepositoryProjectContextTest.java
index 02ed7acae19..7b19804e32e 100644
--- a/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNRepositoryProjectContextTest.java
+++ b/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNRepositoryProjectContextTest.java
@@ -48,24 +48,36 @@ public class SVNRepositoryProjectContextTest
     public void testVersionTypeReleaseBranch()
     {
         final SVNRepositoryProjectContext def = new SVNRepositoryProjectContext();
+        
         def.setReleaseBranch("2.3.x");
         assert RELEASE_BRANCH == def.getVersionType();
         assertEquals("2.3.x", def.getVersion());
+        
         def.setReleaseBranch("0.0.x");
         assert RELEASE_BRANCH == def.getVersionType();
         assertEquals("0.0.x", def.getVersion());
+        
+        def.setReleaseBranch("S30.x");
+        assert RELEASE_BRANCH == def.getVersionType();
+        assertEquals("S30.x", def.getVersion());
     }
 
     @Test
     public void testVersionTypeTag()
     {
         final SVNRepositoryProjectContext def = new SVNRepositoryProjectContext();
+        
         def.setReleaseTag("2.3.0");
         assert RELEASE_TAG == def.getVersionType();
         assertEquals("2.3.0", def.getVersion());
+        
         def.setReleaseTag("1.18.100");
         assert RELEASE_TAG == def.getVersionType();
         assertEquals("1.18.100", def.getVersion());
+        
+        def.setReleaseTag("S18.100");
+        assert RELEASE_TAG == def.getVersionType();
+        assertEquals("S18.100", def.getVersion());
     }
 
     @Test
@@ -142,7 +154,7 @@ public class SVNRepositoryProjectContextTest
         final SVNRepositoryProjectContext def = new SVNRepositoryProjectContext();
         final String name = "someProject";
         final String subName = "someSubProject";
-        final String branchName = "0.9.x";
+        final String branchName = "S9.x";
         def.setProjectName(name);
         def.setReleaseBranch(branchName);
         final String branchUrl =
@@ -299,6 +311,14 @@ public class SVNRepositoryProjectContextTest
         final SVNRepositoryProjectContext def = new SVNRepositoryProjectContext();
         def.setReleaseTag("1.1.x");
     }
+    
+    @Test(expectedExceptions =
+        { UserFailureException.class })
+        public void testIllegalTag8()
+    {
+        final SVNRepositoryProjectContext def = new SVNRepositoryProjectContext();
+        def.setReleaseTag("s1.x");
+    }
 
     @Test(expectedExceptions =
         { UserFailureException.class })
@@ -356,6 +376,14 @@ public class SVNRepositoryProjectContextTest
         def.setReleaseBranch("1.1.0");
     }
 
+    @Test(expectedExceptions =
+        { UserFailureException.class })
+        public void testIllegalBranch8()
+    {
+        final SVNRepositoryProjectContext def = new SVNRepositoryProjectContext();
+        def.setReleaseBranch("s1.0");
+    }
+    
     @Test
     public void testMissingName()
     {
diff --git a/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilitiesTest.java b/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilitiesTest.java
index 45b5d71d6f0..2beb4a42902 100644
--- a/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilitiesTest.java
+++ b/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNUtilitiesTest.java
@@ -97,6 +97,8 @@ public class SVNUtilitiesTest
     {
         assertEquals("0.9.x", SVNUtilities.getBranchForTag("0.9.0"));
         assertEquals("1.0.x", SVNUtilities.getBranchForTag("1.0.10"));
+        assertEquals("8.04.x", SVNUtilities.getBranchForTag("8.04.10"));
+        assertEquals("S30.x", SVNUtilities.getBranchForTag("S30.10"));
     }
 
     @Test
@@ -104,6 +106,8 @@ public class SVNUtilitiesTest
     {
         assertEquals("0.9.0", SVNUtilities.getFirstTagForBranch("0.9.x"));
         assertEquals("1.5.0", SVNUtilities.getFirstTagForBranch("1.5.x"));
+        assertEquals("8.04.0", SVNUtilities.getFirstTagForBranch("8.04.x"));
+        assertEquals("S30.0", SVNUtilities.getFirstTagForBranch("S30.x"));
     }
 
 }
diff --git a/ant_tasks/sourceTest/java/tests.xml b/ant_tasks/sourceTest/java/tests.xml
index cc7e09e81c0..c1760123983 100644
--- a/ant_tasks/sourceTest/java/tests.xml
+++ b/ant_tasks/sourceTest/java/tests.xml
@@ -6,7 +6,7 @@
             </run>
         </groups>
         <packages>
-            <package name="ch.systemsx.*" />
+            <package name="ch.systemsx.cisd.ant.*" />
         </packages>
     </test>
 </suite>
-- 
GitLab