[rfc][icedtea-web] fixing failing unittests CodeBaseClassLoaderTest.java

Deepak Bhole dbhole at redhat.com
Tue Aug 7 08:53:11 PDT 2012


* Jiri Vanek <jvanek at redhat.com> [2012-08-01 14:29]:
> 
> Those three tests have started to fail with NPE. I'm not sure if test is just badly written or
> IcedTea web is broken (but as there are no regressions in reproducers then I'm turning to badly
> written  test)
> 
> Please note once more, I'm not sure if fix this test this way is correct, or we have really got
> regression in CodeBaseClassLoader
> 
> But IMHO we should not have jnlp file null for anything except pure applet.
> If this is correct, then this null should be probably thrown from
>   new SecurityDesc(HERE, SecurityDesc.SANDBOX_PERMISSIONS, null) this contcructor (after check for
> javaws/applet) ??
> 

Hi Jiri,

I am not sure I fully understand. The test tries to find a class in the
codebase classloader and then asserts that the exception is an instance
of NPE?  Shouldn't it be an instance of CNFE when not found?

findClass should never throw NPE IMO.

Deepak

> 2012-08-01  Jiri Vanek  <jvanek at redhat.com>
> 
> 	* tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java:
> 	(testResourceLoadSuccessCaching) (testResourceLoadFailureCaching)
> 	(testParentClassLoaderIsAskedForClasses) - internal JNLPFile's
> 	(getSecurity) null in SecurityDesc constructorrepalced by this.
> 	(testNullFileSecurityDesc) new test to ensure NPE in null JNLPFile case
> 
> 
> 
> 	
> 
> Best regards
>   J.
> 
> 
> 

> diff -r 504ad6ea95fa tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java
> --- a/tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java	Tue Jul 24 11:44:50 2012 -0400
> +++ b/tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java	Wed Aug 01 18:21:35 2012 +0200
> @@ -54,6 +54,7 @@
>  import net.sourceforge.jnlp.runtime.JNLPClassLoader;
>  import net.sourceforge.jnlp.runtime.JNLPClassLoader.CodeBaseClassLoader;
>  import net.sourceforge.jnlp.annotations.Bug;
> +import org.junit.Assert;
>  
>  import org.junit.Test;
>  
> @@ -80,7 +81,7 @@
>  
>              @Override
>              public SecurityDesc getSecurity() {
> -                return new SecurityDesc(null, SecurityDesc.SANDBOX_PERMISSIONS, null);
> +                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
>              }
>          };
>  
> @@ -125,7 +126,7 @@
>  
>              @Override
>              public SecurityDesc getSecurity() {
> -                return new SecurityDesc(null, SecurityDesc.SANDBOX_PERMISSIONS, null);
> +                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
>              }
>          };
>  
> @@ -167,7 +168,7 @@
>  
>              @Override
>              public SecurityDesc getSecurity() {
> -                return new SecurityDesc(null, SecurityDesc.SANDBOX_PERMISSIONS, null);
> +                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
>              }
>          };
>  
> @@ -188,4 +189,52 @@
>  
>          assertTrue(parentWasInvoked[0]);
>      }
> +
> +
> +    @Test
> +    public void testNullFileSecurityDesc() throws MalformedURLException, LaunchException {
> +        final URL JAR_URL = new URL("http://icedtea.classpath.org/netx/about.jar");
> +        final URL CODEBASE_URL = new URL("http://icedtea.classpath.org/netx/");
> +
> +        JNLPFile dummyJnlpFile = new JNLPFile() {
> +            @Override
> +            public ResourcesDesc getResources() {
> +                return new ResourcesDesc(null, new Locale[0], new String[0], new String[0]);
> +            }
> +
> +            @Override
> +            public URL getCodeBase() {
> +                return CODEBASE_URL;
> +            }
> +
> +            @Override
> +            public SecurityDesc getSecurity() {
> +                return new SecurityDesc(null, SecurityDesc.SANDBOX_PERMISSIONS, null);
> +            }
> +        };
> +        
> +        JNLPClassLoader parent = new JNLPClassLoader(dummyJnlpFile, null);
> +        CodeBaseClassLoader classLoader = new CodeBaseClassLoader(new URL[] { JAR_URL, CODEBASE_URL }, parent);
> +
> +        Exception ex2=null;
> +        try{
> +        classLoader.findClass("foo");
> +        }catch (Exception exx){
> +            ex2=exx;
> +        }
> +        Assert.assertNotNull(ex2);
> +        Assert.assertTrue(ex2 instanceof NullPointerException);
> +
> +        Exception ex=null;
> +        try{       
> +        classLoader.findResource("net/sourceforge/jnlp/about/Main.class");
> +        }catch (Exception exx){
> +            ex=exx;
> +        }
> +        Assert.assertNotNull(ex);
> +        Assert.assertTrue(ex instanceof NullPointerException);
> +
> +
> +
> +    }
>  }
> 




More information about the distro-pkg-dev mailing list