Author: olamy
Date: Wed Sep 21 13:41:43 2011
New Revision: 1173637

URL: http://svn.apache.org/viewvc?rev=1173637&view=rev
Log:
[WAGON-350] add unit test for wagon ssh with an embedded ssh server

Modified:
    
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/StreamingWagonTestCase.java
    
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
    
maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/ScpHelper.java
    
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java
    
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java
    maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml
    
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonTest.java

Modified: 
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/StreamingWagonTestCase.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/StreamingWagonTestCase.java?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/StreamingWagonTestCase.java
 (original)
+++ 
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/StreamingWagonTestCase.java
 Wed Sep 21 13:41:43 2011
@@ -19,6 +19,11 @@ package org.apache.maven.wagon;
  * under the License.
  */
 
+import org.apache.maven.wagon.observers.ChecksumObserver;
+import org.apache.maven.wagon.resource.Resource;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -26,11 +31,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.text.SimpleDateFormat;
 
-import org.apache.maven.wagon.observers.ChecksumObserver;
-import org.apache.maven.wagon.resource.Resource;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-
 /**
  * @author <a href="mailto:[email protected]";>Brett Porter</a>
  * @version $Id: WagonTestCase.java 660462 2008-05-27 10:52:46Z brett $
@@ -41,13 +41,16 @@ public abstract class StreamingWagonTest
     public void testStreamingWagon()
         throws Exception
     {
-        setupRepositories();
+        if ( supportsGetIfNewer() )
+        {
+            setupRepositories();
 
-        setupWagonTestingFixtures();
+            setupWagonTestingFixtures();
 
-        streamRoundTripTesting();
+            streamRoundTripTesting();
 
-        tearDownWagonTestingFixtures();
+            tearDownWagonTestingFixtures();
+        }
     }
 
     public void testFailedGetToStream()
@@ -102,8 +105,8 @@ public abstract class StreamingWagonTest
             setupRepositories();
             setupWagonTestingFixtures();
             int expectedSize = putFile();
-            getIfNewerToStream( getExpectedLastModifiedOnGet( testRepository, 
new Resource( resource ) ) + 30000,
-                                false, expectedSize );
+            getIfNewerToStream( getExpectedLastModifiedOnGet( testRepository, 
new Resource( resource ) ) + 30000, false,
+                                expectedSize );
         }
     }
 
@@ -143,7 +146,7 @@ public abstract class StreamingWagonTest
         connectWagon( wagon );
 
         OutputStream stream = new LazyFileOutputStream( destFile );
-        
+
         try
         {
             boolean result = wagon.getIfNewerToStream( this.resource, stream, 
timestamp );
@@ -153,7 +156,7 @@ public abstract class StreamingWagonTest
         {
             IOUtil.close( stream );
         }
-        
+
         disconnectWagon( wagon );
 
         assertGetIfNewerTest( progressArgumentMatcher, expectedResult, 
expectedSize );
@@ -252,7 +255,7 @@ public abstract class StreamingWagonTest
             stream = new FileInputStream( sourceFile );
             wagon.putFromStream( stream, resource, sourceFile.length(), 
sourceFile.lastModified() );
         }
-        catch( Exception e )
+        catch ( Exception e )
         {
             logger.error( "error while putting resources to the FTP Server", e 
);
         }
@@ -288,7 +291,7 @@ public abstract class StreamingWagonTest
             stream = new FileOutputStream( destFile );
             wagon.getToStream( this.resource, stream );
         }
-        catch( Exception e )
+        catch ( Exception e )
         {
             logger.error( "error while reading resources from the FTP Server", 
e );
         }

Modified: 
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
 (original)
+++ 
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
 Wed Sep 21 13:41:43 2011
@@ -19,14 +19,6 @@ package org.apache.maven.wagon;
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import org.apache.log4j.Logger;
 import org.apache.maven.wagon.authentication.AuthenticationException;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
@@ -43,6 +35,14 @@ import org.codehaus.plexus.util.FileUtil
 import org.easymock.AbstractMatcher;
 import org.easymock.MockControl;
 
+import java.io.File;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * @author <a href="mailto:[email protected]";>Jason van Zyl</a>
  * @version $Id$
@@ -130,7 +130,7 @@ public abstract class WagonTestCase
 
     /**
      * Protocol id of the Wagon to use, eg. <code>scp</code>, <code>ftp</code>
-     * 
+     *
      * @return the protocol id
      */
     protected abstract String getProtocol();
