Details
Description
The @ accessor for accessing attributes by name when parsing XML is broken between tests. An example is the easiest way of showing what I mean (have attached a project file too). I presume this is related to the MetaClassRegistryCleaner but haven't had a chance to look at the code yet.
If either of the two tests below are run independently they work as you'd expect, but run both together and the second throws the error.
HelloService.groovy
class HelloService {
def greet(message) {
def xml = "<greeting message='${message}'/>"
new XmlParser().parseText(xml).@message
}
}
HelloServiceTests.groovy
import org.junit.Test; import grails.test.mixin.* @TestFor(HelloService) class HelloServiceTests { @Test void greetShouldReturnHello() { assert service.greet('hello') == 'hello' } @Test void greetShouldReturnGoodBye() { assert service.greet('goodbye') == 'goodbye' } }
groovy.lang.MissingFieldException: No such field: message for class: groovy.util.Node
at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:2490)
at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:3316)
at org.codehaus.groovy.runtime.InvokerHelper.getAttribute(InvokerHelper.java:131)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getField(ScriptBytecodeAdapter.java:302)
at HelloService.greet(HelloService.groovy:6)
This was a complete pain to track down. It doesn't affect older style tests (unless there's a mixture of old and new)
We spotted this JIRA (http://jira.grails.org/browse/GRAILS-8488) so tried this with the 2.0.1 snapshot and it fails there too.
-
Hide
- broken-xml.zip
- 10/Feb/12 5:24 AM
- 699 kB
- James Frost
-
- broken-xml/.../JQueryProvider$_doRemoteFunction_closure2.class 3 kB
- broken-xml/.../JQueryProvider.class 12 kB
- broken-xml/.../JQueryProvider$_doRemoteFunction_closure4.class 3 kB
- broken-xml/.../JQueryProvider$_doRemoteFunction_closure3.class 3 kB
- broken-xml/.../JQueryProvider$_doRemoteFunction_closure1.class 3 kB
- broken-xml/.../JQueryConfig$_init_closure1.class 3 kB
- broken-xml/.../JQueryConfig.class 7 kB
- broken-xml/.../JQueryConfig$_init_closure2.class 5 kB
- broken-xml/.../ResourceMetaStore.class 14 kB
- broken-xml/.../ResourceMetaStore$_addResource_closure1.class 4 kB
- broken-xml/.../HalfBakedLegacyLinkGenerator.class 10 kB
- broken-xml/.../ModulesBuilder$_invokeMethod_closure1.class 4 kB
- broken-xml/.../ModulesBuilder.class 11 kB
- broken-xml/.../ModuleDeclarationsFactory$_getModuleDeclarations_closure2.class 5 kB
- broken-xml/.../ModuleDeclarationsFactory.class 10 kB
- broken-xml/.../ModuleDeclarationsFactory$_getModuleDeclarations_closure3.class 4 kB
- broken-xml/.../ModuleDeclarationsFactory$_getModuleDeclarations_closure1.class 3 kB
- broken-xml/.../ModuleBuilder.class 8 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure6.class 4 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure5.class 4 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure2_closure7.class 4 kB
- broken-xml/.../ResourceMappersFactory.class 9 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure4.class 5 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure1.class 4 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure3.class 4 kB
- broken-xml/.../ResourceMappersFactory$_createResourceMappers_closure2.class 6 kB
- broken-xml/.../ResourceMapper$_getName_closure7.class 4 kB
- broken-xml/.../ResourceMapper$_getOperation_closure5.class 4 kB
- broken-xml/.../ResourceMapper$_getIncludes_closure11.class 4 kB
- broken-xml/.../ResourceMapper$_getExcludingPattern_closure2.class 4 kB
Activity
- All
- Comments
- Work Log
- History
- Activity
- Git Commits
There are no comments yet on this issue.