You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sg...@apache.org on 2010/09/02 22:41:11 UTC

svn commit: r992111 - in /commons/proper/exec/trunk/src: site/apt/commandline.apt test/java/org/apache/commons/exec/CommandLineTest.java

Author: sgoeschl
Date: Thu Sep  2 20:41:11 2010
New Revision: 992111

URL: http://svn.apache.org/viewvc?rev=992111&view=rev
Log:
[EXEC-36] Improving the documentation

Added:
    commons/proper/exec/trunk/src/site/apt/commandline.apt
Modified:
    commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/CommandLineTest.java

Added: commons/proper/exec/trunk/src/site/apt/commandline.apt
URL: http://svn.apache.org/viewvc/commons/proper/exec/trunk/src/site/apt/commandline.apt?rev=992111&view=auto
==============================================================================
--- commons/proper/exec/trunk/src/site/apt/commandline.apt (added)
+++ commons/proper/exec/trunk/src/site/apt/commandline.apt Thu Sep  2 20:41:11 2010
@@ -0,0 +1,80 @@
+~~
+~~ 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.
+~~
+~~
+
+ --------
+Apache Commons Exec - Building the command line
+ --------
+ --------
+20 August 2010
+ --------
+
+Building the command line
+
+* Introduction
+
+  You have two ways to create the command line to be executed
+
+    * parsing the entire command line string
+
+    * building the command line incrementally
+
+* General Considerations
+
+  No matter which approach you are using commons-exec does change your command
+  line arguments in the following two cases
+
+    * when the executable contains forward or backward slashes
+
+    * when a command line argument contains an unquoted string 
+
+  The following executable arguments
+
+----------------------------------------
+./bin/vim
+----------------------------------------
+
+  will be translated under Windows to
+
+----------------------------------------
+.\\bin\\vim
+----------------------------------------
+
+* Parsing the command line string
+
+  Parsing the command line string is easy to use but you might run into
+  problems when tackling complex scenarios. Therefore this functionality
+  was deprecated in the {{{http://ant.apache.org/manual/Tasks/exec.html}Ant Exec task}}.
+
+  Let's have a look at few examples you would like to stick to parsing entire command
+  line strings
+
+** Spaces in command line arguments
+
+  Here we would like to invoke a batch file which contains spaces in the path
+
+----------------------------------------
+cmd.exe /C c:\was51\Web Sphere\AppServer\bin\versionInfo.bat
+----------------------------------------
+
+  Due to the space in the file name we have to quote the file name either with
+  single or double quotes otherwise it falls apart into two command line
+  arguments <c:\was51\Web> and <Sphere\AppServer\bin\versionInfo.bat>.
+
+----------------------------------------
+String line = "cmd.exe /C 'c:\\was51\\Web Sphere\\AppServer\\bin\\versionInfo.bat'";
+----------------------------------------

Modified: commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/CommandLineTest.java
URL: http://svn.apache.org/viewvc/commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/CommandLineTest.java?rev=992111&r1=992110&r2=992111&view=diff
==============================================================================
--- commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/CommandLineTest.java (original)
+++ commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/CommandLineTest.java Thu Sep  2 20:41:11 2010
@@ -262,6 +262,21 @@ public class CommandLineTest extends Tes
         assertEquals(args[4], "WITHOUT_HELP_DOC=true");
     }
 
+    /**
+     * Test the following command line
+     *
+     * cmd.exe /C c:\was51\Web Sphere\AppServer\bin\versionInfo.bat
+     */
+    public void testParseRealLifeCommandLine_1() {
+
+        String commandline = "cmd.exe /C \"c:\\was51\\Web Sphere\\AppServer\\bin\\versionInfo.bat\"";
+
+        CommandLine cmdl = CommandLine.parse(commandline);
+        String[] args = cmdl.getArguments();
+        assertEquals("/C", args[0]);
+        assertEquals("\"c:\\was51\\Web Sphere\\AppServer\\bin\\versionInfo.bat\"", args[1]);
+    }
+        
    /**
     * Create a command line with pre-quoted strings to test SANDBOX-192,
     * e.g. "runMemorySud.cmd", "10", "30", "-XX:+UseParallelGC", "\"-XX:ParallelGCThreads=2\""
@@ -477,4 +492,21 @@ public class CommandLineTest extends Tes
         assertEquals("/q:a", args[1]);
         assertEquals("/c:\"install.exe /l \"\"c:\\Documents and Settings\\myusername\\Local Settings\\Temp\\netfx.log\"\" /q\"", args[2] );
     }
+
+    /**
+     * Test the following command line
+     *
+     * C:\CVS_DB\WeightsEngine /f WeightsEngine.mak CFG="WeightsEngine - Win32Release"
+     */
+    public void _testExec36_3() {
+
+        String commandline = "C:\\CVS_DB\\WeightsEngine /f WeightsEngine.mak CFG=\"WeightsEngine - Win32Release\"";
+
+        CommandLine cmdl = CommandLine.parse(commandline);
+        String[] args = cmdl.getArguments();
+        assertEquals("/f", args[0]);
+        assertEquals("WeightsEngine.mak", args[1]);
+        assertEquals("CFG=\"WeightsEngine - Win32Release\"", args[2]);
+    }
+
 }