Skip to content

Commit 7405fe3

Browse files
committed
Don't override methods that already exist in unit test mixins. Fixes #10201
1 parent 54f1e6c commit 7405fe3

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

grails-plugin-testing/src/main/groovy/org/grails/compiler/injection/test/TestMixinTransformation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ protected void weaveMixinIntoClass(final ClassNode classNode, final ClassNode mi
217217

218218
boolean implementsTestRuntimeAwareMixin = GrailsASTUtils.findInterface(mixinClassNode, ClassHelper.make(TestRuntimeAwareMixin.class)) != null;
219219

220-
FieldNode mixinFieldNode = null;
220+
FieldNode mixinFieldNode;
221221
if(!implementsTestRuntimeAwareMixin) {
222222
mixinFieldNode = addLegacyMixinFieldIfNonExistent(classNode, mixinClassNode, fieldName);
223223
} else {
@@ -395,7 +395,7 @@ static protected FieldNode addLegacyMixinFieldIfNonExistent(ClassNode classNode,
395395
}
396396

397397
static protected boolean hasDeclaredMethod(ClassNode classNode, MethodNode mixinMethod) {
398-
return classNode.hasDeclaredMethod(mixinMethod.getName(), mixinMethod.getParameters());
398+
return classNode.hasMethod(mixinMethod.getName(), mixinMethod.getParameters());
399399
}
400400

401401
static protected boolean hasAnnotation(MethodNode mixinMethod, Class<?> beforeClass) {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package grails.test.mixin
2+
3+
import grails.artefact.Artefact
4+
import grails.test.mixin.services.ServiceUnitTestMixin
5+
import org.grails.core.artefact.ServiceArtefactHandler
6+
import org.grails.datastore.mapping.transactions.DatastoreTransactionManager
7+
import org.springframework.transaction.PlatformTransactionManager
8+
import spock.lang.Specification
9+
10+
/**
11+
* Created by graemerocher on 04/10/2016.
12+
*/
13+
@TestMixin(ServiceUnitTestMixin)
14+
class ServiceTestMixinInheritanceSpec extends TestSuperClass {
15+
16+
void "Test inherit transaction manager"() {
17+
expect:
18+
transactionManager.is(TestSuperClass.manager)
19+
}
20+
}
21+
@Artefact(ServiceArtefactHandler.TYPE)
22+
class TestService {
23+
24+
}
25+
class TestSuperClass extends Specification {
26+
public static final DatastoreTransactionManager manager = new DatastoreTransactionManager()
27+
28+
PlatformTransactionManager getTransactionManager() {
29+
return manager
30+
}
31+
}

0 commit comments

Comments
 (0)