Skip to content

Commit

Permalink
fix: one test was not named correctly, hence was not run by Maven in …
Browse files Browse the repository at this point in the history
…CI, hiding a bug
  • Loading branch information
monperrus committed Dec 10, 2016
1 parent 3a958bb commit 9bd6108
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,12 @@
import spoon.reflect.declaration.ModifierKind;
import spoon.reflect.reference.CtTypeReference;
import spoon.reflect.visitor.CtVisitor;
import spoon.support.comparator.SignatureComparator;
import spoon.support.util.SignatureBasedSortedSet;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class CtEnumImpl<T extends Enum<?>> extends CtClassImpl<T> implements CtEnum<T> {
private static final long serialVersionUID = 1L;
Expand All @@ -47,7 +46,7 @@ public void accept(CtVisitor visitor) {

@Override
public Set<CtMethod<?>> getAllMethods() {
Set<CtMethod<?>> allMethods = new TreeSet<>(new SignatureComparator());
Set<CtMethod<?>> allMethods = new SignatureBasedSortedSet();
allMethods.addAll(getMethods());
allMethods.addAll(getFactory().Type().get(Enum.class).getMethods());
allMethods.add(valuesMethod());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
import spoon.reflect.visitor.filter.ReferenceTypeFilter;
import spoon.support.UnsettableProperty;
import spoon.support.SpoonClassNotFoundException;
import spoon.support.comparator.SignatureComparator;
import spoon.support.compiler.SnippetCompilationHelper;
import spoon.support.util.QualifiedNameBasedSortedSet;
import spoon.support.util.SignatureBasedSortedSet;
Expand All @@ -59,7 +58,6 @@
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import static spoon.reflect.ModelElementContainerDefaultCapacities.TYPE_TYPE_PARAMETERS_CONTAINER_DEFAULT_CAPACITY;

Expand Down Expand Up @@ -884,7 +882,7 @@ public Collection<CtExecutableReference<?>> getDeclaredExecutables() {

@Override
public Collection<CtExecutableReference<?>> getAllExecutables() {
Set<CtExecutableReference<?>> l = new TreeSet(new SignatureComparator());
Set<CtExecutableReference<?>> l = new SignatureBasedSortedSet();
for (CtMethod<?> m : getAllMethods()) {
l.add((CtExecutableReference<?>) m.getReference());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@
import spoon.Launcher;
import spoon.SpoonAPI;
import spoon.reflect.code.CtConstructorCall;
import spoon.reflect.declaration.CtClass;
import spoon.reflect.declaration.CtElement;
import spoon.reflect.declaration.CtField;
import spoon.reflect.declaration.CtMethod;
import spoon.reflect.declaration.CtType;
import spoon.reflect.declaration.ModifierKind;
import spoon.reflect.visitor.filter.AbstractFilter;
import spoon.reflect.visitor.filter.TypeFilter;
import spoon.support.DefaultCoreFactory;
import spoon.support.compiler.SnippetCompilationHelper;

Expand All @@ -18,7 +21,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

public class SpoonArchitectureEnforcer {
public class SpoonArchitectureEnforcerTest {

@Test
public void statelessFactory() throws Exception {
Expand Down Expand Up @@ -83,4 +86,26 @@ public void metamodelPackageRule() throws Exception {
assertTrue(implType.getReference().isSubtypeOf(interfaceType.getReference()));
}
}


@Test
public void testGoodTestClassNames() throws Exception {
// contract: to be run by Maven surefire, all test classes must be called Test* or *Test
// reference: "By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns:"
// "**/Test*.java" and "**/*Test.java"
// http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
SpoonAPI spoon = new Launcher();
spoon.addInputResource("src/test/java/");
spoon.buildModel();

for (CtMethod<?> meth : spoon.getModel().getRootPackage().getElements(new TypeFilter<CtMethod>(CtMethod.class) {
@Override
public boolean matches(CtMethod element) {
return super.matches(element) && element.getAnnotation(Test.class) != null;
}
})) {
assertTrue("naming contract violated for "+meth.getParent(CtClass.class).getSimpleName(), meth.getParent(CtClass.class).getSimpleName().startsWith("Test") || meth.getParent(CtClass.class).getSimpleName().endsWith("Test"));
}
}

}

0 comments on commit 9bd6108

Please sign in to comment.