HADOOP-9437. TestNativeIO#testRenameTo fails on Windows due to assumption that POSIX errno is embedded in NativeIOException. Contributed by Chris Nauroth.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1466306 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f0351527d5
commit
2b19054c92
|
@ -506,6 +506,10 @@ Trunk (Unreleased)
|
|||
HADOOP-9353. Activate native-win maven profile by default on Windows.
|
||||
(Arpit Agarwal via szetszwo)
|
||||
|
||||
HADOOP-9437. TestNativeIO#testRenameTo fails on Windows due to assumption
|
||||
that POSIX errno is embedded in NativeIOException. (Chris Nauroth via
|
||||
suresh)
|
||||
|
||||
Release 2.0.5-beta - UNRELEASED
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -816,6 +816,7 @@ JNIEXPORT void JNICALL
|
|||
Java_org_apache_hadoop_io_nativeio_NativeIO_renameTo0(JNIEnv *env,
|
||||
jclass clazz, jstring jsrc, jstring jdst)
|
||||
{
|
||||
#ifdef UNIX
|
||||
const char *src = NULL, *dst = NULL;
|
||||
|
||||
src = (*env)->GetStringUTFChars(env, jsrc, NULL);
|
||||
|
@ -829,6 +830,23 @@ jclass clazz, jstring jsrc, jstring jdst)
|
|||
done:
|
||||
if (src) (*env)->ReleaseStringUTFChars(env, jsrc, src);
|
||||
if (dst) (*env)->ReleaseStringUTFChars(env, jdst, dst);
|
||||
#endif
|
||||
|
||||
#ifdef WINDOWS
|
||||
LPCWSTR src = NULL, dst = NULL;
|
||||
|
||||
src = (LPCWSTR) (*env)->GetStringChars(env, jsrc, NULL);
|
||||
if (!src) goto done; // exception was thrown
|
||||
dst = (LPCWSTR) (*env)->GetStringChars(env, jdst, NULL);
|
||||
if (!dst) goto done; // exception was thrown
|
||||
if (!MoveFile(src, dst)) {
|
||||
throw_ioe(env, GetLastError());
|
||||
}
|
||||
|
||||
done:
|
||||
if (src) (*env)->ReleaseStringChars(env, jsrc, src);
|
||||
if (dst) (*env)->ReleaseStringChars(env, jdst, dst);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -446,7 +446,13 @@ public class TestNativeIO {
|
|||
NativeIO.renameTo(nonExistentFile, targetFile);
|
||||
Assert.fail();
|
||||
} catch (NativeIOException e) {
|
||||
Assert.assertEquals(e.getErrno(), Errno.ENOENT);
|
||||
if (Path.WINDOWS) {
|
||||
Assert.assertEquals(
|
||||
String.format("The system cannot find the file specified.%n"),
|
||||
e.getMessage());
|
||||
} else {
|
||||
Assert.assertEquals(Errno.ENOENT, e.getErrno());
|
||||
}
|
||||
}
|
||||
|
||||
// Test renaming a file to itself. It should succeed and do nothing.
|
||||
|
@ -465,7 +471,13 @@ public class TestNativeIO {
|
|||
NativeIO.renameTo(sourceFile, badTarget);
|
||||
Assert.fail();
|
||||
} catch (NativeIOException e) {
|
||||
Assert.assertEquals(e.getErrno(), Errno.ENOTDIR);
|
||||
if (Path.WINDOWS) {
|
||||
Assert.assertEquals(
|
||||
String.format("The parameter is incorrect.%n"),
|
||||
e.getMessage());
|
||||
} else {
|
||||
Assert.assertEquals(Errno.ENOTDIR, e.getErrno());
|
||||
}
|
||||
}
|
||||
|
||||
FileUtils.deleteQuietly(TEST_DIR);
|
||||
|
|
Loading…
Reference in New Issue