@@ -240,13 +240,16 @@ public abstract class WagonTestCase
     public void testWagon()
         throws Exception
     {
-        setupRepositories();
+        if ( supportsGetIfNewer() )
+        {
+            setupRepositories();
 
-        setupWagonTestingFixtures();
+            setupWagonTestingFixtures();
 
-        fileRoundTripTesting();
+            fileRoundTripTesting();
 
-        tearDownWagonTestingFixtures();
+            tearDownWagonTestingFixtures();
+        }
     }
 
     public void testWagonGetIfNewerIsNewer()
@@ -320,7 +323,8 @@ public abstract class WagonTestCase
 
             assertNotNull( "check checksum is not null", 
checksumObserver.getActualChecksum() );
 
-            assertEquals( "compare checksums", 
"6b144b7285ffd6b0bc8300da162120b9", checksumObserver.getActualChecksum() );
+            assertEquals( "compare checksums", 
"6b144b7285ffd6b0bc8300da162120b9",
+                          checksumObserver.getActualChecksum() );
 
             // Now compare the contents of the artifact that was placed in
             // the repository with the contents of the artifact that was
@@ -367,8 +371,9 @@ public abstract class WagonTestCase
     private void replaceMockForSkippedGetIfNewer( Wagon wagon, int 
expectedSize )
     {
         Resource resource = new Resource( this.resource );
-        mockTransferListener.transferInitiated( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_INITIATED,
-                                                                     
TransferEvent.REQUEST_GET, destFile ) );
+        mockTransferListener.transferInitiated(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_INITIATED, TransferEvent.REQUEST_GET,
+                                 destFile ) );
         resource = new Resource( this.resource );
         resource.setContentLength( getExpectedContentLengthOnGet( expectedSize 
) );
         resource.setLastModified( getExpectedLastModifiedOnGet( 
testRepository, resource ) );
@@ -427,7 +432,7 @@ public abstract class WagonTestCase
     /**
      * Test for putting a directory with a destination that multiple 
directories deep, all of which haven't been
      * created.
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-2
      */
@@ -474,7 +479,7 @@ public abstract class WagonTestCase
 
     /**
      * Test that when putting a directory that already exists new files get 
also copied
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-1
      */
@@ -529,7 +534,7 @@ public abstract class WagonTestCase
 
     /**
      * Test that when putting a directory that already exists new files get 
also copied and destination is "."
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-1
      */
@@ -581,10 +586,10 @@ public abstract class WagonTestCase
 
     /**
      * Create a directory with a resource and check that the other ones don't 
exist
-     * 
+     *
      * @param wagon
      * @param resourceToCreate name of the resource to be created
-     * @param dirName directory name to create
+     * @param dirName          directory name to create
      * @throws Exception
      */
     protected void createDirectory( Wagon wagon, String resourceToCreate, 
String dirName )
@@ -611,10 +616,10 @@ public abstract class WagonTestCase
 
     /**
      * Assert that a resource does not exist in the remote wagon system
-     * 
-     * @param wagon wagon to get the resource from
+     *
+     * @param wagon        wagon to get the resource from
      * @param resourceName name of the resource
-     * @throws IOException if a temp file can't be created
+     * @throws IOException             if a temp file can't be created
      * @throws AuthorizationException
      * @throws TransferFailedException
      * @since 1.0-beta-1
@@ -721,7 +726,7 @@ public abstract class WagonTestCase
 
     /**
      * Test {@link Wagon#getFileList(String)}.
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-2
      */
@@ -735,7 +740,7 @@ public abstract class WagonTestCase
         String dirName = "file-list";
 
         String filenames[] =
