Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMichael Valenta2007-09-14 14:59:46 +0000
committerMichael Valenta2007-09-14 14:59:46 +0000
commitfdec54b2df70063baf05b97f286a681fb664c5da (patch)
treee96be0651aea6ec86955b99d988084bd1cfc28af /tests
parent16eb82f677d842c746b341ccd2f31c701707f2b9 (diff)
downloadeclipse.platform.team-fdec54b2df70063baf05b97f286a681fb664c5da.tar.gz
eclipse.platform.team-fdec54b2df70063baf05b97f286a681fb664c5da.tar.xz
eclipse.platform.team-fdec54b2df70063baf05b97f286a681fb664c5da.zip
Bug 199108 [Project Sets] Project set import dialog should pick best match
Diffstat (limited to 'tests')
-rw-r--r--tests/org.eclipse.team.tests.cvs.core/launchConfigurations/One CVS Test.launch68
-rw-r--r--tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java1
-rw-r--r--tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProjectSetImportTest.java291
3 files changed, 327 insertions, 33 deletions
diff --git a/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/One CVS Test.launch b/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/One CVS Test.launch
index 11e6c1b29..1f90f5e5a 100644
--- a/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/One CVS Test.launch
+++ b/tests/org.eclipse.team.tests.cvs.core/launchConfigurations/One CVS Test.launch
@@ -1,7 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.team.tests.ccvs.core.provider.CVSProviderTest"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/One CVS Test"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeFragments" value="false"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="C:\Eclipse\Latest-Eclipse-Drop\eclipse\runtime-test-workspace"/>
+<stringAttribute key="location1" value="C:\Eclipse\Latest-Eclipse-Drop\eclipse\runtime-test-workspace"/>
+<booleanAttribute key="onePlugin" value="false"/>
+<stringAttribute key="onePluginID" value=""/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ProjectSetImportTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.team.tests.ccvs.core.provider.CVSProjectSetImportTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os win32 -ws win32 -arch x86 -nl en_CA"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.team.tests.cvs.core"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.cvs.properties=c:\eclipse\repository.properties -Declipse.cvs.testName2=testSaveOnUpdateWhenDirty"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="tracing" value="false"/>
<mapAttribute key="tracingOptions">
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
@@ -249,38 +281,8 @@
<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
<mapEntry key="org.eclipse.jface/newlook/preferences/showNewLook" value="false"/>
</mapAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.team.tests.cvs.core"/>
-<booleanAttribute key="onePlugin" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<stringAttribute key="location" value="C:\Eclipse\Latest-Eclipse-Drop\eclipse\runtime-test-workspace"/>
-<booleanAttribute key="askclear" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.cvs.properties=c:\eclipse\repository.properties -Declipse.cvs.testName2=testSaveOnUpdateWhenDirty"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<booleanAttribute key="clearConfig" value="true"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<booleanAttribute key="automaticValidate" value="false"/>
<booleanAttribute key="useDefaultConfig" value="true"/>
-<stringAttribute key="location1" value="C:\Eclipse\Latest-Eclipse-Drop\eclipse\runtime-test-workspace"/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os win32 -ws win32 -arch x86 -nl en_CA"/>
-<stringAttribute key="configLocation" value=""/>
-<stringAttribute key="onePluginID" value=""/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="useNamedJRE" value="true"/>
+<booleanAttribute key="useProduct" value="false"/>
</launchConfiguration>
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java
index f84630b08..b67ce29d3 100644
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java
+++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java
@@ -34,6 +34,7 @@ public class AllTestsProvider extends EclipseTest {
suite.addTest(WatchEditTest.suite());
suite.addTest(LinkResourcesTest.suite());
suite.addTest(IsModifiedTests.suite());
+ suite.addTest(CVSProjectSetImportTest.suite());
return new CVSTestSetup(suite);
}
}
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProjectSetImportTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProjectSetImportTest.java
new file mode 100644
index 000000000..9af574285
--- /dev/null
+++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProjectSetImportTest.java
@@ -0,0 +1,291 @@
+package org.eclipse.team.tests.ccvs.core.provider;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.team.internal.ccvs.core.CVSProjectSetCapability;
+import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
+import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
+import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
+import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
+
+/**
+ * This class tests an algorithm which suggests alternative repository locations
+ * when importing a project set.
+ */
+public class CVSProjectSetImportTest extends TestCase {
+
+ private KnownRepositories knownRepositories;
+ private ICVSRepositoryLocation[] savedRepositories;
+
+ public CVSProjectSetImportTest() {
+ super();
+ }
+
+ public CVSProjectSetImportTest(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(CVSProjectSetImportTest.class);
+ return new CVSTestSetup(suite);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ knownRepositories = KnownRepositories.getInstance();
+ savedRepositories = knownRepositories.getRepositories();
+ // dispose all known repositories
+ for (int i = 0; i < savedRepositories.length; i++) {
+ knownRepositories.disposeRepository(savedRepositories[i]);
+ }
+ }
+
+ public void testNullInfoMap() {
+ IProject[] projects = new IProject[] { null };
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ null);
+ assertTrue(alternativeMap.isEmpty());
+ }
+
+ public void testEmptyInfoMap() {
+ IProject[] projects = new IProject[] { null };
+ Map infoMap = new HashMap();
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertTrue(alternativeMap.isEmpty());
+
+ assertEquals(0, knownRepositories.getRepositories().length);
+ }
+
+ public void testEmptyReferenceStrings() throws Exception {
+ String[] referenceStrings = new String[] {};
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertTrue(alternativeMap.isEmpty());
+
+ assertEquals(0, knownRepositories.getRepositories().length);
+ }
+
+ public void testMalformedReferenceString() throws Exception {
+ String[] referenceStrings = new String[] { "Hi, I'm a malformed reference string." };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertTrue(alternativeMap.isEmpty());
+
+ assertEquals(0, knownRepositories.getRepositories().length);
+ }
+
+ public void testUnknownSingleReferenceString() throws Exception {
+ String[] referenceStrings = new String[] { "1.0,:pserver:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertFalse(alternativeMap.isEmpty());
+
+ assertEquals(0, knownRepositories.getRepositories().length);
+ }
+
+ public void testKnownSingleReferenceString() throws Exception {
+ CVSRepositoryLocation repository = CVSRepositoryLocation
+ .fromString(":pserver:dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(repository, false);
+
+ String[] referenceStrings = new String[] { "1.0,:pserver:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ // alternativeMap should be empty as there is no need to ask for an
+ // additional info
+ assertTrue(alternativeMap.isEmpty());
+
+ assertEquals(1, knownRepositories.getRepositories().length);
+ }
+
+ // test for https://bugs.eclipse.org/bugs/show_bug.cgi?id=199108
+ public void testSingleKnownRepositoryWithUsername() throws Exception {
+ CVSRepositoryLocation joesRepository = CVSRepositoryLocation
+ .fromString(":pserver:joe@dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(joesRepository, false);
+
+ String[] referenceStrings = new String[] { "1.0,:pserver:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertFalse(alternativeMap.isEmpty());
+
+ List suggestedList = (List) alternativeMap.get(CVSRepositoryLocation
+ .fromString(":pserver:dev.eclipse.org:/cvsroot/eclipse"));
+ assertEquals(1, suggestedList.size());
+ ICVSRepositoryLocation suggestion = (ICVSRepositoryLocation) suggestedList
+ .get(0);
+ assertEquals(joesRepository, suggestion);
+
+ assertEquals(1, knownRepositories.getRepositories().length);
+ }
+
+ public void testOneMatchingReferenceString() throws Exception {
+ CVSRepositoryLocation joesRepository = CVSRepositoryLocation
+ .fromString(":pserver:joe@dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(joesRepository, false);
+
+ String[] referenceStrings = new String[] {
+ "1.0,:pserver:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh",
+ "1.0,:extssh:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.tests.cvs.core,org.eclipse.team.tests.cvs.core" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertFalse(alternativeMap.isEmpty());
+
+ // test suggested repos for the first reference string
+ List suggestedList = (List) alternativeMap.get(CVSRepositoryLocation
+ .fromString(":pserver:dev.eclipse.org:/cvsroot/eclipse"));
+ assertEquals(1, suggestedList.size());
+
+ ICVSRepositoryLocation suggestion = (ICVSRepositoryLocation) suggestedList
+ .get(0);
+ // known repo matched
+ assertEquals(joesRepository, suggestion);
+
+ // test suggested repos for the second reference string
+ CVSRepositoryLocation extsshRepository = CVSRepositoryLocation
+ .fromString(":extssh:dev.eclipse.org:/cvsroot/eclipse");
+ suggestedList = (List) alternativeMap.get(extsshRepository);
+ assertEquals(2, suggestedList.size());
+
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(0);
+ // the original repo as default
+ assertEquals(extsshRepository, suggestion);
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(1);
+ // the known repo as a second option
+ assertEquals(joesRepository, suggestion);
+
+ assertEquals(1, knownRepositories.getRepositories().length);
+ }
+
+ public void testTwoMatchingKnownRepositories() throws Exception {
+ CVSRepositoryLocation joesRepository = CVSRepositoryLocation
+ .fromString(":pserver:joe@dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(joesRepository, false);
+ CVSRepositoryLocation annsRepository = CVSRepositoryLocation
+ .fromString(":pserver:ann@dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(annsRepository, false);
+
+ String[] referenceStrings = new String[] { "1.0,:pserver:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertFalse(alternativeMap.isEmpty());
+
+ List suggestedList = (List) alternativeMap.get(CVSRepositoryLocation
+ .fromString(":pserver:dev.eclipse.org:/cvsroot/eclipse"));
+ assertEquals(2, suggestedList.size());
+
+ ICVSRepositoryLocation suggestion = (ICVSRepositoryLocation) suggestedList
+ .get(0);
+ assertEquals(annsRepository, suggestion);
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(1);
+ assertEquals(joesRepository, suggestion);
+
+ assertEquals(2, knownRepositories.getRepositories().length);
+ }
+
+ public void testThreeGroupsOfSuggestions() throws Exception {
+ CVSRepositoryLocation pserverRepository = CVSRepositoryLocation
+ .fromString(":pserver:dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(pserverRepository, false);
+ CVSRepositoryLocation localRepository = CVSRepositoryLocation
+ .fromString(":pserver:localhost:/cvsroot/project");
+ knownRepositories.addRepository(localRepository, false);
+
+ String[] referenceStrings = new String[] { "1.0,:extssh:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertFalse(alternativeMap.isEmpty());
+
+ CVSRepositoryLocation extsshRepository = CVSRepositoryLocation
+ .fromString(":extssh:dev.eclipse.org:/cvsroot/eclipse");
+ List suggestedList = (List) alternativeMap.get(extsshRepository);
+ assertEquals(3, suggestedList.size());
+
+ ICVSRepositoryLocation suggestion = (ICVSRepositoryLocation) suggestedList
+ .get(0);
+ assertEquals(extsshRepository, suggestion);
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(1);
+ assertEquals(pserverRepository, suggestion);
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(2);
+ assertEquals(localRepository, suggestion);
+
+ assertEquals(2, knownRepositories.getRepositories().length);
+ }
+
+ public void testOneCompatibleOfTwoKnown() throws Exception {
+ CVSRepositoryLocation eclipseRepository = CVSRepositoryLocation
+ .fromString(":pserver:dev.eclipse.org:/cvsroot/eclipse");
+ knownRepositories.addRepository(eclipseRepository, false);
+ CVSRepositoryLocation technologyRepository = CVSRepositoryLocation
+ .fromString(":pserver:joe@dev.eclipse.org:/cvsroot/technology");
+ knownRepositories.addRepository(technologyRepository, false);
+
+ String[] referenceStrings = new String[] { "1.0,:extssh:joe@dev.eclipse.org:/cvsroot/eclipse,org.eclipse.team.cvs.ssh,org.eclipse.team.cvs.ssh" };
+
+ Map infoMap = new HashMap(referenceStrings.length);
+ IProject[] projects = CVSProjectSetCapability.asProjects(referenceStrings, infoMap);
+
+ Map alternativeMap = CVSProjectSetCapability.isAdditionalRepositoryInformationRequired(projects,
+ infoMap);
+ assertFalse(alternativeMap.isEmpty());
+
+ CVSRepositoryLocation extsshRepository = CVSRepositoryLocation
+ .fromString(":extssh:joe@dev.eclipse.org:/cvsroot/eclipse");
+ List suggestedList = (List) alternativeMap.get(extsshRepository);
+ assertEquals(3, suggestedList.size());
+
+ ICVSRepositoryLocation suggestion = (ICVSRepositoryLocation) suggestedList
+ .get(0);
+ assertEquals(extsshRepository, suggestion);
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(1);
+ assertEquals(eclipseRepository, suggestion);
+ suggestion = (ICVSRepositoryLocation) suggestedList.get(2);
+ assertEquals(technologyRepository, suggestion);
+
+ assertEquals(2, knownRepositories.getRepositories().length);
+ }
+
+ private static void assertEquals(ICVSRepositoryLocation expected,
+ ICVSRepositoryLocation actual) {
+ if (expected == actual)
+ return;
+ assertTrue(expected.equals(actual));
+ assertEquals(expected.getLocation(true), actual.getLocation(true));
+ }
+
+}

Back to the top