aoqi@0: #!/bin/sh aoqi@0: aoqi@0: # aoqi@0: # Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. aoqi@0: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: # aoqi@0: # This code is free software; you can redistribute it and/or modify it aoqi@0: # under the terms of the GNU General Public License version 2 only, as aoqi@0: # published by the Free Software Foundation. aoqi@0: # aoqi@0: # This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: # version 2 for more details (a copy is included in the LICENSE file that aoqi@0: # accompanied this code). aoqi@0: # aoqi@0: # You should have received a copy of the GNU General Public License version aoqi@0: # 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: # aoqi@0: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: # or visit www.oracle.com if you need additional information or have any aoqi@0: # questions. aoqi@0: # aoqi@0: aoqi@0: aoqi@0: # @test aoqi@0: # @bug 4212732 aoqi@0: # @summary Test handling of the Class-Path attribute in jar file manifests aoqi@0: # @author Martin Buchholz aoqi@0: # aoqi@0: # @run shell Class-Path.sh aoqi@0: aoqi@0: # To run this test manually, simply do ./Class-Path.sh aoqi@0: aoqi@0: . ${TESTSRC-.}/Util.sh aoqi@0: aoqi@0: set -u aoqi@0: aoqi@0: Cleanup() { aoqi@0: Sys rm -rf pkg Main.java Main.class Main.jar jars aoqi@0: Sys rm -rf MANIFEST.MF A.jar B.zip aoqi@0: } aoqi@0: aoqi@0: Cleanup aoqi@0: Sys mkdir pkg aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: # Create mutually referential jar files aoqi@0: #---------------------------------------------------------------- aoqi@0: cat >pkg/A.java <pkg/B.java <Main.java <> MANIFEST.MF aoqi@0: Sys "$jar" cmf MANIFEST.MF Main.jar Main.class aoqi@0: aoqi@0: Success "$java" ${TESTVMOPTS} -jar Main.jar aoqi@0: aoqi@0: MkManifestWithClassPath "." aoqi@0: Sys "$jar" cmf MANIFEST.MF A.jar pkg/A.class aoqi@0: aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} -cp "A.jar" Main.java aoqi@0: Success "$java" ${TESTVMOPTS} -jar Main.jar aoqi@0: aoqi@0: MkManifestWithClassPath "" aoqi@0: Sys "$jar" cmf MANIFEST.MF A.jar pkg/A.class aoqi@0: aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} -cp "A.jar" Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} -jar Main.jar aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: # Test new flag -e (application entry point) aoqi@0: #---------------------------------------------------------------- aoqi@0: aoqi@0: cat > Hello.java < Bye.java <> MANIFEST.MF aoqi@0: aoqi@0: # test for error: " 'e' flag and manifest with the 'Main-Class' aoqi@0: # attribute cannot be specified together, during creation aoqi@0: Failure "$jar" cmfe MANIFEST.MF "Bye.jar" "Bye" Bye.class aoqi@0: aoqi@0: # test for overriding the manifest when updating the jar aoqi@0: # aoqi@0: Success "$jar" cfe "greetings.jar" "Hello" Hello.class aoqi@0: Success "$jar" ufe "greetings.jar" "Bye" Bye.class aoqi@0: Success "$java" ${TESTVMOPTS} -jar greetings.jar aoqi@0: aoqi@0: # test for error: " 'e' flag and manifest with the 'Main-Class' aoqi@0: # attribute cannot be specified together, during update aoqi@0: Failure "$jar" umfe MANIFEST.MF "greetings.jar" "Hello" aoqi@0: aoqi@0: # test jar updation when there are no inputfiles aoqi@0: # aoqi@0: Success "$jar" ufe "Hello.jar" "Bye" aoqi@0: Failure "$java" ${TESTVMOPTS} -jar Hello.jar aoqi@0: Success "$jar" umf MANIFEST.MF "Hello.jar" aoqi@0: aoqi@0: # test creating jar when the to-be-archived files aoqi@0: # do not contain the specified main class, there is no check done aoqi@0: # for the presence of the main class, so the test will pass aoqi@0: # aoqi@0: Success "$jar" cfe "Hello.jar" "Hello" Bye.class aoqi@0: aoqi@0: # Jar creation and update when there is no manifest and inputfiles aoqi@0: # specified aoqi@0: Failure "$jar" cvf "A.jar" aoqi@0: Failure "$jar" uvf "A.jar" aoqi@0: aoqi@0: # error: no such file or directory aoqi@0: Failure "$jar" cvf "A.jar" non-existing.file aoqi@0: Failure "$jar" uvf "A.jar" non-existing.file aoqi@0: aoqi@0: Cleanup aoqi@0: aoqi@0: Bottom Line