Use TestRepository's Git and Repository in acceptance tests
Avoid storing two references that have to be kept in sync, now that a Git is available directly from TestRepository. Use a git() convenience method to AbstractDaemonTest to shorten this. Similarly, add a repo() convenience method to get the Repository. Change-Id: I1ec8af8fead0876a2836f7972b5caf603847b25d
This commit is contained in:
@@ -64,6 +64,7 @@ import org.apache.http.HttpStatus;
|
|||||||
import org.eclipse.jgit.api.Git;
|
import org.eclipse.jgit.api.Git;
|
||||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||||
|
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
|
||||||
import org.eclipse.jgit.junit.TestRepository;
|
import org.eclipse.jgit.junit.TestRepository;
|
||||||
import org.eclipse.jgit.lib.Config;
|
import org.eclipse.jgit.lib.Config;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
@@ -127,8 +128,7 @@ public abstract class AbstractDaemonTest {
|
|||||||
@Inject
|
@Inject
|
||||||
protected @GerritServerConfig Config cfg;
|
protected @GerritServerConfig Config cfg;
|
||||||
|
|
||||||
protected Git git;
|
protected TestRepository<InMemoryRepository> testRepo;
|
||||||
protected TestRepository<?> testRepo;
|
|
||||||
protected GerritServer server;
|
protected GerritServer server;
|
||||||
protected TestAccount admin;
|
protected TestAccount admin;
|
||||||
protected TestAccount user;
|
protected TestAccount user;
|
||||||
@@ -211,7 +211,7 @@ public abstract class AbstractDaemonTest {
|
|||||||
project = new Project.NameKey(projectInput.name);
|
project = new Project.NameKey(projectInput.name);
|
||||||
createProject(projectInput);
|
createProject(projectInput);
|
||||||
|
|
||||||
setRepo(cloneProject(project, sshSession));
|
testRepo = cloneProject(project, sshSession);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProjectInput projectInput(Description description) {
|
private ProjectInput projectInput(Description description) {
|
||||||
@@ -237,9 +237,12 @@ public abstract class AbstractDaemonTest {
|
|||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setRepo(TestRepository<?> testRepo) throws Exception {
|
protected Git git() {
|
||||||
this.git = Git.wrap(testRepo.getRepository());
|
return testRepo.git();
|
||||||
this.testRepo = new TestRepository<>(git.getRepository());
|
}
|
||||||
|
|
||||||
|
protected InMemoryRepository repo() {
|
||||||
|
return testRepo.getRepository();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void createProject(String name) throws RestApiException {
|
protected void createProject(String name) throws RestApiException {
|
||||||
@@ -291,7 +294,7 @@ public abstract class AbstractDaemonTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected TestRepository<?>.CommitBuilder amendBuilder() throws Exception {
|
protected TestRepository<?>.CommitBuilder amendBuilder() throws Exception {
|
||||||
ObjectId head = testRepo.getRepository().getRef("HEAD").getObjectId();
|
ObjectId head = repo().getRef("HEAD").getObjectId();
|
||||||
TestRepository<?>.CommitBuilder b = testRepo.amendRef("HEAD");
|
TestRepository<?>.CommitBuilder b = testRepo.amendRef("HEAD");
|
||||||
Optional<String> id = GitUtil.getChangeId(testRepo, head);
|
Optional<String> id = GitUtil.getChangeId(testRepo, head);
|
||||||
// TestRepository behaves like "git commit --amend -m foo", which does not
|
// TestRepository behaves like "git commit --amend -m foo", which does not
|
||||||
|
@@ -24,7 +24,6 @@ import com.jcraft.jsch.JSchException;
|
|||||||
import com.jcraft.jsch.Session;
|
import com.jcraft.jsch.Session;
|
||||||
|
|
||||||
import org.eclipse.jgit.api.FetchCommand;
|
import org.eclipse.jgit.api.FetchCommand;
|
||||||
import org.eclipse.jgit.api.Git;
|
|
||||||
import org.eclipse.jgit.api.PushCommand;
|
import org.eclipse.jgit.api.PushCommand;
|
||||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||||
import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
|
import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
|
||||||
@@ -96,20 +95,21 @@ public class GitUtil {
|
|||||||
return cloneProject(project, sshSession.getUrl() + "/" + project.get());
|
return cloneProject(project, sshSession.getUrl() + "/" + project.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void fetch(Git git, String spec) throws GitAPIException {
|
public static void fetch(TestRepository<?> testRepo, String spec)
|
||||||
FetchCommand fetch = git.fetch();
|
throws GitAPIException {
|
||||||
|
FetchCommand fetch = testRepo.git().fetch();
|
||||||
fetch.setRefSpecs(new RefSpec(spec));
|
fetch.setRefSpecs(new RefSpec(spec));
|
||||||
fetch.call();
|
fetch.call();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PushResult pushHead(Git git, String ref, boolean pushTags)
|
public static PushResult pushHead(TestRepository<?> testRepo, String ref,
|
||||||
throws GitAPIException {
|
boolean pushTags) throws GitAPIException {
|
||||||
return pushHead(git, ref, pushTags, false);
|
return pushHead(testRepo, ref, pushTags, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PushResult pushHead(Git git, String ref, boolean pushTags,
|
public static PushResult pushHead(TestRepository<?> testRepo, String ref,
|
||||||
boolean force) throws GitAPIException {
|
boolean pushTags, boolean force) throws GitAPIException {
|
||||||
PushCommand pushCmd = git.push();
|
PushCommand pushCmd = testRepo.git().push();
|
||||||
pushCmd.setForce(force);
|
pushCmd.setForce(force);
|
||||||
pushCmd.setRefSpecs(new RefSpec("HEAD:" + ref));
|
pushCmd.setRefSpecs(new RefSpec("HEAD:" + ref));
|
||||||
if (pushTags) {
|
if (pushTags) {
|
||||||
|
@@ -36,7 +36,6 @@ import com.google.inject.Provider;
|
|||||||
import com.google.inject.assistedinject.Assisted;
|
import com.google.inject.assistedinject.Assisted;
|
||||||
import com.google.inject.assistedinject.AssistedInject;
|
import com.google.inject.assistedinject.AssistedInject;
|
||||||
|
|
||||||
import org.eclipse.jgit.api.Git;
|
|
||||||
import org.eclipse.jgit.api.TagCommand;
|
import org.eclipse.jgit.api.TagCommand;
|
||||||
import org.eclipse.jgit.junit.TestRepository;
|
import org.eclipse.jgit.junit.TestRepository;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
@@ -181,9 +180,8 @@ public class PushOneCommit {
|
|||||||
if (changeId == null) {
|
if (changeId == null) {
|
||||||
changeId = GitUtil.getChangeId(testRepo, c).get();
|
changeId = GitUtil.getChangeId(testRepo, c).get();
|
||||||
}
|
}
|
||||||
Git git = Git.wrap(testRepo.getRepository());
|
|
||||||
if (tag != null) {
|
if (tag != null) {
|
||||||
TagCommand tagCommand = git.tag().setName(tag.name);
|
TagCommand tagCommand = testRepo.git().tag().setName(tag.name);
|
||||||
if (tag instanceof AnnotatedTag) {
|
if (tag instanceof AnnotatedTag) {
|
||||||
AnnotatedTag annotatedTag = (AnnotatedTag)tag;
|
AnnotatedTag annotatedTag = (AnnotatedTag)tag;
|
||||||
tagCommand.setAnnotated(true)
|
tagCommand.setAnnotated(true)
|
||||||
@@ -194,7 +192,8 @@ public class PushOneCommit {
|
|||||||
}
|
}
|
||||||
tagCommand.call();
|
tagCommand.call();
|
||||||
}
|
}
|
||||||
return new Result(ref, pushHead(git, ref, tag != null, force), c, subject);
|
return new Result(ref, pushHead(testRepo, ref, tag != null, force), c,
|
||||||
|
subject);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTag(final Tag tag) {
|
public void setTag(final Tag tag) {
|
||||||
|
@@ -349,7 +349,7 @@ public class RevisionIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void mergeable() throws Exception {
|
public void mergeable() throws Exception {
|
||||||
ObjectId initial = git.getRepository().getRef(HEAD).getLeaf().getObjectId();
|
ObjectId initial = repo().getRef(HEAD).getLeaf().getObjectId();
|
||||||
|
|
||||||
PushOneCommit push1 =
|
PushOneCommit push1 =
|
||||||
pushFactory.create(db, admin.getIdent(), testRepo, PushOneCommit.SUBJECT,
|
pushFactory.create(db, admin.getIdent(), testRepo, PushOneCommit.SUBJECT,
|
||||||
@@ -360,7 +360,7 @@ public class RevisionIT extends AbstractDaemonTest {
|
|||||||
merge(r1);
|
merge(r1);
|
||||||
|
|
||||||
// Reset HEAD to initial so the new change is a merge conflict.
|
// Reset HEAD to initial so the new change is a merge conflict.
|
||||||
RefUpdate ru = git.getRepository().updateRef(HEAD);
|
RefUpdate ru = repo().updateRef(HEAD);
|
||||||
ru.setNewObjectId(initial);
|
ru.setNewObjectId(initial);
|
||||||
assertThat(ru.forceUpdate()).isEqualTo(RefUpdate.Result.FORCED);
|
assertThat(ru.forceUpdate()).isEqualTo(RefUpdate.Result.FORCED);
|
||||||
|
|
||||||
|
@@ -68,7 +68,7 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
|
|||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("unexpected protocol: " + p);
|
throw new IllegalArgumentException("unexpected protocol: " + p);
|
||||||
}
|
}
|
||||||
setRepo(cloneProject(project, url + "/" + project.get()));
|
testRepo = cloneProject(project, url + "/" + project.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -29,14 +29,14 @@ public class ForcePushIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void forcePushNotAllowed() throws Exception {
|
public void forcePushNotAllowed() throws Exception {
|
||||||
ObjectId initial = git.getRepository().getRef(HEAD).getLeaf().getObjectId();
|
ObjectId initial = repo().getRef(HEAD).getLeaf().getObjectId();
|
||||||
PushOneCommit push1 =
|
PushOneCommit push1 =
|
||||||
pushFactory.create(db, admin.getIdent(), testRepo, "change1", "a.txt", "content");
|
pushFactory.create(db, admin.getIdent(), testRepo, "change1", "a.txt", "content");
|
||||||
PushOneCommit.Result r1 = push1.to("refs/heads/master");
|
PushOneCommit.Result r1 = push1.to("refs/heads/master");
|
||||||
r1.assertOkStatus();
|
r1.assertOkStatus();
|
||||||
|
|
||||||
// Reset HEAD to initial so the new change is a non-fast forward
|
// Reset HEAD to initial so the new change is a non-fast forward
|
||||||
RefUpdate ru = git.getRepository().updateRef(HEAD);
|
RefUpdate ru = repo().updateRef(HEAD);
|
||||||
ru.setNewObjectId(initial);
|
ru.setNewObjectId(initial);
|
||||||
assertThat(ru.forceUpdate()).isEqualTo(RefUpdate.Result.FORCED);
|
assertThat(ru.forceUpdate()).isEqualTo(RefUpdate.Result.FORCED);
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ public class ForcePushIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void forcePushAllowed() throws Exception {
|
public void forcePushAllowed() throws Exception {
|
||||||
ObjectId initial = git.getRepository().getRef(HEAD).getLeaf().getObjectId();
|
ObjectId initial = repo().getRef(HEAD).getLeaf().getObjectId();
|
||||||
grant(Permission.PUSH, project, "refs/*", true);
|
grant(Permission.PUSH, project, "refs/*", true);
|
||||||
PushOneCommit push1 =
|
PushOneCommit push1 =
|
||||||
pushFactory.create(db, admin.getIdent(), testRepo, "change1", "a.txt", "content");
|
pushFactory.create(db, admin.getIdent(), testRepo, "change1", "a.txt", "content");
|
||||||
@@ -57,7 +57,7 @@ public class ForcePushIT extends AbstractDaemonTest {
|
|||||||
r1.assertOkStatus();
|
r1.assertOkStatus();
|
||||||
|
|
||||||
// Reset HEAD to initial so the new change is a non-fast forward
|
// Reset HEAD to initial so the new change is a non-fast forward
|
||||||
RefUpdate ru = git.getRepository().updateRef(HEAD);
|
RefUpdate ru = repo().updateRef(HEAD);
|
||||||
ru.setNewObjectId(initial);
|
ru.setNewObjectId(initial);
|
||||||
assertThat(ru.forceUpdate()).isEqualTo(RefUpdate.Result.FORCED);
|
assertThat(ru.forceUpdate()).isEqualTo(RefUpdate.Result.FORCED);
|
||||||
|
|
||||||
|
@@ -103,9 +103,8 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
public void submitOnPushToRefsMetaConfig() throws Exception {
|
public void submitOnPushToRefsMetaConfig() throws Exception {
|
||||||
grant(Permission.SUBMIT, project, "refs/for/refs/meta/config");
|
grant(Permission.SUBMIT, project, "refs/for/refs/meta/config");
|
||||||
|
|
||||||
git.fetch().setRefSpecs(new RefSpec("refs/meta/config:refs/meta/config")).call();
|
git().fetch().setRefSpecs(new RefSpec("refs/meta/config:refs/meta/config")).call();
|
||||||
ObjectId objectId = git.getRepository().getRef("refs/meta/config").getObjectId();
|
testRepo.reset("refs/meta/config");
|
||||||
testRepo.reset(objectId);
|
|
||||||
|
|
||||||
PushOneCommit.Result r = pushTo("refs/for/refs/meta/config%submit");
|
PushOneCommit.Result r = pushTo("refs/for/refs/meta/config%submit");
|
||||||
r.assertOkStatus();
|
r.assertOkStatus();
|
||||||
@@ -116,7 +115,7 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void submitOnPushMergeConflict() throws Exception {
|
public void submitOnPushMergeConflict() throws Exception {
|
||||||
ObjectId objectId = git.getRepository().getRef("HEAD").getObjectId();
|
ObjectId objectId = repo().getRef("HEAD").getObjectId();
|
||||||
push("refs/heads/master", "one change", "a.txt", "some content");
|
push("refs/heads/master", "one change", "a.txt", "some content");
|
||||||
testRepo.reset(objectId);
|
testRepo.reset(objectId);
|
||||||
|
|
||||||
@@ -131,7 +130,7 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
@Test
|
@Test
|
||||||
public void submitOnPushSuccessfulMerge() throws Exception {
|
public void submitOnPushSuccessfulMerge() throws Exception {
|
||||||
String master = "refs/heads/master";
|
String master = "refs/heads/master";
|
||||||
ObjectId objectId = git.getRepository().getRef("HEAD").getObjectId();
|
ObjectId objectId = repo().getRef("HEAD").getObjectId();
|
||||||
push(master, "one change", "a.txt", "some content");
|
push(master, "one change", "a.txt", "some content");
|
||||||
testRepo.reset(objectId);
|
testRepo.reset(objectId);
|
||||||
|
|
||||||
@@ -196,7 +195,7 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
push("refs/for/master", PushOneCommit.SUBJECT, "a.txt", "some content");
|
push("refs/for/master", PushOneCommit.SUBJECT, "a.txt", "some content");
|
||||||
r.assertOkStatus();
|
r.assertOkStatus();
|
||||||
|
|
||||||
git.push()
|
git().push()
|
||||||
.setRefSpecs(new RefSpec(r.getCommitId().name() + ":refs/heads/master"))
|
.setRefSpecs(new RefSpec(r.getCommitId().name() + ":refs/heads/master"))
|
||||||
.call();
|
.call();
|
||||||
assertCommit(project, "refs/heads/master");
|
assertCommit(project, "refs/heads/master");
|
||||||
|
@@ -57,8 +57,8 @@ import com.google.gwtorm.server.OrmException;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
import org.eclipse.jgit.api.Git;
|
|
||||||
import org.eclipse.jgit.diff.DiffFormatter;
|
import org.eclipse.jgit.diff.DiffFormatter;
|
||||||
|
import org.eclipse.jgit.junit.TestRepository;
|
||||||
import org.eclipse.jgit.lib.Config;
|
import org.eclipse.jgit.lib.Config;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
import org.eclipse.jgit.lib.Ref;
|
import org.eclipse.jgit.lib.Ref;
|
||||||
@@ -279,17 +279,17 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
|
|||||||
assertThat(submitter.getAccountId()).isEqualTo(admin.getId());
|
assertThat(submitter.getAccountId()).isEqualTo(admin.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void assertCherryPick(Git localGit, boolean contentMerge)
|
protected void assertCherryPick(TestRepository<?> testRepo,
|
||||||
throws IOException {
|
boolean contentMerge) throws IOException {
|
||||||
assertRebase(localGit, contentMerge);
|
assertRebase(testRepo, contentMerge);
|
||||||
RevCommit remoteHead = getRemoteHead();
|
RevCommit remoteHead = getRemoteHead();
|
||||||
assertThat(remoteHead.getFooterLines("Reviewed-On")).isNotEmpty();
|
assertThat(remoteHead.getFooterLines("Reviewed-On")).isNotEmpty();
|
||||||
assertThat(remoteHead.getFooterLines("Reviewed-By")).isNotEmpty();
|
assertThat(remoteHead.getFooterLines("Reviewed-By")).isNotEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void assertRebase(Git localGit, boolean contentMerge)
|
protected void assertRebase(TestRepository<?> testRepo, boolean contentMerge)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
Repository repo = localGit.getRepository();
|
Repository repo = testRepo.getRepository();
|
||||||
RevCommit localHead = getHead(repo);
|
RevCommit localHead = getHead(repo);
|
||||||
RevCommit remoteHead = getRemoteHead();
|
RevCommit remoteHead = getRemoteHead();
|
||||||
assert_().withFailureMessage(
|
assert_().withFailureMessage(
|
||||||
|
@@ -53,7 +53,7 @@ public class ChangeOwnerIT extends AbstractDaemonTest {
|
|||||||
SshSession sshSession = new SshSession(server, user);
|
SshSession sshSession = new SshSession(server, user);
|
||||||
initSsh(user);
|
initSsh(user);
|
||||||
sshSession.open();
|
sshSession.open();
|
||||||
setRepo(cloneProject(project, sshSession));
|
testRepo = cloneProject(project, sshSession);
|
||||||
sshSession.close();
|
sshSession.close();
|
||||||
user2 = accounts.user2();
|
user2 = accounts.user2();
|
||||||
sessionDev = new RestSession(server, user2);
|
sessionDev = new RestSession(server, user2);
|
||||||
|
@@ -41,7 +41,7 @@ public class SubmitByCherryPickIT extends AbstractSubmit {
|
|||||||
public void submitWithCherryPickIfFastForwardPossible() throws Exception {
|
public void submitWithCherryPickIfFastForwardPossible() throws Exception {
|
||||||
PushOneCommit.Result change = createChange();
|
PushOneCommit.Result change = createChange();
|
||||||
submit(change.getChangeId());
|
submit(change.getChangeId());
|
||||||
assertCherryPick(git, false);
|
assertCherryPick(testRepo, false);
|
||||||
assertThat(getRemoteHead().getParent(0))
|
assertThat(getRemoteHead().getParent(0))
|
||||||
.isEqualTo(change.getCommit().getParent(0));
|
.isEqualTo(change.getCommit().getParent(0));
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ public class SubmitByCherryPickIT extends AbstractSubmit {
|
|||||||
PushOneCommit.Result change2 =
|
PushOneCommit.Result change2 =
|
||||||
createChange("Change 2", "b.txt", "other content");
|
createChange("Change 2", "b.txt", "other content");
|
||||||
submit(change2.getChangeId());
|
submit(change2.getChangeId());
|
||||||
assertCherryPick(git, false);
|
assertCherryPick(testRepo, false);
|
||||||
RevCommit newHead = getRemoteHead();
|
RevCommit newHead = getRemoteHead();
|
||||||
assertThat(newHead.getParentCount()).isEqualTo(1);
|
assertThat(newHead.getParentCount()).isEqualTo(1);
|
||||||
assertThat(newHead.getParent(0)).isEqualTo(oldHead);
|
assertThat(newHead.getParent(0)).isEqualTo(oldHead);
|
||||||
@@ -82,7 +82,7 @@ public class SubmitByCherryPickIT extends AbstractSubmit {
|
|||||||
PushOneCommit.Result change3 =
|
PushOneCommit.Result change3 =
|
||||||
createChange("Change 3", "a.txt", "bbb\nccc\n");
|
createChange("Change 3", "a.txt", "bbb\nccc\n");
|
||||||
submit(change3.getChangeId());
|
submit(change3.getChangeId());
|
||||||
assertCherryPick(git, true);
|
assertCherryPick(testRepo, true);
|
||||||
RevCommit newHead = getRemoteHead();
|
RevCommit newHead = getRemoteHead();
|
||||||
assertThat(newHead.getParent(0)).isEqualTo(oldHead);
|
assertThat(newHead.getParent(0)).isEqualTo(oldHead);
|
||||||
assertApproved(change3.getChangeId());
|
assertApproved(change3.getChangeId());
|
||||||
@@ -122,7 +122,7 @@ public class SubmitByCherryPickIT extends AbstractSubmit {
|
|||||||
PushOneCommit.Result change3 =
|
PushOneCommit.Result change3 =
|
||||||
createChange("Change 3", "c.txt", "different content");
|
createChange("Change 3", "c.txt", "different content");
|
||||||
submit(change3.getChangeId());
|
submit(change3.getChangeId());
|
||||||
assertCherryPick(git, false);
|
assertCherryPick(testRepo, false);
|
||||||
RevCommit newHead = getRemoteHead();
|
RevCommit newHead = getRemoteHead();
|
||||||
assertThat(newHead.getParent(0)).isEqualTo(oldHead);
|
assertThat(newHead.getParent(0)).isEqualTo(oldHead);
|
||||||
assertApproved(change3.getChangeId());
|
assertApproved(change3.getChangeId());
|
||||||
|
@@ -58,7 +58,7 @@ public class SubmitByRebaseIfNecessaryIT extends AbstractSubmit {
|
|||||||
PushOneCommit.Result change2 =
|
PushOneCommit.Result change2 =
|
||||||
createChange("Change 2", "b.txt", "other content");
|
createChange("Change 2", "b.txt", "other content");
|
||||||
submit(change2.getChangeId());
|
submit(change2.getChangeId());
|
||||||
assertRebase(git, false);
|
assertRebase(testRepo, false);
|
||||||
RevCommit head = getRemoteHead();
|
RevCommit head = getRemoteHead();
|
||||||
assertThat(head.getParent(0)).isEqualTo(oldHead);
|
assertThat(head.getParent(0)).isEqualTo(oldHead);
|
||||||
assertApproved(change2.getChangeId());
|
assertApproved(change2.getChangeId());
|
||||||
@@ -82,7 +82,7 @@ public class SubmitByRebaseIfNecessaryIT extends AbstractSubmit {
|
|||||||
PushOneCommit.Result change3 =
|
PushOneCommit.Result change3 =
|
||||||
createChange("Change 3", "a.txt", "bbb\nccc\n");
|
createChange("Change 3", "a.txt", "bbb\nccc\n");
|
||||||
submit(change3.getChangeId());
|
submit(change3.getChangeId());
|
||||||
assertRebase(git, true);
|
assertRebase(testRepo, true);
|
||||||
RevCommit head = getRemoteHead();
|
RevCommit head = getRemoteHead();
|
||||||
assertThat(head.getParent(0)).isEqualTo(oldHead);
|
assertThat(head.getParent(0)).isEqualTo(oldHead);
|
||||||
assertApproved(change3.getChangeId());
|
assertApproved(change3.getChangeId());
|
||||||
|
@@ -45,7 +45,7 @@ public class BanCommitIT extends AbstractDaemonTest {
|
|||||||
assertThat(info.alreadyBanned).isNull();
|
assertThat(info.alreadyBanned).isNull();
|
||||||
assertThat(info.ignored).isNull();
|
assertThat(info.ignored).isNull();
|
||||||
|
|
||||||
PushResult pushResult = pushHead(git, "refs/heads/master", false);
|
PushResult pushResult = pushHead(testRepo, "refs/heads/master", false);
|
||||||
assertThat(pushResult.getRemoteUpdate("refs/heads/master").getMessage())
|
assertThat(pushResult.getRemoteUpdate("refs/heads/master").getMessage())
|
||||||
.startsWith("contains banned commit");
|
.startsWith("contains banned commit");
|
||||||
}
|
}
|
||||||
|
@@ -61,9 +61,9 @@ public class ListBranchesIT extends AbstractDaemonTest {
|
|||||||
@Test
|
@Test
|
||||||
public void listBranches() throws Exception {
|
public void listBranches() throws Exception {
|
||||||
pushTo("refs/heads/master");
|
pushTo("refs/heads/master");
|
||||||
String headCommit = git.getRepository().getRef("HEAD").getTarget().getObjectId().getName();
|
String headCommit = repo().getRef("HEAD").getTarget().getObjectId().getName();
|
||||||
pushTo("refs/heads/dev");
|
pushTo("refs/heads/dev");
|
||||||
String devCommit = git.getRepository().getRef("HEAD").getTarget().getObjectId().getName();
|
String devCommit = repo().getRef("HEAD").getTarget().getObjectId().getName();
|
||||||
RestResponse r = adminSession.get("/projects/" + project.get() + "/branches");
|
RestResponse r = adminSession.get("/projects/" + project.get() + "/branches");
|
||||||
List<BranchInfo> expected = Lists.asList(
|
List<BranchInfo> expected = Lists.asList(
|
||||||
new BranchInfo("refs/meta/config", null, false),
|
new BranchInfo("refs/meta/config", null, false),
|
||||||
@@ -86,7 +86,7 @@ public class ListBranchesIT extends AbstractDaemonTest {
|
|||||||
public void listBranchesSomeHidden() throws Exception {
|
public void listBranchesSomeHidden() throws Exception {
|
||||||
blockRead(project, "refs/heads/dev");
|
blockRead(project, "refs/heads/dev");
|
||||||
pushTo("refs/heads/master");
|
pushTo("refs/heads/master");
|
||||||
String headCommit = git.getRepository().getRef("HEAD").getTarget().getObjectId().getName();
|
String headCommit = repo().getRef("HEAD").getTarget().getObjectId().getName();
|
||||||
pushTo("refs/heads/dev");
|
pushTo("refs/heads/dev");
|
||||||
RestResponse r = userSession.get("/projects/" + project.get() + "/branches");
|
RestResponse r = userSession.get("/projects/" + project.get() + "/branches");
|
||||||
// refs/meta/config is hidden since user is no project owner
|
// refs/meta/config is hidden since user is no project owner
|
||||||
@@ -103,7 +103,7 @@ public class ListBranchesIT extends AbstractDaemonTest {
|
|||||||
blockRead(project, "refs/heads/master");
|
blockRead(project, "refs/heads/master");
|
||||||
pushTo("refs/heads/master");
|
pushTo("refs/heads/master");
|
||||||
pushTo("refs/heads/dev");
|
pushTo("refs/heads/dev");
|
||||||
String devCommit = git.getRepository().getRef("HEAD").getTarget().getObjectId().getName();
|
String devCommit = repo().getRef("HEAD").getTarget().getObjectId().getName();
|
||||||
RestResponse r = userSession.get("/projects/" + project.get() + "/branches");
|
RestResponse r = userSession.get("/projects/" + project.get() + "/branches");
|
||||||
// refs/meta/config is hidden since user is no project owner
|
// refs/meta/config is hidden since user is no project owner
|
||||||
assertBranches(Collections.singletonList(new BranchInfo("refs/heads/dev",
|
assertBranches(Collections.singletonList(new BranchInfo("refs/heads/dev",
|
||||||
|
@@ -23,7 +23,6 @@ import com.google.gerrit.acceptance.PushOneCommit;
|
|||||||
import com.google.gerrit.reviewdb.client.RefNames;
|
import com.google.gerrit.reviewdb.client.RefNames;
|
||||||
import com.google.gerrit.server.project.ProjectState;
|
import com.google.gerrit.server.project.ProjectState;
|
||||||
|
|
||||||
import org.eclipse.jgit.api.Git;
|
|
||||||
import org.eclipse.jgit.junit.TestRepository;
|
import org.eclipse.jgit.junit.TestRepository;
|
||||||
import org.eclipse.jgit.lib.Config;
|
import org.eclipse.jgit.lib.Config;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -32,7 +31,7 @@ import org.junit.Test;
|
|||||||
public class ProjectLevelConfigIT extends AbstractDaemonTest {
|
public class ProjectLevelConfigIT extends AbstractDaemonTest {
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
fetch(git, RefNames.REFS_CONFIG + ":refs/heads/config");
|
fetch(testRepo, RefNames.REFS_CONFIG + ":refs/heads/config");
|
||||||
testRepo.reset("refs/heads/config");
|
testRepo.reset("refs/heads/config");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,8 +68,7 @@ public class ProjectLevelConfigIT extends AbstractDaemonTest {
|
|||||||
parentCfg.setString("s2", "ss", "k4", "parentValue4");
|
parentCfg.setString("s2", "ss", "k4", "parentValue4");
|
||||||
|
|
||||||
TestRepository<?> parentTestRepo = cloneProject(allProjects, sshSession);
|
TestRepository<?> parentTestRepo = cloneProject(allProjects, sshSession);
|
||||||
Git parentGit = Git.wrap(parentTestRepo.getRepository());
|
fetch(parentTestRepo, RefNames.REFS_CONFIG + ":refs/heads/config");
|
||||||
fetch(parentGit, RefNames.REFS_CONFIG + ":refs/heads/config");
|
|
||||||
parentTestRepo.reset("refs/heads/config");
|
parentTestRepo.reset("refs/heads/config");
|
||||||
PushOneCommit push =
|
PushOneCommit push =
|
||||||
pushFactory.create(db, admin.getIdent(), parentTestRepo, "Create Project Level Config",
|
pushFactory.create(db, admin.getIdent(), parentTestRepo, "Create Project Level Config",
|
||||||
|
@@ -67,7 +67,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
.message("subject: 2")
|
.message("subject: 2")
|
||||||
.create();
|
.create();
|
||||||
String id2 = getChangeId(testRepo, c2).get();
|
String id2 = getChangeId(testRepo, c2).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
for (RevCommit c : ImmutableList.of(c2, c1)) {
|
for (RevCommit c : ImmutableList.of(c2, c1)) {
|
||||||
List<ChangeAndCommit> related = getRelated(getPatchSetId(c));
|
List<ChangeAndCommit> related = getRelated(getPatchSetId(c));
|
||||||
@@ -93,7 +93,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
.message("subject: 2")
|
.message("subject: 2")
|
||||||
.create();
|
.create();
|
||||||
String id2 = getChangeId(testRepo, c2).get();
|
String id2 = getChangeId(testRepo, c2).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
PatchSet.Id c1ps1 = getPatchSetId(c1);
|
PatchSet.Id c1ps1 = getPatchSetId(c1);
|
||||||
PatchSet.Id c2ps1 = getPatchSetId(c2);
|
PatchSet.Id c2ps1 = getPatchSetId(c2);
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
testRepo.reset("HEAD~2");
|
testRepo.reset("HEAD~2");
|
||||||
testRepo.cherryPick(c2);
|
testRepo.cherryPick(c2);
|
||||||
testRepo.cherryPick(c1);
|
testRepo.cherryPick(c1);
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
PatchSet.Id c1ps2 = getPatchSetId(c1);
|
PatchSet.Id c1ps2 = getPatchSetId(c1);
|
||||||
PatchSet.Id c2ps2 = getPatchSetId(c2);
|
PatchSet.Id c2ps2 = getPatchSetId(c2);
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getRelatedReorderAndExtend() throws Exception {
|
public void getRelatedReorderAndExtend() throws Exception {
|
||||||
// Create two commits and push.
|
// Create two commits and push.
|
||||||
ObjectId initial = testRepo.getRepository().getRef("HEAD").getObjectId();
|
ObjectId initial = repo().getRef("HEAD").getObjectId();
|
||||||
RevCommit c1 = commitBuilder()
|
RevCommit c1 = commitBuilder()
|
||||||
.add("a.txt", "1")
|
.add("a.txt", "1")
|
||||||
.message("subject: 1")
|
.message("subject: 1")
|
||||||
@@ -138,7 +138,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
.message("subject: 2")
|
.message("subject: 2")
|
||||||
.create();
|
.create();
|
||||||
String id2 = getChangeId(testRepo, c2).get();
|
String id2 = getChangeId(testRepo, c2).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
PatchSet.Id c1ps1 = getPatchSetId(c1);
|
PatchSet.Id c1ps1 = getPatchSetId(c1);
|
||||||
PatchSet.Id c2ps1 = getPatchSetId(c2);
|
PatchSet.Id c2ps1 = getPatchSetId(c2);
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
.message("subject: 3")
|
.message("subject: 3")
|
||||||
.create();
|
.create();
|
||||||
String id3 = getChangeId(testRepo, c3).get();
|
String id3 = getChangeId(testRepo, c3).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
PatchSet.Id c1ps2 = getPatchSetId(c1);
|
PatchSet.Id c1ps2 = getPatchSetId(c1);
|
||||||
PatchSet.Id c2ps2 = getPatchSetId(c2);
|
PatchSet.Id c2ps2 = getPatchSetId(c2);
|
||||||
PatchSet.Id c3ps1 = getPatchSetId(c3);
|
PatchSet.Id c3ps1 = getPatchSetId(c3);
|
||||||
@@ -197,7 +197,7 @@ public class GetRelatedIT extends AbstractDaemonTest {
|
|||||||
.message("subject: 3")
|
.message("subject: 3")
|
||||||
.create();
|
.create();
|
||||||
String id3 = getChangeId(testRepo, c3).get();
|
String id3 = getChangeId(testRepo, c3).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
Change ch2 = getChange(c2).change();
|
Change ch2 = getChange(c2).change();
|
||||||
editModifier.createEdit(ch2, getPatchSet(ch2));
|
editModifier.createEdit(ch2, getPatchSet(ch2));
|
||||||
|
@@ -55,7 +55,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.add(FILE_D, "4")
|
.add(FILE_D, "4")
|
||||||
.message(SUBJECT_1)
|
.message(SUBJECT_1)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/heads/master", false);
|
pushHead(testRepo, "refs/heads/master", false);
|
||||||
|
|
||||||
// Change 1, 1 (+FILE_A, -FILE_D)
|
// Change 1, 1 (+FILE_A, -FILE_D)
|
||||||
RevCommit c = commitBuilder()
|
RevCommit c = commitBuilder()
|
||||||
@@ -65,7 +65,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.insertChangeId()
|
.insertChangeId()
|
||||||
.create();
|
.create();
|
||||||
String id = getChangeId(testRepo, c).get();
|
String id = getChangeId(testRepo, c).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Compare Change 1,1 with Base (+FILE_A, -FILE_D)
|
// Compare Change 1,1 with Base (+FILE_A, -FILE_D)
|
||||||
List<PatchListEntry> entries = getCurrentPatches(id);
|
List<PatchListEntry> entries = getCurrentPatches(id);
|
||||||
@@ -78,7 +78,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
c = amendBuilder()
|
c = amendBuilder()
|
||||||
.add(FILE_B, "2")
|
.add(FILE_B, "2")
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
entries = getCurrentPatches(id);
|
entries = getCurrentPatches(id);
|
||||||
|
|
||||||
// Compare Change 1,2 with Base (+FILE_A, +FILE_B, -FILE_D)
|
// Compare Change 1,2 with Base (+FILE_A, +FILE_B, -FILE_D)
|
||||||
@@ -95,7 +95,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.add(FILE_D, "4")
|
.add(FILE_D, "4")
|
||||||
.message(SUBJECT_1)
|
.message(SUBJECT_1)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/heads/master", false);
|
pushHead(testRepo, "refs/heads/master", false);
|
||||||
|
|
||||||
// Change 1,1 (+FILE_A, -FILE_D)
|
// Change 1,1 (+FILE_A, -FILE_D)
|
||||||
RevCommit c = commitBuilder()
|
RevCommit c = commitBuilder()
|
||||||
@@ -104,7 +104,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.message(SUBJECT_2)
|
.message(SUBJECT_2)
|
||||||
.create();
|
.create();
|
||||||
String id = getChangeId(testRepo, c).get();
|
String id = getChangeId(testRepo, c).get();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
List<PatchListEntry> entries = getCurrentPatches(id);
|
List<PatchListEntry> entries = getCurrentPatches(id);
|
||||||
assertThat(entries).hasSize(3);
|
assertThat(entries).hasSize(3);
|
||||||
assertAdded(Patch.COMMIT_MSG, entries.get(0));
|
assertAdded(Patch.COMMIT_MSG, entries.get(0));
|
||||||
@@ -117,11 +117,11 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.add(FILE_B, "2")
|
.add(FILE_B, "2")
|
||||||
.message(SUBJECT_3)
|
.message(SUBJECT_3)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Change 1,2 (+FILE_A, -FILE_D))
|
// Change 1,2 (+FILE_A, -FILE_D))
|
||||||
testRepo.cherryPick(c);
|
testRepo.cherryPick(c);
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Compare Change 1,2 with Base (+FILE_A, -FILE_D))
|
// Compare Change 1,2 with Base (+FILE_A, -FILE_D))
|
||||||
entries = getCurrentPatches(id);
|
entries = getCurrentPatches(id);
|
||||||
@@ -137,7 +137,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.add(FILE_D, "4")
|
.add(FILE_D, "4")
|
||||||
.message(SUBJECT_1)
|
.message(SUBJECT_1)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/heads/master", false);
|
pushHead(testRepo, "refs/heads/master", false);
|
||||||
|
|
||||||
// Change 1,1 (+FILE_A, +FILE_C, -FILE_D)
|
// Change 1,1 (+FILE_A, +FILE_C, -FILE_D)
|
||||||
RevCommit a = commitBuilder()
|
RevCommit a = commitBuilder()
|
||||||
@@ -146,14 +146,14 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.rm(FILE_D)
|
.rm(FILE_D)
|
||||||
.message(SUBJECT_2)
|
.message(SUBJECT_2)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Change 1,2 (+FILE_A, +FILE_B, -FILE_D)
|
// Change 1,2 (+FILE_A, +FILE_B, -FILE_D)
|
||||||
RevCommit b = amendBuilder()
|
RevCommit b = amendBuilder()
|
||||||
.add(FILE_B, "2")
|
.add(FILE_B, "2")
|
||||||
.rm(FILE_C)
|
.rm(FILE_C)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Compare Change 1,1 with Change 1,2 (+FILE_B)
|
// Compare Change 1,1 with Change 1,2 (+FILE_B)
|
||||||
List<PatchListEntry> entries = getPatches(a, b);
|
List<PatchListEntry> entries = getPatches(a, b);
|
||||||
@@ -168,7 +168,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.add(FILE_D, "4")
|
.add(FILE_D, "4")
|
||||||
.message(SUBJECT_1)
|
.message(SUBJECT_1)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/heads/master", false);
|
pushHead(testRepo, "refs/heads/master", false);
|
||||||
|
|
||||||
// Change 1,1 (+FILE_A, -FILE_D)
|
// Change 1,1 (+FILE_A, -FILE_D)
|
||||||
RevCommit a = commitBuilder()
|
RevCommit a = commitBuilder()
|
||||||
@@ -176,7 +176,7 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.rm(FILE_D)
|
.rm(FILE_D)
|
||||||
.message(SUBJECT_2)
|
.message(SUBJECT_2)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Change 2,1 (+FILE_B)
|
// Change 2,1 (+FILE_B)
|
||||||
testRepo.reset("HEAD~1");
|
testRepo.reset("HEAD~1");
|
||||||
@@ -184,14 +184,14 @@ public class PatchListCacheIT extends AbstractDaemonTest {
|
|||||||
.add(FILE_B, "2")
|
.add(FILE_B, "2")
|
||||||
.message(SUBJECT_3)
|
.message(SUBJECT_3)
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Change 1,2 (+FILE_A, +FILE_C, -FILE_D)
|
// Change 1,2 (+FILE_A, +FILE_C, -FILE_D)
|
||||||
testRepo.cherryPick(a);
|
testRepo.cherryPick(a);
|
||||||
RevCommit b = amendBuilder()
|
RevCommit b = amendBuilder()
|
||||||
.add(FILE_C, "2")
|
.add(FILE_C, "2")
|
||||||
.create();
|
.create();
|
||||||
pushHead(git, "refs/for/master", false);
|
pushHead(testRepo, "refs/for/master", false);
|
||||||
|
|
||||||
// Compare Change 1,1 with Change 1,2 (+FILE_C)
|
// Compare Change 1,1 with Change 1,2 (+FILE_C)
|
||||||
List<PatchListEntry> entries = getPatches(a, b);
|
List<PatchListEntry> entries = getPatches(a, b);
|
||||||
|
@@ -42,7 +42,7 @@ public class BanCommitIT extends AbstractDaemonTest {
|
|||||||
.that(sshSession.hasError()).isFalse();
|
.that(sshSession.hasError()).isFalse();
|
||||||
assertThat(response.toLowerCase(Locale.US)).doesNotContain("error");
|
assertThat(response.toLowerCase(Locale.US)).doesNotContain("error");
|
||||||
|
|
||||||
PushResult pushResult = pushHead(git, "refs/heads/master", false);
|
PushResult pushResult = pushHead(testRepo, "refs/heads/master", false);
|
||||||
assertThat(pushResult.getRemoteUpdate("refs/heads/master").getMessage())
|
assertThat(pushResult.getRemoteUpdate("refs/heads/master").getMessage())
|
||||||
.startsWith("contains banned commit");
|
.startsWith("contains banned commit");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user