< prev index next >

test/java/nio/file/Files/probeContentType/Basic.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2008, 2011, 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. --- 1,7 ---- /* ! * Copyright (c) 2008, 2016, 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.
*** 20,44 **** * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 4313887 * @summary Unit test for probeContentType method * @library ../.. * @build Basic SimpleFileTypeDetector * @run main/othervm Basic */ - import java.nio.file.*; import java.io.*; /** ! * Uses Files.probeContentType to probe html file and custom file type. */ - public class Basic { static Path createHtmlFile() throws IOException { Path file = Files.createTempFile("foo", ".html"); try (OutputStream out = Files.newOutputStream(file)) { out.write("<html><body>foo</body></html>".getBytes()); --- 20,47 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 4313887 8146215 * @summary Unit test for probeContentType method * @library ../.. * @build Basic SimpleFileTypeDetector * @run main/othervm Basic */ import java.io.*; + import java.nio.file.*; + import java.util.stream.Stream; /** ! * Uses Files.probeContentType to probe html file, custom file type, and minimal ! * set of file extension to content type mappings. */ public class Basic { + private static final boolean IS_UNIX = + ! System.getProperty("os.name").startsWith("Windows"); static Path createHtmlFile() throws IOException { Path file = Files.createTempFile("foo", ".html"); try (OutputStream out = Files.newOutputStream(file)) { out.write("<html><body>foo</body></html>".getBytes());
*** 49,83 **** static Path createGrapeFile() throws IOException { return Files.createTempFile("red", ".grape"); } public static void main(String[] args) throws IOException { // exercise default file type detector Path file = createHtmlFile(); try { String type = Files.probeContentType(file); if (type == null) { System.err.println("Content type cannot be determined - test skipped"); } else { ! if (!type.equals("text/html")) ! throw new RuntimeException("Unexpected type: " + type); } } finally { Files.delete(file); } // exercise custom file type detector file = createGrapeFile(); try { String type = Files.probeContentType(file); ! if (type == null) ! throw new RuntimeException("Custom file type detector not installed?"); ! if (!type.equals("grape/unknown")) ! throw new RuntimeException("Unexpected type: " + type); } finally { Files.delete(file); } } } --- 52,132 ---- static Path createGrapeFile() throws IOException { return Files.createTempFile("red", ".grape"); } + private static void checkMimeTypesFile(Path mimeTypes) { + if (!Files.exists(mimeTypes)) { + System.out.println(mimeTypes + " does not exist"); + } else if (!Files.isReadable(mimeTypes)) { + System.out.println(mimeTypes + " is not readable"); + } else { + System.out.println(mimeTypes + " contents:"); + try (Stream<String> lines = Files.lines(mimeTypes)) { + lines.forEach(System.out::println); + System.out.println(""); + } catch (IOException ioe) { + System.err.printf("Problem reading %s: %s%n", + mimeTypes, ioe.getMessage()); + } + } + } + + private static int checkContentTypes(String expected, String actual) { + assert expected != null; + assert actual != null; + + if (!expected.equals(actual)) { + if (IS_UNIX) { + Path userMimeTypes = + Paths.get(System.getProperty("user.home"), ".mime.types"); + checkMimeTypesFile(userMimeTypes); + + Path etcMimeTypes = Paths.get("/etc/mime.types"); + checkMimeTypesFile(etcMimeTypes); + } + + System.err.println("Expected \"" + expected + + "\" but obtained \"" + + actual + "\""); + + return 1; + } + + return 0; + } + public static void main(String[] args) throws IOException { + int failures = 0; // exercise default file type detector Path file = createHtmlFile(); try { String type = Files.probeContentType(file); if (type == null) { System.err.println("Content type cannot be determined - test skipped"); } else { ! failures += checkContentTypes("text/html", type); } } finally { Files.delete(file); } // exercise custom file type detector file = createGrapeFile(); try { String type = Files.probeContentType(file); ! if (type == null) { ! System.err.println("Custom file type detector not installed?"); ! failures++; ! } else { ! failures += checkContentTypes("grape/unknown", type); ! } } finally { Files.delete(file); } + if (failures > 0) { + throw new RuntimeException("Test failed!"); + } } }
< prev index next >