@Override public Statement apply( Statement base, Description description ) { if ( chain == null ) { if ( fs == null ) { fs = new EphemeralFileSystemRule(); } this.pageCacheRule = new PageCacheRule( pageCacheConfig ); this.directory = TestDirectory.testDirectory( clazz, fs ); this.chain = RuleChain.outerRule( fs ).around( directory ).around( pageCacheRule ); } return chain.apply( base, description ); }
@Override public Statement apply(final Statement base, final Description description) { return innerChain.apply(base, description); }
@Override public Statement apply(Statement base, Description description) { return chain.apply(base, description); } }
@Override public Statement apply(Statement base, Description description) { return chain.apply(base, description); } }
@Override public Statement apply(final Statement base, final Description description) { return ruleChain.apply(base, description); } }
@Override public Statement apply(Statement base, Description description) { return chain.apply(base, description); }
@Override public Statement apply(Statement base, Description description) { return chain.apply(base, description); }
@Override public Statement apply(Statement base, Description description) { return chain.apply(base, description); }
@Override public Statement apply(Statement base, Description description) { return chain.apply(base, description); }
@Override public Statement apply(Statement base, Description description) { return RuleChain.outerRule(outerRule).around(innerRule()).apply(base, description); } }
@Override public void evaluate() throws Throwable { // injection context final InjectionContext injectionContext = getInjectionContext(); for (Object classRule : findInjectableRulesInChain(baseMethodRules)) { injectionContext.injectMembers(classRule); } final ResetFixtures annotation = method.getAnnotation(ResetFixtures.class); final ResetFixtures.When when = annotation != null ? annotation.when() : null; final List<TestFixture> fixturesToReset = computeFixtures(annotation, method); if (when == ResetFixtures.When.BOTH || when == ResetFixtures.When.BEFORE) { resetFixtures(fixturesToReset); } try { baseMethodRules.apply(baseStatement, describeChild(method)).evaluate(); } finally { if (when == ResetFixtures.When.BOTH || when == ResetFixtures.When.AFTER) { resetFixtures(fixturesToReset); } } } };
@Override public void evaluate() throws Throwable { final InjectionContext injectionContext = getInjectionContext(); for (Object classRule : findInjectableRulesInChain(baseClassRules)) { injectionContext.injectMembers(classRule); } baseClassRules.apply(new Statement() { @Override public void evaluate() throws Throwable { boolean fixturesFailed = true; try { createFixtures(); fixturesFailed = false; statement.evaluate(); } finally { removeFixtures(fixturesFailed); } } }, getDescription()).evaluate(); } };