HADOOP-7174. Null is displayed in the "fs -copyToLocal" command. Contributed by Uma Maheswara Rao G

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1085043 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Tsz-wo Sze 2011-03-24 17:23:13 +00:00
parent 06699c900a
commit 43e800e1ff
3 changed files with 42 additions and 0 deletions

View File

@ -601,6 +601,9 @@ Release 0.21.1 - Unreleased
HADOOP-7193. Correct the "fs -touchz" command help message. HADOOP-7193. Correct the "fs -touchz" command help message.
(Uma Maheswara Rao G via szetszwo) (Uma Maheswara Rao G via szetszwo)
HADOOP-7174. Null is displayed in the "fs -copyToLocal" command.
(Uma Maheswara Rao G via szetszwo)
Release 0.21.0 - 2010-08-13 Release 0.21.0 - 2010-08-13
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -195,6 +195,9 @@ public class FsShell extends Configured implements Tool {
copyCrc = false; copyCrc = false;
} }
FileStatus[] srcs = srcFS.globStatus(srcpath); FileStatus[] srcs = srcFS.globStatus(srcpath);
if (null == srcs) {
throw new IOException(srcpath + ": No such file or directory");
}
boolean dstIsDir = dst.isDirectory(); boolean dstIsDir = dst.isDirectory();
if (srcs.length > 1 && !dstIsDir) { if (srcs.length > 1 && !dstIsDir) {
throw new IOException("When copying multiple files, " throw new IOException("When copying multiple files, "

View File

@ -18,11 +18,15 @@
package org.apache.hadoop.fs; package org.apache.hadoop.fs;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.Assert; import org.junit.Assert;
@ -237,4 +241,36 @@ public class TestFsShellReturnCode {
verify(fs, "-chgrp", argv4, 1, fsShell, 0); verify(fs, "-chgrp", argv4, 1, fsShell, 0);
} }
@Test
public void testGetWithInvalidSourcePathShouldNotDisplayNullInConsole()
throws Exception {
Configuration conf = new Configuration();
FsShell shell = new FsShell();
shell.setConf(conf);
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
final PrintStream out = new PrintStream(bytes);
final PrintStream oldErr = System.err;
System.setErr(out);
final String results;
try {
FileSystem fileSys = FileSystem.getLocal(conf);
String[] args = new String[3];
args[0] = "-get";
args[1] = "/invalidPath";
args[2] = "/test/tmp";
assertTrue("file exists", !fileSys.exists(new Path(args[1])));
int run = shell.run(args);
results = bytes.toString();
assertTrue("Return code should be -1", run == -1);
assertTrue(" Null is coming when source path is invalid. ",!results.contains("get: null"));
assertTrue(" Not displaying the intended message ",results.contains("get: "+args[1]+": No such file or directory"));
} finally {
IOUtils.closeStream(out);
System.setErr(oldErr);
}
}
} }