diff options
author | Evgeny Mandrikov <Godin@users.noreply.github.com> | 2016-11-14 20:39:46 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2016-11-14 20:39:46 +0100 |
commit | 0988e8c083f34f84312056dc7782488c6e147504 (patch) | |
tree | 461e2f80f3ca5d174d0a5256be7d22a4a3b908d1 | |
parent | 7c61c383ada571689a4a1309c1e0c96ad765f022 (diff) | |
download | jacoco-0988e8c083f34f84312056dc7782488c6e147504.tar.gz |
To prevent regressions add test for annotation with an initializer (#460)
2 files changed, 70 insertions, 0 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java new file mode 100644 index 00000000..a8069a1d --- /dev/null +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/AnnotationInitializerTest.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2009, 2016 Mountainminds GmbH & Co. KG and Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Evgeny Mandrikov - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.core.test.validation; + +import org.jacoco.core.analysis.ICounter; +import org.jacoco.core.test.validation.targets.AnnotationInitializer; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Test of initializer in annotations. + */ +public class AnnotationInitializerTest extends ValidationTestBase { + + public AnnotationInitializerTest() { + super(AnnotationInitializer.class); + } + + @Override + protected void run(Class<?> targetClass) throws Exception { + // Instrumentation should not add members, + // otherwise sun.reflect.annotation.AnnotationInvocationHandler + // can throw java.lang.annotation.AnnotationFormatError + assertEquals(1, targetClass.getDeclaredFields().length); + assertEquals(1, targetClass.getDeclaredMethods().length); + + // Force initialization + targetClass.getField("CONST").get(null); + } + + @Test + public void testCoverageResult() { + assertLine("const", ICounter.FULLY_COVERED); + assertLine("value", ICounter.EMPTY); + } + +} diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java new file mode 100644 index 00000000..87c66783 --- /dev/null +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/AnnotationInitializer.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2009, 2016 Mountainminds GmbH & Co. KG and Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Evgeny Mandrikov - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.core.test.validation.targets; + +/** + * This test target is an annotation with an initializer. + */ +public @interface AnnotationInitializer { + + Object CONST = new Object(); // $line-const$ + + int value() default 0; // $line-value$ + +} |