--- old/test/tools/jlink/plugins/FileCopierPluginTest.java 2016-12-15 09:53:15.000000000 +0530 +++ /dev/null 2016-12-15 09:53:15.000000000 +0530 @@ -1,163 +0,0 @@ -/* - * Copyright (c) 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. - * - * 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 - * @summary Test files copy plugin - * @author Jean-Francois Denise - * @modules jdk.jlink/jdk.tools.jlink.internal - * jdk.jlink/jdk.tools.jlink.builder - * jdk.jlink/jdk.tools.jlink.internal.plugins - * @run main FileCopierPluginTest - */ - -import java.io.File; -import java.net.URI; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import jdk.tools.jlink.internal.ResourcePoolManager; -import jdk.tools.jlink.builder.DefaultImageBuilder; - -import jdk.tools.jlink.internal.plugins.FileCopierPlugin; -import jdk.tools.jlink.plugin.PluginException; -import jdk.tools.jlink.plugin.ResourcePoolEntry; -import jdk.tools.jlink.plugin.ResourcePool; - -public class FileCopierPluginTest { - - public static void main(String[] args) throws Exception { - new FileCopierPluginTest().test(); - } - - /** - * 3 cases - Absolute, no target ==> copy in image root dir - Absolute and - * target ==> copy in image root dir/target - Relative ==> copy from JDK - * home dir. - * - * @throws Exception - */ - public void test() throws Exception { - FileCopierPlugin plug = new FileCopierPlugin(); - String content = "You \n should \n be \bthere.\n"; - String name = "sample.txt"; - File src = new File("src"); - src.mkdir(); - // Need a fake bin - File bin = new File("bin"); - bin.mkdir(); - - File txt = new File(src, name); - txt.createNewFile(); - - String target = "target" + File.separator + name; - Files.write(txt.toPath(), content.getBytes()); - File lic = new File(System.getProperty("java.home"), "LICENSE.txt"); - StringBuilder builder = new StringBuilder(); - int expected = lic.exists() ? 4 : 3; - if (lic.exists()) { - builder.append("LICENSE.txt,"); - } - builder.append(txt.getAbsolutePath()+","); - builder.append(txt.getAbsolutePath() + "=" + target+","); - builder.append(src.getAbsolutePath() + "=src2"); - - Map conf = new HashMap<>(); - conf.put(FileCopierPlugin.NAME, builder.toString()); - plug.configure(conf); - ResourcePoolManager poolMgr = new ResourcePoolManager(); - // java.base/module-info.class is used to add "release" file - // We read it from jrt-fs and add a ResourcePoolEntry - poolMgr.add( - ResourcePoolEntry.create("/java.base/module-info.class", - ResourcePoolEntry.Type.CLASS_OR_RESOURCE, getJavaBaseModuleInfo())); - expected++; - ResourcePool pool = plug.transform( - new ResourcePoolManager().resourcePool(), - poolMgr.resourcePoolBuilder()); - if (pool.entryCount() != expected) { - throw new AssertionError("Wrong number of added files"); - } - pool.entries().forEach(f -> { - if (!f.type().equals(ResourcePoolEntry.Type.OTHER) && - !f.type().equals(ResourcePoolEntry.Type.CLASS_OR_RESOURCE)) { - throw new AssertionError("Invalid type " + f.type() - + " for file " + f.path()); - } - if (f.content() == null) { - throw new AssertionError("Null stream for file " + f.path()); - } - }); - Path root = new File(".").toPath(); - DefaultImageBuilder imgbuilder = new DefaultImageBuilder(root); - imgbuilder.storeFiles(pool); - - if (lic.exists()) { - File license = new File(root.toFile(), "LICENSE.txt"); - if (!license.exists() || license.length() == 0) { - throw new AssertionError("Invalid license file " - + license.getAbsoluteFile()); - } - } - - File sample1 = new File(root.toFile(), txt.getName()); - if (!sample1.exists() || sample1.length() == 0) { - throw new AssertionError("Invalide sample1 file " - + sample1.getAbsoluteFile()); - } - if (!new String(Files.readAllBytes(sample1.toPath())).equals(content)) { - throw new AssertionError("Invalid Content in sample1"); - } - - File sample2 = new File(root.toFile(), target); - if (!sample2.exists() || sample2.length() == 0) { - throw new AssertionError("Invalide sample2 file " - + sample2.getAbsoluteFile()); - } - if (!new String(Files.readAllBytes(sample2.toPath())).equals(content)) { - throw new AssertionError("Invalid Content in sample2"); - } - - File src2 = new File(root.toFile(), "src2"); - if (!src2.exists() || src2.list().length != 1) { - throw new AssertionError("Invalide src2 dir " - + src2.getAbsoluteFile()); - } - File f = src2.listFiles()[0]; - if (!f.getName().equals(txt.getName())) { - throw new AssertionError("Invalide file name in src2 dir " - + f.getAbsoluteFile()); - } - if (!new String(Files.readAllBytes(f.toPath())).equals(content)) { - throw new AssertionError("Invalid Content in src2 dir"); - } - } - - // read java.base/module-info.class from jrt-fs - private static Path getJavaBaseModuleInfo() { - return Paths.get(URI.create("jrt:/modules/java.base/module-info.class")); - } -}