You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2015/01/13 16:10:07 UTC
mina-sshd git commit: [SSHD-396] Fixed SftpTest#testOpen to work
correctly on Windows
Repository: mina-sshd
Updated Branches:
refs/heads/master 93d3aea6d -> 595858815
[SSHD-396] Fixed SftpTest#testOpen to work correctly on Windows
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/59585881
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/59585881
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/59585881
Branch: refs/heads/master
Commit: 59585881559b0d1d7d1b089f209c7061aa268c5e
Parents: 93d3aea
Author: Guillaume Nodet <gn...@apache.org>
Authored: Tue Jan 13 16:09:38 2015 +0100
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Tue Jan 13 16:09:38 2015 +0100
----------------------------------------------------------------------
.../src/test/java/org/apache/sshd/SftpTest.java | 54 +++++++++++++-------
1 file changed, 35 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/59585881/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/SftpTest.java b/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
index 6585966..b4f2c0e 100644
--- a/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
@@ -34,6 +34,7 @@ import com.jcraft.jsch.JSch;
import org.apache.sshd.client.SftpClient;
import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.common.util.Buffer;
+import org.apache.sshd.common.util.OsUtils;
import org.apache.sshd.server.Command;
import org.apache.sshd.server.command.ScpCommandFactory;
import org.apache.sshd.server.sftp.SftpSubsystem;
@@ -99,40 +100,51 @@ public class SftpTest extends BaseTest {
session.addPasswordIdentity("x");
session.auth().verify();
- String file = "target/sftp/client/test.txt";
+ String file = "target/sftp/client/testOpen.txt";
+ File javaFile = new File(file);
- new File(file).getParentFile().mkdirs();
- new File(file).createNewFile();
- new File(file).setWritable(false, false);
- new File(file).setReadable(false, false);
+ javaFile.getParentFile().mkdirs();
+ javaFile.createNewFile();
+ javaFile.setWritable(false, false);
+ javaFile.setReadable(false, false);
SftpClient sftp = session.createSftpClient();
SftpClient.Handle h;
+ boolean isWindows = OsUtils.isWin32();
+
try {
- sftp.open(file, EnumSet.of(SftpClient.OpenMode.Read));
- fail("Should have failed");
+ h = sftp.open(file, EnumSet.of(SftpClient.OpenMode.Read));
+ // NOTE: on Windows files are always readable
+ // see https://svn.apache.org/repos/asf/harmony/enhanced/java/branches/java6/classlib/modules/luni/src/test/api/windows/org/apache/harmony/luni/tests/java/io/WinFileTest.java
+ Assert.assertTrue("Empty read should have failed", isWindows);
+ sftp.close(h);
} catch (IOException e) {
- // ok
+ if (isWindows) {
+ throw e;
+ }
}
try {
- sftp.open(file, EnumSet.of(SftpClient.OpenMode.Write));
- fail("Should have failed");
+ h = sftp.open(file, EnumSet.of(SftpClient.OpenMode.Write));
+ fail("Empty write should have failed");
} catch (IOException e) {
// ok
}
try {
- sftp.open(file, EnumSet.of(SftpClient.OpenMode.Truncate));
- fail("Should have failed");
+ h = sftp.open(file, EnumSet.of(SftpClient.OpenMode.Truncate));
+ fail("Empty truncate should have failed");
} catch (IOException e) {
// ok
}
- Assert.assertEquals(0, (sftp.stat(file).perms & (SftpClient.S_IWUSR | SftpClient.S_IRUSR)));
+ // NOTE: on Windows files are always readable
+ int perms=sftp.stat(file).perms;
+ int permsMask=SftpClient.S_IWUSR | (isWindows ? 0 : SftpClient.S_IRUSR);
+ Assert.assertEquals("Mismatched permissions - 0x" + Integer.toHexString(perms), 0, (perms & permsMask));
- new File(file).setWritable(true, false);
+ javaFile.setWritable(true, false);
h = sftp.open(file, EnumSet.of(SftpClient.OpenMode.Truncate, SftpClient.OpenMode.Write));
sftp.close(h);
@@ -150,18 +162,22 @@ public class SftpTest extends BaseTest {
sftp.close(h);
try {
- sftp.open(file, EnumSet.of(SftpClient.OpenMode.Read));
- fail("Should have failed");
+ h = sftp.open(file, EnumSet.of(SftpClient.OpenMode.Read));
+ // NOTE: on Windows files are always readable
+ Assert.assertTrue("Data read should have failed", isWindows);
+ sftp.close(h);
} catch (IOException e) {
- // ok
+ if (isWindows) {
+ throw e;
+ }
}
- new File(file).setReadable(true, false);
+ javaFile.setReadable(true, false);
h = sftp.open(file, EnumSet.of(SftpClient.OpenMode.Read));
byte[] buf = new byte[3];
int l = sftp.read(h, 2l, buf, 0, 3);
- assertEquals("2-4", new String(buf, 0, l));
+ assertEquals("Mismatched read data", "2-4", new String(buf, 0, l));
sftp.close(h);
}