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

Print this page
rev 12244 : 8129632: (fs) Files.probeContentType returns null on Mac OS X
Summary: Append a Uniform Type Identifier-based FileType Detector for Mac OS X
Reviewed-by: XXX

*** 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, 2015, 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,43 **** * 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)) { --- 20,43 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 4313887 8129632 * @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, custom file type, and minimal ! * set of file extension to content type mappings. */ public class Basic { static Path createHtmlFile() throws IOException { Path file = Files.createTempFile("foo", ".html"); try (OutputStream out = Files.newOutputStream(file)) {
*** 49,58 **** --- 49,91 ---- static Path createGrapeFile() throws IOException { return Files.createTempFile("red", ".grape"); } + static void checkContentTypes(String[] extensions, String[] expectedTypes) + throws IOException { + if (extensions.length != expectedTypes.length) { + throw new IllegalArgumentException("Parameter array lengths differ"); + } + + int failures = 0; + for (int i = 0; i < extensions.length; i++) { + String extension = extensions[i]; + Path file = Files.createTempFile("foo", "." + extension); + try { + String type = Files.probeContentType(file); + if (type == null) { + System.err.println("Content type of " + extension + + " cannot be determined"); + failures++; + } else { + if (!type.equals(expectedTypes[i])) { + System.err.println("Content type: " + type + + "; expected: " + expectedTypes[i]); + failures++; + } + } + } finally { + file.toFile().delete(); + } + } + + if (failures > 0) { + throw new RuntimeException("Test failed!"); + } + } + public static void main(String[] args) throws IOException { // exercise default file type detector Path file = createHtmlFile(); try {
*** 77,83 **** --- 110,137 ---- throw new RuntimeException("Unexpected type: " + type); } finally { Files.delete(file); } + // Verify that common file extensions are mapped to the correct content + // types taking into account OS-dependent minimum state. + String[] extensions; + String[] expectedTypes; + if (System.getProperty("os.name").toLowerCase().contains("windows")) { + extensions = new String[] { + "jpg", "png" + }; + expectedTypes = new String[] { + "image/jpeg", "image/png" + }; + } else { + extensions = new String[] { + "jpg", "mp3", "mp4", "pdf", "png" + }; + expectedTypes = new String[] { + "image/jpeg", "audio/mpeg", "video/mp4", "application/pdf", + "image/png" + }; + } + checkContentTypes (extensions, expectedTypes); } }