From c911467a67b0639b3d9ee9af66e9e6eeb196b1d5 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Wed, 13 Aug 2008 13:59:06 +0000
Subject: [PATCH] change: allow Sprint tags with sub-versions

SVN: 7884
---
 .../ant/task/subversion/SVNUtilities.java     |  2 +-
 .../subversion/SVNBranchAndTagTaskTest.java   | 60 ++++++++++++++++++-
 2 files changed, 60 insertions(+), 2 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 8031162c85c..847d96134c8 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
@@ -64,7 +64,7 @@ class SVNUtilities
     private static final String SPRINT_PATTERN_PREFIX = "S";
     
     /** Pattern which matches the sprint tagging */
-    static final String SPRINT_TAG_PATTERN_STRING = SPRINT_PATTERN_PREFIX + "[0-9]+";
+    static final String SPRINT_TAG_PATTERN_STRING = SPRINT_PATTERN_PREFIX + "[0-9]+(\\.[0-9])?";
     
     /** The regular expression that a release branch has to match. */
     static final String RELEASE_BRANCH_PATTERN_STRING = RELEASE_PATTERN_PREFIX + "x";
diff --git a/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNBranchAndTagTaskTest.java b/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNBranchAndTagTaskTest.java
index 36325127939..90bbec953c5 100644
--- a/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNBranchAndTagTaskTest.java
+++ b/ant_tasks/sourceTest/java/ch/systemsx/cisd/ant/task/subversion/SVNBranchAndTagTaskTest.java
@@ -429,9 +429,67 @@ public class SVNBranchAndTagTaskTest
         assertEquals(expectedCopySet, new HashSet<CopyItem>(svn.copyList));
     }
 
+    @Test
+    public void testCreateSprintTagWithSubversion()
+    {
+        final String repositoryRoot = "http://host/repos";
+        final String groupName = "group";
+        final String projectName = "testProject";
+        final String tagName = "S42.2";
+        final Map<String, List<String>> listMap = new HashMap<String, List<String>>();
+        final String tagUrl =
+                StringUtils.join(Arrays.asList(repositoryRoot, groupName, projectName,
+                        "tags/sprint"), "/");
+        List<String> folders = new ArrayList<String>();
+        folders.add("S41/");
+        folders.add("42/");
+        folders.add("S43/");
+        listMap.put(tagUrl, folders);
+        final Map<String, String> catMap = new HashMap<String, String>();
+        final MockSVNRepositoryActions svn = new MockSVNRepositoryActions(listMap, catMap);
+        final SVNBranchAndTagTask task = new SVNBranchAndTagTask()
+            {
+                @Override
+                ISVNActions createSVNActions()
+                {
+                    return svn;
+                }
+            };
+        task.setProject(new Project()); // Required for log not to throw a NPE.
+        task.setRepositoryRoot(repositoryRoot);
+        task.setGroup(groupName);
+        task.setName(projectName);
+        task.setSprintTag(tagName);
+        task.execute();
+        final String sourceMainUrl =
+            StringUtils.join(Arrays.asList(repositoryRoot, groupName, projectName, "trunk"),
+            "/");
+        final String targetUrl =
+                StringUtils.join(Arrays.asList(repositoryRoot, groupName, projectName,
+                        "tags/sprint", tagName), "/");
+        final String targetBuildResourcesUrl =
+            targetUrl + "/" + SVNUtilities.BUILD_RESOURCES_PROJECT;
+        final String targetMainUrl =
+            StringUtils.join(Arrays.asList(targetUrl, projectName),
+            "/");
+        final String logMessage = "Create tag '" + tagName + "'";
+
+        assertEquals(1, svn.mkdirList.size());
+
+        final String sourceBuildResourcesUrl =
+                StringUtils.join(Arrays.asList(repositoryRoot, groupName,
+                        SVNUtilities.BUILD_RESOURCES_PROJECT, "trunk"), "/");
+        final Set<CopyItem> expectedCopySet =
+                new HashSet<CopyItem>(Arrays.asList(new CopyItem(sourceBuildResourcesUrl,
+                        SVNUtilities.HEAD_REVISION, targetBuildResourcesUrl, logMessage), new CopyItem(
+                        sourceMainUrl, SVNUtilities.HEAD_REVISION, targetMainUrl,
+                        logMessage)));
+        assertEquals(expectedCopySet, new HashSet<CopyItem>(svn.copyList));
+    }
+
     @Test(expectedExceptions =
         { BuildException.class })
-    public void testCreateSprintTagAlreadyExisging()
+    public void testCreateSprintTagAlreadyExisting()
     {
         final String repositoryRoot = "http://host/repos";
         final String groupName = "group";
-- 
GitLab