Merge "SchemaUpgradeTestEnvironment: Automatically inject test members"

This commit is contained in:
David Pursehouse
2017-12-15 00:19:28 +00:00
committed by Gerrit Code Review
4 changed files with 14 additions and 32 deletions

View File

@@ -30,11 +30,11 @@ import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Provider;
import com.google.inject.util.Providers;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
public final class SchemaUpgradeTestEnvironment implements TestRule {
public final class SchemaUpgradeTestEnvironment implements MethodRule {
@Inject private AccountManager accountManager;
@Inject private IdentifiedUser.GenericFactory userFactory;
@Inject private SchemaFactory<ReviewDb> schemaFactory;
@@ -44,17 +44,16 @@ public final class SchemaUpgradeTestEnvironment implements TestRule {
@Inject private InMemoryDatabase inMemoryDatabase;
private ReviewDb db;
private Injector injector;
private LifecycleManager lifecycle;
@Override
public Statement apply(Statement statement, Description description) {
public Statement apply(Statement base, FrameworkMethod method, Object target) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
try {
setUp();
statement.evaluate();
setUp(target);
base.evaluate();
} finally {
tearDown();
}
@@ -62,14 +61,6 @@ public final class SchemaUpgradeTestEnvironment implements TestRule {
};
}
public ReviewDb getDb() {
return db;
}
public Injector getInjector() {
return injector;
}
public void setApiUser(Account.Id id) {
IdentifiedUser user = userFactory.create(id);
requestContext.setContext(
@@ -86,8 +77,8 @@ public final class SchemaUpgradeTestEnvironment implements TestRule {
});
}
private void setUp() throws Exception {
injector = Guice.createInjector(new InMemoryModule());
private void setUp(Object target) throws Exception {
Injector injector = Guice.createInjector(new InMemoryModule());
injector.injectMembers(this);
lifecycle = new LifecycleManager();
lifecycle.add(injector);
@@ -98,6 +89,9 @@ public final class SchemaUpgradeTestEnvironment implements TestRule {
}
db = schemaFactory.open();
setApiUser(accountManager.authenticate(AuthRequest.forUser("user")).getAccountId());
// Inject target members after setting API user, so it can @Inject a ReviewDb if it wants.
injector.injectMembers(target);
}
private void tearDown() {

View File

@@ -48,8 +48,8 @@ public class Schema_150_to_151_Test {
@Inject private CreateGroup.Factory createGroupFactory;
@Inject private Schema_151 schema151;
@Inject private ReviewDb db;
private ReviewDb db;
private Connection connection;
private PreparedStatement createdOnRetrieval;
private PreparedStatement createdOnUpdate;
@@ -57,8 +57,6 @@ public class Schema_150_to_151_Test {
@Before
public void setUp() throws Exception {
testEnv.getInjector().injectMembers(this);
db = testEnv.getDb();
assume().that(db instanceof JdbcSchema).isTrue();
connection = ((JdbcSchema) db).getConnection();

View File

@@ -53,15 +53,13 @@ public class Schema_159_to_160_Test {
@Inject private GerritApi gApi;
@Inject private GitRepositoryManager repoManager;
@Inject private Provider<IdentifiedUser> userProvider;
@Inject private ReviewDb db;
@Inject private Schema_160 schema160;
private ReviewDb db;
private Account.Id accountId;
@Before
public void setUp() throws Exception {
testEnv.getInjector().injectMembers(this);
db = testEnv.getDb();
accountId = userProvider.get().getAccountId();
}

View File

@@ -35,7 +35,6 @@ import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -47,16 +46,9 @@ public class Schema_161_to_162_Test {
@Inject private GerritApi gApi;
@Inject private GitRepositoryManager repoManager;
@Inject private Schema_162 schema162;
@Inject private ReviewDb db;
@Inject @GerritPersonIdent private PersonIdent serverUser;
private ReviewDb db;
@Before
public void setUp() throws Exception {
testEnv.getInjector().injectMembers(this);
db = testEnv.getDb();
}
@Test
public void skipCorrectInheritance() throws Exception {
assertThatAllUsersInheritsFrom(allProjectsName.get());