diff --git a/test/build.xml b/test/build.xml index 0ebe61fdf03c21d93ccdcf9eb7c960d8864374c8..9b5331ddccba12b25c223e74f4aa7261b26efba7 100644 --- a/test/build.xml +++ b/test/build.xml @@ -163,8 +163,6 @@ - - diff --git a/test/conform/localvariablessorter.xml b/test/conform/localvariablessorter.xml deleted file mode 100644 index a9bf2d3f906df8bbb5303e083042251ad4325ca6..0000000000000000000000000000000000000000 --- a/test/conform/localvariablessorter.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/test/conform/localvariablessorter2.xml b/test/conform/localvariablessorter2.xml deleted file mode 100644 index 4ff89d64341f10887ff13c057910552502d6d36f..0000000000000000000000000000000000000000 --- a/test/conform/localvariablessorter2.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest.java b/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest.java index 616cc8621b48f31676413556d9dea59a3504c60f..a37a635b1b8482b70eceee64688f3a3e10009088 100644 --- a/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest.java +++ b/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest.java @@ -27,34 +27,42 @@ // THE POSSIBILITY OF SUCH DAMAGE. package org.objectweb.asm.commons; -import junit.framework.TestSuite; +import static org.junit.Assert.assertTrue; -import org.objectweb.asm.AbstractTest; +import java.util.Collection; + +import org.junit.Test; +import org.junit.runners.Parameterized.Parameters; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; +import org.objectweb.asm.test.AsmTest; /** - * LocalVariableSorter tests. + * LocalVariablesSorter tests. * * @author Eric Bruneton */ -public class LocalVariablesSorterTest extends AbstractTest { - - private static final TestClassLoader LOADER = new TestClassLoader(); +public class LocalVariablesSorterTest extends AsmTest { - public static TestSuite suite() throws Exception { - return new LocalVariablesSorterTest().getSuite(); + /** @return test parameters to test all the precompiled classes with all the apis. */ + @Parameters(name = NAME) + public static Collection data() { + return data(Api.ASM4, Api.ASM5, Api.ASM6); } - @Override - public void test() throws Exception { - ClassReader cr = new ClassReader(is); - ClassWriter cw = new ClassWriter(0); - cr.accept( - new ClassVisitor(Opcodes.ASM5, cw) { + @Test + public void testSortLocalVariablesAndInstantiate() { + ClassReader classReader = new ClassReader(classParameter.getBytes()); + ClassWriter classWriter = new ClassWriter(0); + if (classParameter.isMoreRecentThan(apiParameter)) { + thrown.expect(RuntimeException.class); + } else if (classParameter.isMoreRecentThanCurrentJdk()) { + thrown.expect(UnsupportedClassVersionError.class); + } + classReader.accept( + new ClassVisitor(apiParameter.value(), classWriter) { @Override public MethodVisitor visitMethod( final int access, @@ -63,25 +71,10 @@ public class LocalVariablesSorterTest extends AbstractTest { final String signature, final String[] exceptions) { return new LocalVariablesSorter( - access, desc, super.visitMethod(access, name, desc, signature, exceptions)); + api, access, desc, super.visitMethod(access, name, desc, signature, exceptions)); } }, ClassReader.EXPAND_FRAMES); - byte[] b = cw.toByteArray(); - try { - LOADER.defineClass(n, b); - } catch (ClassFormatError cfe) { - fail(cfe.getMessage()); - } catch (Throwable ignored) { - } - } - - // ------------------------------------------------------------------------ - - static class TestClassLoader extends ClassLoader { - - public Class defineClass(final String name, final byte[] b) { - return defineClass(name, b, 0, b.length); - } + assertTrue(loadAndInstantiate(classParameter.getName(), classWriter.toByteArray())); } } diff --git a/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest2.java b/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest2.java deleted file mode 100644 index 7e26ef685f09ec3cd82e0f1b75432e12c495b8ab..0000000000000000000000000000000000000000 --- a/test/conform/org/objectweb/asm/commons/LocalVariablesSorterTest2.java +++ /dev/null @@ -1,129 +0,0 @@ -// ASM: a very small and fast Java bytecode manipulation framework -// Copyright (c) 2000-2011 INRIA, France Telecom -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the copyright holders nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -// THE POSSIBILITY OF SUCH DAMAGE. -package org.objectweb.asm.commons; - -import java.io.InputStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.instrument.ClassFileTransformer; -import java.lang.instrument.IllegalClassFormatException; -import java.lang.instrument.Instrumentation; -import java.security.ProtectionDomain; - -import junit.framework.TestSuite; - -import org.objectweb.asm.AbstractTest; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.util.TraceClassVisitor; - -/** - * LocalVariablesSorter tests. - * - * @author Eric Bruneton - */ -public class LocalVariablesSorterTest2 extends AbstractTest { - - public static void premain(final String agentArgs, final Instrumentation inst) { - inst.addTransformer( - new ClassFileTransformer() { - public byte[] transform( - final ClassLoader loader, - final String className, - final Class classBeingRedefined, - final ProtectionDomain domain, - final byte[] classFileBuffer) - throws IllegalClassFormatException { - String n = className.replace('/', '.'); - if (agentArgs.length() == 0 || n.indexOf(agentArgs) != -1) { - return transformClass(classFileBuffer); - } else { - return null; - } - } - }); - } - - static byte[] transformClass(final byte[] clazz) { - ClassReader cr = new ClassReader(clazz); - ClassWriter cw = new ClassWriter(0); - cr.accept( - new ClassVisitor(Opcodes.ASM5, cw) { - - @Override - public MethodVisitor visitMethod( - final int access, - final String name, - final String desc, - final String signature, - final String[] exceptions) { - return new LocalVariablesSorter( - access, desc, cv.visitMethod(access, name, desc, signature, exceptions)); - } - }, - ClassReader.EXPAND_FRAMES); - return cw.toByteArray(); - } - - public static TestSuite suite() throws Exception { - TestSuite suite = new LocalVariablesSorterTest2().getSuite(); - suite.addTest(new VerifierTest()); - return suite; - } - - @Override - public void test() throws Exception { - try { - Class.forName(n, true, getClass().getClassLoader()); - } catch (NoClassDefFoundError ncdfe) { - // ignored - } catch (UnsatisfiedLinkError ule) { - // ignored - } catch (ClassFormatError cfe) { - fail(cfe.getMessage()); - } catch (VerifyError ve) { - String s = n.replace('.', '/') + ".class"; - InputStream is = getClass().getClassLoader().getResourceAsStream(s); - ClassReader cr = new ClassReader(is); - byte[] b = transformClass(cr.b); - StringWriter sw1 = new StringWriter(); - StringWriter sw2 = new StringWriter(); - sw2.write(ve.toString() + "\n"); - ClassVisitor cv1 = new TraceClassVisitor(new PrintWriter(sw1)); - ClassVisitor cv2 = new TraceClassVisitor(new PrintWriter(sw2)); - cr.accept(cv1, 0); - new ClassReader(b).accept(cv2, 0); - String s1 = sw1.toString(); - String s2 = sw2.toString(); - assertEquals("different data", s1, s2); - } - } -} diff --git a/test/conform/unit.xml b/test/conform/unit.xml index a20726554d61e0f834f7a8803726d2cac7090d53..89b8bb15db34478a78d6d48d07a07cc4dd89e236 100644 --- a/test/conform/unit.xml +++ b/test/conform/unit.xml @@ -46,6 +46,7 @@ +