diff options
10 files changed, 813 insertions, 11 deletions
@@ -1,3 +1,22 @@ +2012-08-13 Jiri Vanek <[email protected]> + + Reproducers of PR955 + * tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement1.jnlp: + * tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement2.jnlp: + * tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement3.jnlp: + * tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement4.jnlp: + Test jnlp files with various combinations of locales, reproducers of PR955. + * tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp + Jnlp file with which is not affected by PR955 and is helping to catch error in LOCALE changing hack + * tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java: + Reproducer main class, after loading prints out default locale. + * tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java: + Testcases launching above jnlps under various locales. + * tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java: + Added set of methods allowing passing of custom variables to ThreadedProcess. + * tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java: + Added processing of custom variables. + 2012-08-10 Adam Domurad <[email protected]> * plugin/icedteanp/IcedTeaNPPlugin.cc diff --git a/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement1.jnlp b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement1.jnlp new file mode 100644 index 0000000..1106400 --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement1.jnlp @@ -0,0 +1,72 @@ +<!-- + +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; either version 2, or (at your option) +any later version. + +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. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="LocalisedInformationElement1.jnlp" codebase="."> + <information> + <title>localisedJnlp1.jnlp1</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>LocalisedInformationElement1.jnlp</description> + <offline/> + </information> + <information locale="fr" > + <title>LocalisedInformationElement1.jnlp la francee</title> + <description>La LocalisedInformationElement1.jnlp</description> + <offline/> + </information> + <information locale="fr_BE" > + <title>LocalisedInformationElement1.jnlp la francee BE</title> + <offline/> + </information> + <information locale="fr_BE.iso88591" > + <title>LocalisedInformationElement1.jnlp la francee BE iso88591</title> + <offline/> + </information> + <information locale="cs" > + <title>LocalisedInformationElement1.jnlp po cesky</title> + <vendor>IcedTea CZ</vendor> + <description>Muj vlastni LocalisedInformationElement1.jnlp</description> + <offline/> + </information> + <resources> + <j2se version="1.4+"/> + <jar href="LocalisedInformationElement.jar"/> + </resources> + <application-desc main-class="LocalisedInformationElement"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement2.jnlp b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement2.jnlp new file mode 100644 index 0000000..bcc5888 --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement2.jnlp @@ -0,0 +1,70 @@ +<!-- + +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; either version 2, or (at your option) +any later version. + +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. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="LocalisedInformationElement2.jnlp" codebase="."> + <information> + <title>localisedJnlp1.jnlp1</title> + <!--vendor is misisng--> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>LocalisedInformationElement1.jnlp</description> + <offline/> + </information> + <information locale="fr" > + <title>LocalisedInformationElement1.jnlp la francee</title> + <vendor>IcedTea</vendor> + <description>La LocalisedInformationElement1.jnlp</description> + <offline/> + </information> + <information locale="fr_BE" > + <title>LocalisedInformationElement1.jnlp la francee BE</title> + <!--vendor should be found by fall back--> + <offline/> + </information> + <information locale="cs" > + <title>LocalisedInformationElement1.jnlp po cesky</title> + <!--vendor is misisng, and not find by fallback--> + <description>Muj vlastni LocalisedInformationElement1.jnlp</description> + <offline/> + </information> + <resources> + <j2se version="1.4+"/> + <jar href="LocalisedInformationElement.jar"/> + </resources> + <application-desc main-class="LocalisedInformationElement"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement3.jnlp b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement3.jnlp new file mode 100644 index 0000000..6265220 --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement3.jnlp @@ -0,0 +1,69 @@ +<!-- + +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; either version 2, or (at your option) +any later version. + +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. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="LocalisedInformationElement3.jnlp" codebase="."> + <information> + <title>localisedJnlp1.jnlp1</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>D_DEF</description> + <offline/> + </information> + <information locale="fr" > + <title>LocalisedInformationElement1.jnlp la francee</title> + <description>D_DEF_FR</description> + <offline/> + </information> + <information locale="fr_BE" > + <title>LocalisedInformationElement1.jnlp la francee BE</title> + <description>D_FR_BE</description> + <offline/> + </information> + <information locale="cs" > + <title>LocalisedInformationElement1.jnlp po cesky</title> + <vendor>IcedTea CZ</vendor> + <description>D_DEF_CS</description> + <offline/> + </information> + <resources> + <j2se version="1.4+"/> + <jar href="LocalisedInformationElement.jar"/> + </resources> + <application-desc main-class="LocalisedInformationElement"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement4.jnlp b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement4.jnlp new file mode 100644 index 0000000..a1bb069 --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement4.jnlp @@ -0,0 +1,70 @@ +<!-- + +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; either version 2, or (at your option) +any later version. + +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. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="LocalisedInformationElement4.jnlp" codebase="."> + <information> + <title>localisedJnlp1.jnlp1</title> + <!--vendor is misisng--> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>D_DEF</description> + <offline/> + </information> + <information locale="fr" > + <title>LocalisedInformationElement1.jnlp la francee</title> + <vendor>IcedTea</vendor> + <description>D_DEF_FR</description> + <offline/> + </information> + <information locale="fr_BE" > + <title>LocalisedInformationElement1.jnlp la francee BE</title> + <!--vendor should be found by fall back--> + <offline/> + </information> + <information locale="cs" > + <title>LocalisedInformationElement1.jnlp po cesky</title> + <!--vendor is misisng, and not find by fallback--> + <description>D_DEF_CS</description> + <offline/> + </information> + <resources> + <j2se version="1.4+"/> + <jar href="LocalisedInformationElement.jar"/> + </resources> + <application-desc main-class="LocalisedInformationElement"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp new file mode 100644 index 0000000..122e34a --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp @@ -0,0 +1,53 @@ +<!-- + +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; either version 2, or (at your option) +any later version. + +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. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="LocalisedInformationElement_noLoc.jnlp" codebase="."> + <information> + <title>localisedJnlp_noLoc.jnlp1</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>LocalisedInformationElement_noLoc.jnlp</description> + <offline/> + </information> + <resources> + <j2se version="1.4+"/> + <jar href="LocalisedInformationElement.jar"/> + </resources> + <application-desc main-class="LocalisedInformationElement"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java b/tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java new file mode 100644 index 0000000..88ca446 --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java @@ -0,0 +1,52 @@ +/* LocalisedInformationElement.java +Copyright (C) 2012 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 java.util.Locale; + +public class LocalisedInformationElement{ + + public static void main(String[] args){ + System.out.println("LocalisedInformationElement launched"); + System.out.println("*******************"); +// This needs signed code +// String locale = System.getProperty("user.language"); +// System.out.println("value of user.language: "+locale); + Locale loc=Locale.getDefault(); + System.out.println("default locale: "+loc.toString()); + System.out.println("*******************"); + } +} diff --git a/tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java b/tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java new file mode 100644 index 0000000..3a1b16c --- /dev/null +++ b/tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java @@ -0,0 +1,356 @@ +/* LocalisedInformationElementTest.java +Copyright (C) 2012 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 java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import net.sourceforge.jnlp.ProcessResult; +import net.sourceforge.jnlp.ServerAccess; +import net.sourceforge.jnlp.annotations.Bug; +import org.junit.Assert; +import org.junit.Test; + +public class LocalisedInformationElementTest { + + private static ServerAccess server = new ServerAccess(); + + /** + * this will prepare new set of varibales with wanted locale, which + * can be then passed to subprocess + * @param locale - locale to be set to LANG variable, eg cs_CZ.UTF-8 + */ + public static String[] getChangeLocalesForSubproces(String locale) { + ServerAccess.logOutputReprint("Setting locales"); + Map<String, String> p = System.getenv(); + Set<Entry<String, String>> r = p.entrySet(); + List<Entry<String, String>> rr = new ArrayList(r); + Collections.sort(rr, new Comparator<Entry<String, String>>() { + + @Override + public int compare(Entry<String, String> o1, Entry<String, String> o2) { + return o1.getKey().compareTo(o2.getKey()); + } + }); + String[] l = new String[rr.size()]; + int i = -1; + for (Iterator<Entry<String, String>> it = rr.iterator(); it.hasNext();) { + i++; + Entry<String, String> entry = it.next(); + String v = entry.getValue(); + String s = entry.getKey() + "=" + v; + //System.out.println(s); + if (entry.getKey().equals("LANG")) { + ServerAccess.logOutputReprint("was " + v); + v = locale; + ServerAccess.logOutputReprint("set " + v); + } + s = entry.getKey() + "=" + v; + l[i] = s; + } + return l; + } + + public static ProcessResult evaluateLocalisedInformationElementTest(String id, String[] variables, boolean verbose) throws Exception { + ProcessResult pr = executeJavaws(verbose, variables, id); + String s = "LocalisedInformationElement launched"; + Assert.assertTrue(id + " stdout should contains " + s + " bud didn't", pr.stdout.contains(s)); + //to strict? + //String ss = "xception"; + //Assert.assertFalse(id + " stderr should not contains " + ss + " but did", pr.stderr.contains(ss)); + String locMatch = "(?s).*default locale: \\w{2}.*"; + Assert.assertTrue(id + " stdout should match " + locMatch + " bud didn't", pr.stdout.matches(locMatch)); + return pr; + } + + public static ProcessResult evaluateLocalisedInformationElementTestNotLaunched(String id, String[] variables, boolean verbose) throws Exception { + ProcessResult pr = executeJavaws(verbose, variables, id); + String s = "LocalisedInformationElement launched"; + Assert.assertFalse(id + " stdout should not contains " + s + " bud didn't", pr.stdout.contains(s)); + String ss = "xception"; + Assert.assertTrue(id + " stderr should contains " + ss + " but didn't", pr.stderr.contains(ss)); + String locMatch = "(?s).*default locale: \\w{2}.*"; + Assert.assertFalse(id + " stdout should not match " + locMatch + " bud didn't", pr.stdout.matches(locMatch)); + String sss = "MissingVendorException"; + Assert.assertTrue(id + " stderr should contains " + sss + " but didn't", pr.stderr.contains(sss)); + return pr; + } + + private static ProcessResult executeJavaws(boolean verbose, String[] variables, String id) throws Exception { + List<String> oa = new ArrayList<String>(1); + if (verbose) { + oa.add("-verbose"); + } + final ProcessResult pr; + if (variables == null) { + pr = server.executeJavawsHeadless(oa, "/" + id + ".jnlp"); + } else { + pr = server.executeJavawsHeadless(oa, "/" + id + ".jnlp", variables); + } + return pr; + } + + + //the description checkis disabled for all PR955, so it is representing just + //PR955 issue. Tests with enable description check are introduced later + private final boolean w1=false; + + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation1() throws Exception { + String[] l = getChangeLocalesForSubproces("en_US.UTF-8"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement1", l, true); + assertTiVeDe(pr, "localisedJnlp1.jnlp1", "IcedTea", "LocalisedInformationElement1.jnlp", w1); + } + +//LANG variable do not 'accept' nationales without regions :( +// @Test +// @Bug(id = "PR955") +// public void testLocalisedInformationElementLaunchWithLocalisedInformation2() throws Exception { +// String[] l = getChangeLocalesForSubproces("cs"); +// ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement1", l,true); +// assertTiVeDe(pr,"LocalisedInformationElement1.jnlp po cesky","IcedTea CZ","Muj vlastni LocalisedInformationElement1.jnlp",w1); +// } + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation22() throws Exception { + String[] l = getChangeLocalesForSubproces("cs_CZ"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement1", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp po cesky", "IcedTea CZ", "Muj vlastni LocalisedInformationElement1.jnlp", w1); + } + + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_1() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_BE"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement1", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee BE", "IcedTea", "La LocalisedInformationElement1.jnlp", w1); + } + +// java is ignoring set encoding :( +// @Test +// @Bug(id = "PR955") +// public void testLocalisedInformationElementLaunchWithLocalisedInformation33_2() throws Exception { +// String[] l = getChangeLocalesForSubproces("fr_BE.iso88591"); +// ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement1", l, true); +// assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee BE iso88591", "IcedTea", "La LocalisedInformationElement1.jnlp",false); +// } + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_CH"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement1", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee", "IcedTea", "La LocalisedInformationElement1.jnlp", w1); + } + + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation1_withPieceMissing() throws Exception { + String[] l = getChangeLocalesForSubproces("en_US.UTF-8"); + ProcessResult pr = evaluateLocalisedInformationElementTestNotLaunched("LocalisedInformationElement2", l, true); + + } + + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation22_withPieceMissing() throws Exception { + String[] l = getChangeLocalesForSubproces("cs_CZ"); + ProcessResult pr = evaluateLocalisedInformationElementTestNotLaunched("LocalisedInformationElement2", l, true); + } + + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_1_withPieceMissing() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_BE"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement2", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee BE", "IcedTea", "La LocalisedInformationElement1.jnlp", w1); + } + + @Test + @Bug(id = "PR955") + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_withPieceMissing() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_CH"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement2", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee", "IcedTea", "La LocalisedInformationElement1.jnlp", w1); + } + + //thsoe 11 methods are jsut for printing of locales passed to javaws + //so actually testing the LOCALE hack + @Test + public void printLocales() throws Exception { + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", null, false); + } + + @Test + public void printLocalesChanged1() throws Exception { + String[] l = getChangeLocalesForSubproces("cs_CZ.UTF-8"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertTrue(pr.stdout.contains("cs_CZ")); + } +// the following four have acepted iso encoding, but not used it + + @Test + public void printLocalesChanged2() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.ISO-8859-1"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertTrue(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged22() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.ISO88591"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertTrue(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged2222() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.iso-8859-1"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertTrue(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged3() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.UTF-8"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertTrue(pr.stdout.contains("en_AU")); + } + + // the following five have NOTacepted iso encoding at all + @Test + public void printLocalesChanged2_X() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.ISO-8859-2"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertFalse(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged22_X() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.ISO88592"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertFalse(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged2222_X() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.iso-8859-2"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertFalse(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged3_X() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.UTF-16"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertFalse(pr.stdout.contains("en_AU")); + } + + @Test + public void printLocalesChanged4_X() throws Exception { + String[] l = getChangeLocalesForSubproces("en_AU.jklukl56489jkyk"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement_noLoc", l, false); + Assert.assertFalse(pr.stdout.contains("en_AU")); + } + private static final String DEFAULT_HOMEPAGE = "http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"; + + public static void assertTiVeDe(ProcessResult pr, String title, String vendor, String description, boolean descTests) { + assertTiHpVeDe(pr, title, DEFAULT_HOMEPAGE, vendor, description, descTests); + } + + public static void assertTiHpVeDe(ProcessResult pr, String title, String homepage, String vendor, String description, boolean descTests) { + Assert.assertTrue("call shuld evaluate homepage as: " + homepage + " but did not", pr.stdout.contains("Homepage: " + homepage)); + Assert.assertTrue("call shuld evaluate title as: " + title + " but did not", pr.stdout.contains("Acceptable title tag found, contains: " + title)); + Assert.assertTrue("call shuld evaluate vendor as: " + " but did not", pr.stdout.contains("Acceptable vendor tag found, contains: " + vendor)); + if (descTests) { + Assert.assertTrue("call shuld evaluate description as: " + description + " but did not", pr.stdout.contains("Description: " + description)); + } + } + + + //following tests are testing also localisation of description + private final boolean w2=true; + + @Test + public void testLocalisedInformationElementLaunchWithLocalisedInformation1_withDescription() throws Exception { + String[] l = getChangeLocalesForSubproces("en_US.UTF-8"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement3", l, true); + assertTiVeDe(pr, "localisedJnlp1.jnlp1", "IcedTea", "D_DEF", w2); + } + + @Test + public void testLocalisedInformationElementLaunchWithLocalisedInformation22_withDescription() throws Exception { + String[] l = getChangeLocalesForSubproces("cs_CZ"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement3", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp po cesky", "IcedTea CZ", "D_DEF_CS", w2); + } + + @Test + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_1_withDescription() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_BE"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement3", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee BE", "IcedTea", "D_FR_BE", w2); + } + + @Test + public void testLocalisedInformationElementLaunchWithLocalisedInformation33__withDescription() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_CH"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement3", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee", "IcedTea", "D_DEF_FR", w2); + } + + @Test + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_1_withPieceMissing_withDescription() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_BE"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement4", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee BE", "IcedTea", "D_DEF_FR", w2); + } + + @Test + public void testLocalisedInformationElementLaunchWithLocalisedInformation33_withPieceMissing_withDescription() throws Exception { + String[] l = getChangeLocalesForSubproces("fr_CH"); + ProcessResult pr = evaluateLocalisedInformationElementTest("LocalisedInformationElement4", l, true); + assertTiVeDe(pr, "LocalisedInformationElement1.jnlp la francee", "IcedTea", "D_DEF_FR", w2); + } + + //following tests are testing localisation of homepage + //to lazy to do... +} diff --git a/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java index 7981054..35fb53f 100644 --- a/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java +++ b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java @@ -54,9 +54,7 @@ import java.net.MalformedURLException; import java.net.ServerSocket; import java.net.URL; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import net.sourceforge.jnlp.browsertesting.Browser; import net.sourceforge.jnlp.browsertesting.BrowserFactory; import net.sourceforge.jnlp.browsertesting.Browsers; @@ -504,7 +502,7 @@ public class ServerAccess { return executeJavawsHeadless(null, resource); } public ProcessResult executeJavawsHeadless(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception { - return executeJavawsHeadless(null, resource,stdoutl,stderrl); + return executeJavawsHeadless(null, resource,stdoutl,stderrl,null); } /** @@ -517,15 +515,19 @@ public class ServerAccess { * @throws Exception */ public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource) throws Exception { - return executeJavawsHeadless(otherargs, resource,null,null); + return executeJavawsHeadless(otherargs, resource,null,null,null); } - public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception { + public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource, String[] vars) throws Exception { + return executeJavawsHeadless(otherargs, resource,null,null,vars); + } + + public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl,String[] vars) throws Exception { if (otherargs == null) { otherargs = new ArrayList<String>(1); } List<String> headlesList = new ArrayList<String>(otherargs); headlesList.add(HEADLES_OPTION); - return executeJavaws(headlesList, resource,stdoutl,stderrl); + return executeJavaws(headlesList, resource,stdoutl,stderrl,vars); } @@ -563,6 +565,9 @@ public class ServerAccess { public ProcessResult executeJavaws(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception { return executeProcessUponURL(getJavawsLocation(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl); } + public ProcessResult executeJavaws(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl,String[] vars) throws Exception { + return executeProcessUponURL(getJavawsLocation(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl,vars); + } public ProcessResult executeBrowser(List<String> otherargs, String resource) throws Exception { return executeProcessUponURL(getBrowserLocation(), otherargs, getUrlUponThisInstance(resource)); @@ -620,6 +625,9 @@ public class ServerAccess { } public static ProcessResult executeProcessUponURL(String toBeExecuted, List<String> otherargs, URL u,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception { + return executeProcess(otherargs, null, stdoutl, stderrl, null); + } + public static ProcessResult executeProcessUponURL(String toBeExecuted, List<String> otherargs, URL u,ContentReaderListener stdoutl,ContentReaderListener stderrl,String[] vars) throws Exception { Assert.assertNotNull(u); Assert.assertNotNull(toBeExecuted); Assert.assertTrue(toBeExecuted.trim().length() > 1); @@ -629,7 +637,7 @@ public class ServerAccess { List<String> urledArgs = new ArrayList<String>(otherargs); urledArgs.add(0, toBeExecuted); urledArgs.add(u.toString()); - return executeProcess(urledArgs, stdoutl, stderrl); + return executeProcess(urledArgs, stdoutl, stderrl,vars); } public static ProcessResult executeProcess(final List<String> args) throws Exception { @@ -638,6 +646,9 @@ public class ServerAccess { public static ProcessResult executeProcess(final List<String> args,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception { return executeProcess(args, null,stdoutl,stderrl); } + public static ProcessResult executeProcess(final List<String> args,ContentReaderListener stdoutl,ContentReaderListener stderrl,String[] vars) throws Exception { + return executeProcess(args, null,stdoutl,stderrl,vars); + } /** * utility method to lunch process, get its stdout/stderr, its return value and to kill it if running to long (@see PROCESS_TIMEOUT) * @@ -767,7 +778,11 @@ public class ServerAccess { } public static ProcessResult executeProcess(final List<String> args, File dir, ContentReaderListener stdoutl, ContentReaderListener stderrl) throws Exception { - ThreadedProcess t = new ThreadedProcess(args, dir); + return executeProcess(args, dir, stdoutl, stderrl,null); + + } + public static ProcessResult executeProcess(final List<String> args, File dir, ContentReaderListener stdoutl, ContentReaderListener stderrl,String[] vars) throws Exception { + ThreadedProcess t = new ThreadedProcess(args, dir,vars); if (PROCESS_LOG) { String connectionMesaage = createConnectionMessage(t); log(connectionMesaage, true, true); diff --git a/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java b/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java index 32f515a..2ee6b84 100644 --- a/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java +++ b/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java @@ -51,6 +51,7 @@ class ThreadedProcess extends Thread { List<String> args; Integer exitCode; Boolean running; + String[] variables; File dir; Throwable deadlyException = null; /* @@ -75,15 +76,36 @@ class ThreadedProcess extends Thread { return exitCode; } + public void setVariables(String[] variables) { + this.variables = variables; + } + + public String[] getVariables() { + return variables; + } + + + public ThreadedProcess(List<String> args) { this.args = args; } public ThreadedProcess(List<String> args, File dir) { - this.args = args; + this(args); this.dir = dir; } + public ThreadedProcess(List<String> args,String[] vars) { + this(args); + this.variables = vars; + } + + public ThreadedProcess(List<String> args, File dir,String[] vars) { + this(args,dir); + this.variables = vars; + } + + public String getCommandLine() { String commandLine = "unknown command"; try { @@ -110,9 +132,13 @@ class ThreadedProcess extends Thread { running = true; Runtime r = Runtime.getRuntime(); if (dir == null) { - p = r.exec(args.toArray(new String[0])); + if (variables == null) { + p = r.exec(args.toArray(new String[0])); + } else { + p = r.exec(args.toArray(new String[0]), variables); + } } else { - p = r.exec(args.toArray(new String[0]), new String[0], dir); + p = r.exec(args.toArray(new String[0]), variables, dir); } try { exitCode = p.waitFor(); |