submodule subscriptions: ensure nested relative projects work
We never test relative paths in submodule subscriptions, so add a test for it. Change-Id: Iec213b8a553aa5624e2c7c072b4bfb2f9216ed03
This commit is contained in:
@@ -71,13 +71,6 @@ public abstract class AbstractSubmoduleSubscription extends AbstractDaemonTest {
|
||||
return pushChangeTo(repo, "refs/heads/" + branch, "some change", "");
|
||||
}
|
||||
|
||||
protected void createSubmoduleSubscription(TestRepository<?> repo, String branch,
|
||||
String subscribeToRepo, String subscribeToBranch) throws Exception {
|
||||
Config config = new Config();
|
||||
prepareSubmoduleConfigEntry(config, subscribeToRepo, subscribeToBranch);
|
||||
pushSubmoduleConfig(repo, branch, config);
|
||||
}
|
||||
|
||||
protected void allowSubmoduleSubscription(String submodule, String subBranch,
|
||||
String superproject, String superBranch) throws Exception {
|
||||
Project.NameKey sub = new Project.NameKey(name(submodule));
|
||||
@@ -99,6 +92,34 @@ public abstract class AbstractSubmoduleSubscription extends AbstractDaemonTest {
|
||||
}
|
||||
}
|
||||
|
||||
protected void createSubmoduleSubscription(TestRepository<?> repo, String branch,
|
||||
String subscribeToRepo, String subscribeToBranch) throws Exception {
|
||||
Config config = new Config();
|
||||
prepareSubmoduleConfigEntry(config, subscribeToRepo, subscribeToBranch);
|
||||
pushSubmoduleConfig(repo, branch, config);
|
||||
}
|
||||
|
||||
protected void createRelativeSubmoduleSubscription(TestRepository<?> repo,
|
||||
String branch, String subscribeToRepoPrefix, String subscribeToRepo,
|
||||
String subscribeToBranch) throws Exception {
|
||||
Config config = new Config();
|
||||
prepareRelativeSubmoduleConfigEntry(config, subscribeToRepoPrefix,
|
||||
subscribeToRepo, subscribeToBranch);
|
||||
pushSubmoduleConfig(repo, branch, config);
|
||||
}
|
||||
|
||||
protected void prepareRelativeSubmoduleConfigEntry(Config config,
|
||||
String subscribeToRepoPrefix, String subscribeToRepo,
|
||||
String subscribeToBranch) {
|
||||
subscribeToRepo = name(subscribeToRepo);
|
||||
String url = subscribeToRepoPrefix + subscribeToRepo;
|
||||
config.setString("submodule", subscribeToRepo, "path", subscribeToRepo);
|
||||
config.setString("submodule", subscribeToRepo, "url", url);
|
||||
if (subscribeToBranch != null) {
|
||||
config.setString("submodule", subscribeToRepo, "branch", subscribeToBranch);
|
||||
}
|
||||
}
|
||||
|
||||
protected void prepareSubmoduleConfigEntry(Config config,
|
||||
String subscribeToRepo, String subscribeToBranch) {
|
||||
subscribeToRepo = name(subscribeToRepo);
|
||||
|
||||
@@ -353,6 +353,25 @@ public class SubmoduleSubscriptionsIT extends AbstractSubmoduleSubscription {
|
||||
"subscribed-to-project")).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSubscriptionDeepRelative() throws Exception {
|
||||
TestRepository<?> superRepo = createProjectWithPush("super-project");
|
||||
TestRepository<?> subRepo = createProjectWithPush(
|
||||
"nested/subscribed-to-project");
|
||||
// master is allowed to be subscribed to any superprojects branch:
|
||||
allowSubmoduleSubscription("nested/subscribed-to-project",
|
||||
"refs/heads/master", "super-project", null);
|
||||
|
||||
pushChangeTo(subRepo, "master");
|
||||
createRelativeSubmoduleSubscription(superRepo, "master",
|
||||
"../", "nested/subscribed-to-project", "master");
|
||||
|
||||
ObjectId subHEAD = pushChangeTo(subRepo, "master");
|
||||
|
||||
expectToHaveSubmoduleState(superRepo, "master",
|
||||
"nested/subscribed-to-project", subHEAD);
|
||||
}
|
||||
|
||||
private void deleteAllSubscriptions(TestRepository<?> repo, String branch)
|
||||
throws Exception {
|
||||
repo.git().fetch().setRemote("origin").call();
|
||||
|
||||
Reference in New Issue
Block a user