public @Test void mergeNothingToCommit() { clone.checkout("issuerBranch").resetHard(origin.getRef("master").getObjectId()); try { merge(); fail("Expected NothingToCommitException"); } catch (NothingToCommitException expected) { assertTrue(true); } }
public @Test void prepareNothingToCommit() { clone.checkout("issuerBranch").resetHard(origin.getRef("master").getObjectId()); PRStatus result = prepare(); assertFalse(result.getReport().isPresent()); GeogigTransaction prtx = getTransaction(); Ref liveHead = request.resolveTargetBranch(origin.getContext()); Optional<Ref> mergeRef = request.resolveMergeRef(prtx); assertTrue(mergeRef.isPresent()); assertEquals(liveHead.getObjectId(), mergeRef.get().getObjectId()); assertFalse(result.getReport().isPresent()); assertFalse(result.isMerged()); assertFalse(result.isClosed()); }
private void fakeUpToDate() { Remote remote = request.buildRemote(); GeogigTransaction tx = request.getTransaction(origin.getRepo().context()); tx.command(FetchOp.class).setFetchIndexes(true).addRemote(remote).call(); Ref remoteBranchState = clone.getRef(request.getRemoteBranch()); Ref localRemoteBranchState = tx.command(RefParse.class).setName(request.getOriginRef()) .call().get(); assertEquals(remoteBranchState.getObjectId(), localRemoteBranchState.getObjectId()); } }
public @Test void healthCheckWithConflicts() { // fake PRPrepareOp fakeUpToDate(); TestData.point1_modified.setAttribute("sp", "changed on pr target repo"); origin.checkout("master").insert(TestData.point1_modified).add().commit("ci for conflict"); GeogigTransaction tx = request.getTransaction(origin.getRepo().context()); tx.command(UpdateRef.class).setName("refs/heads/" + request.getTargetBranch()) .setNewValue(origin.getRef(request.getTargetBranch()).getObjectId()); tx.command(CheckoutOp.class).setSource(request.getTargetBranch()).call(); tx.command(ResetOp.class).setCommit(origin.getRef(request.getTargetBranch()).getObjectId()) .setMode(ResetMode.HARD).call(); ObjectId localRemoteCommit = clone.getRef(request.getRemoteBranch()).getObjectId(); try { tx.command(MergeOp.class).addCommit(localRemoteCommit).call(); fail("Expected MergeConflictsException"); } catch (MergeConflictsException expected) { // } PRStatus status = origin.getRepo().command(PRHealthCheckOp.class).setId(request.getId()) .call(); assertNotNull(status); assertEquals(request, status.getRequest()); assertEquals(Sets.newHashSet("Lines", "Points", "Polygons"), Sets.newHashSet(status.getAffectedLayers())); Optional<ObjectId> mergeCommit = status.getMergeCommit(); assertFalse(mergeCommit.toString(), mergeCommit.isPresent()); assertEquals(0, status.getCommitsBehindRemoteBranch()); assertEquals(1, status.getCommitsBehindTargetBranch()); assertEquals(1, status.getNumConflicts()); }
public @Test void prepareAndManuallyResolveAllConflicts() { createConflicts(TestData.point1, TestData.line1, TestData.poly1); PRStatus result = prepare(); assertEquals(3, result.getNumConflicts()); final UUID transactionId = request.getTransactionId(); origin.resumeTransaction(transactionId); assertEquals(request.getTargetBranch(), origin.getRef("HEAD").peel().localName()); //@formatter:off SimpleFeature c1 = TestData.clone(TestData.point1); c1.setAttribute("sp", "manually set"); SimpleFeature c2 = TestData.clone(TestData.line1); c2.setAttribute("sp", "manually set"); SimpleFeature c3 = TestData.clone(TestData.poly1); c3.setAttribute("sp", "manually set"); //@formatter:on Context context = clone.checkout("issuerBranch").getContext(); try { PullResult pres = context.command(PullOp.class).addRefSpec("master").call(); fail("Expected MergeConflictsException , got " + pres); } catch (MergeConflictsException e) { assertEquals(3, e.getReport().getConflicts()); clone.insert(c1, c2, c3).add().commit("manual conflict fix"); } result = prepare(); assertTrue(result.getMergeCommit().isPresent()); assertTrue(result.getReport().isPresent()); GeogigTransaction prtx = getTransaction(); Optional<Ref> mergeRef = request.resolveMergeRef(prtx); assertTrue(mergeRef.isPresent()); assertEquals(result.getMergeCommit().get(), mergeRef.get().getObjectId()); }
public @Test void healthCheckTestMergeDoneButOutDated() { // fake PRPrepareOp fakeUpToDate(); GeogigTransaction tx = request.getTransaction(origin.getRepo().context()); tx.command(UpdateRef.class).setName("refs/heads/" + request.getTargetBranch()) .setNewValue(origin.getRef(request.getTargetBranch()).getObjectId()); tx.command(CheckoutOp.class).setSource(request.getTargetBranch()).call(); tx.command(ResetOp.class).setCommit(origin.getRef(request.getTargetBranch()).getObjectId()) .setMode(ResetMode.HARD).call(); ObjectId localRemoteCommit = clone.getRef(request.getRemoteBranch()).getObjectId(); RevCommit merge = tx.command(MergeOp.class).addCommit(localRemoteCommit).call() .getMergeCommit(); tx.command(UpdateRef.class).setName(request.getMergeRef()).setNewValue(merge.getId()) .call(); origin.checkout("master").insert(TestData.line2).add().commit("ahead commit"); PRStatus status = origin.getRepo().command(PRHealthCheckOp.class).setId(request.getId()) .call(); assertNotNull(status); assertEquals(request, status.getRequest()); assertEquals(Sets.newHashSet("Lines", "Points", "Polygons"), Sets.newHashSet(status.getAffectedLayers())); Optional<ObjectId> mergeCommit = status.getMergeCommit(); assertTrue(mergeCommit.toString(), mergeCommit.isPresent()); assertEquals(0, status.getCommitsBehindRemoteBranch()); assertEquals(1, status.getCommitsBehindTargetBranch()); assertEquals(0, status.getNumConflicts()); }
assertEquals(request.getTargetBranch(), origin.getRef("HEAD").peel().localName());
assertEquals(request.getTargetBranch(), origin.getRef("HEAD").peel().localName());
assertNotNull(targetRef); assertEquals(origin.getRef("master").getObjectId(), targetRef.getObjectId()); assertEquals(commonAncestor.getId(), originRef.getObjectId()); assertEquals(targetRef.getObjectId(), headRef.getObjectId());
.setNewValue(origin.getRef("master").getObjectId()).call(); assertTrue(request.resolveMergeRef(tx).isPresent());