{"thread":{"id":"17052","subject":"[EGIT PATCH 0/7] Import Wizard cleanup fixes and test","startedAt":"2009-01-08T16:56:24Z","lastAt":"2009-01-12T16:45:14Z","messageCount":11,"participants":["Robin Rosenberg","Shawn O. Pearce"],"isPatch":true,"patchVersion":1,"patchTotal":7},"messages":[{"id":"99716","messageId":"1231433791-9267-1-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":null,"subject":"[EGIT PATCH 0/7] Import Wizard cleanup fixes and test","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:24Z","receivedAt":"2009-01-08T16:56:24Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This series cleans up a few missing things regarding URI parsing\nconcering Windows paths, missing shortcuts and a couple of string\nnot using the NLS mechanism.\n\nThe last patch is experimental. It is a fully automatic test of\nthe import wizard. It must be in the Java or Classic Edition of\nEclipse (the JEE version starts with the wrong perspective) and\nran for me on Linux (UTF-8) and Windows. It also required the\nSWTBot 2.0 dev edition to work.\n\n-- robin\n\nRobin Rosenberg (7):\n  Create the import wizard question checkbox properly\n  Fix two strings in the cloning wizard that were not translated.\n  Add shortcuts to the Git cloning wizard\n  Normalize paths to /-format when parsing GIT URI's\n  Add UNC test case to URIish test\n  Treat null scheme as file: in git import wizard\n  Create an automatic UI test for the Git Import Wizard\n\n org.spearce.egit.ui.test/.classpath                |    8 +\n org.spearce.egit.ui.test/.project                  |   28 ++\n .../.settings/org.eclipse.jdt.core.prefs           |  320 +++++++++++++\n .../All org.spearce.egit.ui tests.launch           |   41 ++\n org.spearce.egit.ui.test/META-INF/MANIFEST.MF      |   19 +\n org.spearce.egit.ui.test/build.properties          |    4 +\n .../ui/internal/sharing/GitCloneWizardTest.java    |  480 ++++++++++++++++++++\n .../src/org/spearce/egit/ui/test/Activator.java    |   50 ++\n .../src/org/spearce/egit/ui/UIText.java            |    6 +\n .../ui/internal/clone/CloneDestinationPage.java    |    4 +-\n .../components/RepositorySelectionPage.java        |   14 +-\n .../src/org/spearce/egit/ui/uitext.properties      |   32 +-\n .../tst/org/spearce/jgit/transport/URIishTest.java |   20 +\n .../src/org/spearce/jgit/transport/URIish.java     |    3 +-\n 14 files changed, 1006 insertions(+), 23 deletions(-)\n create mode 100644 org.spearce.egit.ui.test/.classpath\n create mode 100644 org.spearce.egit.ui.test/.project\n create mode 100644 org.spearce.egit.ui.test/.settings/org.eclipse.jdt.core.prefs\n create mode 100644 org.spearce.egit.ui.test/All org.spearce.egit.ui tests.launch\n create mode 100644 org.spearce.egit.ui.test/META-INF/MANIFEST.MF\n create mode 100644 org.spearce.egit.ui.test/build.properties\n create mode 100644 org.spearce.egit.ui.test/src/org/spearce/egit/ui/internal/sharing/GitCloneWizardTest.java\n create mode 100644 org.spearce.egit.ui.test/src/org/spearce/egit/ui/test/Activator.java\n"},{"id":"99719","messageId":"1231433791-9267-2-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-1-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 1/7] Create the import wizard question checkbox properly","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:25Z","receivedAt":"2009-01-08T16:56:25Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This is necessary for good layout and to make the UI test work. Anyway, this\nis the way checkboxes should be created.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../ui/internal/clone/CloneDestinationPage.java    |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java\nindex d017b60..a02b3a2 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java\n@@ -173,9 +173,9 @@ public void modifyText(ModifyEvent e) {\n \n \tprivate void createWorkbenchGroup(Composite parent) {\n \t\tfinal Group g = createGroup(parent, \"Workspace import\");\n-\t\tnewLabel(g, \"Import projects after clone\");\n \t\tshowImportWizard = new Button(g, SWT.CHECK);\n \t\tshowImportWizard.setSelection(true);\n+\t\tshowImportWizard.setText(\"Import projects after clone\");\n \t\tshowImportWizard.setLayoutData(createFieldGridData());\n \t\tshowImportWizard.addSelectionListener(new SelectionAdapter() {\n \t\t\t@Override\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99720","messageId":"1231433791-9267-3-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-2-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 2/7] Fix two strings in the cloning wizard that were not translated.","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:26Z","receivedAt":"2009-01-08T16:56:26Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../src/org/spearce/egit/ui/UIText.java            |    6 ++++++\n .../ui/internal/clone/CloneDestinationPage.java    |    4 ++--\n .../src/org/spearce/egit/ui/uitext.properties      |    2 ++\n 3 files changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java\nindex 124d7a0..30122d2 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java\n@@ -218,6 +218,12 @@\n \tpublic static String CloneDestinationPage_errorNotEmptyDir;\n \n \t/** */\n+\tpublic static String CloneDestinationPage_workspaceImport;\n+\n+\t/** */\n+\tpublic static String CloneDestinationPage_importProjectsAfterClone;\n+\n+\t/** */\n \tpublic static String RefSpecPanel_refChooseSome;\n \n \t/** */\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java\nindex a02b3a2..16f9773 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/CloneDestinationPage.java\n@@ -172,10 +172,10 @@ public void modifyText(ModifyEvent e) {\n \t}\n \n \tprivate void createWorkbenchGroup(Composite parent) {\n-\t\tfinal Group g = createGroup(parent, \"Workspace import\");\n+\t\tfinal Group g = createGroup(parent, UIText.CloneDestinationPage_workspaceImport);\n \t\tshowImportWizard = new Button(g, SWT.CHECK);\n \t\tshowImportWizard.setSelection(true);\n-\t\tshowImportWizard.setText(\"Import projects after clone\");\n+\t\tshowImportWizard.setText(UIText.CloneDestinationPage_importProjectsAfterClone);\n \t\tshowImportWizard.setLayoutData(createFieldGridData());\n \t\tshowImportWizard.addSelectionListener(new SelectionAdapter() {\n \t\t\t@Override\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\nindex 98ce80f..7f2e4b0 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\n@@ -90,6 +90,8 @@ CloneDestinationPage_promptRemoteName=Remote name\n CloneDestinationPage_fieldRequired={0} is required.\n CloneDestinationPage_browseButton=Browse\n CloneDestinationPage_errorNotEmptyDir={0} is not an empty directory.\n+CloneDestinationPage_importProjectsAfterClone=&Import projects after clone\n+CloneDestinationPage_workspaceImport=Workspace import\n \n RefSpecPanel_clickToChange=[Click to change]\n RefSpecPanel_columnDst=Destination Ref\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99717","messageId":"1231433791-9267-4-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-3-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 3/7] Add shortcuts to the Git cloning wizard","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:27Z","receivedAt":"2009-01-08T16:56:27Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../components/RepositorySelectionPage.java        |   12 +++++--\n .../src/org/spearce/egit/ui/uitext.properties      |   30 ++++++++++----------\n 2 files changed, 23 insertions(+), 19 deletions(-)\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java\nindex 4f02c95..95df71e 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java\n@@ -536,7 +536,7 @@ private void checkPage() {\n \t\t\t\tif (uri.getPath() == null) {\n \t\t\t\t\tselectionIncomplete(NLS.bind(\n \t\t\t\t\t\t\tUIText.RepositorySelectionPage_fieldRequired,\n-\t\t\t\t\t\t\tUIText.RepositorySelectionPage_promptPath, proto));\n+\t\t\t\t\t\t\tunamp(UIText.RepositorySelectionPage_promptPath), proto));\n \t\t\t\t\treturn;\n \t\t\t\t}\n \n@@ -552,7 +552,7 @@ else if (uri.getPass() != null)\n \t\t\t\t\t\tselectionIncomplete(NLS\n \t\t\t\t\t\t\t\t.bind(\n \t\t\t\t\t\t\t\t\t\tUIText.RepositorySelectionPage_fieldNotSupported,\n-\t\t\t\t\t\t\t\t\t\tbadField, proto));\n+\t\t\t\t\t\t\t\t\t\tunamp(badField), proto));\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \n@@ -571,7 +571,7 @@ selectionIncomplete(NLS.bind(\n \t\t\t\tif (uri.getHost() == null) {\n \t\t\t\t\tselectionIncomplete(NLS.bind(\n \t\t\t\t\t\t\tUIText.RepositorySelectionPage_fieldRequired,\n-\t\t\t\t\t\t\tUIText.RepositorySelectionPage_promptHost, proto));\n+\t\t\t\t\t\t\tunamp(UIText.RepositorySelectionPage_promptHost), proto));\n \t\t\t\t\treturn;\n \t\t\t\t}\n \n@@ -585,7 +585,7 @@ else if (uri.getPass() != null)\n \t\t\t\t\t\tselectionIncomplete(NLS\n \t\t\t\t\t\t\t\t.bind(\n \t\t\t\t\t\t\t\t\t\tUIText.RepositorySelectionPage_fieldNotSupported,\n-\t\t\t\t\t\t\t\t\t\tbadField, proto));\n+\t\t\t\t\t\t\t\t\t\tunamp(badField), proto));\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t}\n@@ -608,6 +608,10 @@ selectionIncomplete(NLS\n \t\t}\n \t}\n \n+\tprivate String unamp(String s) {\n+\t\treturn s.replace(\"&\",\"\");\n+\t}\n+\n \tprivate void selectionIncomplete(final String errorMessage) {\n \t\tsetExposedSelection(null, null);\n \t\tsetErrorMessage(errorMessage);\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\nindex 7f2e4b0..3819047 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties\n@@ -28,7 +28,7 @@ WizardProjectsImportPage_CheckingMessage = Checking: {0}\n WizardProjectsImportPage_SelectDialogTitle = Select root directory of the projects to import\n WizardProjectImportPage_errorMessage = Creation Problems\n WizardProjectsImportPage_CreateProjectsTask = Creating Projects\n-WizardProjectsImportPage_enableGit = Enable Git Team operations on imported projects\n+WizardProjectsImportPage_enableGit = Enable &Git Team operations on imported projects\n \n SharingWizard_windowTitle=Configure Git Repository\n SharingWizard_failed=Failed to initialize Git team provider.\n@@ -56,13 +56,13 @@ RepositorySelectionPage_uriChoice=Custom URI\n RepositorySelectionPage_groupLocation=Location\n RepositorySelectionPage_groupAuthentication=Authentication\n RepositorySelectionPage_groupConnection=Connection\n-RepositorySelectionPage_promptURI=URI\n-RepositorySelectionPage_promptHost=Host\n-RepositorySelectionPage_promptPath=Repository path\n-RepositorySelectionPage_promptUser=User\n-RepositorySelectionPage_promptPassword=Password\n-RepositorySelectionPage_promptScheme=Protocol\n-RepositorySelectionPage_promptPort=Port\n+RepositorySelectionPage_promptURI=UR&I\n+RepositorySelectionPage_promptHost=&Host\n+RepositorySelectionPage_promptPath=&Repository path\n+RepositorySelectionPage_promptUser=&User\n+RepositorySelectionPage_promptPassword=&Password\n+RepositorySelectionPage_promptScheme=Protoco&l\n+RepositorySelectionPage_promptPort=Por&t\n RepositorySelectionPage_fieldRequired={0} required for {1} protocol.\n RepositorySelectionPage_fieldNotSupported={0} not supported on {1} protocol.\n RepositorySelectionPage_fileNotFound={0} does not exist.\n@@ -70,9 +70,9 @@ RepositorySelectionPage_internalError=Internal error; consult Eclipse error log.\n \n SourceBranchPage_title=Source Git Repository\n SourceBranchPage_description=Select branches to clone from remote repository.\n-SourceBranchPage_branchList=Branches of {0}:\n-SourceBranchPage_selectAll=Select All\n-SourceBranchPage_selectNone=Deselect All\n+SourceBranchPage_branchList=Branches &of {0}:\n+SourceBranchPage_selectAll=&Select All\n+SourceBranchPage_selectNone=&Deselect All\n SourceBranchPage_errorBranchRequired=At least one branch must be selected.\n SourceBranchPage_transportError=Transport Error\n SourceBranchPage_cannotListBranches=Cannot list the available branches.\n@@ -84,11 +84,11 @@ CloneDestinationPage_title=Local Destination\n CloneDestinationPage_description=Configure the local storage location for {0}.\n CloneDestinationPage_groupDestination=Destination\n CloneDestinationPage_groupConfiguration=Configuration\n-CloneDestinationPage_promptDirectory=Directory\n-CloneDestinationPage_promptInitialBranch=Initial branch\n-CloneDestinationPage_promptRemoteName=Remote name\n+CloneDestinationPage_promptDirectory=&Directory\n+CloneDestinationPage_promptInitialBranch=Initial &branch\n+CloneDestinationPage_promptRemoteName=Remote na&me\n CloneDestinationPage_fieldRequired={0} is required.\n-CloneDestinationPage_browseButton=Browse\n+CloneDestinationPage_browseButton=Bro&wse\n CloneDestinationPage_errorNotEmptyDir={0} is not an empty directory.\n CloneDestinationPage_importProjectsAfterClone=&Import projects after clone\n CloneDestinationPage_workspaceImport=Workspace import\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99718","messageId":"1231433791-9267-5-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-4-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 4/7] Normalize paths to /-format when parsing GIT URI's","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:28Z","receivedAt":"2009-01-08T16:56:28Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This means '\\' on Windows will be changed to '/'.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../tst/org/spearce/jgit/transport/URIishTest.java |   10 ++++++++++\n .../src/org/spearce/jgit/transport/URIish.java     |    3 ++-\n 2 files changed, 12 insertions(+), 1 deletions(-)\n\ndiff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java\nindex 2e5e847..8462dfc 100644\n--- a/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java\n+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java\n@@ -62,6 +62,16 @@ public void testWindowsFile() throws Exception {\n \t\tassertEquals(u, new URIish(str));\n \t}\n \n+\tpublic void testWindowsFile2() throws Exception {\n+\t\tfinal String str = \"D:\\\\m y\";\n+\t\tURIish u = new URIish(str);\n+\t\tassertNull(u.getScheme());\n+\t\tassertFalse(u.isRemote());\n+\t\tassertEquals(\"D:/m y\", u.getPath());\n+\t\tassertEquals(\"D:/m y\", u.toString());\n+\t\tassertEquals(u, new URIish(str));\n+\t}\n+\n \tpublic void testFileProtoUnix() throws Exception {\n \t\tfinal String str = \"file:///home/m y\";\n \t\tURIish u = new URIish(str);\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java b/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java\nindex f81a709..b86e00c 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/URIish.java\n@@ -51,7 +51,7 @@\n  */\n public class URIish {\n \tprivate static final Pattern FULL_URI = Pattern\n-\t\t\t.compile(\"^(?:([a-z0-9+-]+)://(?:([^/]+?)(?::([^/]+?))?@)?(?:([^/]+?))?(?::(\\\\d+))?)?((?:[A-Za-z]:)?/.+)$\");\n+\t\t\t.compile(\"^(?:([a-z][a-z0-9+-]+)://(?:([^/]+?)(?::([^/]+?))?@)?(?:([^/]+?))?(?::(\\\\d+))?)?((?:[A-Za-z]:)?/.+)$\");\n \n \tprivate static final Pattern SCP_URI = Pattern\n \t\t\t.compile(\"^(?:([^@]+?)@)?([^:]+?):(.+)$\");\n@@ -75,6 +75,7 @@\n \t * @throws URISyntaxException\n \t */\n \tpublic URIish(String s) throws URISyntaxException {\n+\t\ts = s.replace('\\\\', '/');\n \t\tMatcher matcher = FULL_URI.matcher(s);\n \t\tif (matcher.matches()) {\n \t\t\tscheme = matcher.group(1);\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99721","messageId":"1231433791-9267-6-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-5-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 5/7] Add UNC test case to URIish test","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:29Z","receivedAt":"2009-01-08T16:56:29Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../tst/org/spearce/jgit/transport/URIishTest.java |   10 ++++++++++\n 1 files changed, 10 insertions(+), 0 deletions(-)\n\ndiff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java\nindex 8462dfc..2ea9d60 100644\n--- a/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java\n+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/transport/URIishTest.java\n@@ -72,6 +72,16 @@ public void testWindowsFile2() throws Exception {\n \t\tassertEquals(u, new URIish(str));\n \t}\n \n+\tpublic void testUNC() throws Exception {\n+\t\tfinal String str = \"\\\\\\\\some\\\\place\";\n+\t\tURIish u = new URIish(str);\n+\t\tassertNull(u.getScheme());\n+\t\tassertFalse(u.isRemote());\n+\t\tassertEquals(\"//some/place\", u.getPath());\n+\t\tassertEquals(\"//some/place\", u.toString());\n+\t\tassertEquals(u, new URIish(str));\n+\t}\n+\n \tpublic void testFileProtoUnix() throws Exception {\n \t\tfinal String str = \"file:///home/m y\";\n \t\tURIish u = new URIish(str);\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99722","messageId":"1231433791-9267-7-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-6-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 6/7] Treat null scheme as file: in git import wizard","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:30Z","receivedAt":"2009-01-08T16:56:30Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../components/RepositorySelectionPage.java        |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java\nindex 95df71e..db177ec 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RepositorySelectionPage.java\n@@ -429,7 +429,7 @@ private static boolean isGIT(final URIish uri) {\n \t}\n \n \tprivate static boolean isFile(final URIish uri) {\n-\t\tif (\"file\".equals(uri.getScheme()))\n+\t\tif (\"file\".equals(uri.getScheme()) || uri.getScheme() == null)\n \t\t\treturn true;\n \t\tif (uri.getHost() != null || uri.getPort() > 0 || uri.getUser() != null\n \t\t\t\t|| uri.getPass() != null || uri.getPath() == null)\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99723","messageId":"1231433791-9267-8-git-send-email-robin.rosenberg@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-7-git-send-email-robin.rosenberg@dewire.com","subject":"[EGIT PATCH 7/7] Create an automatic UI test for the Git Import Wizard","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-01-08T16:56:31Z","receivedAt":"2009-01-08T16:56:31Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Things like dialogs and such require a different approach. The\nstrategy is to use SWTBot for runnings UI-oriented tests.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n org.spearce.egit.ui.test/.classpath                |    8 +\n org.spearce.egit.ui.test/.project                  |   28 ++\n .../.settings/org.eclipse.jdt.core.prefs           |  320 +++++++++++++\n .../All org.spearce.egit.ui tests.launch           |   41 ++\n org.spearce.egit.ui.test/META-INF/MANIFEST.MF      |   19 +\n org.spearce.egit.ui.test/build.properties          |    4 +\n .../ui/internal/sharing/GitCloneWizardTest.java    |  480 ++++++++++++++++++++\n .../src/org/spearce/egit/ui/test/Activator.java    |   50 ++\n 8 files changed, 950 insertions(+), 0 deletions(-)\n create mode 100644 org.spearce.egit.ui.test/.classpath\n create mode 100644 org.spearce.egit.ui.test/.project\n create mode 100644 org.spearce.egit.ui.test/.settings/org.eclipse.jdt.core.prefs\n create mode 100644 org.spearce.egit.ui.test/All org.spearce.egit.ui tests.launch\n create mode 100644 org.spearce.egit.ui.test/META-INF/MANIFEST.MF\n create mode 100644 org.spearce.egit.ui.test/build.properties\n create mode 100644 org.spearce.egit.ui.test/src/org/spearce/egit/ui/internal/sharing/GitCloneWizardTest.java\n create mode 100644 org.spearce.egit.ui.test/src/org/spearce/egit/ui/test/Activator.java\n\ndiff --git a/org.spearce.egit.ui.test/.classpath b/org.spearce.egit.ui.test/.classpath\nnew file mode 100644\nindex 0000000..76279f3\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/.classpath\n@@ -0,0 +1,8 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n+<classpath>\n+\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6\"/>\n+\t<classpathentry kind=\"con\" path=\"org.eclipse.pde.core.requiredPlugins\"/>\n+\t<classpathentry kind=\"src\" path=\"src\"/>\n+\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.junit.JUNIT_CONTAINER/3\"/>\n+\t<classpathentry kind=\"output\" path=\"bin\"/>\n+</classpath>\ndiff --git a/org.spearce.egit.ui.test/.project b/org.spearce.egit.ui.test/.project\nnew file mode 100644\nindex 0000000..caa9fa4\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/.project\n@@ -0,0 +1,28 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n+<projectDescription>\n+\t<name>org.spearce.egit.ui.test</name>\n+\t<comment></comment>\n+\t<projects>\n+\t</projects>\n+\t<buildSpec>\n+\t\t<buildCommand>\n+\t\t\t<name>org.eclipse.jdt.core.javabuilder</name>\n+\t\t\t<arguments>\n+\t\t\t</arguments>\n+\t\t</buildCommand>\n+\t\t<buildCommand>\n+\t\t\t<name>org.eclipse.pde.ManifestBuilder</name>\n+\t\t\t<arguments>\n+\t\t\t</arguments>\n+\t\t</buildCommand>\n+\t\t<buildCommand>\n+\t\t\t<name>org.eclipse.pde.SchemaBuilder</name>\n+\t\t\t<arguments>\n+\t\t\t</arguments>\n+\t\t</buildCommand>\n+\t</buildSpec>\n+\t<natures>\n+\t\t<nature>org.eclipse.pde.PluginNature</nature>\n+\t\t<nature>org.eclipse.jdt.core.javanature</nature>\n+\t</natures>\n+</projectDescription>\ndiff --git a/org.spearce.egit.ui.test/.settings/org.eclipse.jdt.core.prefs b/org.spearce.egit.ui.test/.settings/org.eclipse.jdt.core.prefs\nnew file mode 100644\nindex 0000000..fb77da2\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/.settings/org.eclipse.jdt.core.prefs\n@@ -0,0 +1,320 @@\n+#Sun Feb 03 03:52:00 CET 2008\n+eclipse.preferences.version=1\n+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\n+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\n+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\n+org.eclipse.jdt.core.compiler.compliance=1.5\n+org.eclipse.jdt.core.compiler.debug.lineNumber=generate\n+org.eclipse.jdt.core.compiler.debug.localVariable=generate\n+org.eclipse.jdt.core.compiler.debug.sourceFile=generate\n+org.eclipse.jdt.core.compiler.doc.comment.support=enabled\n+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\n+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\n+org.eclipse.jdt.core.compiler.problem.autoboxing=warning\n+org.eclipse.jdt.core.compiler.problem.deprecation=warning\n+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\n+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\n+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning\n+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning\n+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\n+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning\n+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning\n+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning\n+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error\n+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error\n+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error\n+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\n+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\n+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error\n+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error\n+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled\n+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled\n+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled\n+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private\n+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning\n+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error\n+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore\n+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore\n+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled\n+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected\n+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error\n+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled\n+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private\n+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore\n+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning\n+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error\n+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error\n+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\n+org.eclipse.jdt.core.compiler.problem.nullReference=error\n+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\n+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning\n+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error\n+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning\n+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore\n+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning\n+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\n+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error\n+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\n+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning\n+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning\n+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning\n+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\n+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error\n+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\n+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error\n+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\n+org.eclipse.jdt.core.compiler.problem.unusedImport=error\n+org.eclipse.jdt.core.compiler.problem.unusedLabel=error\n+org.eclipse.jdt.core.compiler.problem.unusedLocal=error\n+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning\n+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled\n+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\n+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error\n+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error\n+org.eclipse.jdt.core.compiler.source=1.5\n+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false\n+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16\n+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16\n+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16\n+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16\n+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16\n+org.eclipse.jdt.core.formatter.alignment_for_assignment=0\n+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16\n+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16\n+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80\n+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0\n+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16\n+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16\n+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16\n+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16\n+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16\n+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16\n+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16\n+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16\n+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16\n+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16\n+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1\n+org.eclipse.jdt.core.formatter.blank_lines_after_package=1\n+org.eclipse.jdt.core.formatter.blank_lines_before_field=1\n+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0\n+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1\n+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1\n+org.eclipse.jdt.core.formatter.blank_lines_before_method=1\n+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1\n+org.eclipse.jdt.core.formatter.blank_lines_before_package=0\n+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1\n+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line\n+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line\n+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false\n+org.eclipse.jdt.core.formatter.comment.format_comments=true\n+org.eclipse.jdt.core.formatter.comment.format_header=false\n+org.eclipse.jdt.core.formatter.comment.format_html=true\n+org.eclipse.jdt.core.formatter.comment.format_source_code=true\n+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true\n+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true\n+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert\n+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert\n+org.eclipse.jdt.core.formatter.comment.line_length=80\n+org.eclipse.jdt.core.formatter.compact_else_if=true\n+org.eclipse.jdt.core.formatter.continuation_indentation=2\n+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2\n+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false\n+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true\n+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true\n+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true\n+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true\n+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true\n+org.eclipse.jdt.core.formatter.indent_empty_lines=false\n+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true\n+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true\n+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true\n+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false\n+org.eclipse.jdt.core.formatter.indentation.size=4\n+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert\n+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert\n+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert\n+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert\n+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert\n+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false\n+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false\n+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false\n+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false\n+org.eclipse.jdt.core.formatter.lineSplit=80\n+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0\n+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1\n+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true\n+org.eclipse.jdt.core.formatter.tabulation.char=tab\n+org.eclipse.jdt.core.formatter.tabulation.size=4\n+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false\ndiff --git a/org.spearce.egit.ui.test/All org.spearce.egit.ui tests.launch b/org.spearce.egit.ui.test/All org.spearce.egit.ui tests.launch\nnew file mode 100644\nindex 0000000..23a74e2\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/All org.spearce.egit.ui tests.launch\t\n@@ -0,0 +1,41 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<launchConfiguration type=\"net.sf.swtbot.eclipse.ui.launcher.JunitLaunchConfig\">\n+<booleanAttribute key=\"append.args\" value=\"true\"/>\n+<booleanAttribute key=\"askclear\" value=\"false\"/>\n+<booleanAttribute key=\"automaticAdd\" value=\"true\"/>\n+<booleanAttribute key=\"automaticValidate\" value=\"false\"/>\n+<stringAttribute key=\"bootstrap\" value=\"\"/>\n+<stringAttribute key=\"checked\" value=\"[NONE]\"/>\n+<booleanAttribute key=\"clearConfig\" value=\"true\"/>\n+<booleanAttribute key=\"clearws\" value=\"true\"/>\n+<booleanAttribute key=\"clearwslog\" value=\"false\"/>\n+<stringAttribute key=\"configLocation\" value=\"${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit\"/>\n+<booleanAttribute key=\"default\" value=\"true\"/>\n+<booleanAttribute key=\"includeOptional\" value=\"true\"/>\n+<stringAttribute key=\"location\" value=\"${workspace_loc}/../junit-workspace\"/>\n+<listAttribute key=\"org.eclipse.debug.core.MAPPED_RESOURCE_PATHS\">\n+<listEntry value=\"/org.spearce.egit.ui.test\"/>\n+</listAttribute>\n+<listAttribute key=\"org.eclipse.debug.core.MAPPED_RESOURCE_TYPES\">\n+<listEntry value=\"4\"/>\n+</listAttribute>\n+<mapAttribute key=\"org.eclipse.debug.core.environmentVariables\">\n+<mapEntry key=\"LC_ALL\" value=\"C\"/>\n+</mapAttribute>\n+<stringAttribute key=\"org.eclipse.jdt.junit.CONTAINER\" value=\"=org.spearce.egit.ui.test\"/>\n+<booleanAttribute key=\"org.eclipse.jdt.junit.KEEPRUNNING_ATTR\" value=\"false\"/>\n+<stringAttribute key=\"org.eclipse.jdt.junit.TESTNAME\" value=\"\"/>\n+<stringAttribute key=\"org.eclipse.jdt.junit.TEST_KIND\" value=\"org.eclipse.jdt.junit.loader.junit3\"/>\n+<stringAttribute key=\"org.eclipse.jdt.launching.MAIN_TYPE\" value=\"\"/>\n+<stringAttribute key=\"org.eclipse.jdt.launching.PROGRAM_ARGUMENTS\" value=\"-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl en_US\"/>\n+<stringAttribute key=\"org.eclipse.jdt.launching.PROJECT_ATTR\" value=\"org.spearce.egit.ui.test\"/>\n+<stringAttribute key=\"org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER\" value=\"org.eclipse.pde.ui.workbenchClasspathProvider\"/>\n+<stringAttribute key=\"org.eclipse.jdt.launching.VM_ARGUMENTS\" value=\"-Dnet.sf.swtbot.search.timeout=500000\"/>\n+<stringAttribute key=\"pde.version\" value=\"3.3\"/>\n+<stringAttribute key=\"product\" value=\"org.eclipse.sdk.ide\"/>\n+<booleanAttribute key=\"show_selected_only\" value=\"false\"/>\n+<booleanAttribute key=\"tracing\" value=\"false\"/>\n+<booleanAttribute key=\"useDefaultConfig\" value=\"true\"/>\n+<booleanAttribute key=\"useDefaultConfigArea\" value=\"false\"/>\n+<booleanAttribute key=\"useProduct\" value=\"true\"/>\n+</launchConfiguration>\ndiff --git a/org.spearce.egit.ui.test/META-INF/MANIFEST.MF b/org.spearce.egit.ui.test/META-INF/MANIFEST.MF\nnew file mode 100644\nindex 0000000..9059c4a\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/META-INF/MANIFEST.MF\n@@ -0,0 +1,19 @@\n+Manifest-Version: 1.0\n+Bundle-ManifestVersion: 2\n+Bundle-Name: Test Plug-in\n+Bundle-SymbolicName: org.spearce.egit.ui.test\n+Bundle-Version: 0.4.0.qualifier\n+Bundle-Activator: org.spearce.egit.ui.test.Activator\n+Require-Bundle: org.eclipse.core.runtime,\n+ org.spearce.egit.ui;bundle-version=\"0.4.0\",\n+ net.sf.swtbot.eclipse.finder;bundle-version=\"2.0.0\",\n+ net.sf.swtbot.eclipse.spy;bundle-version=\"2.0.0\",\n+ net.sf.swtbot.eclipse.ui;bundle-version=\"2.0.0\",\n+ net.sf.swtbot.finder;bundle-version=\"2.0.0\",\n+ org.eclipse.swt;bundle-version=\"3.4.0\",\n+ org.eclipse.ui;bundle-version=\"3.4.0\",\n+ org.eclipse.core.resources;bundle-version=\"3.4.0\",\n+ org.spearce.jgit;bundle-version=\"0.4.0\",\n+ org.apache.log4j;bundle-version=\"1.2.13\"\n+Bundle-ActivationPolicy: lazy\n+Bundle-RequiredExecutionEnvironment: JavaSE-1.6\ndiff --git a/org.spearce.egit.ui.test/build.properties b/org.spearce.egit.ui.test/build.properties\nnew file mode 100644\nindex 0000000..34d2e4d\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/build.properties\n@@ -0,0 +1,4 @@\n+source.. = src/\n+output.. = bin/\n+bin.includes = META-INF/,\\\n+               .\ndiff --git a/org.spearce.egit.ui.test/src/org/spearce/egit/ui/internal/sharing/GitCloneWizardTest.java b/org.spearce.egit.ui.test/src/org/spearce/egit/ui/internal/sharing/GitCloneWizardTest.java\nnew file mode 100644\nindex 0000000..393ce8b\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/src/org/spearce/egit/ui/internal/sharing/GitCloneWizardTest.java\n@@ -0,0 +1,480 @@\n+package org.spearce.egit.ui.internal.sharing;\n+\n+import java.io.File;\n+import java.io.FileOutputStream;\n+import java.io.IOException;\n+\n+import net.sf.swtbot.eclipse.finder.SWTBotEclipseTestCase;\n+import net.sf.swtbot.wait.Conditions;\n+import net.sf.swtbot.widgets.SWTBotShell;\n+import net.sf.swtbot.widgets.SWTBotTree;\n+\n+import org.eclipse.core.resources.ResourcesPlugin;\n+import org.eclipse.core.runtime.Platform;\n+import org.spearce.jgit.lib.Repository;\n+\n+/**\n+ * UI Tests for the Git import wizard.\n+ * <p>\n+ * Only UI aspects are interesting.\n+ * <p>\n+ * TODO:\n+ * <ul>\n+ * <li>Failure at fetch step\n+ * <li>Failure during fetch step\n+ * <li>Failure post fetch step (bad repo?)\n+ * </ul>\n+ */\n+public class GitCloneWizardTest extends SWTBotEclipseTestCase {\n+\t/**\n+\t * Test that defaults and derived values in dialogs are set properly and\n+\t * that cloning starts and stops properly for a normal run. It also samples\n+\t * the cloned repository to see that a clone and checkout has occurred.\n+\t * <p>\n+\t * The clone is backgrounded so no import to the workspace, nor any sharing\n+\t * occurs.\n+\t *\n+\t * @throws Exception\n+\t */\n+\tpublic void testClone() throws Exception {\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\n+\t\tbot.button(\"Next >\").click();\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.jgit.org/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git\", \"\", true, \"\",\n+\t\t\t\t\"\", false, false);\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tassertEquals(\"master\", bot.table().getTableItem(0).getText());\n+\t\tassertTrue(bot.table().getTableItem(0).isChecked());\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tFile destRepo = new File(new File(ResourcesPlugin.getWorkspace()\n+\t\t\t\t.getRoot().getLocation().toFile().getParent(),\n+\t\t\t\t\"junit-workspace\"), \"EGIT\");\n+\t\tassertEquals(destRepo.toString(), bot.textWithLabel(\"Directory:\")\n+\t\t\t\t.getText());\n+\t\tassertEquals(\"master\", bot.comboBoxWithLabel(\"Initial branch:\")\n+\t\t\t\t.getText());\n+\t\tassertEquals(\"origin\", bot.textWithLabel(\"Remote name:\").getText());\n+\t\tbot.checkBox(\"Import projects after clone\").deselect();\n+\t\tbot.button(\"Finish\").click();\n+\n+\t\tSWTBotShell shell2 = bot.shell(\"Cloning from git://www.jgit.org/EGIT\");\n+\n+\t\t// This is not a performance test. Allow lots of time to complete\n+\t\tbot.waitUntil(Conditions.shellCloses(shell2), 120000);\n+\n+\t\t// Some random sampling to see we got something. We do not test\n+\t\t// the integrity of the repository here. Only a few basic properties\n+\t\t// we'd expect from a clone made this way, that would possibly\n+\t\t// not hold true given other parameters in the GUI.\n+\t\tRepository repository = new Repository(new File(destRepo, \".git\"));\n+\t\t// we always have an origin/master\n+\t\tassertNotNull(repository.resolve(\"origin/master\"));\n+\t\t// and a local master initialized from origin/master (default!)\n+\t\tassertEquals(repository.resolve(\"origin/master\"), repository\n+\t\t\t\t.resolve(\"origin/master\"));\n+\t\t// A well known tag\n+\t\tassertEquals(\"90b818e596660b813b6fcf68f1e9e9b62c615130\", repository\n+\t\t\t\t.resolve(\"refs/tags/v0.4.0\").name());\n+\t\t// lots of refs\n+\t\tassertTrue(repository.getAllRefs().size() >= 10);\n+\t\t// and a README in the working dir\n+\t\tassertTrue(new File(destRepo, \"README\").exists());\n+\t\tassertFalse(repository.getIndex().isChanged());\n+\t\tassertFalse(repository.getIndex().getEntry(\"README\").isModified(\n+\t\t\t\tdestRepo));\n+\t\t// No project have been imported\n+\t\tassertEquals(0,\n+\t\t\t\tResourcesPlugin.getWorkspace().getRoot().getProjects().length);\n+\t}\n+\n+\t/**\n+\t * Basically the same as testClone, but using the same parameters will not\n+\t * work because the destination already exists and so the UI will not let\n+\t * the user finish the operation. This tests that case for default\n+\t * parameters.\n+\t *\n+\t * @throws Exception\n+\t */\n+\tpublic void testCloneDestExists() throws Exception {\n+\t\tFile destRepo = new File(new File(ResourcesPlugin.getWorkspace()\n+\t\t\t\t.getRoot().getLocation().toFile().getParent(),\n+\t\t\t\t\"junit-workspace\"), \"EGIT\");\n+\t\tif (!destRepo.exists()) {\n+\t\t\tif (!destRepo.mkdirs())\n+\t\t\t\tthrow new IOException(\"Ooops, failed to create \" + destRepo);\n+\t\t\tnew FileOutputStream(new File(destRepo, \"afile\")).close();\n+\t\t}\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\tbot.textWithLabel(\"URI:\");\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.jgit.org/EGIT\");\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tbot.checkBox(\"Import projects after clone\").deselect();\n+\t\tassertFalse(bot.button(\"Finish\").isEnabled());\n+\t\tassertEquals(\" \" + bot.textWithLabel(\"Directory:\").getText()\n+\t\t\t\t+ \" is not an empty directory.\", bot.text(2/* ! */).getText());\n+\n+\t\t// Need to close or no other test can be performed\n+\t\tbot.activeShell().close();\n+\t}\n+\n+\t/**\n+\t * Alter some parameters during clone\n+\t * @throws IOException\n+\t */\n+\tpublic void testCloneChangeSomeParameters() throws IOException {\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.jgit.org/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git\", \"\", true, \"\",\n+\t\t\t\t\"\", false, false);\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\t// Select only two branches\n+\t\tfor (int i = 0; i < bot.table().rowCount(); ++i)\n+\t\t\tbot.table().getTableItem(i).uncheck();\n+\t\tassertEquals(\" At least one branch must be selected.\", bot.text(0)\n+\t\t\t\t.getText());\n+\t\tassertFalse(bot.button(\"Next >\").isEnabled());\n+\t\tbot.table().getTableItem(\"stable\").check(); // will enable\n+\t\tassertTrue(bot.button(\"Next >\").isEnabled());\n+\t\tbot.table().getTableItem(\"release\").check();\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tFile destRepo = new File(new File(ResourcesPlugin.getWorkspace()\n+\t\t\t\t.getRoot().getLocation().toFile().getParent(),\n+\t\t\t\t\"junit-workspace\"), \"EGIT2\");\n+\t\tbot.textWithLabel(\"Directory:\").setText(destRepo.toString());\n+\t\tassertEquals(\"release\", bot.comboBoxWithLabel(\"Initial branch:\")\n+\t\t\t\t.getText());\n+\t\tbot.comboBoxWithLabel(\"Initial branch:\").setSelection(\"stable\");\n+\t\tassertEquals(\"origin\", bot.textWithLabel(\"Remote name:\").getText());\n+\t\tbot.textWithLabel(\"Remote name:\").setText(\"src\");\n+\t\tbot.checkBox(\"Import projects after clone\").deselect();\n+\t\tbot.button(\"Finish\").click();\n+\n+\t\tSWTBotShell shell2 = bot.shell(\"Cloning from git://www.jgit.org/EGIT\");\n+\n+\t\t// This is not a performance test. Allow lots of time to complete\n+\t\tbot.waitUntil(Conditions.shellCloses(shell2), 120000);\n+\n+\t\t// Some random sampling to see we got something. We do not test\n+\t\t// the integrity of the repo here. Only a few basic properties\n+\t\t// we'd expect from a clone made this way, that would possibly\n+\t\t// not hold true given othe parameters in the GUI.\n+\t\tRepository repository = new Repository(new File(destRepo, \".git\"));\n+\t\tassertNotNull(repository.resolve(\"src/stable\"));\n+\t\tassertNotNull(repository.resolve(\"src/release\"));\n+\t\t// we didn't clone that one\n+\t\tassertNull(repository.resolve(\"src/master\"));\n+\t\t// and a local master initialized from origin/master (default!)\n+\t\tassertEquals(repository.resolve(\"stable\"), repository\n+\t\t\t\t.resolve(\"src/stable\"));\n+\t\t// A well known tag\n+\t\tassertEquals(\"90b818e596660b813b6fcf68f1e9e9b62c615130\", repository\n+\t\t\t\t.resolve(\"refs/tags/v0.4.0\").name());\n+\t\t// lots of refs\n+\t\tassertTrue(repository.getAllRefs().size() >= 10);\n+\n+\t\t// Skip testing working dir, we did that in #testClone\n+\t}\n+\n+\t/**\n+\t * Exercise editing of fields and verify that derived fields are updated and\n+\t * enabled/disabled properly along with a proper error message when needed.\n+\t * No clone is actually made.\n+\t */\n+\tpublic void testParameterEditing() {\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\t\tbot.button(\"Next >\").click();\n+\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\t// Start the test now\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.jgit.org/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git\", \"\", true, \"\",\n+\t\t\t\t\"\", false, false);\n+\n+\t\tbot.textWithLabel(\"URI:\").typeText(\"X\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGITX\", \"git\", \"\", true, \"\",\n+\t\t\t\t\"\", false, false);\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.jgit.org/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git\", \"\", true, \"\",\n+\t\t\t\t\"\", false, false);\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://user:hi@www.jgit.org/EGIT\");\n+\t\tassertSourceParams(\" User not supported on git protocol.\",\n+\t\t\t\t\"www.jgit.org\", \"/EGIT\", \"git\", \"\", true, \"user\", \"hi\", false,\n+\t\t\t\tfalse);\n+\t\t// UI doesn't change URI even when password is entered in clear text as\n+\t\t// part of URI. Opinions on this may vary.\n+\t\tassertEquals(\"git://user:hi@www.jgit.org/EGIT\", bot.textWithLabel(\n+\t\t\t\t\"URI:\").getText());\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"ssh://user@www.jgit.org/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git+ssh\", \"\", true,\n+\t\t\t\t\"user\", \"\", true, true);\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"ssh://user@www.jgit.org/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git+ssh\", \"\", true,\n+\t\t\t\t\"user\", \"\", true, true);\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"ssh://user:hi@www.jgit.org:33/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git+ssh\", \"33\",\n+\t\t\t\ttrue, \"user\", \"hi\", true, true);\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"ssh:///EGIT\");\n+\t\tassertSourceParams(\" Host required for ssh protocol.\", \"\", \"/EGIT\",\n+\t\t\t\t\"git+ssh\", \"\", true, \"\", \"\", true, true);\n+\n+\t\tbot.textWithLabel(\"URI:\").setText(\"file:///some/place\");\n+\t\tif (Platform.getOS().equals(Platform.OS_WIN32))\n+\t\t\tassertSourceParams(\" \" + System.getProperty(\"user.dir\")\n+\t\t\t\t\t+ \"\\\\.\\\\some\\\\place does not exist.\", \"\", \"/some/place\",\n+\t\t\t\t\t\"file\", \"\", false, \"\", \"\", false, false);\n+\t\telse\n+\t\t\tassertSourceParams(\" /some/place does not exist.\", \"\",\n+\t\t\t\t\t\"/some/place\", \"file\", \"\", false, \"\", \"\", false, false);\n+\n+\t\t// Now try changing some fields other than URI and see how the URI field\n+\t\t// gets changed\n+\t\tbot.textWithLabel(\"URI:\").setText(\"ssh://user@www.jgit.org/EGIT\");\n+\n+\t\t// ..change host\n+\t\tbot.textWithLabel(\"Host:\").setText(\"example.com\");\n+\t\tassertEquals(\"ssh://user@example.com/EGIT\", bot.textWithLabel(\"URI:\")\n+\t\t\t\t.getText());\n+\t\tassertSourceParams(null, \"example.com\", \"/EGIT\", \"git+ssh\", \"\", true,\n+\t\t\t\t\"user\", \"\", true, true);\n+\n+\t\t// ..change user\n+\t\tbot.textWithLabel(\"User:\").setText(\"gitney\");\n+\t\tassertEquals(\"ssh://gitney@example.com/EGIT\", bot.textWithLabel(\"URI:\")\n+\t\t\t\t.getText());\n+\t\tassertSourceParams(null, \"example.com\", \"/EGIT\", \"git+ssh\", \"\", true,\n+\t\t\t\t\"gitney\", \"\", true, true);\n+\n+\t\t// ..change password\n+\t\tbot.textWithLabel(\"Password:\").setText(\"fsck\");\n+\t\t// Password is not written into the URL here!\n+\t\tassertEquals(\"ssh://gitney@example.com/EGIT\", bot.textWithLabel(\"URI:\")\n+\t\t\t\t.getText());\n+\t\tassertSourceParams(null, \"example.com\", \"/EGIT\", \"git+ssh\", \"\", true,\n+\t\t\t\t\"gitney\", \"fsck\", true, true);\n+\n+\t\t// change port number\n+\t\tbot.textWithLabel(\"Port:\").setText(\"99\");\n+\t\tassertEquals(\"ssh://gitney@example.com:99/EGIT\", bot.textWithLabel(\n+\t\t\t\t\"URI:\").getText());\n+\t\tassertSourceParams(null, \"example.com\", \"/EGIT\", \"git+ssh\", \"99\", true,\n+\t\t\t\t\"gitney\", \"fsck\", true, true);\n+\n+\t\t// change protocol to another with user/password capability\n+\t\tbot.comboBoxWithLabel(\"Protocol:\").setSelection(\"ftp\");\n+\t\tassertEquals(\"ftp://gitney@example.com:99/EGIT\", bot.textWithLabel(\n+\t\t\t\t\"URI:\").getText());\n+\t\tassertSourceParams(null, \"example.com\", \"/EGIT\", \"ftp\", \"99\", true,\n+\t\t\t\t\"gitney\", \"fsck\", true, true);\n+\n+\t\t// change protocol to one without user/password capability\n+\t\tbot.comboBoxWithLabel(\"Protocol:\").setSelection(\"git\");\n+\t\tassertEquals(\"git://gitney@example.com:99/EGIT\", bot.textWithLabel(\n+\t\t\t\t\"URI:\").getText());\n+\t\tassertSourceParams(\" User not supported on git protocol.\",\n+\t\t\t\t\"example.com\", \"/EGIT\", \"git\", \"99\", true, \"gitney\", \"fsck\",\n+\t\t\t\tfalse, false);\n+\n+\t\t// change protocol to one without host capability\n+\t\tbot.comboBoxWithLabel(\"Protocol:\").setSelection(\"file\");\n+\t\tassertEquals(\"file://gitney@example.com:99/EGIT\", bot.textWithLabel(\n+\t\t\t\t\"URI:\").getText());\n+\t\tassertSourceParams(\" Host not supported on file protocol.\",\n+\t\t\t\t\"example.com\", \"/EGIT\", \"file\", \"99\", false, \"gitney\", \"fsck\",\n+\t\t\t\tfalse, false);\n+\n+\t\t// Local protocol with file: prefix. We need to make sure the\n+\t\t// local path exists as a directory so we choose user.home as\n+\t\t// that one should exist.\n+\t\tif (Platform.getOS().equals(Platform.OS_WIN32))\n+\t\t\tbot.textWithLabel(\"URI:\").setText(\n+\t\t\t\t\t\"file:///\" + System.getProperty(\"user.home\"));\n+\t\telse\n+\t\t\tbot.textWithLabel(\"URI:\").setText(\n+\t\t\t\t\t\"file://\" + System.getProperty(\"user.home\"));\n+\t\tassertSourceParams(null, \"\", System.getProperty(\"user.home\").replace(\n+\t\t\t\t'\\\\', '/'), \"file\", \"\", false, \"\", \"\", false, false);\n+\n+\t\t// Local protocol without file: prefix\n+\t\tbot.textWithLabel(\"URI:\").setText(System.getProperty(\"user.home\"));\n+\t\tassertSourceParams(null, \"\", System.getProperty(\"user.home\").replace(\n+\t\t\t\t'\\\\', '/'), \"file\", \"\", false, \"\", \"\", false, false);\n+\n+\t\t// On windows the use can choose forward or backward slashes, so add\n+\t\t// a case for forward slashes using the non prefixed local protocol.\n+\t\tif (Platform.getOS().equals(Platform.OS_WIN32)) {\n+\t\t\tbot.textWithLabel(\"URI:\").setText(\n+\t\t\t\t\tSystem.getProperty(\"user.home\").replace('\\\\', '/'));\n+\t\t\tassertSourceParams(null, \"\", System.getProperty(\"user.home\")\n+\t\t\t\t\t.replace('\\\\', '/'), \"file\", \"\", false, \"\", \"\", false,\n+\t\t\t\t\tfalse);\n+\t\t}\n+\t\tbot.button(\"Cancel\").click();\n+\t}\n+\n+\t/**\n+\t * Try not giving a hostname that does not exist. Should yield an error and\n+\t * disable the next/finish buttons.\n+\t */\n+\tpublic void testNoSuchHost() {\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\n+\t\tbot.button(\"Next >\").click();\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://no.example.com/EGIT\");\n+\t\tassertSourceParams(null, \"no.example.com\", \"/EGIT\", \"git\", \"\", true,\n+\t\t\t\t\"\", \"\", false, false);\n+\t\tbot.button(\"Next >\").click();\n+\t\tassertEquals(\" git://no.example.com/EGIT: unknown host\", bot.text(0)\n+\t\t\t\t.getText());\n+\t\tassertTrue(bot.button(\"Cancel\").isEnabled());\n+\t\tassertTrue(bot.button(\"< Back\").isEnabled());\n+\t\tassertFalse(bot.button(\"Next >\").isEnabled());\n+\t\tassertFalse(bot.button(\"Finish\").isEnabled());\n+\t\tbot.button(\"Cancel\").click();\n+\t}\n+\n+\t/**\n+\t * Try connecting to a non-git socket.\n+\t */\n+\tpublic void testWrongSocket() {\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\n+\t\tbot.button(\"Next >\").click();\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.jgit.org:80/EGIT\");\n+\t\tassertSourceParams(null, \"www.jgit.org\", \"/EGIT\", \"git\", \"80\", true,\n+\t\t\t\t\"\", \"\", false, false);\n+\t\tbot.button(\"Next >\").click();\n+\t\tassertEquals(\" git://www.jgit.org:80/EGIT: not found.\", bot.text(0)\n+\t\t\t\t.getText());\n+\t\tassertTrue(bot.button(\"Cancel\").isEnabled());\n+\t\tassertTrue(bot.button(\"< Back\").isEnabled());\n+\t\tassertFalse(bot.button(\"Next >\").isEnabled());\n+\t\tassertFalse(bot.button(\"Finish\").isEnabled());\n+\t\tbot.button(\"Cancel\").click();\n+\t}\n+\n+\t/**\n+\t * Firewalled socket, no response.\n+\t */\n+\tpublic void testTimeoutToHost() {\n+\t\tbot.view(\"Package Explorer\").show();\n+\t\tbot.menu(\"File\").click();\n+\t\tbot.menu(\"File\").menu(\"Import...\").click();\n+\t\tbot.shell(\"Import\");\n+\n+\t\tSWTBotTree tree = bot.tree(0);\n+\t\ttree.expandNode(\"Git\").select(\"Git Repository\");\n+\n+\t\tbot.button(\"Next >\").click();\n+\t\tbot.shell(\"Import Git Repository\");\n+\t\tbot.textWithLabel(\"URI:\").setText(\"git://www.example.com/EGIT\");\n+\t\tassertSourceParams(null, \"www.example.com\", \"/EGIT\", \"git\", \"\", true,\n+\t\t\t\t\"\", \"\", false, false);\n+\t\tbot.button(\"Next >\").click();\n+\t\t// Timeout messages are platform and locale dependent it seems. This\n+\t\t// test has only been tried on Linux and Windows. We assume\n+\t\t// that the test is run with an english locale for this test to pass.\n+\t\t// -nl en_US and environment LC_ALL=en_US (or possibly the \"C\" locale).\n+\t\tassertStartsWith(\" git://www.example.com/EGIT: Connection timed out\",\n+\t\t\t\tbot.text(0).getText());\n+\t\tassertTrue(bot.button(\"Cancel\").isEnabled());\n+\t\tassertTrue(bot.button(\"< Back\").isEnabled());\n+\t\tassertFalse(bot.button(\"Next >\").isEnabled());\n+\t\tassertFalse(bot.button(\"Finish\").isEnabled());\n+\t\tbot.button(\"Cancel\").click();\n+\t}\n+\n+\tprivate void assertStartsWith(String expect, String actual) {\n+\t\tif (actual.length() < expect.length())\n+\t\t\tassertEquals(\"Wrong start of message\", expect, actual);\n+\t\telse\n+\t\t\tassertEquals(\"Wrong start of message\", expect, actual.substring(0,\n+\t\t\t\t\texpect.length()));\n+\t}\n+\n+\tprivate void assertSourceParams(String message, String expectHost,\n+\t\t\tString expectPath, String expectProtocol, String expectPort,\n+\t\t\tboolean enablePort, String expectUser, String expectPassword,\n+\t\t\tboolean enabledUser, boolean enabledPass) {\n+\t\tif (message != null) {\n+\t\t\tassertEquals(message, bot.text(6).getText());\n+\t\t\tassertFalse(bot.button(\"Next >\").isEnabled());\n+\t\t} else {\n+\t\t\tassertEquals(\"Enter the location of the source repository.\", bot\n+\t\t\t\t\t.text(6).getText());\n+\t\t\tassertTrue(bot.button(\"Next >\").isEnabled());\n+\t\t}\n+\t\tassertEquals(expectHost, bot.textWithLabel(\"Host:\").getText());\n+\t\tassertEquals(expectPath, bot.textWithLabel(\"Repository path:\")\n+\t\t\t\t.getText());\n+\t\tassertEquals(expectProtocol, bot.comboBoxWithLabel(\"Protocol:\")\n+\t\t\t\t.getText());\n+\t\tassertEquals(expectPort, bot.textWithLabel(\"Port:\").getText());\n+\t\tassertEquals(enablePort, bot.textWithLabel(\"Port:\").isEnabled());\n+\t\tassertEquals(expectUser, bot.textWithLabel(\"User:\").getText());\n+\t\tassertEquals(expectPassword, bot.textWithLabel(\"Password:\").getText());\n+\t\tassertEquals(enabledUser, bot.textWithLabel(\"User:\").isEnabled());\n+\t\tassertEquals(enabledPass, bot.label(\"Password:\").isEnabled());\n+\t\tassertEquals(enabledPass, bot.textWithLabel(\"Password:\").isEnabled());\n+\t}\n+}\ndiff --git a/org.spearce.egit.ui.test/src/org/spearce/egit/ui/test/Activator.java b/org.spearce.egit.ui.test/src/org/spearce/egit/ui/test/Activator.java\nnew file mode 100644\nindex 0000000..b6ecb00\n--- /dev/null\n+++ b/org.spearce.egit.ui.test/src/org/spearce/egit/ui/test/Activator.java\n@@ -0,0 +1,50 @@\n+package org.spearce.egit.ui.test;\n+\n+import org.eclipse.core.runtime.Plugin;\n+import org.osgi.framework.BundleContext;\n+\n+/**\n+ * The activator class controls the plug-in life cycle\n+ */\n+public class Activator extends Plugin {\n+\n+\t// The plug-in ID\n+\tpublic static final String PLUGIN_ID = \"org.spearce.egit.ui.test\";\n+\n+\t// The shared instance\n+\tprivate static Activator plugin;\n+\t\n+\t/**\n+\t * The constructor\n+\t */\n+\tpublic Activator() {\n+\t}\n+\n+\t/*\n+\t * (non-Javadoc)\n+\t * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)\n+\t */\n+\tpublic void start(BundleContext context) throws Exception {\n+\t\tsuper.start(context);\n+\t\tplugin = this;\n+\t}\n+\n+\t/*\n+\t * (non-Javadoc)\n+\t * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)\n+\t */\n+\tpublic void stop(BundleContext context) throws Exception {\n+\t\tplugin = null;\n+\t\tsuper.stop(context);\n+\t}\n+\n+\t/**\n+\t * Returns the shared instance\n+\t *\n+\t * @return the shared instance\n+\t */\n+\tpublic static Activator getDefault() {\n+\t\treturn plugin;\n+\t}\n+\n+}\n-- \n1.6.1.rc3.56.gd0306\n"},{"id":"99729","messageId":"200901081945.41067.robin.rosenberg.lists@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-8-git-send-email-robin.rosenberg@dewire.com","subject":"Re: [EGIT PATCH 7/7] Create an automatic UI test for the Git Import Wizard","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2009-01-08T18:45:40Z","receivedAt":"2009-01-08T18:45:40Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Oops. We should not require Java 6 yet. Please squash this in.\n\n-- robin\n\ndiff --git a/org.spearce.egit.ui.test/.classpath b/org.spearce.egit.ui.test/.classpath\nindex 76279f3..13116da 100644\n--- a/org.spearce.egit.ui.test/.classpath\n+++ b/org.spearce.egit.ui.test/.classpath\n@@ -1,6 +1,6 @@\n <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <classpath>\n-\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6\"/>\n+\t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5\"/>\n \t<classpathentry kind=\"con\" path=\"org.eclipse.pde.core.requiredPlugins\"/>\n \t<classpathentry kind=\"src\" path=\"src\"/>\n \t<classpathentry kind=\"con\" path=\"org.eclipse.jdt.junit.JUNIT_CONTAINER/3\"/>\n"},{"id":"99730","messageId":"200901081957.20591.robin.rosenberg.lists@dewire.com","threadId":"17052","inReplyTo":"1231433791-9267-8-git-send-email-robin.rosenberg@dewire.com","subject":"Re: [EGIT PATCH 7/7] Create an automatic UI test for the Git Import Wizard","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2009-01-08T18:57:20Z","receivedAt":"2009-01-08T18:57:20Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"\nWe could hold onto this patch. It might be better if we start the built in git daemon and clone\nfrom it, or from file, instread of jgit.org, but please try it out and see if it looks like a good a approach to\nuse SWTBot for UI tests.\n\n-- robin\n"},{"id":"100134","messageId":"20090112164514.GG10179@spearce.org","threadId":"17052","inReplyTo":"200901081957.20591.robin.rosenberg.lists@dewire.com","subject":"Re: [EGIT PATCH 7/7] Create an automatic UI test for the Git Import Wizard","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2009-01-12T16:45:14Z","receivedAt":"2009-01-12T16:45:14Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Robin Rosenberg <robin.rosenberg.lists@dewire.com> wrote:\n> \n> We could hold onto this patch. It might be better if we start the built in git daemon and clone\n> from it, or from file, instread of jgit.org, but please try it out and see if it looks like a good a approach to\n> use SWTBot for UI tests.\n\nI'm not applying this patch for two reasons:\n\n1) I spent 30 minutes trying to get SWTBot installed and running,\nI gave up.  It doesn't want to run in my Eclipse.  Heck, I didn't\neven get as far as running, I couldn't get it to install far enough\nto get the project to compile.\n\n2) I really want to avoid remote network access during JUnit tests.\nNow that we have our own server process we can run it over a pipe\nor something to do this test.  Or at worst, bind to a random port\non the loopback and have the client clone from that port.\n\n-- \nShawn.\n"}]}