changeset 487:2359b7014c64

Reproducers of PR955
author Jiri Vanek <jvanek@redhat.com>
date Mon, 13 Aug 2012 12:49:02 +0200
parents cfad6b012cbf
children a33517a5a85d
files ChangeLog 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 tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java
diffstat 10 files changed, 813 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Aug 08 11:48:06 2012 -0400
+++ b/ChangeLog	Mon Aug 13 12:49:02 2012 +0200
@@ -1,3 +1,22 @@
+2012-08-13  Jiri Vanek  <jvanek@redhat.com>
+
+	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-22  Danesh Dadachanji  <ddadacha@redhat.com>
 
 	Fix PR955: regression: SweetHome3D fails to run
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement1.jnlp	Mon Aug 13 12:49:02 2012 +0200
@@ -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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement2.jnlp	Mon Aug 13 12:49:02 2012 +0200
@@ -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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement3.jnlp	Mon Aug 13 12:49:02 2012 +0200
@@ -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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement4.jnlp	Mon Aug 13 12:49:02 2012 +0200
@@ -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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/resources/LocalisedInformationElement_noLoc.jnlp	Mon Aug 13 12:49:02 2012 +0200
@@ -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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/srcs/LocalisedInformationElement.java	Mon Aug 13 12:49:02 2012 +0200
@@ -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("*******************");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/simple/LocalisedInformationElement/testcases/LocalisedInformationElementTest.java	Mon Aug 13 12:49:02 2012 +0200
@@ -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...
+}
--- a/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java	Wed Aug 08 11:48:06 2012 -0400
+++ b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java	Mon Aug 13 12:49:02 2012 +0200
@@ -54,9 +54,7 @@
 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;
@@ -505,7 +503,7 @@
         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);
     }
      
     /**
@@ -518,15 +516,19 @@
      * @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);
     }
 
 
@@ -564,6 +566,9 @@
     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));
@@ -621,6 +626,9 @@
     }
 
     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);
@@ -630,7 +638,7 @@
         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 {
@@ -639,6 +647,9 @@
       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)
      *
@@ -768,7 +779,11 @@
     }
 
     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);
--- a/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java	Wed Aug 08 11:48:06 2012 -0400
+++ b/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java	Mon Aug 13 12:49:02 2012 +0200
@@ -51,6 +51,7 @@
     List<String> args;
     Integer exitCode;
     Boolean running;
+    String[] variables;
     File dir;
     Throwable deadlyException = null;
     /*
@@ -75,15 +76,36 @@
         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 @@
             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();