[ 
https://issues.apache.org/jira/browse/DERBY-3521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vemund Østgaard updated DERBY-3521:
-----------------------------------

    Attachment: 3521-fix-diff

Attaching simple fix, 3521-fix-diff, which unwraps the 
InvocationTargetException and cheks if it contains an instanceof LinkageError.



> Functionality for skipping testsuites on certain platforms fails for the new 
> management testsuite on phoneME advanced 
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3521
>                 URL: https://issues.apache.org/jira/browse/DERBY-3521
>             Project: Derby
>          Issue Type: Test
>          Components: Test
>         Environment: phoneME advanced platform
>            Reporter: Vemund Østgaard
>            Assignee: Vemund Østgaard
>         Attachments: 3521-fix-diff
>
>
> It is not possible to run suites.All on phoneME advanced, junit will just 
> exit with an InvocationTargetException when trying to invoke the 
> suites.All.suite() method. Unwrapping the exception shows that the underlying 
> reason is a NoClassDefFoundError from the invoke() call in 
> AllPackages.addSuiteByReflection() when trying to load the new management 
> testsuite.
> Now, this suite is compiled into 1.5 classfiles, so the Class.forName() call 
> before the invoke() is expected to fail with UnsupportedClassVersionError on 
> Java ME and Java SE 1.4. It does fail as expected when running with jdk 1.4, 
> but on phoneME advanced it does not, possibly a bug in phoneME advanced.
> A fix/workaround in the testinfrastructure may be to catch 
> InvocationTargetException from the try block below, unwrap it and see if it 
> is an instance of LinkageError and if so skip the testsuite. This would make 
> it possible to run the tests on phoneME advanced.
> private static Test addSuiteByReflection(String className) throws Exception
>    {
>        try {
>            Class clz = Class.forName(className);
>                       Method sm = clz.getMethod("suite", null);
>                             return (Test) sm.invoke(null, null);
>        } catch (LinkageError  e) {
>            return new TestSuite("SKIPPED: " + className + " - " +
>                    e.getMessage());
>        }
>    } 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to