-            new String[] { "test-resource.txt", "test-resource.pom", 
"test-resource b.txt", "more-resources.dat",
+            new String[]{ "test-resource.txt", "test-resource.pom", 
"test-resource b.txt", "more-resources.dat",
                 ".index.txt" };
 
         for ( int i = 0; i < filenames.length; i++ )
@@ -756,7 +761,7 @@ public abstract class WagonTestCase
         {
             assertTrue( "Filename '" + filenames[i] + "' should be in list.", 
list.contains( filenames[i] ) );
         }
-        
+
         // WAGON-250
         list = wagon.getFileList( "" );
         assertNotNull( "file list should not be null.", list );
@@ -775,7 +780,7 @@ public abstract class WagonTestCase
 
     /**
      * Test {@link Wagon#getFileList(String)} when the directory does not 
exist.
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-2
      */
@@ -811,7 +816,7 @@ public abstract class WagonTestCase
 
     /**
      * Test for an existing resource.
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-2
      */
@@ -837,7 +842,7 @@ public abstract class WagonTestCase
 
     /**
      * Test for an invalid resource.
-     * 
+     *
      * @throws Exception
      * @since 1.0-beta-2
      */
@@ -891,16 +896,18 @@ public abstract class WagonTestCase
     protected ProgressArgumentMatcher replayMockForPut( String resourceName, 
String content, Wagon wagon )
     {
         Resource resource = new Resource( resourceName );
-        mockTransferListener.transferInitiated( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_INITIATED,
-                                                                     
TransferEvent.REQUEST_PUT, sourceFile ) );
+        mockTransferListener.transferInitiated(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_INITIATED, TransferEvent.REQUEST_PUT,
+                                 sourceFile ) );
         resource = new Resource( resourceName );
         resource.setContentLength( content.length() );
         resource.setLastModified( sourceFile.lastModified() );
-        mockTransferListener.transferStarted( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_STARTED,
-                                                                   
TransferEvent.REQUEST_PUT, sourceFile ) );
-        mockTransferListener.transferProgress( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_PROGRESS,
-                                                                    
TransferEvent.REQUEST_PUT, sourceFile ),
-                                               new byte[] {}, 0 );
+        mockTransferListener.transferStarted(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_STARTED, TransferEvent.REQUEST_PUT,
+                                 sourceFile ) );
+        mockTransferListener.transferProgress(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_PUT,
+                                 sourceFile ), new byte[]{ }, 0 );
         ProgressArgumentMatcher progressArgumentMatcher = new 
ProgressArgumentMatcher();
         mockTransferListenerControl.setMatcher( progressArgumentMatcher );
 
@@ -908,8 +915,9 @@ public abstract class WagonTestCase
         mockTransferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
         mockTransferListenerControl.setVoidCallable( MockControl.ZERO_OR_MORE 
);
 
-        mockTransferListener.transferCompleted( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_COMPLETED,
-                                                                     
TransferEvent.REQUEST_PUT, sourceFile ) );
+        mockTransferListener.transferCompleted(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_COMPLETED, TransferEvent.REQUEST_PUT,
+                                 sourceFile ) );
 
         mockTransferListenerControl.replay();
         return progressArgumentMatcher;
@@ -984,16 +992,18 @@ public abstract class WagonTestCase
     protected ProgressArgumentMatcher replaceMockForGet( Wagon wagon, int 
expectedSize )
     {
         Resource resource = new Resource( this.resource );
-        mockTransferListener.transferInitiated( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_INITIATED,
-                                                                     
TransferEvent.REQUEST_GET, destFile ) );
+        mockTransferListener.transferInitiated(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_INITIATED, TransferEvent.REQUEST_GET,
+                                 destFile ) );
         resource = new Resource( this.resource );
         resource.setContentLength( getExpectedContentLengthOnGet( expectedSize 
) );
         resource.setLastModified( getExpectedLastModifiedOnGet( 
testRepository, resource ) );
-        TransferEvent te = createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_STARTED,
-                                                                   
TransferEvent.REQUEST_GET, null );
+        TransferEvent te =
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_STARTED, TransferEvent.REQUEST_GET, null );
         mockTransferListener.transferStarted( te );
-        mockTransferListener.transferProgress( new TransferEvent( wagon, 
resource, TransferEvent.TRANSFER_PROGRESS,
-                                                                  
TransferEvent.REQUEST_GET ), new byte[] {}, 0 );
+        mockTransferListener.transferProgress(
+            new TransferEvent( wagon, resource, 
TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_GET ),
+            new byte[]{ }, 0 );
         ProgressArgumentMatcher progressArgumentMatcher = new 
