Add test for only updating relevant submodules in SubmoduleOp

Change-Id: I07f5312f2afb43c2e09f9b4b744b5600004b9b27
This commit is contained in:
Dave Borowitz
2018-08-13 16:02:42 -07:00
parent 864e667f3a
commit 29002f0776

View File

@@ -29,6 +29,7 @@ import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.PushResult;
@@ -655,6 +656,42 @@ public class SubmoduleSubscriptionsIT extends AbstractSubmoduleSubscription {
}
}
@Test
public void updateOnlyRelevantSubmodules() throws Exception {
TestRepository<?> superRepo = createProjectWithPush("super-project");
TestRepository<?> subRepo1 = createProjectWithPush("subscribed-to-project-1");
TestRepository<?> subRepo2 = createProjectWithPush("subscribed-to-project-2");
allowMatchingSubmoduleSubscription(
"subscribed-to-project-1", "refs/heads/master", "super-project", "refs/heads/master");
allowMatchingSubmoduleSubscription(
"subscribed-to-project-2", "refs/heads/master", "super-project", "refs/heads/master");
Config config = new Config();
prepareSubmoduleConfigEntry(config, "subscribed-to-project-1", "master");
prepareSubmoduleConfigEntry(config, "subscribed-to-project-2", "master");
pushSubmoduleConfig(superRepo, "master", config);
// Push once to initialize submodules.
ObjectId subTip2 = pushChangeTo(subRepo2, "master");
ObjectId subTip1 = pushChangeTo(subRepo1, "master");
expectToHaveSubmoduleState(superRepo, "master", "subscribed-to-project-1", subTip1);
expectToHaveSubmoduleState(superRepo, "master", "subscribed-to-project-2", subTip2);
directUpdateRef("subscribed-to-project-2", "refs/heads/master");
subTip1 = pushChangeTo(subRepo1, "master");
expectToHaveSubmoduleState(superRepo, "master", "subscribed-to-project-1", subTip1);
expectToHaveSubmoduleState(superRepo, "master", "subscribed-to-project-2", subTip2);
}
private ObjectId directUpdateRef(String project, String ref) throws Exception {
try (Repository serverRepo = repoManager.openRepository(new Project.NameKey(name(project)))) {
return new TestRepository<>(serverRepo).branch(ref).commit().create().copy();
}
}
private void testSubmoduleSubjectCommitMessageAndExpectTruncation() throws Exception {
TestRepository<?> superRepo = createProjectWithPush("super-project");
TestRepository<?> subRepo = createProjectWithPush("subscribed-to-project");