aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement1.jnlp72
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement2.jnlp70
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement3.jnlp69
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement4.jnlp70
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp53
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java52
-rw-r--r--tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java356
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java31
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java32
10 files changed, 813 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 30df7e5..8dfab45 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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();