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:
parent
06699c900a
commit
43e800e1ff
|
@ -601,6 +601,9 @@ Release 0.21.1 - Unreleased
|
|||
HADOOP-7193. Correct the "fs -touchz" command help message.
|
||||
(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
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -195,6 +195,9 @@ public class FsShell extends Configured implements Tool {
|
|||
copyCrc = false;
|
||||
}
|
||||
FileStatus[] srcs = srcFS.globStatus(srcpath);
|
||||
if (null == srcs) {
|
||||
throw new IOException(srcpath + ": No such file or directory");
|
||||
}
|
||||
boolean dstIsDir = dst.isDirectory();
|
||||
if (srcs.length > 1 && !dstIsDir) {
|
||||
throw new IOException("When copying multiple files, "
|
||||
|
|
|
@ -18,11 +18,15 @@
|
|||
|
||||
package org.apache.hadoop.fs;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
|
||||
import org.apache.hadoop.fs.FileSystem;
|
||||
import org.apache.hadoop.io.IOUtils;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.Assert;
|
||||
|
@ -237,4 +241,36 @@ public class TestFsShellReturnCode {
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue