Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.egit.ui.test/src')
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/common/StagingViewTester.java10
-rw-r--r--org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/stagview/StagingViewTest.java228
2 files changed, 235 insertions, 3 deletions
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/common/StagingViewTester.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/common/StagingViewTester.java
index a16b7d1b66..232f7c79a5 100644
--- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/common/StagingViewTester.java
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/common/StagingViewTester.java
@@ -59,6 +59,16 @@ public class StagingViewTester {
.setText(committer);
}
+ public String getAuthor() {
+ return stagingView.bot().textWithLabel(UIText.StagingView_Author)
+ .getText();
+ }
+
+ public String getCommitter() {
+ return stagingView.bot().textWithLabel(UIText.StagingView_Committer)
+ .getText();
+ }
+
public void setCommitMessage(String message) {
stagingView.bot().styledTextWithLabel(UIText.StagingView_CommitMessage)
.setText(message);
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/stagview/StagingViewTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/stagview/StagingViewTest.java
index fdc602a4d7..9c92877b16 100644
--- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/stagview/StagingViewTest.java
+++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/stagview/StagingViewTest.java
@@ -13,6 +13,7 @@ package org.eclipse.egit.ui.test.stagview;
import static org.hamcrest.CoreMatchers.startsWith;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -20,9 +21,13 @@ import org.eclipse.egit.ui.common.StagingViewTester;
import org.eclipse.egit.ui.test.CommitMessageUtil;
import org.eclipse.egit.ui.test.TestUtil;
import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.RepositoryState;
+import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.util.RawParseUtils;
import org.junit.Test;
public class StagingViewTest extends AbstractStagingViewTestCase {
@@ -102,14 +107,22 @@ public class StagingViewTest extends AbstractStagingViewTestCase {
.getShortMessage());
}
- private void commitOneFileChange(String fileContent) throws Exception {
+ private StagingViewTester commitOneFileChange(String fileContent)
+ throws Exception {
+ return commitOneFileChange(fileContent, TestUtil.TESTAUTHOR,
+ TestUtil.TESTCOMMITTER);
+ }
+
+ private StagingViewTester commitOneFileChange(String fileContent,
+ String author,
+ String committer) throws Exception {
setContent(fileContent);
StagingViewTester stagingViewTester = StagingViewTester
.openStagingView();
stagingViewTester.stageFile(FILE1_PATH);
- stagingViewTester.setAuthor(TestUtil.TESTAUTHOR);
- stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setAuthor(author);
+ stagingViewTester.setCommitter(committer);
stagingViewTester.setCommitMessage("Commit message");
stagingViewTester.setInsertChangeId(true);
stagingViewTester.setSignedOff(true);
@@ -117,5 +130,214 @@ public class StagingViewTest extends AbstractStagingViewTestCase {
assertTrue(commitMessage.indexOf("Change-Id") > 0);
assertTrue(commitMessage.indexOf("Signed-off-by") > 0);
stagingViewTester.commit();
+ return stagingViewTester;
+ }
+
+ @Test
+ public void testCommitMessageCommitterChangeSignOff() throws Exception {
+ setContent("something");
+
+ StagingViewTester stagingViewTester = StagingViewTester
+ .openStagingView();
+ stagingViewTester.setAuthor(TestUtil.TESTAUTHOR);
+ stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitMessage("Commit message");
+ stagingViewTester.setSignedOff(true);
+ String commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Should have a signed-off footer",
+ commitMessage.indexOf("Signed-off-by") > 0);
+ // Edit the committer field: pretend the user typed a backspace,
+ // deleting the closing ">"
+ stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER.substring(0,
+ TestUtil.TESTCOMMITTER.length() - 1));
+ // Now the committer field has an invalid value.
+ assertTrue("Sign off should still be enabled",
+ stagingViewTester.getSignedOff());
+ assertEquals("Commit message should be unchanged", commitMessage,
+ stagingViewTester.getCommitMessage());
+ // Now change it back to some valid value.
+ stagingViewTester.setCommitter("Somebody <some.body@some.where.org>");
+ assertEquals("Commit message should be updated",
+ commitMessage.replace(TestUtil.TESTCOMMITTER,
+ "Somebody <some.body@some.where.org>"),
+ stagingViewTester.getCommitMessage());
+ assertTrue("Sign off should still be enabled",
+ stagingViewTester.getSignedOff());
+ }
+
+ @Test
+ public void testCommitMessageConfigChange() throws Exception {
+ setContent("something");
+
+ StagingViewTester stagingViewTester = StagingViewTester
+ .openStagingView();
+ stagingViewTester.setAuthor(TestUtil.TESTAUTHOR);
+ stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitMessage("Commit message");
+ stagingViewTester.setSignedOff(true);
+ String commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Should have a signed-off footer",
+ commitMessage.indexOf("Signed-off-by") > 0);
+ StoredConfig cfg = repository.getConfig();
+ cfg.load();
+ cfg.setString(ConfigConstants.CONFIG_USER_SECTION, null,
+ ConfigConstants.CONFIG_KEY_NAME, "Some One");
+ cfg.save();
+ TestUtil.processUIEvents();
+ String expectedCommitter = "Some One <" + TestUtil.TESTCOMMITTER_EMAIL
+ + '>';
+ assertEquals("Author should be unchanged", TestUtil.TESTAUTHOR,
+ stagingViewTester.getAuthor());
+ assertEquals("Committer should be changed", expectedCommitter,
+ stagingViewTester.getCommitter());
+ assertEquals("Commit message should be updated",
+ commitMessage.replace(TestUtil.TESTCOMMITTER,
+ expectedCommitter),
+ stagingViewTester.getCommitMessage());
+ assertTrue("Sign-off should be enabled",
+ stagingViewTester.getSignedOff());
+ }
+
+ @Test
+ public void testCommitMessageConfigChangeNoSignOff() throws Exception {
+ setContent("something");
+
+ StagingViewTester stagingViewTester = StagingViewTester
+ .openStagingView();
+ stagingViewTester.setAuthor(TestUtil.TESTAUTHOR);
+ stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitMessage("Commit message");
+ stagingViewTester.setSignedOff(true);
+ String commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Should have a signed-off footer",
+ commitMessage.indexOf("Signed-off-by") > 0);
+ stagingViewTester.setSignedOff(false);
+ commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Should not have a signed-off footer",
+ commitMessage.indexOf("Signed-off-by") < 0);
+ StoredConfig cfg = repository.getConfig();
+ cfg.load();
+ cfg.setString(ConfigConstants.CONFIG_USER_SECTION, null,
+ ConfigConstants.CONFIG_KEY_NAME, "Some One");
+ cfg.save();
+ TestUtil.processUIEvents();
+ String expectedCommitter = "Some One <" + TestUtil.TESTCOMMITTER_EMAIL
+ + '>';
+ assertEquals("Author should be unchanged", TestUtil.TESTAUTHOR,
+ stagingViewTester.getAuthor());
+ assertEquals("Committer should be changed", expectedCommitter,
+ stagingViewTester.getCommitter());
+ assertEquals("Commit message should be unchanged", commitMessage,
+ stagingViewTester.getCommitMessage());
+ assertFalse("Sign-off should be disabled",
+ stagingViewTester.getSignedOff());
+ }
+
+ @Test
+ public void testCommitMessageConfigChangeWithAuthor() throws Exception {
+ setContent("something");
+
+ StagingViewTester stagingViewTester = StagingViewTester
+ .openStagingView();
+ stagingViewTester.setAuthor(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitMessage("Commit message");
+ stagingViewTester.setSignedOff(true);
+ String commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Should have a signed-off footer",
+ commitMessage.indexOf("Signed-off-by") > 0);
+ StoredConfig cfg = repository.getConfig();
+ cfg.load();
+ cfg.setString(ConfigConstants.CONFIG_USER_SECTION, null,
+ ConfigConstants.CONFIG_KEY_NAME, "Some One");
+ cfg.save();
+ TestUtil.processUIEvents();
+ String expectedCommitter = "Some One <" + TestUtil.TESTCOMMITTER_EMAIL
+ + '>';
+ assertEquals("Author should be changed", expectedCommitter,
+ stagingViewTester.getAuthor());
+ assertEquals("Committer should be changed", expectedCommitter,
+ stagingViewTester.getCommitter());
+ assertEquals("Commit message should be updated",
+ commitMessage.replace(TestUtil.TESTCOMMITTER,
+ expectedCommitter),
+ stagingViewTester.getCommitMessage());
+ assertTrue("Sign-off should be enabled",
+ stagingViewTester.getSignedOff());
+ }
+
+ @Test
+ public void testCommitMessageConfigChangeBranchSwitchToNew()
+ throws Exception {
+ setContent("something");
+ StagingViewTester stagingViewTester = StagingViewTester
+ .openStagingView();
+ stagingViewTester.setAuthor(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitter(TestUtil.TESTCOMMITTER);
+ stagingViewTester.setCommitMessage("Commit message");
+ stagingViewTester.setSignedOff(true);
+ String commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Should have a signed-off footer",
+ commitMessage.indexOf("Signed-off-by") > 0);
+ try (Git git = new Git(repository)) {
+ git.checkout().setAllPaths(true).setCreateBranch(true)
+ .setName("refs/heads/myBranch").call();
+ }
+ TestUtil.joinJobs(
+ org.eclipse.egit.core.JobFamilies.INDEX_DIFF_CACHE_UPDATE);
+ TestUtil.processUIEvents();
+ assertEquals("Author should be unchanged", TestUtil.TESTCOMMITTER,
+ stagingViewTester.getAuthor());
+ assertEquals("Committer should be unchanged", TestUtil.TESTCOMMITTER,
+ stagingViewTester.getCommitter());
+ assertEquals("Commit message should be unchanged", commitMessage,
+ stagingViewTester.getCommitMessage());
+ assertTrue("Sign-off should be enabled",
+ stagingViewTester.getSignedOff());
+
+ }
+
+ @Test
+ public void testCommitMessageConfigChangeAmending() throws Exception {
+ // Make a commit directly -- we want to test amending a commit made by
+ // someone else (for instance, fetched from Gerrit).
+ setContent("something");
+ try (Git git = new Git(repository)) {
+ git.add().addFilepattern(FILE1_PATH).call();
+ PersonIdent author = RawParseUtils
+ .parsePersonIdent(TestUtil.TESTAUTHOR);
+ git.commit().setAuthor(author).setCommitter(author)
+ .setMessage("Author's commit\n\nSigned-off-by: "
+ + TestUtil.TESTAUTHOR)
+ .call();
+ }
+ StagingViewTester stagingViewTester = StagingViewTester
+ .openStagingView();
+ stagingViewTester.setAmend(true);
+ stagingViewTester.setSignedOff(true);
+ String commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Commit message should have two signed-off lines",
+ commitMessage.contains(TestUtil.TESTAUTHOR)
+ && commitMessage.contains(TestUtil.TESTCOMMITTER));
+ StoredConfig cfg = repository.getConfig();
+ cfg.load();
+ cfg.setString(ConfigConstants.CONFIG_USER_SECTION, null,
+ ConfigConstants.CONFIG_KEY_NAME, "Some One");
+ cfg.save();
+ TestUtil.processUIEvents();
+ assertEquals("Author should be unchanged", TestUtil.TESTAUTHOR,
+ stagingViewTester.getAuthor());
+ String expectedCommitter = "Some One <" + TestUtil.TESTCOMMITTER_EMAIL
+ + '>';
+ assertEquals("Committer should be changed", expectedCommitter,
+ stagingViewTester.getCommitter());
+ assertTrue("Sign-off should be enabled",
+ stagingViewTester.getSignedOff());
+ assertTrue("Amend should be enabled", stagingViewTester.getAmend());
+ commitMessage = stagingViewTester.getCommitMessage();
+ assertTrue("Commit message should have two signed-off lines",
+ commitMessage.contains(TestUtil.TESTAUTHOR)
+ && commitMessage.contains(expectedCommitter)
+ && !commitMessage.contains(TestUtil.TESTCOMMITTER));
}
}

Back to the top