From f3fd206b1b590c09645c51c4ec65dc60a0d3be5f Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Thu, 8 Mar 2012 15:54:39 +0100 Subject: added reproducers for main class in manifest --- .../testcases/ManifestedJar1Test.java | 255 +++++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java (limited to 'tests/jnlp_tests/simple/ManifestedJar1/testcases') diff --git a/tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java b/tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java new file mode 100644 index 0000000..f7bd7ba --- /dev/null +++ b/tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java @@ -0,0 +1,255 @@ +/* ManifestedJar1Test.java +Copyright (C) 2011 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea 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 for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + */ + +import net.sourceforge.jnlp.ServerAccess; +import org.junit.Assert; + +import org.junit.Test; + +public class ManifestedJar1Test { + + private static ServerAccess server = new ServerAccess(); + private static final String nonLunchableMessage = "net.sourceforge.jnlp.LaunchException: Fatal: Application Error: Not a launchable JNLP file. File must be a JNLP application, applet, or installer type."; + //actually this on eis never printed as stderr will not recieve this message in headless mode :( + private static final String twoMainException = "net.sourceforge.jnlp.ParseException: Invalid XML document syntax"; + + private void assertManifestedJar1(String id, ServerAccess.ProcessResult q) { + String s = "Hello from ManifestedJar1"; + Assert.assertTrue(id + " stdout should contains `" + s + "`, but didn't ", q.stdout.contains(s)); + } + + private void assertManifestedJar2(String id, ServerAccess.ProcessResult q) { + String s = "Hello from ManifestedJar2"; + Assert.assertTrue(id + " stdout should contains `" + s + "`, but didn't ", q.stdout.contains(s)); + } + + private void assertNotManifestedJar1(String id, ServerAccess.ProcessResult q) { + String s = "Hello from ManifestedJar1"; + Assert.assertFalse(id + " stdout should NOT contains `" + s + "`, but didn ", q.stdout.contains(s)); + } + private void assertAppError(String id, ServerAccess.ProcessResult q) { + Assert.assertTrue(id + " stderr should contains `" + nonLunchableMessage + "`, but didnn't ", q.stderr.contains(nonLunchableMessage)); + } + + private void assertNotManifestedJar2(String id, ServerAccess.ProcessResult q) { + String s = "Hello from ManifestedJar2"; + Assert.assertFalse(id + " stdout should NOT contains `" + s + "`, but didn ", q.stdout.contains(s)); + } + + private void assertNotDead(String id, ServerAccess.ProcessResult pr) { + String cc = "ClassNotFoundException"; + Assert.assertFalse(id + " stderr should NOT contains `" + cc + "`, but did", pr.stderr.contains(cc)); + Assert.assertFalse(id + " should not be terminated, but was", pr.wasTerminated); + Assert.assertEquals((Integer) 0, pr.returnValue); + } + + @Test + /** + * if two jars with manifest specified, none is main and no main class, then first one is loaded + */ + public void manifestedJar1nothing2nothingNoAppDesc() throws Exception { + String id = "ManifestedJar-1nothing2nothingNoAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar1(id, pr); + assertNotDead(id, pr); + } + + /** + *if one jar with manifest, is not main, and no main class then is lunched + * + */ + @Test + public void manifestedJar1noAppDesc() throws Exception { + String id = "ManifestedJar-1noAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar1(id, pr); + assertNotDead(id, pr); + } + + /** + *if one jar with manifest, but not marked as main and no main class then is lunched + * + */ + @Test + public void manifestedJar1mainNoAppDesc() throws Exception { + String id = "ManifestedJar-1mainNoAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar1(id, pr); + assertNotDead(id, pr); + } + + /** + *if one jar with manifest, marked as main and no main class then is lunched + * + */ + @Test + public void ManifestedJar1mainHaveAppDesc() throws Exception { + String id = "ManifestedJar-1mainHaveAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar2(id, pr); + assertNotDead(id, pr); + } + + /** + * + * Two jars, both with manifest, First is main, but specified mainclass belongs to second one, then second one should be lunched + */ + @Test + public void ManifestedJar1main2nothingNoAppDesc() throws Exception { + String id = "ManifestedJar-1main2nothingNoAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar2(id, pr); + assertNotDead(id, pr); + } + + /** + * + * Two jars, both with manifest, seconds is main, no mainclass, then the one marked as main is lunched + */ + @Test + public void manifestedJar1main2nothingNoAppDesc() throws Exception { + String id = "ManifestedJar-1main2nothingNoAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar2(id, pr); + assertNotDead(id, pr); + } + + /** + * + * Two jars, both with manifest, sboth with main tag, no app desc + * + * thisis passing, SUSPICIOUS, but to lunch at least something is better then to lunch nothing at all. + * althoug it maybe SHOULD throw twoMainException + */ + @Test + public void manifestedJar1main2mainNoAppDesc() throws Exception { + String id = "ManifestedJar-1main2mainNoAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertManifestedJar1(id, pr); + assertNotDead(id, pr); + } + + /** + * + * Two jars, both with manifest, sboth with main tag, have app desc + * + * corectly failing with twoMainException + */ + @Test + public void manifestedJar1main2mainAppDesc() throws Exception { + String id = "ManifestedJar-1main2mainAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertNotManifestedJar1(id, pr); + assertNotManifestedJar2(id, pr); + assertNotDead(id, pr); + } + + /** + * + * Two jars, both with manifest, sboth with main tag, have app desc + * + * corectly failing + */ + @Test + public void manifestedJar1noAppDescAtAll() throws Exception { + String id = "ManifestedJar-1noAppDescAtAll"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertNotManifestedJar1(id, pr); + assertNotManifestedJar2(id, pr); + assertAppError(id, pr); + assertNotDead(id, pr); + } + + + + /** + * + * Two jars, both with manifest, non with main tag, have app desc + * + * this jnlp is NOT lunched, twoMainException thrown - ok + * + */ + @Test + public void manifestedJar1nothing2nothingAppDesc() throws Exception { + String id = "ManifestedJar-1nothing2nothingAppDesc"; + System.out.println("connecting " + id + " request"); + System.err.println("connecting " + id + " request"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + id + ".jnlp"); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + assertNotManifestedJar2(id, pr); + assertNotManifestedJar1(id, pr); + assertNotDead(id, pr); + } + +} -- cgit v1.2.3