Author: bodewig
Date: Thu Oct 16 06:26:00 2008
New Revision: 705238

URL: http://svn.apache.org/viewvc?rev=705238&view=rev
Log:
Make cvsversion work for local repositories as well

Added:
    ant/core/trunk/src/tests/antunit/taskdefs/cvs/cvs.xml   (with props)
Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=705238&r1=705237&r2=705238&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Thu Oct 16 06:26:00 2008
@@ -451,6 +451,8 @@
    CVS_CLIENT_PORT.
    Bugzilla Report 30124.
 
+ * <cvsversion> now works for local repositories as well.
+
 Changes from Ant 1.7.0 TO Ant 1.7.1
 =============================================
 

Modified: 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java?rev=705238&r1=705237&r2=705238&view=diff
==============================================================================
--- 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java 
(original)
+++ 
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java 
Thu Oct 16 06:26:00 2008
@@ -17,6 +17,7 @@
  */
 package org.apache.tools.ant.taskdefs.cvslib;
 
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.AbstractCvsTask;
 
 import java.io.ByteArrayOutputStream;
@@ -115,12 +116,17 @@
         setCommand("version");
         super.execute();
         String output = bos.toString();
+        log("Received version response \"" + output + "\"",
+            Project.MSG_DEBUG);
         StringTokenizer st = new StringTokenizer(output);
         boolean client = false;
         boolean server = false;
         String cvs = null;
-        while (st.hasMoreTokens()) {
-            String currentToken = st.nextToken();
+        String cachedVersion = null;
+        boolean haveReadAhead = false;
+        while (haveReadAhead || st.hasMoreTokens()) {
+            String currentToken = haveReadAhead ? cachedVersion : 
st.nextToken();
+            haveReadAhead = false;
             if (currentToken.equals("Client:")) {
                 client = true;
             } else if (currentToken.equals("Server:")) {
@@ -129,7 +135,11 @@
                        && currentToken.endsWith(")")) {
                 cvs = currentToken.length() == 5 ? "" : " " + currentToken;
             }
-            if (client && cvs != null) {
+            if (!client && !server && cvs != null
+                && cachedVersion == null && st.hasMoreTokens()) {
+                cachedVersion = st.nextToken();
+                haveReadAhead = true;
+            } else if (client && cvs != null) {
                 if (st.hasMoreTokens()) {
                     clientVersion = st.nextToken() + cvs;
                 }
@@ -141,8 +151,13 @@
                 }
                 server = false;
                 cvs = null;
+            } else if (currentToken.equals("(client/server)")
+                       && cvs != null && cachedVersion != null
+                       && !client && !server) {
+                client = server = true;
+                clientVersion = serverVersion = cachedVersion + cvs;
+                cachedVersion = cvs = null;
             }
-
         }
         if (clientVersionProperty != null) {
             getProject().setNewProperty(clientVersionProperty, clientVersion);

Added: ant/core/trunk/src/tests/antunit/taskdefs/cvs/cvs.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/cvs/cvs.xml?rev=705238&view=auto
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/cvs/cvs.xml (added)
+++ ant/core/trunk/src/tests/antunit/taskdefs/cvs/cvs.xml Thu Oct 16 06:26:00 
2008
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- this file is not executed by the automated tests since it
+     requires a working CVS client. -->
+
+<project default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
+  <import file="../../antunit-base.xml" />
+
+  <property name="cvsrootloc" location="repository"/>
+  <property name="cvsroot" value=":local:${cvsrootloc}"/>
+
+  <target name="testVersion">
+    <cvsversion clientversionproperty="client" cvsroot="${cvsroot}"/>
+    <au:assertPropertySet name="client"/>
+  </target>
+</project>

Propchange: ant/core/trunk/src/tests/antunit/taskdefs/cvs/cvs.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to