This commit is contained in:
Looly
2022-10-26 12:34:05 +08:00
parent c79cdc1f6f
commit 36e560842d
13 changed files with 463 additions and 169 deletions

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.file.LineSeparator;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.SystemUtil;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
@@ -141,42 +142,15 @@ public class FileUtilTest {
FileUtil.convertLineSeparator(FileUtil.file("d:/aaa.txt"), CharsetUtil.UTF_8, LineSeparator.WINDOWS);
}
@Test
public void normalizeTest() {
Assert.assertEquals("/foo/", FileUtil.normalize("/foo//"));
Assert.assertEquals("/foo/", FileUtil.normalize("/foo/./"));
Assert.assertEquals("/bar", FileUtil.normalize("/foo/../bar"));
Assert.assertEquals("/bar/", FileUtil.normalize("/foo/../bar/"));
Assert.assertEquals("/baz", FileUtil.normalize("/foo/../bar/../baz"));
Assert.assertEquals("/", FileUtil.normalize("/../"));
Assert.assertEquals("foo", FileUtil.normalize("foo/bar/.."));
Assert.assertEquals("../bar", FileUtil.normalize("foo/../../bar"));
Assert.assertEquals("bar", FileUtil.normalize("foo/../bar"));
Assert.assertEquals("/server/bar", FileUtil.normalize("//server/foo/../bar"));
Assert.assertEquals("/bar", FileUtil.normalize("//server/../bar"));
Assert.assertEquals("C:/bar", FileUtil.normalize("C:\\foo\\..\\bar"));
//
Assert.assertEquals("C:/bar", FileUtil.normalize("C:\\..\\bar"));
Assert.assertEquals("../../bar", FileUtil.normalize("../../bar"));
Assert.assertEquals("C:/bar", FileUtil.normalize("/C:/bar"));
Assert.assertEquals("C:", FileUtil.normalize("C:"));
Assert.assertEquals("\\/192.168.1.1/Share/", FileUtil.normalize("\\\\192.168.1.1\\Share\\"));
}
@Test
public void normalizeBlankTest() {
Assert.assertEquals("C:/aaa ", FileUtil.normalize("C:\\aaa "));
}
@Test
public void normalizeHomePathTest() {
final String home = FileUtil.getUserHomePath().replace('\\', '/');
final String home = SystemUtil.getUserHomePath().replace('\\', '/');
Assert.assertEquals(home + "/bar/", FileUtil.normalize("~/foo/../bar/"));
}
@Test
public void normalizeHomePathTest2() {
final String home = FileUtil.getUserHomePath().replace('\\', '/');
final String home = SystemUtil.getUserHomePath().replace('\\', '/');
// 多个~应该只替换开头的
Assert.assertEquals(home + "/~bar/", FileUtil.normalize("~/foo/../~bar/"));
}

View File

@@ -18,4 +18,31 @@ public class FileNameUtilTest {
final String s = FileNameUtil.mainName("abc.tar.gz");
Assert.assertEquals("abc", s);
}
@Test
public void normalizeTest() {
Assert.assertEquals("/foo/", FileNameUtil.normalize("/foo//"));
Assert.assertEquals("/foo/", FileNameUtil.normalize("/foo/./"));
Assert.assertEquals("/bar", FileNameUtil.normalize("/foo/../bar"));
Assert.assertEquals("/bar/", FileNameUtil.normalize("/foo/../bar/"));
Assert.assertEquals("/baz", FileNameUtil.normalize("/foo/../bar/../baz"));
Assert.assertEquals("/", FileNameUtil.normalize("/../"));
Assert.assertEquals("foo", FileNameUtil.normalize("foo/bar/.."));
Assert.assertEquals("../bar", FileNameUtil.normalize("foo/../../bar"));
Assert.assertEquals("bar", FileNameUtil.normalize("foo/../bar"));
Assert.assertEquals("/server/bar", FileNameUtil.normalize("//server/foo/../bar"));
Assert.assertEquals("/bar", FileNameUtil.normalize("//server/../bar"));
Assert.assertEquals("C:/bar", FileNameUtil.normalize("C:\\foo\\..\\bar"));
//
Assert.assertEquals("C:/bar", FileNameUtil.normalize("C:\\..\\bar"));
Assert.assertEquals("../../bar", FileNameUtil.normalize("../../bar"));
Assert.assertEquals("C:/bar", FileNameUtil.normalize("/C:/bar"));
Assert.assertEquals("C:", FileNameUtil.normalize("C:"));
Assert.assertEquals("\\/192.168.1.1/Share/", FileNameUtil.normalize("\\\\192.168.1.1\\Share\\"));
}
@Test
public void normalizeBlankTest() {
Assert.assertEquals("C:/aaa ", FileNameUtil.normalize("C:\\aaa "));
}
}