/
githubmirror
/
galahad
Обзор
Документация
Войти
/
githubmirror
/
galahad
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/jdk/java/io/File/EmptyPath.java
398 строк
10 KB
Francesco Andreuzzi
8369817: [TESTBUG] EmptyPath::toString is ignored
15 окт 2025, 12:17
15 окт 2025, 12:17
008d8d9
Код
Авторство
О чём код?
/* * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test * @bug 4842706 8024695 8361587 8362429 * @summary Test some file operations with empty path * @run junit EmptyPath */ import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FilenameFilter; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.nio.file.Files; import java.nio.file.FileStore; import java.nio.file.Path; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; import static org.junit.jupiter.api.Assertions.*; public class EmptyPath { private static final String EMPTY_STRING = ""; static File f; static Path p; @BeforeAll public static void init() { f = new File(EMPTY_STRING); p = Path.of(EMPTY_STRING); } @Test public void canExecute() { assertTrue(f.canExecute()); } @Test public void canRead() { assertTrue(f.canRead()); } @Test public void canWrite() { assertTrue(f.canWrite()); } @Test public void compareTo() { assertEquals(0, f.compareTo(p.toFile())); } @Test public void createNewFile() { assertThrows(IOException.class, () -> f.createNewFile()); } @Test public void open() throws FileNotFoundException { assertThrows(FileNotFoundException.class, () -> new FileInputStream(f)); } @Test public void delete() { assertFalse(f.delete()); } @Test public void equals() { assertTrue(f.equals(p.toFile())); } @Test public void exists() { assertTrue(f.exists()); } @Test public void getAbsoluteFile() { assertEquals(p.toAbsolutePath().toFile(), f.getAbsoluteFile()); } @Test public void getAbsolutePath() { System.out.println(p.toAbsolutePath().toString() + "\n" + f.getAbsolutePath()); assertEquals(p.toAbsolutePath().toString(), f.getAbsolutePath()); } @Test public void getCanonicalFile() throws IOException { assertEquals(p.toRealPath().toFile(), f.getCanonicalFile()); } @Test public void getCanonicalPath() throws IOException { assertEquals(p.toRealPath().toString(), f.getCanonicalPath()); } private void checkSpace(long expected, long actual) { if (expected == 0) { assertEquals(0L, actual); } else { assertTrue(actual > 0); } } @Test public void getFreeSpace() throws IOException { FileStore fs = Files.getFileStore(f.toPath()); checkSpace(fs.getUnallocatedSpace(), f.getFreeSpace()); } @Test public void getName() { assertEquals(p.getFileName().toString(), f.getName()); } @Test public void getParent() { assertNull(f.getParent()); } @Test public void getParentFile() { assertNull(f.getParentFile()); } @Test public void getPath() { assertEquals(p.toString(), f.getPath()); } @Test public void getTotalSpace() throws IOException { FileStore fs = Files.getFileStore(f.toPath()); checkSpace(fs.getTotalSpace(), f.getTotalSpace()); } @Test public void getUsableSpace() throws IOException { FileStore fs = Files.getFileStore(f.toPath()); checkSpace(fs.getUsableSpace(), f.getUsableSpace()); } @Test public void isNotAbsolute() { assertFalse(f.isAbsolute()); } @Test public void isAbsolute() { assertTrue(f.getAbsoluteFile().isAbsolute()); } @Test public void isDirectory() { assertTrue(f.isDirectory()); } @Test public void isFile() { assertFalse(f.isFile()); } @Test public void isHidden() { assertFalse(f.isHidden()); } @Test public void lastModified() { assertTrue(f.lastModified() > 0); } @Test public void length() throws IOException { assertEquals(Files.size(f.toPath()), f.length()); } @Test public void list() throws IOException { list(f.list()); } @Test public void listFilenameFilter() throws IOException { list(f.list((FilenameFilter)null)); } private void list(String[] files) throws IOException { assertNotNull(files); Set<String> ioSet = new HashSet(Arrays.asList(files)); Set<String> nioSet = new HashSet(); Files.list(p).forEach((x) -> nioSet.add(x.toString())); assertEquals(nioSet, ioSet); } @Test public void listFiles() throws IOException { listFiles(x -> x.listFiles()); } @Test public void listFilesFileFilter() throws IOException { FileFilter ff = new FileFilter() { public boolean accept(File pathname) { return true; } }; listFiles(x -> x.listFiles(ff)); } @Test public void listFilesNullFileFilter() throws IOException { listFiles(x -> x.listFiles((FileFilter)null)); } @Test public void listFilesFilenameFilter() throws IOException { FilenameFilter fnf = new FilenameFilter() { public boolean accept(File dir, String name) { return true; } }; listFiles(x -> x.listFiles(fnf)); } @Test public void listFilesNullFilenameFilter() throws IOException { listFiles(x -> x.listFiles((FilenameFilter)null)); } private void listFiles(Function<File,File[]> func) throws IOException { String childName = "child" + System.nanoTime(); File child = new File(f.getAbsoluteFile(), childName); assertTrue(child.createNewFile()); child.deleteOnExit(); File[] files = func.apply(f); for (File file : files) assertEquals(-1, f.toString().indexOf(File.separatorChar)); Set<String> ioSet = Arrays.stream(files) .map(File::getName) .collect(Collectors.toSet()); assertTrue(ioSet.contains(child.getName())); Set<String> nioSet = Files.list(p) .map(Path::getFileName) .map(Path::toString) .collect(Collectors.toSet()); assertEquals(nioSet, ioSet); } @Test public void listRoots() { Set<String> expected = Arrays.stream(f.getAbsoluteFile().listRoots()) .map(File::toString) .collect(Collectors.toSet()); Set<String> actual = Arrays.stream(f.listRoots()) .map(File::toString) .collect(Collectors.toSet()); assertEquals(expected, actual); } @Test public void mkdir() { assertFalse(f.mkdir()); } @Test public void mkdirs() { assertFalse(f.mkdirs()); } @Test public void renameTo() throws IOException { File tmp = File.createTempFile("foo", "bar", f.getAbsoluteFile()); assertTrue(tmp.exists()); assertFalse(f.renameTo(tmp)); } @Test public void setLastModified() { long t0 = f.lastModified(); long t = System.currentTimeMillis(); try { assertTrue(f.setLastModified(t)); assertEquals(t, f.lastModified()); assertTrue(f.setLastModified(t0)); assertEquals(t0, f.lastModified()); } finally { f.setLastModified(t0); } } // Note: Testing File.setExecutable is omitted because calling // File.setExecutable(false) makes it impossible to set the CWD to // executable again which makes subsequent tests fail @Test @DisabledOnOs({OS.WINDOWS}) public void setReadable() { assertTrue(f.canRead()); try { assertTrue(f.setReadable(false)); assertFalse(f.canRead()); assertTrue(f.setReadable(true)); assertTrue(f.canRead()); } finally { f.setReadable(true); } } @Test @DisabledOnOs({OS.WINDOWS}) public void setReadOnly() { assertTrue(f.canExecute()); assertTrue(f.canRead()); assertTrue(f.canWrite()); try { assertTrue(f.setReadOnly()); assertTrue(f.canRead()); assertFalse(f.canWrite()); assertTrue(f.setWritable(true, true)); assertTrue(f.canWrite()); } finally { f.setWritable(true, true); } } @Test @DisabledOnOs({OS.WINDOWS}) public void setWritable() { assertTrue(f.canWrite()); try { assertTrue(f.setWritable(false, true)); assertFalse(f.canWrite()); assertTrue(f.setWritable(true, true)); assertTrue(f.canWrite()); } finally { f.setWritable(true, true); } } @Test public void toPath() { assertEquals(p, f.toPath()); } @Test public void testToString() { assertEquals(EMPTY_STRING, f.toString()); } @Test public void toURI() { assertEquals(f.toPath().toUri(), f.toURI()); } @Test public void toURL() throws MalformedURLException { assertEquals(f.toPath().toUri().toURL(), f.toURL()); } }