ProgressArgumentMatcher();
         mockTransferListenerControl.setMatcher( progressArgumentMatcher );
 
@@ -1001,8 +1011,9 @@ public abstract class WagonTestCase
         mockTransferListenerControl.setMatcher( MockControl.ALWAYS_MATCHER );
         mockTransferListenerControl.setVoidCallable( MockControl.ZERO_OR_MORE 
);
 
-        mockTransferListener.transferCompleted( createTransferEvent( wagon, 
resource, TransferEvent.TRANSFER_COMPLETED,
-                                                                     
TransferEvent.REQUEST_GET, destFile ) );
+        mockTransferListener.transferCompleted(
+            createTransferEvent( wagon, resource, 
TransferEvent.TRANSFER_COMPLETED, TransferEvent.REQUEST_GET,
+                                 destFile ) );
 
         mockTransferListenerControl.replay();
         return progressArgumentMatcher;

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/ScpHelper.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/ScpHelper.java?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/ScpHelper.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/ScpHelper.java
 Wed Sep 21 13:41:43 2011
@@ -280,7 +280,12 @@ public class ScpHelper
             String path = getPath( repository.getBasedir(), 
destinationDirectory );
             Streams streams = executor.executeCommand( "ls -FlA " + path, 
false );
 
-            return new LSParser().parseFiles( streams.getOut() );
+            List<String> ret = new LSParser().parseFiles( streams.getOut() );
+            if (ret == null || ret.isEmpty())
+            {
+                throw new ResourceDoesNotExistException( "No such file or 
directory" );
+            }
+            return ret;
         }
         catch ( CommandExecutionException e )
         {
@@ -305,7 +310,7 @@ public class ScpHelper
         try
         {
             String path = getPath( repository.getBasedir(), resourceName );
-            executor.executeCommand( "ls " + path );
+            executor.executeCommand( "ls " + path, false );
 
             // Parsing of output not really needed.  As a failed ls results in 
a
             // CommandExectionException on the 'ls' command.

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpExternalWagonTest.java
 Wed Sep 21 13:41:43 2011
@@ -56,14 +56,15 @@ public class ScpExternalWagonTest
     }
 
     @Override
-    protected int getTestRepositoryPort() {
+    protected int getTestRepositoryPort()
+    {
         return 0;  // not used
     }
 
 
     public String getTestRepositoryUrl()
     {
-        return TestData.getTestRepositoryUrl();
+        return TestData.getTestRepositoryUrl( getTestRepositoryPort() );
     }
 
     protected AuthenticationInfo getAuthInfo()
@@ -85,8 +86,9 @@ public class ScpExternalWagonTest
 
         return authInfo;
     }
-    
-    public void testIsPuTTY() throws Exception
+
+    public void testIsPuTTY()
+        throws Exception
     {
         ScpExternalWagon wagon = (ScpExternalWagon) getWagon();
 

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-external/src/test/java/org/apache/maven/wagon/providers/ssh/external/ScpWagonWithSshPrivateKeySearchTest.java
 Wed Sep 21 13:41:43 2011
@@ -54,14 +54,15 @@ public class ScpWagonWithSshPrivateKeySe
     }
 
     @Override
-    protected int getTestRepositoryPort() {
+    protected int getTestRepositoryPort()
+    {
         return 0;  // not used
     }
 
 
     public String getTestRepositoryUrl()
     {
-        return TestData.getTestRepositoryUrl();
+        return TestData.getTestRepositoryUrl( getTestRepositoryPort() );
     }
 
 

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml Wed Sep 21 13:41:43 2011
@@ -103,7 +103,7 @@ under the License.
                 <exclude>**/SftpWagonTest.*</exclude>
                 <exclude>**/SshCommandExecutorTest.*</exclude>
                 <exclude>**/KnownHostsProviderTest.*</exclude>
-                <exclude>**/ScpWagon*Test.*</exclude>
+                <exclude>**/ScpWagonW*Test.*</exclude>
               </excludes>
               <systemPropertyVariables>
                 
<java.io.tmpdir>${project.build.outputDirectory}</java.io.tmpdir>

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonTest.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonTest.java?rev=1173637&r1=1173636&r2=1173637&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonTest.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonTest.java
 Wed Sep 21 13:41:43 2011
@@ -287,6 +287,8 @@ public class ScpWagonTest
         public void start( Environment env )
             throws IOException
         {
+            File tmpFile = File.createTempFile( "wagon", "test-sh" );
+            tmpFile.deleteOnExit();
             int exitValue = 0;
             SystemLogOutputStream systemOut = new SystemLogOutputStream( 1 );
             SystemLogOutputStream errOut = new SystemLogOutputStream( 1 );
@@ -298,55 +300,87 @@ public class ScpWagonTest
                 Executor exec = new DefaultExecutor();
                 exec.setStreamHandler( new PumpStreamHandler( systemOut, 
errOut ) );
                 // hackhish defaut commandline tools not support ; or && so 
write a file with the script
-                // and /bin/sh -xe file
-                File tmpFile = File.createTempFile( "wagon", "test-sh" );
-                FileUtils.fileWrite( tmpFile, commandLine );
+                // and "/bin/sh -e " + tmpFile.getPath();
 
-                String execScript = "/bin/sh -e " + tmpFile.getPath();
+                FileUtils.fileWrite( tmpFile, commandLine );
 
-                /*
-            CommandLine cl = CommandLine.parse( execScript );
-            exitValue = exec.execute( cl );*/
                 Commandline cl = new Commandline();
-
                 cl.setExecutable( "/bin/sh" );
-                cl.createArg().setValue( "-e" );
-                cl.createArg().setValue( tmpFile.getPath() );
+                //cl.createArg().setValue( "-e" );
+                //cl.createArg().setValue( tmpFile.getPath() );
+                cl.createArg().setFile( tmpFile );
 
                 exitValue = CommandLineUtils.executeCommandLine( cl, stdout, 
stderr );
+                System.out.println( "exit value " + exitValue );
+                /*
+                if ( exitValue == 0 )
+                {
+                    out.write( stdout.getOutput().getBytes() );
+                    out.write( '\n' );
+                    out.flush();
+
+                }
+                else
+                {
+                    out.write( stderr.getOutput().getBytes() );
+                    out.write( '\n' );
+                    out.flush();
 
-                tmpFile.deleteOnExit();
-
-                out.write( stdout.getOutput().getBytes() );
-                out.write( '\n' );
-                out.flush();
-                this.callback.onExit( exitValue, stdout.getOutput() );
+                }*/
 
             }
             catch ( Exception e )
             {
                 exitValue = ERROR;
                 e.printStackTrace();
-                err.write( stderr.getOutput().getBytes() );
-
             }
             finally
             {
-                callback.onExit( exitValue, stderr.getOutput() );
-            }
+                deleteQuietly( tmpFile );
+                if ( exitValue != 0 )
+                {
+                    err.write( stderr.getOutput().getBytes() );
+                    err.write( '\n' );
+                    err.flush();
+                    callback.onExit( exitValue, stderr.getOutput() );
+                }
+                else
+                {
+                    out.write( stdout.getOutput().getBytes() );
+                    out.write( '\n' );
+                    out.flush();
+                    callback.onExit( exitValue, stdout.getOutput() );
+                }
 
+            }
+            /*
             out.write( exitValue );
             out.write( '\n' );
-            out.flush();
 
+            */
+            out.flush();
         }
 
         public void destroy()
         {
 
         }
+
+        private void deleteQuietly( File f )
+        {
+
+            try
+            {
+                f.delete();
+            }
+            catch ( Exception e )
+            {
+                // ignore
+            }
+        }
     }
 
+
     static class TestSshFile
         extends NativeSshFile
     {
@@ -374,10 +408,16 @@ public class ScpWagonTest
         }
     }
 
-    public void testWagonGetFileList()
-        throws Exception
+    // file lastModified not return so don't support
+    protected boolean supportsGetIfNewer()
+    {
+        return false;
+    }
+
+    public void testWagon() throws Exception
     {
-        super.testWagonGetFileList();
+        super.testWagon();
     }
 
+
 }


Reply via email to