Fix ListBranchesTest This test was broken when symbolic references and their targets were no longer permitted to be deleted. Change-Id: I20249341bdcf9f9f65c513294e0177182a6e46ab Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/gerrit-httpd/src/test/java/com/google/gerrit/httpd/rpc/project/ListBranchesTest.java b/gerrit-httpd/src/test/java/com/google/gerrit/httpd/rpc/project/ListBranchesTest.java index bfc2de1..51fcf2e 100644 --- a/gerrit-httpd/src/test/java/com/google/gerrit/httpd/rpc/project/ListBranchesTest.java +++ b/gerrit-httpd/src/test/java/com/google/gerrit/httpd/rpc/project/ListBranchesTest.java
@@ -24,6 +24,7 @@ import static org.eclipse.jgit.lib.Constants.R_HEADS; import static org.eclipse.jgit.lib.Ref.Storage.LOOSE; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; @@ -52,9 +53,11 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; public class ListBranchesTest extends LocalDiskRepositoryTestCase { static { @@ -146,8 +149,9 @@ } } + Set<String> targets = targets(refs); for (Ref ref : refs.values()) { - assumeVisible(ref, true); + assumeVisible(ref, true, targets); } mockDb.close(); @@ -164,11 +168,21 @@ return r; } - private void assumeVisible(Ref ref, boolean visible) { + private Set<String> targets(Map<String, Ref> refs) { + Set<String> targets = new HashSet<String>(); + for (Ref ref : refs.values()) { + if (ref.isSymbolic()) { + targets.add(ref.getLeaf().getName()); + } + } + return targets; + } + + private void assumeVisible(Ref ref, boolean visible, Set<String> targets) { RefControl rc = createStrictMock(RefControl.class); refMocks.add(rc); expect(rc.isVisible()).andReturn(visible); - if (visible) { + if (visible && !ref.isSymbolic() && !targets.contains(ref.getName())) { expect(rc.canDelete()).andReturn(true); } @@ -252,6 +266,7 @@ assertNotNull(b.getRevision()); assertEquals("master", b.getRevision().get()); + assertFalse(b.getCanDelete()); b = r.getBranches().get(1); assertNotNull(b); @@ -265,6 +280,7 @@ assertNotNull(b.getRevision()); assertEquals(idA.name(), b.getRevision().get()); + assertTrue(b.getCanDelete()); } @Test @@ -279,7 +295,7 @@ expect(grm.openRepository(eq(name))).andReturn(mockDb); expect(mockDb.getAllRefs()).andReturn(u); for (Ref ref : u.values()) { - assumeVisible(ref, true); + assumeVisible(ref, true, targets(u)); } expect(pc.canAddRefs()).andReturn(true); mockDb.close(); @@ -307,8 +323,8 @@ validate().andReturn(pc); expect(grm.openRepository(eq(name))).andReturn(mockDb); expect(mockDb.getAllRefs()).andReturn(u); - assumeVisible(bar, false); - assumeVisible(bar, false); + assumeVisible(bar, false, targets(u)); + assumeVisible(bar, false, targets(u)); expect(pc.canAddRefs()).andReturn(true); mockDb.close(); expectLastCall(); @@ -335,9 +351,9 @@ validate().andReturn(pc); expect(grm.openRepository(eq(name))).andReturn(mockDb); expect(mockDb.getAllRefs()).andReturn(u); - assumeVisible(bar, true); - assumeVisible(bar, true); - assumeVisible(foo, false); + assumeVisible(bar, true, targets(u)); + assumeVisible(bar, true, targets(u)); + assumeVisible(foo, false, targets(u)); expect(pc.canAddRefs()).andReturn(true); mockDb.close(); expectLastCall(); @@ -348,7 +364,11 @@ assertNotNull(r); assertEquals(2, r.getBranches().size()); + assertEquals(HEAD, r.getBranches().get(0).getShortName()); + assertFalse(r.getBranches().get(0).getCanDelete()); + assertEquals("bar", r.getBranches().get(1).getShortName()); + assertFalse(r.getBranches().get(1).getCanDelete()); } }