Merge changes I615b109f,I261f140c,Ia6ffd80e * changes: Superproject Subscriptions: test more corner cases AbstractSubmoduleSubscription: test for pushes to be valid Fix "submoduleOp: Move checking for existence to SubmoduleOp"
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractSubmoduleSubscription.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractSubmoduleSubscription.java index 61eed38..721628d 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractSubmoduleSubscription.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractSubmoduleSubscription.java
@@ -16,6 +16,7 @@ import static com.google.common.truth.Truth.assertThat; +import com.google.common.collect.Iterables; import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.common.Nullable; import com.google.gerrit.common.data.Permission; @@ -31,7 +32,10 @@ import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.revwalk.RevTree; import org.eclipse.jgit.revwalk.RevWalk; +import org.eclipse.jgit.transport.PushResult; import org.eclipse.jgit.transport.RefSpec; +import org.eclipse.jgit.transport.RemoteRefUpdate; +import org.eclipse.jgit.transport.RemoteRefUpdate.Status; import java.util.concurrent.atomic.AtomicInteger; @@ -57,12 +61,21 @@ .message(message) .add("a.txt", "a contents: " + contentCounter.incrementAndGet()) .create(); - String refspec = "HEAD:" + ref; + + String pushedRef = ref; if (!topic.isEmpty()) { - refspec += "/" + topic; + pushedRef += "/" + topic; } - repo.git().push().setRemote("origin").setRefSpecs( - new RefSpec(refspec)).call(); + String refspec = "HEAD:" + pushedRef; + + Iterable<PushResult> res = repo.git().push() + .setRemote("origin").setRefSpecs(new RefSpec(refspec)).call(); + + RemoteRefUpdate u = Iterables.getOnlyElement(res).getRemoteUpdate(pushedRef); + assertThat(u).isNotNull(); + assertThat(u.getStatus()).isEqualTo(Status.OK); + assertThat(u.getNewObjectId()).isEqualTo(ret); + return ret; }
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsIT.java index 1fcc420..f535759 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsIT.java
@@ -108,6 +108,33 @@ } @Test + public void testSubscriptionWildcardACLForMissingProject() throws Exception { + TestRepository<?> subRepo = createProjectWithPush("subscribed-to-project"); + allowSubmoduleSubscription("subscribed-to-project", "refs/heads/*", + "not-existing-super-project", "refs/heads/*"); + pushChangeTo(subRepo, "master"); + } + + @Test + public void testSubscriptionWildcardACLForMissingBranch() throws Exception { + createProjectWithPush("super-project"); + TestRepository<?> subRepo = createProjectWithPush("subscribed-to-project"); + allowSubmoduleSubscription("subscribed-to-project", "refs/heads/*", + "super-project", "refs/heads/*"); + pushChangeTo(subRepo, "foo"); + } + + @Test + public void testSubscriptionWildcardACLForMissingGitmodules() throws Exception { + TestRepository<?> superRepo = createProjectWithPush("super-project"); + TestRepository<?> subRepo = createProjectWithPush("subscribed-to-project"); + allowSubmoduleSubscription("subscribed-to-project", "refs/heads/*", + "super-project", "refs/heads/*"); + pushChangeTo(superRepo, "master"); + pushChangeTo(subRepo, "master"); + } + + @Test public void testSubscriptionWildcardACLOneOnOneMapping() throws Exception { TestRepository<?> superRepo = createProjectWithPush("super-project"); TestRepository<?> subRepo = createProjectWithPush("subscribed-to-project");
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java index 16e265a..5893c6b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
@@ -152,10 +152,10 @@ Project.NameKey p = targetBranch.getParentKey(); try { orm.openRepo(p, false); - OpenRepo or = orm.getRepo(project); - ObjectId id = or.repo.resolve(branch.get()); + OpenRepo or = orm.getRepo(p); + ObjectId id = or.repo.resolve(targetBranch.get()); if (id == null) { - logDebug("The branch " + branch + " doesn't exist."); + logDebug("The branch " + targetBranch + " doesn't exist."); continue; } } catch (NoSuchProjectException e) {