HADOOP-15948. Inconsistency in get and put syntax if filename/dirname contains space. Contributed by Ayush Saxena.

This commit is contained in:
Vinayakumar B 2018-11-26 18:11:01 +05:30
parent a8302e398c
commit 23b441c225
2 changed files with 11 additions and 6 deletions

View File

@ -274,12 +274,7 @@ protected List<PathData> expandArgument(String arg) throws IOException {
try {
items.add(new PathData(new URI(arg), getConf()));
} catch (URISyntaxException e) {
if (Path.WINDOWS) {
// Unlike URI, PathData knows how to parse Windows drive-letter paths.
items.add(new PathData(arg, getConf()));
} else {
throw new IOException("unexpected URISyntaxException", e);
}
items.add(new PathData(arg, getConf()));
}
return items;
}

View File

@ -43,9 +43,11 @@ public class TestCopyPreserveFlag {
private static final int MODIFICATION_TIME = 12345000;
private static final int ACCESS_TIME = 23456000;
private static final Path DIR_FROM = new Path("d0");
private static final Path DIR_FROM_SPL = new Path("d0 space");
private static final Path DIR_TO1 = new Path("d1");
private static final Path DIR_TO2 = new Path("d2");
private static final Path FROM = new Path(DIR_FROM, "f0");
private static final Path FROM_SPL = new Path(DIR_FROM_SPL, "f0");
private static final Path TO = new Path(DIR_TO1, "f1");
private static final FsPermission PERMISSIONS = new FsPermission(
FsAction.ALL,
@ -120,6 +122,14 @@ public void testPutWithoutP() throws Exception {
assertAttributesChanged(TO);
}
@Test(timeout = 10000)
public void testPutWithSplCharacter() throws Exception {
fs.mkdirs(DIR_FROM_SPL);
fs.createNewFile(FROM_SPL);
run(new Put(), FROM_SPL.toString(), TO.toString());
assertAttributesChanged(TO);
}
@Test(timeout = 10000)
public void testCopyFromLocal() throws Exception {
run(new CopyFromLocal(), FROM.toString(), TO.toString());