HADOOP-15516. Add test cases to cover FileUtil#readLink. Contributed by Giovanni Matteo Fumarola.

(cherry picked from commit 12be8bad7d)
This commit is contained in:
Inigo Goiri 2018-06-07 13:34:52 -07:00
parent e9367ccb41
commit 8526ba9a69
2 changed files with 58 additions and 0 deletions

View File

@ -198,6 +198,12 @@ public class FileUtil {
* use getCanonicalPath in File to get the target of the symlink but that
* does not indicate if the given path refers to a symlink.
*/
if (f == null) {
LOG.warn("Can not read a null symLink");
return "";
}
try {
return Shell.execCommand(
Shell.getReadlinkCommand(f.toString())).trim();

View File

@ -1287,4 +1287,56 @@ public class TestFileUtil {
}
}
/**
* This test validates the correctness of {@link FileUtil#readLink(File)} in
* case of null pointer inputs.
*/
@Test
public void testReadSymlinkWithNullInput() {
String result = FileUtil.readLink(null);
Assert.assertEquals("", result);
}
/**
* This test validates the correctness of {@link FileUtil#readLink(File)}.
*
* @throws IOException
*/
@Test
public void testReadSymlink() throws IOException {
Assert.assertFalse(del.exists());
del.mkdirs();
File file = new File(del, FILE);
File link = new File(del, "_link");
// Create a symbolic link
FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
String result = FileUtil.readLink(link);
Assert.assertEquals(file.getAbsolutePath(), result);
file.delete();
link.delete();
}
/**
* This test validates the correctness of {@link FileUtil#readLink(File)} when
* it gets a file in input.
*
* @throws IOException
*/
@Test
public void testReadSymlinkWithAFileAsInput() throws IOException {
Assert.assertFalse(del.exists());
del.mkdirs();
File file = new File(del, FILE);
String result = FileUtil.readLink(file);
Assert.assertEquals("", result);
file.delete();
}
}