You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Jens Lauterbach (JIRA)" <ji...@apache.org> on 2016/05/11 13:58:13 UTC

[jira] [Created] (SLING-5719) Missing isLive() test before closing ResourceResolver

Jens Lauterbach created SLING-5719:
--------------------------------------

             Summary: Missing isLive() test before closing ResourceResolver
                 Key: SLING-5719
                 URL: https://issues.apache.org/jira/browse/SLING-5719
             Project: Sling
          Issue Type: Bug
          Components: Testing
    Affects Versions: Testing Sling Mock 1.6.2
            Reporter: Jens Lauterbach
            Priority: Minor


I am currently writing tests that involve the {{SlingContext}} and its {{ResourceResolver}}:

{code}
@Rule
    public final SlingContext context = new SlingContext(ResourceResolverType.JCR_MOCK);

[... code ...]

@Test
public void testSomething() {
    ResourceResolver resolver = this.context.resourceResolver();
    someOtherMethod(resolver);
}
{code}

If the resolver is closed in {{someOtherMethod()}} the test will fail because after the test runs the {{SlingContextImpl}} mehtod {{tearDown()}} is called which will {{close()}} the resource resolver if it is not {{null}}.

The problem is that it won't test if the resource resolver {{isLive()}} which will end in an exception and a failed test:

{quote}
java.lang.IllegalStateException: Resource resolver is already closed.

	at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.checkClosed(ResourceResolverImpl.java:167)
	at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.adaptTo(ResourceResolverImpl.java:718)
	at org.apache.sling.testing.mock.sling.context.SlingContextImpl.tearDown(SlingContextImpl.java:145)
	at org.apache.sling.testing.mock.sling.junit.SlingContext.access$300(SlingContext.java:32)
	at org.apache.sling.testing.mock.sling.junit.SlingContext$1.after(SlingContext.java:120)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:50)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
{quote}

Github link to the line in question:

https://github.com/apache/sling/blob/4da6392078b73f0f20d3d66e87743cf4e86f4ecb/testing/mocks/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java#L161



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)