Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin created from grails CLI can't run integration tests #11016

Open
3 of 4 tasks
tlefevre opened this issue May 30, 2018 · 1 comment
Open
3 of 4 tasks

Plugin created from grails CLI can't run integration tests #11016

tlefevre opened this issue May 30, 2018 · 1 comment

Comments

@tlefevre
Copy link
Contributor

tlefevre commented May 30, 2018

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. Create a new grails app with the plugin profile
  2. Create an integration test
  3. ./gradlew clean check
  4. Boom

Expected Behaviour

That the application can start

Actual Behaviour

The application never starts up.

ControllersAsyncGrailsPlugin in the async plugin version 3.3.2 refers to AsyncActionResultTransformer, which implements ActionResultTransformer that is from grails-web-common. Including that in the application just leads to a NoClassDefFound on javax.servlet.ServletRequest.

java.lang.NoClassDefFoundError: org/grails/web/servlet/mvc/ActionResultTransformer
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.grails.plugins.web.async.ControllersAsyncGrailsPlugin$_doWithSpring_closure1.doCall(ControllersAsyncGrailsPlugin.groovy:36)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
        at groovy.lang.Closure.call(Closure.java:418)
        at groovy.lang.Closure.call(Closure.java:412)
        at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:759)
        at grails.spring.BeanBuilder.beans(BeanBuilder.java:588)
        at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:531)
        at org.grails.plugins.DefaultGrailsPlugin.doWithRuntimeConfiguration(DefaultGrailsPlugin.java:559)
        at org.grails.plugins.AbstractGrailsPluginManager.doRuntimeConfiguration(AbstractGrailsPluginManager.java:167)
        at grails.boot.config.GrailsApplicationPostProcessor.postProcessBeanDefinitionRegistry(GrailsApplicationPostProcessor.groovy:171)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:272)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:122)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
        at grails.boot.GrailsApp.run(GrailsApp.groovy:84)
        at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
        at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
        at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
        at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
        at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
        at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
        at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
        at org.spockframework.spring.SpringTestContextManager.prepareTestInstance(SpringTestContextManager.java:50)
        at org.spockframework.spring.SpringInterceptor.interceptSetupMethod(SpringInterceptor.java:42)
        at org.spockframework.runtime.extension.AbstractMethodInterceptor.intercept(AbstractMethodInterceptor.java:28)
        at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:87)
        at org.spockframework.runtime.BaseSpecRunner.invoke(BaseSpecRunner.java:472)
        at org.spockframework.runtime.BaseSpecRunner.runSetup(BaseSpecRunner.java:375)
        at org.spockframework.runtime.BaseSpecRunner.runSetup(BaseSpecRunner.java:370)
        at org.spockframework.runtime.BaseSpecRunner.doRunIteration(BaseSpecRunner.java:323)
        at org.spockframework.runtime.BaseSpecRunner$6.invoke(BaseSpecRunner.java:309)
        at org.spockframework.runtime.BaseSpecRunner.invokeRaw(BaseSpecRunner.java:481)
        at org.spockframework.runtime.BaseSpecRunner.invoke(BaseSpecRunner.java:464)
        at org.spockframework.runtime.BaseSpecRunner.runIteration(BaseSpecRunner.java:288)
        at org.spockframework.runtime.BaseSpecRunner.initializeAndRunIteration(BaseSpecRunner.java:278)
        at org.spockframework.runtime.BaseSpecRunner.runSimpleFeature(BaseSpecRunner.java:269)
        at org.spockframework.runtime.BaseSpecRunner.doRunFeature(BaseSpecRunner.java:263)
        at org.spockframework.runtime.BaseSpecRunner$5.invoke(BaseSpecRunner.java:246)
        at org.spockframework.runtime.BaseSpecRunner.invokeRaw(BaseSpecRunner.java:481)
        at org.spockframework.runtime.BaseSpecRunner.invoke(BaseSpecRunner.java:464)
        at org.spockframework.runtime.BaseSpecRunner.runFeature(BaseSpecRunner.java:238)
        at org.spockframework.runtime.BaseSpecRunner.runFeatures(BaseSpecRunner.java:188)
        at org.spockframework.runtime.BaseSpecRunner.doRunSpec(BaseSpecRunner.java:98)
        at org.spockframework.runtime.BaseSpecRunner$1.invoke(BaseSpecRunner.java:84)
        at org.spockframework.runtime.BaseSpecRunner.invokeRaw(BaseSpecRunner.java:481)
        at org.spockframework.runtime.BaseSpecRunner.invoke(BaseSpecRunner.java:464)
        at org.spockframework.runtime.BaseSpecRunner.runSpec(BaseSpecRunner.java:76)
        at org.spockframework.runtime.BaseSpecRunner.run(BaseSpecRunner.java:67)
        at org.spockframework.runtime.Sputnik.run(Sputnik.java:63)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:114)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
        at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy3.processTestClass(Unknown Source)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:147)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:129)
        at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.ClassNotFoundException: org.grails.web.servlet.mvc.ActionResultTransformer
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 99 common frames omitted

Environment Information

@puneetbehl
Copy link
Contributor

puneetbehl commented Oct 23, 2018

As a workaround, you can exclude async plugin from grails-gorm-testing-support in the build.gradle:

testCompile("org.grails:grails-gorm-testing-support") {
        exclude module: "async"
    }

Edited: Please include testCompile "org.grails:grails-async:3.3.1" dependency separately in your project as the class org.grails.testing.GrailsUnitTest set grails.async.Promises.promiseFactory to null in method cleanupGrailsApplication

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants