diff options
author | Michael Valenta | 2007-09-14 14:59:46 +0000 |
---|---|---|
committer | Michael Valenta | 2007-09-14 14:59:46 +0000 |
commit | fdec54b2df70063baf05b97f286a681fb664c5da (patch) | |
tree | e96be0651aea6ec86955b99d988084bd1cfc28af /tests | |
parent | 16eb82f677d842c746b341ccd2f31c701707f2b9 (diff) | |
download | eclipse.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')
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)); + } + +} |