addEnableEMCStatement(classNode);
}
protected void handleTestForAnnotation(ClassNode classNode, SourceUnit source, AnnotationNode testForAnnotationNode, boolean junit3Test) {
Expression value = testForAnnotationNode.getMember("value");
ClassExpression ce;
if (value instanceof ClassExpression) {
ce = (ClassExpression) value;
testFor(classNode, ce);
return;
}
if (junit3Test) {
return;
}
List<AnnotationNode> annotations = classNode.getAnnotations(MY_TYPE);
if (annotations.size()>0) return; // bail out, in this case it was already applied as a local transform
annotations = classNode.getAnnotations(TestMixinTransformation.MY_TYPE);
if (annotations.size()>0) return; // bail out, another TestMixin transform already defines behavior
// no explicit class specified try by convention
String fileName = source.getName();
String className = GrailsResourceUtils.getClassName(new FileSystemResource(fileName));
if (className == null) {
return;
}
String targetClassName = null;
if (className.endsWith("Tests")) {
targetClassName = className.substring(0, className.indexOf("Tests"));
}
else if (className.endsWith("Test")) {
targetClassName = className.substring(0, className.indexOf("Test"));
}
else if (className.endsWith("Spec")) {
targetClassName = className.substring(0, className.indexOf("Spec"));
}
if (targetClassName == null) {
return;
}
Resource targetResource = getResourceLocator().findResourceForClassName(targetClassName);
if (targetResource == null) {
return;
}
try {
if (GrailsResourceUtils.isDomainClass(targetResource.getURL())) {
testFor(classNode, new ClassExpression(new ClassNode(targetClassName, 0, ClassHelper.OBJECT_TYPE)));
}
else {
for (String artefactType : artefactTypeToTestMap.keySet()) {
if (targetClassName.endsWith(artefactType)) {
testFor(classNode, new ClassExpression(new ClassNode(targetClassName, 0, ClassHelper.OBJECT_TYPE)));
break;
}
}
}
} catch (IOException e) {