use of com.oxygenxml.git.view.event.GitController in project oxygen-git-client-addon by oxygenxml.
the class GitPullCasesTest method testPullWithMerge_UncommittedNewFileConflict.
@Test
public void testPullWithMerge_UncommittedNewFileConflict() throws Exception {
String local1Repository = "target/test-resources/GitPullCasesTest/testPullWithMerge_UncommittedNewFileConflict-local";
String local2Repository = "target/test-resources/GitPullCasesTest/testPullWithMerge_UncommittedNewFileConflict-local-second";
String remoteRepository = "target/test-resources/GitPullCasesTest/testPullWithMerge_UncommittedNewFileConflict-remote";
Repository local1Repo = createRepository(local1Repository);
Repository local2Repos = createRepository(local2Repository);
Repository remoteRepo = createRepository(remoteRepository);
bindLocalToRemote(local1Repo, remoteRepo);
bindLocalToRemote(local2Repos, remoteRepo);
// ----------------
// LOCAL 1
// ----------------
GitAccess instance = GitAccess.getInstance();
instance.setRepositorySynchronously(local1Repository);
// Create a file in the remote.
File remoteParent = new File(local1Repository);
remoteParent.mkdirs();
File local1File = new File(local1Repository, "test.txt");
setFileContent(local1File, "original");
instance.add(new FileStatus(GitChangeType.ADD, "test.txt"));
instance.commit("Primul");
push("", "");
// ----------------
// LOCAL 2
// ----------------
instance.setRepositorySynchronously(local2Repository);
File local2File = new File(new File(local2Repository), "test.txt");
local2File.createNewFile();
final StringBuilder pullWithConflicts = new StringBuilder();
final List<String> filesWithChanges = new ArrayList<>();
final List<String> messages = new ArrayList<>();
GitController pc = new GitController() {
@Override
protected void showPullFailedBecauseOfCertainChanges(List<String> files, String message) {
filesWithChanges.addAll(files);
messages.add(message);
}
@Override
protected void showPullSuccessfulWithConflicts(PullResponse response) {
pullWithConflicts.append(response);
}
};
final StringBuilder b = new StringBuilder();
TestUtil.collectPushPullEvents(pc, b);
pc.pull().get();
assertEquals("[Pull_failed_because_conflicting_paths] FOR [test.txt]", messages + " FOR " + filesWithChanges);
}
use of com.oxygenxml.git.view.event.GitController in project oxygen-git-client-addon by oxygenxml.
the class StashVisualTests method testStashChanges.
/**
* <p><b>Description:</b> Tests the "Stash" button basic characteristics and the "Stash Changes" functionality.</p>
* <p><b>Bug ID:</b> EXM-45983</p>
*
* @author Alex_Smarandache
*
* @throws Exception
*/
public void testStashChanges() throws Exception {
// Make the first commit for the local repository
File file = new File(LOCAL_REPO, "local.txt");
file.createNewFile();
setFileContent(file, "local content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "local.txt"));
gitAccess.commit("First local commit.");
// Make the first commit for the remote repository
gitAccess.setRepositorySynchronously(REMOTE_REPO);
file = new File(REMOTE_REPO, "remote1.txt");
file.createNewFile();
setFileContent(file, "remote content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "remote1.txt"));
gitAccess.commit("First remote commit.");
// Switch back to local repo and create local branch
gitAccess.setRepositorySynchronously(LOCAL_REPO);
gitAccess.createBranch(LOCAL_BRANCH);
gitAccess.fetch();
JFrame frame = new JFrame();
try {
// Init UI
GitController gitCtrl = new GitController();
GitActionsManager gitActionsManager = new GitActionsManager(gitCtrl, null, null, refreshSupport);
stagingPanel = new StagingPanel(refreshSupport, gitCtrl, null, gitActionsManager);
refreshSupport.setStagingPanel(stagingPanel);
ToolbarPanel toolbarPanel = stagingPanel.getToolbarPanel();
frame.getContentPane().add(stagingPanel);
frame.pack();
frame.setVisible(true);
flushAWT();
refreshSupport.call();
flushAWT();
SplitMenuButton stashButton = toolbarPanel.getStashButton();
// Test the "Stash" button tooltip text
assertEquals(Tags.STASH, stashButton.getToolTipText());
refreshSupport.call();
flushAWT();
// Test if the button is disabled if none actions are possible.
assertFalse(stashButton.isEnabled());
makeLocalChange("new 2");
JMenuItem stashChangesItem = stashButton.getItem(0);
SwingUtilities.invokeLater(() -> stashChangesItem.getAction().actionPerformed(null));
flushAWT();
// Stash changes and test if the actions become disabled.
JDialog stashChangesDialog = findDialog(Tags.STASH_CHANGES);
assertNotNull(stashChangesDialog);
flushAWT();
JButton doStashButton = findFirstButton(stashChangesDialog, Tags.STASH);
assertNotNull(doStashButton);
doStashButton.doClick();
refreshSupport.call();
flushAWT();
assertFalse(stashChangesItem.isEnabled());
// Test if the stash were created.
List<RevCommit> stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(1, stashes.size());
makeLocalChange("new 3");
SwingUtilities.invokeLater(() -> {
stashChangesItem.setSelected(true);
stashChangesItem.getAction().actionPerformed(null);
});
flushAWT();
// Test if the user can add a custom text
stashChangesDialog = findDialog(Tags.STASH_CHANGES);
assertNotNull(stashChangesDialog);
flushAWT();
JTextField textField = TestUtil.findFirstTextField(stashChangesDialog);
assertNotNull(textField);
textField.setText("Some custom text by user.");
flushAWT();
doStashButton = findFirstButton(stashChangesDialog, Tags.STASH);
assertNotNull(doStashButton);
doStashButton.doClick();
refreshSupport.call();
flushAWT();
stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(2, stashes.size());
assertEquals("Some custom text by user.", stashes.get(0).getFullMessage());
makeLocalChange("new 4");
SwingUtilities.invokeLater(() -> stashChangesItem.getAction().actionPerformed(null));
flushAWT();
// Stash changes and test if the actions become disabled.
stashChangesDialog = findDialog(Tags.STASH_CHANGES);
assertNotNull(stashChangesDialog);
flushAWT();
JButton cancelStashButton = findFirstButton(stashChangesDialog, Tags.CANCEL);
assertNotNull(cancelStashButton);
cancelStashButton.doClick();
refreshSupport.call();
flushAWT();
assertTrue(stashChangesItem.isEnabled());
// Test if the stash wasn't created.
stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(2, stashes.size());
} finally {
frame.setVisible(false);
frame.dispose();
}
}
use of com.oxygenxml.git.view.event.GitController in project oxygen-git-client-addon by oxygenxml.
the class StashVisualTests method testListStashAffectedFilesTable.
/**
* <p><b>Description:</b> Tests the "List stashes" affected files table</p>
* <p><b>Bug ID:</b> EXM-45983</p>
*
* @author Alex_Smarandache
*
* @throws Exception
*/
public void testListStashAffectedFilesTable() throws Exception {
// Make the first commit for the local repository
File file = new File(LOCAL_REPO, "local.txt");
file.createNewFile();
setFileContent(file, "local content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "local.txt"));
gitAccess.commit("First local commit.");
// Make the first commit for the remote repository
gitAccess.setRepositorySynchronously(REMOTE_REPO);
file = new File(REMOTE_REPO, "remote1.txt");
file.createNewFile();
setFileContent(file, "remote content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "remote1.txt"));
gitAccess.commit("First remote commit.");
// Switch back to local repo and create local branch
gitAccess.setRepositorySynchronously(LOCAL_REPO);
gitAccess.createBranch(LOCAL_BRANCH);
gitAccess.fetch();
JFrame frame = new JFrame();
try {
// Init UI
GitController gitCtrl = new GitController();
GitActionsManager gitActionsManager = new GitActionsManager(gitCtrl, null, null, refreshSupport);
stagingPanel = new StagingPanel(refreshSupport, gitCtrl, null, gitActionsManager);
ToolbarPanel toolbarPanel = stagingPanel.getToolbarPanel();
frame.getContentPane().add(stagingPanel);
frame.pack();
frame.setVisible(true);
flushAWT();
toolbarPanel.updateButtonsStates();
refreshSupport.call();
flushAWT();
SplitMenuButton stashButton = toolbarPanel.getStashButton();
String[] filesNames = { "local.txt", "local1.txt", "local2.txt", "local3.txt", "local4.txt" };
String[] foldersName = { "folder0", "folder1", "folder2", "folder3", "folder4", "folder5", "very_very_veeeeeeeeeeeeeeeeeery_long_folder_name" };
String path = LOCAL_REPO + "/";
String fileWithLongPathName = "file_with_long_path.txt";
for (int i = 0; i < foldersName.length; i++) {
path += foldersName[i];
file = new File(path);
assertTrue(file.mkdir());
}
makeLocalChange("some_modification");
for (int i = 1; i < filesNames.length; i++) {
file = new File(LOCAL_REPO, filesNames[i]);
assertTrue(file.createNewFile());
setFileContent(file, "local content" + i);
gitAccess.add(new FileStatus(GitChangeType.ADD, filesNames[i]));
}
file = new File(path, fileWithLongPathName);
assertTrue(file.createNewFile());
setFileContent(file, "local content");
flushAWT();
gitAccess.add(new FileStatus(GitChangeType.ADD, path + fileWithLongPathName));
path = path.substring((LOCAL_REPO + "/").length());
flushAWT();
JMenuItem[] stashChangesItem = new JMenuItem[1];
stashChangesItem[0] = stashButton.getItem(0);
SwingUtilities.invokeLater(() -> stashChangesItem[0].getAction().actionPerformed(null));
flushAWT();
JDialog stashChangesDialog = findDialog(Tags.STASH_CHANGES);
flushAWT();
assertNotNull(stashChangesDialog);
JButton doStashButton = findFirstButton(stashChangesDialog, Tags.STASH);
flushAWT();
assertNotNull(doStashButton);
doStashButton.doClick();
refreshSupport.call();
flushAWT();
makeLocalChange("another_modification");
flushAWT();
stashChangesItem[0] = stashButton.getItem(0);
SwingUtilities.invokeLater(() -> stashChangesItem[0].getAction().actionPerformed(null));
flushAWT();
stashChangesDialog = findDialog(Tags.STASH_CHANGES);
flushAWT();
assertNotNull(stashChangesDialog);
doStashButton = findFirstButton(stashChangesDialog, Tags.STASH);
assertNotNull(doStashButton);
doStashButton.doClick();
refreshSupport.call();
flushAWT();
JMenuItem[] listStashesItem = new JMenuItem[1];
listStashesItem[0] = stashButton.getItem(1);
SwingUtilities.invokeLater(() -> listStashesItem[0].getAction().actionPerformed(null));
ListStashesDialog listStashesDialog = (ListStashesDialog) findDialog(Tags.STASHES);
flushAWT();
assertNotNull(listStashesDialog);
StagingResourcesTableCellRenderer filesRender = (StagingResourcesTableCellRenderer) listStashesDialog.getAffectedFilesTable().getDefaultRenderer(FileStatus.class);
FilesTableModel stashFilesTableModel = (FilesTableModel) listStashesDialog.getAffectedFilesTable().getModel();
assertEquals(GitChangeType.CHANGED, stashFilesTableModel.getValueAt(0, 0));
assertEquals(filesNames[0], ((FileStatus) stashFilesTableModel.getValueAt(0, 1)).getFileLocation());
stashFilesTableModel = (FilesTableModel) listStashesDialog.getAffectedFilesTable().getModel();
SwingUtilities.invokeLater(() -> listStashesDialog.getStashesTable().setRowSelectionInterval(1, 1));
flushAWT();
for (int i = 0; i < filesNames.length - 1; i++) {
assertEquals(GitChangeType.ADD, stashFilesTableModel.getValueAt(i, 0));
assertEquals(filesNames[i + 1], ((FileStatus) stashFilesTableModel.getValueAt(i, 1)).getFileLocation());
String toolTipFileText = ((JLabel) filesRender.getTableCellRendererComponent(listStashesDialog.getAffectedFilesTable(), stashFilesTableModel.getValueAt(i, 1), true, true, i, 1)).getToolTipText();
assertEquals(filesNames[i + 1], toolTipFileText);
}
int length = filesNames.length;
assertEquals(GitChangeType.CHANGED, stashFilesTableModel.getValueAt(length - 1, 0));
assertEquals(filesNames[0], ((FileStatus) stashFilesTableModel.getValueAt(length - 1, 1)).getFileLocation());
String toolTipFileText = ((JLabel) filesRender.getTableCellRendererComponent(listStashesDialog.getAffectedFilesTable(), stashFilesTableModel.getValueAt(length - 1, 1), true, true, length - 1, 1)).getToolTipText();
assertEquals(filesNames[0], toolTipFileText);
toolTipFileText = ((JLabel) filesRender.getTableCellRendererComponent(listStashesDialog.getAffectedFilesTable(), stashFilesTableModel.getValueAt(length, 1), true, true, length, 1)).getToolTipText();
assertEquals(fileWithLongPathName + " - " + path, toolTipFileText);
flushAWT();
stashFilesTableModel = (FilesTableModel) listStashesDialog.getAffectedFilesTable().getModel();
SwingUtilities.invokeLater(() -> listStashesDialog.getStashesTable().setRowSelectionInterval(0, 0));
flushAWT();
assertEquals(GitChangeType.CHANGED, stashFilesTableModel.getValueAt(0, 0));
assertEquals(filesNames[0], ((FileStatus) stashFilesTableModel.getValueAt(0, 1)).getFileLocation());
JButton cancelButton = findFirstButton(listStashesDialog, Tags.CLOSE);
assertNotNull(cancelButton);
cancelButton.doClick();
} finally {
frame.setVisible(false);
frame.dispose();
}
}
use of com.oxygenxml.git.view.event.GitController in project oxygen-git-client-addon by oxygenxml.
the class StashVisualTests method testListStashesTableValues.
/**
* <p><b>Description:</b> Tests the "List stashes" table values</p>
* <p><b>Bug ID:</b> EXM-45983</p>
*
* @author Alex_Smarandache
*
* @throws Exception
*/
public void testListStashesTableValues() throws Exception {
// Make the first commit for the local repository
File file = new File(LOCAL_REPO, "local.txt");
file.createNewFile();
setFileContent(file, "local content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "local.txt"));
gitAccess.commit("First local commit.");
// Make the first commit for the remote repository
gitAccess.setRepositorySynchronously(REMOTE_REPO);
file = new File(REMOTE_REPO, "remote1.txt");
file.createNewFile();
setFileContent(file, "remote content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "remote1.txt"));
gitAccess.commit("First remote commit.");
// Switch back to local repo and create local branch
gitAccess.setRepositorySynchronously(LOCAL_REPO);
gitAccess.createBranch(LOCAL_BRANCH);
gitAccess.fetch();
JFrame frame = new JFrame();
try {
// Init UI
GitController gitCtrl = new GitController();
GitActionsManager gitActionsManager = new GitActionsManager(gitCtrl, null, null, refreshSupport);
stagingPanel = new StagingPanel(refreshSupport, gitCtrl, null, gitActionsManager);
ToolbarPanel toolbarPanel = stagingPanel.getToolbarPanel();
frame.getContentPane().add(stagingPanel);
frame.pack();
frame.setVisible(true);
flushAWT();
toolbarPanel.updateButtonsStates();
refreshSupport.call();
flushAWT();
SplitMenuButton stashButton = toolbarPanel.getStashButton();
initStashes(toolbarPanel);
List<RevCommit> stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(3, stashes.size());
JMenuItem[] listStashesItem = new JMenuItem[1];
listStashesItem[0] = stashButton.getItem(1);
SwingUtilities.invokeLater(() -> listStashesItem[0].getAction().actionPerformed(null));
ListStashesDialog listStashesDialog = (ListStashesDialog) findDialog(Tags.STASHES);
assertNotNull(listStashesDialog);
StashesTableModel model = (StashesTableModel) listStashesDialog.getStashesTable().getModel();
assertEquals(3, model.getRowCount());
assertEquals(stashes.get(0).getFullMessage(), model.getValueAt(0, StashesTableModel.STASH_DESCRIPTION_COLUMN));
assertEquals(stashes.get(1).getFullMessage(), model.getValueAt(1, StashesTableModel.STASH_DESCRIPTION_COLUMN));
assertEquals(stashes.get(2).getFullMessage(), model.getValueAt(2, StashesTableModel.STASH_DESCRIPTION_COLUMN));
assertEquals(stashes.get(0).getAuthorIdent().getWhen(), model.getValueAt(0, StashesTableModel.STASH_DATE_COLUMN));
assertEquals(stashes.get(1).getAuthorIdent().getWhen(), model.getValueAt(1, StashesTableModel.STASH_DATE_COLUMN));
assertEquals(stashes.get(2).getAuthorIdent().getWhen(), model.getValueAt(2, StashesTableModel.STASH_DATE_COLUMN));
JButton cancelButton = findFirstButton(listStashesDialog, Tags.CLOSE);
assertNotNull(cancelButton);
cancelButton.doClick();
} finally {
frame.setVisible(false);
frame.dispose();
}
}
use of com.oxygenxml.git.view.event.GitController in project oxygen-git-client-addon by oxygenxml.
the class StashVisualTests method testListStashDeleteAllAction.
/**
* <p><b>Description:</b> Tests the "List stashes" delete all action</p>
* <p><b>Bug ID:</b> EXM-45983</p>
*
* @author Alex_Smarandache
*
* @throws Exception
*/
public void testListStashDeleteAllAction() throws Exception {
// Make the first commit for the local repository
File file = new File(LOCAL_REPO, "local.txt");
file.createNewFile();
setFileContent(file, "local content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "local.txt"));
gitAccess.commit("First local commit.");
// Make the first commit for the remote repository
gitAccess.setRepositorySynchronously(REMOTE_REPO);
file = new File(REMOTE_REPO, "remote1.txt");
file.createNewFile();
setFileContent(file, "remote content");
gitAccess.add(new FileStatus(GitChangeType.ADD, "remote1.txt"));
gitAccess.commit("First remote commit.");
// Switch back to local repo and create local branch
gitAccess.setRepositorySynchronously(LOCAL_REPO);
gitAccess.createBranch(LOCAL_BRANCH);
gitAccess.fetch();
JFrame frame = new JFrame();
try {
// Init UI
GitController gitCtrl = new GitController();
GitActionsManager gitActionsManager = new GitActionsManager(gitCtrl, null, null, refreshSupport);
stagingPanel = new StagingPanel(refreshSupport, gitCtrl, null, gitActionsManager);
ToolbarPanel toolbarPanel = stagingPanel.getToolbarPanel();
frame.getContentPane().add(stagingPanel);
frame.pack();
frame.setVisible(true);
flushAWT();
toolbarPanel.updateButtonsStates();
refreshSupport.call();
flushAWT();
SplitMenuButton stashButton = toolbarPanel.getStashButton();
initStashes(toolbarPanel);
List<RevCommit> stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(3, stashes.size());
JMenuItem[] listStashesItem = new JMenuItem[1];
listStashesItem[0] = stashButton.getItem(1);
SwingUtilities.invokeLater(() -> listStashesItem[0].getAction().actionPerformed(null));
ListStashesDialog listStashesDialog = (ListStashesDialog) findDialog(Tags.STASHES);
assertNotNull(listStashesDialog);
assertEquals(3, listStashesDialog.getStashesTable().getModel().getRowCount());
assertEquals(1, listStashesDialog.getAffectedFilesTable().getModel().getRowCount());
JButton[] deleteAllStashesButton = new JButton[1];
deleteAllStashesButton[0] = findFirstButton(listStashesDialog, Tags.DELETE_ALL);
assertNotNull(deleteAllStashesButton);
SwingUtilities.invokeLater(() -> deleteAllStashesButton[0].doClick());
flushAWT();
// Test the no button.
JDialog deleteAllStashesDialog = findDialog(Tags.DELETE_ALL_STASHES);
assertNotNull(deleteAllStashesDialog);
JButton[] noButton = new JButton[1];
flushAWT();
noButton[0] = findFirstButton(deleteAllStashesDialog, Tags.NO);
assertNotNull(noButton[0]);
SwingUtilities.invokeLater(() -> noButton[0].doClick());
flushAWT();
stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(3, stashes.size());
flushAWT();
JButton cancelButton = findFirstButton(listStashesDialog, Tags.CLOSE);
assertNotNull(cancelButton);
cancelButton.doClick();
listStashesItem[0] = stashButton.getItem(1);
SwingUtilities.invokeLater(() -> listStashesItem[0].getAction().actionPerformed(null));
flushAWT();
listStashesDialog = (ListStashesDialog) findDialog(Tags.STASHES);
assertNotNull(listStashesDialog);
deleteAllStashesButton[0] = findFirstButton(listStashesDialog, Tags.DELETE_ALL);
assertNotNull(deleteAllStashesButton);
SwingUtilities.invokeLater(() -> deleteAllStashesButton[0].doClick());
flushAWT();
// Test the yes button.
deleteAllStashesDialog = findDialog(Tags.DELETE_ALL_STASHES);
assertNotNull(deleteAllStashesDialog);
flushAWT();
JButton yesButton = findFirstButton(deleteAllStashesDialog, Tags.YES);
assertNotNull(yesButton);
SwingUtilities.invokeLater(yesButton::doClick);
flushAWT();
stashes = new ArrayList<>(gitAccess.listStashes());
assertEquals(0, stashes.size());
cancelButton = findFirstButton(listStashesDialog, Tags.CLOSE);
assertNotNull(cancelButton);
cancelButton.doClick();
} finally {
frame.setVisible(false);
frame.dispose();
}
}
Aggregations