From bdb41d85397c64b8b1f96e03c49f130f80f1365d Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Sat, 4 Jun 2016 01:57:27 +0000 Subject: [PATCH 1/3] Fix "submoduleOp: Move checking for existence to SubmoduleOp" Commit 5fc7df7a859bc1eeebfa217c24fe6f864a274a0b broke 24 tests. This fixes it by having the correct project/branch checked. Change-Id: Ia6ffd80ee7b8ad6690b6abd861663f16fd659200 --- .../main/java/com/google/gerrit/server/git/SubmoduleOp.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 16e265a538..5893c6bd4f 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 @@ public class SubmoduleOp { 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) { From 4a85c9db24d65ead0454761029107a653798748a Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Fri, 3 Jun 2016 17:59:41 -0700 Subject: [PATCH 2/3] AbstractSubmoduleSubscription: test for pushes to be valid Change-Id: I261f140c47b4599ab54a76f0426e852ea9b4e140 --- .../git/AbstractSubmoduleSubscription.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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 61eed38b68..721628dab5 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 @@ package com.google.gerrit.acceptance.git; 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.RevCommit; 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 @@ public abstract class AbstractSubmoduleSubscription extends AbstractDaemonTest { .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 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; } From d40b14f1e8a35db6bf8ccd9a5fdcf7d51216f541 Mon Sep 17 00:00:00 2001 From: Stefan Beller Date: Fri, 3 Jun 2016 18:03:45 -0700 Subject: [PATCH 3/3] Superproject Subscriptions: test more corner cases With the previous commit in this makes sure there are no errors in the push. Change-Id: I615b109f9994658343ab2edf82019caa1ba6c8ca --- .../git/SubmoduleSubscriptionsIT.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) 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 1fcc42055e..f53575923f 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 @@ -107,6 +107,33 @@ public class SubmoduleSubscriptionsIT extends AbstractSubmoduleSubscription { "subscribed-to-project", subHEAD); } + @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");