@Given("^There is a repository with multiple branches named ([^\"]*)$") public void setUpMultipleBranches(String name) throws Throwable { Repository repo = context.createRepo(name).init("webuser", "webuser@test.com").getRepo(); TestData data = new TestData(repo); data.addAndCommit("Added Point.1", TestData.point1); data.branch("non_conflicting"); data.branch("conflicting"); data.addAndCommit("Modified Point.1", TestData.point1_modified); data.branch("master_original"); data.checkout("conflicting"); data.remove(TestData.point1); data.add(); data.commit("Removed Point.1"); data.checkout("non_conflicting"); data.addAndCommit("Added Point.2", TestData.point2); data.checkout("master"); repo.close(); openedRepos.add(name); }
private void createConflicts(SimpleFeature... features) { for (SimpleFeature base : features) { SimpleFeature toOrigin = TestData.clone(base); toOrigin.setAttribute("sp", "modified on origin"); origin.checkout("master").insert(toOrigin).add() .commit(String.format("change %s on origin", base.getID())); SimpleFeature toClone = TestData.clone(base); toClone.setAttribute("sp", "modified on fork"); clone.checkout("issuerBranch").insert(toClone).add() .commit(String.format("change %s on clone", base.getID())); } }
/** * Set up multiple repositories for testing. * * @return Collection of repository names created. * * @throws Exception */ public Collection<String> setUpDefaultMultiRepoServer() throws Exception { createRepo("repo1")// .init("geogigUser", "repo1_Owner@geogig.org")// .loadDefaultData()// .getRepo().close(); createRepo("repo2")// .init("geogigUser", "repo2_Owner@geogig.org")// .loadDefaultData()// .getRepo().close(); return Arrays.asList("repo1", "repo2"); }
@Given("^There is a feature with multiple authors on the \"([^\"]*)\" repo$") public void There_is_a_feature_with_multiple_authors(String repoName) throws Throwable { Repository repo = context.getRepo(repoName); TestData data = new TestData(repo); data.config("user.name", "Author1"); data.config("user.email", "author1@test.com"); data.addAndCommit("Added Point.1", TestData.point1); data.config("user.name", "Author2"); data.config("user.email", "author2@test.com"); data.addAndCommit("Modified Point.1", TestData.point1_modified); // add the repo to the set so it can be closed openedRepos.add(repoName); }
public @Before void before() { origin = testSupport.newRepo("origin"); origin.loadDefaultData(); clone = testSupport.clone(origin, "clone"); commonAncestor = Iterators.getLast(origin.log("master")); origin.resetHard(commonAncestor.getId()); TestData.point1_modified.setAttribute("sp", "modified by clone"); clone.branchAndCheckout("issuerBranch")// .resetHard(commonAncestor.getId())// .remove(TestData.line1).add().commit("remove line1")// .insert(TestData.poly4).add().commit("add poly 4")// .insert(TestData.point1_modified).add().commit("modify point1"); PRInitOp prinit = PRInitOp.builder()// .id(1)// .remoteURI(clone.getRepo().getLocation())// .remoteBranch("issuerBranch")// .targetBranch("master")// .title("first PR")// .description(null)// .build(); prinit.setContext(origin.getContext()); request = prinit.call(); assertNotNull(request); }
c2.addRemoteOverride(remote, repo1); TestData support = new TestData(repo1); support.loadDefaultData(); Map<Ref, List<Index>> indexesByBranch = createIndexes(repo1); System.err.println(indexesByBranch); .call(); List<SimpleFeature> points = IntStream.range(0, 1000).mapToObj(i -> copy(point1, "p" + i)) .collect(Collectors.toList()); List<SimpleFeature> lines = IntStream.range(0, 1000).mapToObj(i -> copy(line1, "l" + i)) .collect(Collectors.toList()); support.checkout("branch1")// .branchAndCheckout("newbranch")// .insert(points)// .add().commit("new points")// .insert(lines)// .add().commit("new lines")// .checkout("master")// .mergeNoFF("newbranch", "merge newbranch onto master");
origin.resumeTransaction(transactionId); assertEquals(request.getTargetBranch(), origin.getRef("HEAD").peel().localName()); 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"); Context context = clone.checkout("issuerBranch").getContext(); try { PullResult pres = context.command(PullOp.class).setIncludeIndexes(true) } catch (MergeConflictsException e) { assertEquals(3, e.getReport().getConflicts()); clone.insert(c1, c2, c3).add().commit("manual conflict fix"); origin.exitFromTransaction().checkout("master").insert(TestData.point2, TestData.point3) .add().commit("run ahead from target branch"); clone.checkout("issuerBranch").insert(TestData.line2, TestData.line3).add() .commit("run ahead from issuer branch"); assertTrue(result.getReport().isPresent()); Map<String, NodeRef> features = origin.getFeatureNodes("HEAD"); Set<String> expected = Sets.newHashSet("Points/Point.1", "Points/Point.2", "Points/Point.3", "Polygons/Polygon.1", "Polygons/Polygon.4", "Lines/Line.3", "Lines/Line.1",
public @Test void testUpdatePullRequest() { final RevCommit commonAncestor = Iterators.getLast(origin.log("master")); clone.branchAndCheckout("issuerBranch")// .resetHard(commonAncestor.getId())// .remove(TestData.line1).add().commit("remove line1")// .insert(TestData.poly4).add().commit("add poly 4")// .insert(TestData.point1_modified).add().commit("modify point1"); .remoteURI(clone.getRepo().getLocation())// .remoteBranch("issuerBranch")// .targetBranch("master")// prinit.setContext(origin.getRepo().context()); PR request = prinit.call(); assertNotNull(request); assertEquals("master", request.getTargetBranch()); assertNotNull(request.buildRemote()); assertEquals(clone.getRepo().getLocation(), request.getRemote()); assertEquals("first PR", request.getTitle()); assertNull(request.getDescription()); assertNotNull(request.getTransactionId()); origin.branch("targetbranch"); clone.checkout("master").branchAndCheckout("newbranch") .insert(TestData.point1_modified, TestData.poly1_modified1).add() .commit("on branch2");
@Given("^There are conflicts on the \"([^\"]*)\" repo in the (@[^\"]*) transaction$") public void There_are_conflict(String repoName, String txId) throws Throwable { Repository repo = context.getRepo(repoName); TestData data = new TestData(repo); GeogigTransaction transaction = repo.command(TransactionResolve.class) .setId(UUID.fromString(context.getVariable(txId))).call().get(); data.setTransaction(transaction); data.addAndCommit("Added Point.1", TestData.point1); data.branch("branch1"); data.addAndCommit("Modified Point.1", TestData.point1_modified); data.checkout("branch1"); data.remove(TestData.point1); data.add(); data.commit("Removed Point.1"); data.checkout("master"); try { data.mergeNoFF("branch1", "Merge branch1"); } catch (MergeConflictsException e) { // Expected } assertEquals(1, transaction.command(ConflictsCountOp.class).call().longValue()); // add the repo to the set so it can be closed openedRepos.add(repoName); }
public @Test void healthCheckBehindTargetBranch() { // fake PRPrepareOp fakeUpToDate(); origin.checkout("master").insert(TestData.line2).add().commit("l2").insert(TestData.line3) .add().commit("l3"); 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(2, status.getCommitsBehindTargetBranch()); assertEquals(0, status.getNumConflicts()); }
public @Test void testResolve() { origin.loadDefaultData()// .checkout("branch1")// .branchAndCheckout("issuerBranch")// .remove(TestData.line2).add().commit("remove line2"); PRInitOp prinit = PRInitOp.builder()// .id(1)// .remoteURI(origin.getRepo().getLocation())// .remoteBranch("issuerBranch")// .targetBranch("branch1")// .title("first PR")// .description(null)// .build(); prinit.setContext(origin.getRepo().context()); PR request = prinit.call(); Optional<PR> resolved = origin.getRepo().command(PRFindOp.class).setId(request.getId()) .call(); assertTrue(resolved.isPresent()); assertEquals(request, resolved.get()); assertFalse(origin.getRepo().command(PRFindOp.class).setId(1 + request.getId()).call() .isPresent()); } }
checkout("master")// .addAndCommit("point1, line1, poly1", point1, line1, poly1)// .branchAndCheckout("branch1")// .addAndCommit("point2, line2, poly2", point2, line2, poly2)// .checkout("master")// .branchAndCheckout("branch2")// .addAndCommit("point3, line3, poly3", point3, line3, poly3)// .checkout("master")// .mergeNoFF("branch1", "merge branch branch1 onto master")// .mergeNoFF("branch2", "merge branch branch2 onto master"); .newArrayList(getContext().command(LsTreeOp.class).setReference(Ref.HEAD).call()); checkState(3 == treeRefs.size()); for (NodeRef r : treeRefs) { RevTree tree = getContext().objectDatabase().getTree(r.getObjectId()); checkState(3 == tree.size());
@Given("^I have removed \"([^\"]*)\" on the \"([^\"]*)\" repo in the \"([^\"]*)\" transaction$") public void I_have_removed(String feature, String repoName, String txId) throws Exception { Repository repo = context.getRepo(repoName); TestData data = new TestData(repo); if (!txId.isEmpty()) { GeogigTransaction transaction = repo.command(TransactionResolve.class) .setId(UUID.fromString(context.getVariable(txId))).call().get(); data.setTransaction(transaction); } data.remove(parseFeature(feature)); data.add(); data.commit("Removed " + feature); // add the repo to the set so it can be closed openedRepos.add(repoName); }
@Given("^There are multiple branches on the \"([^\"]*)\" repo$") public void There_are_multiple_branches(String repoName) throws Throwable { Repository repo = context.getRepo(repoName); TestData data = new TestData(repo); data.addAndCommit("Added Point.1", TestData.point1); ObjectId master = repo.command(RefParse.class).setName("master").call().get().getObjectId(); repo.command(UpdateRef.class).setName(Ref.REMOTES_PREFIX + "origin/master_remote") .setNewValue(master).call(); data.branchAndCheckout("branch1"); data.addAndCommit("Added Point.2", TestData.point2); ObjectId branch1 = repo.command(RefParse.class).setName("branch1").call().get() .getObjectId(); repo.command(UpdateRef.class).setName(Ref.REMOTES_PREFIX + "origin/branch1_remote") .setNewValue(branch1).call(); data.branchAndCheckout("branch2"); data.addAndCommit("Added Line.1", TestData.line1); ObjectId branch2 = repo.command(RefParse.class).setName("branch2").call().get() .getObjectId(); repo.command(UpdateRef.class).setName(Ref.REMOTES_PREFIX + "origin/branch2_remote") .setNewValue(branch2).call(); data.checkout("master"); // add the repo to the set so it can be closed openedRepos.add(repoName); }
@Given("There is a repo with some data") public void setUpRepoWithData() throws Exception { Repository repo = context.createRepo("repo1").init("myuser", "the_user@testing.com") .getRepo(); TestData data = new TestData(repo); data.addAndCommit("Added Point.1", TestData.point1); }
Ref targetBranch = pr.resolveTargetBranch(origin.getRepo().context()); Ref remoteBranch = pr.resolveRemoteBranch(clone.getRepo()); Context liveContext = origin.getContext(); origin.checkout(pr.getTargetBranch()).resetHard(remoteBranch.getObjectId()); Context txContext = origin.resumeTransaction(pr.getTransactionId()) .checkout(pr.getTargetBranch()).resetHard(remoteBranch.getObjectId()) .getContext(); origin.exitFromTransaction(); assertEquals(targetBranch.getObjectId(), remoteBranch.getObjectId()); PRStatus status = origin.getRepo().command(PRHealthCheckOp.class).setId(request.getId()) .call(); assertNotNull(status);
@Given("^I have unstaged \"([^\"]*)\" on the \"([^\"]*)\" repo in the \"([^\"]*)\" transaction$") public TestData I_have_unstaged(String feature, String repoName, String txId) throws Throwable { Repository repo = context.getRepo(repoName); TestData data = new TestData(repo); if (!txId.isEmpty()) { GeogigTransaction transaction = repo.command(TransactionResolve.class) .setId(UUID.fromString(context.getVariable(txId))).call().get(); data.setTransaction(transaction); } data.insert(parseFeature(feature)); // add the repo to the set so it can be closed openedRepos.add(repoName); return data; }
@Given("^I have committed \"([^\"]*)\" on the \"([^\"]*)\" repo in the \"([^\"]*)\" transaction$") public void I_have_committed(String feature, String repoName, String txId) throws Throwable { TestData data = I_have_unstaged(feature, repoName, txId); data.add(); data.commit("Added " + feature); // add the repo to the set so it can be closed openedRepos.add(repoName); }