Hi Eric I hereby cancel the release vote for JUnit Core 1.1.4. I'll soon follow up with a 1.1.6 release.
I found the reason why ResourceResolverGeneralTest fails. 1. ResourceResolverGeneralTest uses the TeleporterRule, which sets Sling-Test-Regexp to "org.apache.sling.launchpad.webapp.integrationtest.resourceresolver.ResourceResolverGeneralTest.*", thus (incorrectly?) matching inner classes [1]. This should probably just use the class name. I don't currently see an elegant (low effort) way to detect inner classes as tests for both JUnit 4 and Jupiter. 2. The change I did for 1.1.0 allows a test-method to be specified _only_ when a single test-class is specified [2]. Before the change there was no restriction on the number of test-classes. 3. RequestParser#acceptTestName(String) checks if a test-name starts with the "testNameSelector", i.e. the first relevant segment of the URL path [3]. The prefix matching is required e.g. for listing all tests in a certain java package. I propose to enhance this method to check for equality and failing that does a startsWith(testNameSelector + '.') to cover the package case. Regards Julian [1] https://github.com/apache/sling-org-apache-sling-junit-teleporter/blob/master/src/main/java/org/apache/sling/testing/teleporter/client/ClientSideTeleporter.java#L82 [2] https://github.com/apache/sling-org-apache-sling-junit-core/blame/org.apache.sling.junit.core-1.1.0/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java#L162 [3] https://github.com/apache/sling-org-apache-sling-junit-core/blob/88d700a6589a0d080a84ac2f3183773d6794dea3/src/main/java/org/apache/sling/junit/RequestParser.java#L107 On Thu, Jun 24, 2021 at 11:29 AM Julian Sedding <[email protected]> wrote: > > Thanks Eric, I'll have a look. > > Regards > Julian > > On Thu, Jun 24, 2021 at 12:44 AM Eric Norman <[email protected]> wrote: > > > > It looks like TestsManagerImpl is detecting some inner classes as test > > classes at [1] which is causing the check to fail and throw the exception. > > > > 1. > > > > https://github.com/apache/sling-org-apache-sling-junit-core/blob/05eeeb42319eace3d8d7d111a9b60ef2b467b2e5/src/main/java/org/apache/sling/junit/impl/TestsManagerImpl.java#L110 > > > > > > On Wed, Jun 23, 2021 at 3:26 PM Eric Norman <[email protected]> wrote: > > > > > Just a bit more information: > > > > > > I captured the stacktrace of the failure described in my last reply as: > > > > > > [ERROR] Exception while processing request to > > > /system/sling/junit/org.apache.sling.launchpad.webapp.integrationtest.resourceresolver.ResourceResolverGeneralTest/testResolveRemovedResourceAlias.junit_result > > > javax.servlet.ServletException: java.lang.IllegalStateException: A test > > > method name is only supported for a single test class > > > at > > > org.apache.sling.junit.impl.servlet.ServletProcessor.doPost(ServletProcessor.java:145) > > > at > > > org.apache.sling.junit.impl.servlet.JUnitServlet.doPost(JUnitServlet.java:110) > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) > > > at > > > org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:123) > > > at > > > org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:86) > > > at > > > org.apache.sling.junit.impl.servlet.TestLogServlet$TestNameLoggingFilter.doFilter(TestLogServlet.java:250) > > > at > > > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) > > > at > > > org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) > > > at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:131) > > > at > > > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) > > > at > > > org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) > > > at > > > org.apache.felix.http.base.internal.dispatch.Dispatcher$1.doFilter(Dispatcher.java:146) > > > at > > > org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1002) > > > at > > > org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:97) > > > at > > > org.apache.felix.http.base.internal.handler.PreprocessorHandler.handle(PreprocessorHandler.java:137) > > > at > > > org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1008) > > > at > > > org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.invokePreprocessors(WhiteboardManager.java:1012) > > > at > > > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:91) > > > at > > > org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service(DispatcherServlet.java:49) > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) > > > at > > > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) > > > at > > > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550) > > > at > > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) > > > at > > > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) > > > at > > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) > > > at > > > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) > > > at > > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) > > > at > > > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) > > > at > > > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) > > > at > > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) > > > at > > > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) > > > at > > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > > > at > > > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) > > > at > > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > > > at org.eclipse.jetty.server.Server.handle(Server.java:516) > > > at > > > org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) > > > at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) > > > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) > > > at > > > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) > > > at > > > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) > > > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) > > > at > > > org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) > > > at > > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) > > > at > > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) > > > at > > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) > > > at > > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) > > > at > > > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) > > > at > > > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) > > > at > > > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) > > > at java.base/java.lang.Thread.run(Thread.java:829) > > > Caused by: java.lang.IllegalStateException: A test method name is only > > > supported for a single test class > > > at > > > org.apache.sling.junit.impl.TestsManagerImpl.createTestRequest(TestsManagerImpl.java:168) > > > at > > > org.apache.sling.junit.impl.JUnit4TestExecutionStrategy.execute(JUnit4TestExecutionStrategy.java:38) > > > at > > > org.apache.sling.junit.impl.TestsManagerImpl.executeTests(TestsManagerImpl.java:150) > > > at > > > org.apache.sling.junit.impl.servlet.ServletProcessor.doPost(ServletProcessor.java:138) > > > ... 50 more > > > > > > > > > On Wed, Jun 23, 2021 at 2:59 PM Eric Norman <[email protected]> wrote: > > > > > >> Hi, > > >> > > >> -1 for me. I don't know much about this bundle, but I have some concerns > > >> with this release (and the 1.1.2 version as well) since they don't appear > > >> to work when integrated into the org.apache.sling.launchpad.testing > > >> project. My testing indicates that org.apache.sling.junit.core version > > >> 1.0.30 is the last version that works with the > > >> org.apache.sling.launchpad.testing project. > > >> > > >> Specifically, I updated the src/main/features/model.json in > > >> org.apache.sling.launchpad.testing to use this version. When running the > > >> build to verify, the ResourceResolverGeneralTest test runs for a long > > >> time > > >> before reporting either a "java.io.IOException: Got status code 500" or > > >> "java.net.SocketTimeoutException: Read timed out" for each test. And > > >> there > > >> appear to be other failures as well. > > >> > > >> I did a quick search of the sling projects on github and I don't see any > > >> of the sling projects that are using any 1.1.x version of > > >> org.apache.sling.junit.core. > > >> > > >> If you are able to share, may I ask what you have been using to smoke > > >> test that the functionality is working? > > >> > > >> Regards, > > >> Eric > > >> > > >> > > >> On Mon, Jun 21, 2021 at 5:45 AM Julian Sedding <[email protected]> > > >> wrote: > > >> > > >>> Hi, > > >>> > > >>> We solved 3 issues in this release: > > >>> https://issues.apache.org/jira/browse/SLING/fixforversion/12350085 > > >>> > > >>> Staging repository: > > >>> https://repository.apache.org/content/repositories/orgapachesling-2480/ > > >>> > > >>> You can use this UNIX script to download the release and verify the > > >>> signatures: > > >>> > > >>> https://gitbox.apache.org/repos/asf?p=sling-tooling-release.git;a=blob;f=check_staged_release.sh;hb=HEAD > > >>> > > >>> Usage: > > >>> sh check_staged_release.sh 2480 /tmp/sling-staging > > >>> > > >>> Please vote to approve this release: > > >>> > > >>> [ ] +1 Approve the release > > >>> [ ] 0 Don't care > > >>> [ ] -1 Don't release, because ... > > >>> > > >>> This majority vote is open for at least 72 hours. > > >>> > > >>> Regards > > >>> Julian > > >>> > > >>
