diff options
author | Michael Valenta | 2002-05-24 17:16:30 +0000 |
---|---|---|
committer | Michael Valenta | 2002-05-24 17:16:30 +0000 |
commit | 402e65b4c979742d32c0430d57b42e23422c4895 (patch) | |
tree | 3d237b138a71186ec491d85feedabb16e3d888d8 /tests | |
parent | c051e4c2760ee53acaf427eaf6ba15789e269ae2 (diff) | |
download | eclipse.platform.team-402e65b4c979742d32c0430d57b42e23422c4895.tar.gz eclipse.platform.team-402e65b4c979742d32c0430d57b42e23422c4895.tar.xz eclipse.platform.team-402e65b4c979742d32c0430d57b42e23422c4895.zip |
Adding Target test cases
Diffstat (limited to 'tests')
9 files changed, 611 insertions, 154 deletions
diff --git a/tests/org.eclipse.team.tests.core/.classpath b/tests/org.eclipse.team.tests.core/.classpath index b5763b2c4..bd3ae99ec 100644 --- a/tests/org.eclipse.team.tests.core/.classpath +++ b/tests/org.eclipse.team.tests.core/.classpath @@ -1,18 +1,19 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src/"/> - <classpathentry kind="src" path="/org.apache.xerces"/> - <classpathentry kind="src" path="/org.eclipse.core.tests.harness"/> - <classpathentry kind="src" path="/org.eclipse.core.resources"/> - <classpathentry kind="src" path="/org.eclipse.team.core"/> - <classpathentry kind="src" path="/org.eclipse.team.cvs.core"/> - <classpathentry kind="src" path="/org.eclipse.team.ui"/> - <classpathentry kind="src" path="/org.eclipse.team.cvs.ui"/> - <classpathentry kind="src" path="/org.eclipse.compare"/> - <classpathentry kind="src" path="/org.eclipse.ui"/> - <classpathentry kind="src" path="/org.junit"/> - <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/> - <classpathentry kind="src" path="/org.eclipse.core.runtime"/> - <classpathentry kind="src" path="/org.eclipse.core.boot"/> - <classpathentry kind="output" path="bin"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="src" path="/org.apache.xerces"/>
+ <classpathentry kind="src" path="/org.eclipse.core.tests.harness"/>
+ <classpathentry kind="src" path="/org.eclipse.core.resources"/>
+ <classpathentry kind="src" path="/org.eclipse.team.core"/>
+ <classpathentry kind="src" path="/org.eclipse.team.cvs.core"/>
+ <classpathentry kind="src" path="/org.eclipse.team.ui"/>
+ <classpathentry kind="src" path="/org.eclipse.team.cvs.ui"/>
+ <classpathentry kind="src" path="/org.eclipse.compare"/>
+ <classpathentry kind="src" path="/org.eclipse.ui"/>
+ <classpathentry kind="src" path="/org.junit"/>
+ <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
+ <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
+ <classpathentry kind="src" path="/org.eclipse.core.boot"/>
+ <classpathentry kind="src" path="/org.eclipse.team.webdav"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.team.tests.core/.project b/tests/org.eclipse.team.tests.core/.project index 5d3bdfef7..6b81026a4 100644 --- a/tests/org.eclipse.team.tests.core/.project +++ b/tests/org.eclipse.team.tests.core/.project @@ -13,6 +13,7 @@ <project>org.eclipse.team.cvs.core</project>
<project>org.eclipse.team.cvs.ui</project>
<project>org.eclipse.team.ui</project>
+ <project>org.eclipse.team.webdav</project>
<project>org.eclipse.ui</project>
<project>org.junit</project>
</projects>
diff --git a/tests/org.eclipse.team.tests.core/ftp.properties b/tests/org.eclipse.team.tests.core/ftp.properties new file mode 100644 index 000000000..d2eb6c326 --- /dev/null +++ b/tests/org.eclipse.team.tests.core/ftp.properties @@ -0,0 +1,8 @@ +target=ftp +test_dir=target +location=ftp://ftp.server/path +username=username +password=password +proxyURL=proxyURLIfThereIsOne +connectionTimeout=6000 +passive=true
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/AllTargetTests.java b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/AllTargetTests.java new file mode 100644 index 000000000..34a86df30 --- /dev/null +++ b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/AllTargetTests.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2002 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM - Initial implementation + ******************************************************************************/ +package org.eclipse.team.tests.core; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.eclipse.core.tests.harness.EclipseWorkspaceTest; + +public class AllTargetTests extends EclipseWorkspaceTest { + + /** + * Constructor for AllTargetTests. + */ + public AllTargetTests() { + super(); + } + + /** + * Constructor for AllTargetTests. + * @param name + */ + public AllTargetTests(String name) { + super(name); + } + + public static Test suite() { + TestSuite suite = new TestSuite(); + suite.addTest(TargetProviderTests.suite()); + suite.addTest(RemoteResourceTests.suite()); + return new TargetTestSetup(suite); + } +} diff --git a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RemoteResourceTests.java b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RemoteResourceTests.java new file mode 100644 index 000000000..3eef2b1f8 --- /dev/null +++ b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RemoteResourceTests.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (c) 2002 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM - Initial implementation + ******************************************************************************/ +package org.eclipse.team.tests.core; + +import java.io.IOException; +import java.io.InputStream; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.core.sync.IRemoteResource; +import org.eclipse.team.core.target.TargetProvider; + +/** + * A set of test cases for org.eclipse.team.core.sync.IRemoteResource + */ +public class RemoteResourceTests extends TeamTest { + public RemoteResourceTests() { + super(); + } + public RemoteResourceTests(String name) { + super(name); + } + public static Test suite() { + TestSuite suite = new TestSuite(RemoteResourceTests.class); + return new TargetTestSetup(suite); + } + + protected IProject createAndPut(String projectPrefix, String[] resourceNames) throws CoreException, TeamException { + IProject project = getUniqueTestProject(projectPrefix); + IResource[] resources = buildResources(project, resourceNames, false); + TargetProvider target = createProvider(project); + target.put(resources, null); + return project; + } + + public void testGetName() throws CoreException, TeamException { + IProject project = createAndPut("getname", new String[] { "file1.txt", "folder1/", "folder1/b.txt" }); + TargetProvider target = getProvider(project); + IRemoteResource remote = target.getRemoteResource(); + assertEquals(project.getName(), remote.getName()); + } + public void testIsContainerSuccess() throws CoreException, TeamException { + IProject project = getUniqueTestProject("iscontainer"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + target.put(resources, null); + IRemoteResource remote = target.getRemoteResource(); + assertTrue(remote.isContainer()); + } + public void testIsContainerFail() throws CoreException, TeamException { + IProject project = createAndPut("iscontainer", new String[] { "file1.txt", "folder1/", "folder1/b.txt" }); + TargetProvider target = getProvider(project); + IRemoteResource remote = target.getRemoteResourceFor(project.getFile("file1.txt")); + assertTrue(!remote.isContainer()); + } + public void testGetContents() throws CoreException, TeamException { + IProject project = createAndPut("getname", new String[] { "file1.txt", "folder1/", "folder1/b.txt" }); + TargetProvider target = getProvider(project); + IRemoteResource remote = target.getRemoteResourceFor(project.getFile("file1.txt")); + InputStream jin = remote.getContents(null); + try { + while (jin.available() > 0) { + jin.read(); + } + } catch (IOException e) { + System.out.flush(); + e.printStackTrace(System.err); + fail("Couldn't read from the input stream."); + } + } + public void testMembers() throws CoreException, TeamException { + IProject project = createAndPut("getname", new String[] { "file1.txt", "folder1/", "folder1/b.txt" }); + TargetProvider target = getProvider(project); + IRemoteResource remote = target.getRemoteResource(); + IRemoteResource[] altResources = remote.members(null); + for (int i = 0; i < altResources.length; i++) { + assertEquals(altResources[i], project.findMember(altResources[i].getName())); + } + } + /** + * @see TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); + properties=TargetTestSetup.properties; + } +}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetProviderTests.java b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetProviderTests.java index 9726604d2..e797f5c26 100644 --- a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetProviderTests.java +++ b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetProviderTests.java @@ -1,186 +1,241 @@ +/******************************************************************************* + * Copyright (c) 2002 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM - Initial implementation + ******************************************************************************/ package org.eclipse.team.tests.core; -import java.io.ByteArrayInputStream; -import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Properties; -import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestSuite; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.team.core.TeamException; -import org.eclipse.team.core.target.ISiteFactory; -import org.eclipse.team.core.target.Site; import org.eclipse.team.core.target.TargetManager; import org.eclipse.team.core.target.TargetProvider; +/** + * A set of test cases for org.eclipse.team.core.target.TargetProvider + */ public class TargetProviderTests extends TeamTest { - - final String test_url = "http://paris.ott.oti.com/dav/"; + public TargetProviderTests() { super(); } - public TargetProviderTests(String name) { super(name); } - public static Test suite() { TestSuite suite = new TestSuite(TargetProviderTests.class); - return new TestSetup(suite); - //return new testSetup(new RepositoryProviderTests("test")); + return new TargetTestSetup(suite); + //return new TargetTestSetup(new TargetProviderTests("testPutAndGet")); } - - Site getDavSite() { - try { - URL url = new URL(test_url); - return TargetManager.getSite("org.eclipse.team.webdav", url); - } catch (MalformedURLException e) { - return null; + /** + * Tests the link between the target & the site for consistency. + * @throws CoreException + * @throws TeamException + */ + public void testProjectMapping() throws CoreException, TeamException { + IProject project = getUniqueTestProject("projectmapping"); + TargetProvider target = createProvider(project); + assertTrue(getSite().equals(target.getSite())); + TargetManager.unmap(project); + assertNull(TargetManager.getProvider(project)); + } + /** + * Tests the getURL() method on TargetProvider. + * @throws CoreException + * @throws TeamException + */ + public void testUrlRetrieval() throws CoreException, TeamException, MalformedURLException { + IProject project = getNamedTestProject("urlretrieval"); + TargetManager.map(project, getSite(), new Path(properties.getProperty("test_dir"))); + TargetProvider target = TargetManager.getProvider(project); + String goodurl =new URL(new URL(properties.getProperty("location")), properties.getProperty("test_dir")).toString(); + assertEquals(goodurl, target.getURL().toString()); + } + /** + * Verifies that the get() and put() methods on the TargetProvider works as expected. + * @throws CoreException + * @throws TeamException + */ + public void testPutAndGet() throws CoreException, TeamException { + // test put + IProject project = getUniqueTestProject("get"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + target.put(resources, null); + assertLocalEqualsRemote(project); + // test get on a new project + project.delete(true, true, null); + project.create(null); + project.open(null); + target = createProvider(project); + target.get(new IResource[] { project }, null); + assertLocalEqualsRemote(project); + } + /** + * Verifies that canGet() and canPut() returns accurate values. + * @throws CoreException + * @throws TeamException + */ + public void testCanGetAndCanPut() throws CoreException, TeamException { + IProject project = getUniqueTestProject("canget"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + for (int i = 0; i < resources.length; i++) { + assertTrue(target.canPut(resources[i])); } - } - - public IResource[] buildResources(IContainer container, String[] hierarchy, boolean includeContainer) throws CoreException { - List resources = new ArrayList(hierarchy.length + 1); - resources.addAll(Arrays.asList(buildResources(container, hierarchy))); - if (includeContainer) - resources.add(container); - IResource[] result = (IResource[]) resources.toArray(new IResource[resources.size()]); - ensureExistsInWorkspace(result, true); - for (int i = 0; i < result.length; i++) { - if (result[i].getType() == IResource.FILE) - // 3786 bytes is the average size of Eclipse Java files! - ((IFile) result[i]).setContents(getRandomContents(100), true, false, null); + target.put(resources, null); + project.delete(true, true, null); + project.create(null); + project.open(null); + target = createProvider(project); + for (int i = 0; i < resources.length; i++) { + assertTrue(target.canGet(resources[i])); } - return result; + target.get(new IResource[] { project }, null); } - - protected static InputStream getRandomContents(int sizeAtLeast) { - StringBuffer randomStuff = new StringBuffer(sizeAtLeast + 100); - while (randomStuff.length() < sizeAtLeast) { - randomStuff.append(getRandomSnippet()); + /** + * Tests bahavior of isOutOfDate() for correctness + * @throws CoreException + * @throws TeamException + */ + public void testIsOutOfDate() throws CoreException, TeamException { + IProject project = getUniqueTestProject("outdated"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + target.put(resources, null); + sleep(1501); + IProject dupeProject = getUniqueTestProject("outdated"); + IResource[] freshResources = buildResources(dupeProject, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetManager.map(dupeProject, getSite(), new Path(properties.getProperty("test_dir")).append(project.getName())); + TargetProvider dupeTarget = TargetManager.getProvider(dupeProject); + dupeTarget.put(freshResources, null); + for (int i = 0; i < resources.length; i++) { + if (resources[i].getType() == IResource.FILE) + assertTrue(target.isOutOfDate(resources[i], DEFAULT_PROGRESS_MONITOR)); } - return new ByteArrayInputStream(randomStuff.toString().getBytes()); } - - public static String getRandomSnippet() { - switch ((int) Math.round(Math.random() * 10)) { - case 0 : - return "este e' o meu conteudo (portuguese)"; - case 1 : - return "Dann brauchen wir aber auch einen deutschen Satz!"; - case 2 : - return "I'll be back"; - case 3 : - return "don't worry, be happy"; - case 4 : - return "there is no imagination for more sentences"; - case 5 : - return "customize yours"; - case 6 : - return "foo"; - case 7 : - return "bar"; - case 8 : - return "foobar"; - case 9 : - return "case 9"; - default : - return "these are my contents"; + /** + * Tests bahavior of isDirty() for correctness + * @throws CoreException + * @throws TeamException + */ + public void testIsDirty() throws CoreException, TeamException { + IProject project = getUniqueTestProject("dirty"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + target.put(resources, null); + sleep(1501); + resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + for (int i = 0; i < resources.length; i++) { + if (resources[i].getType()==IResource.FILE) assertTrue(resources[i].getName(),target.isDirty(resources[i])); } } - - public void testWebDavProjectMapping() throws CoreException, TeamException { - IProject project = getUniqueTestProject("webdav-projectmapping"); - TargetManager.map(project, getDavSite(), Path.EMPTY); - TargetProvider target = TargetManager.getProvider(project); - assertTrue(getDavSite().equals(target.getSite())); - - TargetManager.unmap(project); - assertNull(TargetManager.getProvider(project)); + public void testOverwrite() throws CoreException, TeamException { + IProject project = getUniqueTestProject("overwrite"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + target.put(resources, null); + //Create resources with the same names but different content & upload them in the same spot: + resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + target.put(resources, null); + + IProject dupeProject = getUniqueTestProject("overwrite"); + TargetManager.map(dupeProject, getSite(), new Path(properties.getProperty("test_dir")).append(project.getName())); + IResource[] freshResources = buildEmptyResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider dupeTarget = TargetManager.getProvider(dupeProject); + dupeTarget.get(new IResource[] { dupeProject }, null); + for (int i = 0; i < resources.length; i++) { + assertEquals(resources[i],freshResources[i]); + } } - - public void testWebDavPut() throws CoreException, TeamException { - IProject project = getUniqueTestProject("webdav-put"); - IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt"}, false); - - TargetManager.map(project, getDavSite(), new Path("noauth").append(project.getName())); - TargetProvider target = TargetManager.getProvider(project); - + public void testIsDirtyWhenDeleted() throws CoreException, TeamException { + IProject project = getUniqueTestProject("dirty"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); target.put(resources, null); - - TargetManager.unmap(project); + for (int i = 0; i < resources.length; i++) { + resources[i].delete(true, null); + } + sleep(1501); + resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + for (int i = 0; i < resources.length; i++) { + if (resources[i].getType()==IResource.FILE) assertTrue(resources[i].getName(),target.isDirty(resources[i])); + } } - - public void testWebDavGet() throws CoreException, TeamException { - IProject project = getUniqueTestProject("webdav-get"); - IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt"}, false); - - TargetManager.map(project, getDavSite(), new Path("noauth").append(project.getName())); - TargetProvider target = TargetManager.getProvider(project); - + public void testIsOutOfDateWhenDeleted() throws CoreException, TeamException { + IProject project = getUniqueTestProject("outdated"); + IResource[] resources = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); target.put(resources, null); - for (int i = 0; i < resources.length; i++) { resources[i].delete(true, null); } - + sleep(1501); + IProject dupeProject = getUniqueTestProject("outdated"); + IResource[] freshResources = buildResources(dupeProject, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetManager.map(dupeProject, getSite(), new Path(properties.getProperty("test_dir")).append(project.getName())); + TargetProvider dupeTarget = TargetManager.getProvider(dupeProject); + dupeTarget.put(freshResources, null); for (int i = 0; i < resources.length; i++) { - if(resources[i].getType() == IResource.FILE) { - assertTrue(!project.getFile(resources[i].getName()).exists()); - } else { - assertTrue(!project.getFolder(resources[i].getName()).exists()); - } + if (resources[i].getType() == IResource.FILE) + assertTrue(target.isOutOfDate(resources[i], DEFAULT_PROGRESS_MONITOR)); } - - target.get(new IResource[] {project}, null); - project.refreshLocal(IResource.DEPTH_INFINITE, null); - IResource[] members = project.members(); + } + public void testPutWithPhantoms() throws CoreException, TeamException { + IProject project = getUniqueTestProject("put"); + IResource[] resources = buildEmptyResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); for (int i = 0; i < resources.length; i++) { - if(resources[i].getType() == IResource.FILE) { - assertTrue(project.getFile(resources[i].getProjectRelativePath()).exists()); - } else { - assertTrue(project.getFolder(resources[i].getProjectRelativePath()).exists()); - } + resources[i].delete(true, null); + } + try { + target.put(resources, null); + fail("Shouldn't be able to put files that don't exist locally."); + } catch (TeamException e) {} catch (RuntimeException e) {} + } + public void testGetWithPhantoms() throws CoreException, TeamException { + IProject project = getUniqueTestProject("get"); + IResource[] resources = buildEmptyResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + try { + target.get(new IResource[] { project }, null); + fail("Shouldn't be able to get files that don't exist"); + } catch (TeamException e) {} + } + public void testCanGetWithPhantoms() throws CoreException, TeamException { + IProject project = getUniqueTestProject("canget"); + IResource[] resources = buildEmptyResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + for (int i = 0; i < resources.length; i++) { + assertTrue("Shouldn't be able to retrieve phantom resources.",!target.canGet(resources[i])); + } + } + public void testCanPutWithPhantoms() throws CoreException, TeamException { + IProject project = getUniqueTestProject("canput"); + IResource[] resources = buildEmptyResources(project, new String[] { "file1.txt", "folder1/", "folder1/b.txt" }, false); + TargetProvider target = createProvider(project); + for (int i = 0; i < resources.length; i++) { + assertTrue("Shouldn't be able to upload phantom resources.",!target.canPut(resources[i])); } - - TargetManager.unmap(project); - assertNull(TargetManager.getProvider(project)); } - /** * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); - ISiteFactory factory = TargetManager.getSiteFactory("org.eclipse.team.webdav"); - assertNotNull(factory); - Properties properties = new Properties(); - properties.put("location", test_url); - properties.put("httpClient.username", "myUsername"); - properties.put("httpClient.password", "myPassword"); - properties.put("httpClient.proxyURL", ""); - properties.put("httpClient.connectionTimeout", "2000"); - - Site[] locations = TargetManager.getSites(); - Site location; - if(locations.length == 0) { - Site l = factory.newSite(properties); - TargetManager.addSite(l); - } - location = getDavSite(); - TargetProvider target = location.newProvider(new Path("noauth")); - assertNotNull(target); + properties=TargetTestSetup.properties; } -} +}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetTestSetup.java b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetTestSetup.java new file mode 100644 index 000000000..ef7083526 --- /dev/null +++ b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetTestSetup.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2002 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM - Initial implementation + ******************************************************************************/ +package org.eclipse.team.tests.core; + +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.*; + +import junit.extensions.TestSetup; +import junit.framework.Test; +import junit.framework.TestSuite; +import org.eclipse.core.resources.*; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.core.sync.IRemoteResource; +import org.eclipse.team.core.target.*; + +/** + * A set of test cases for org.eclipse.team.core.sync.IRemoteResource + */ +public class TargetTestSetup extends TestSetup { + + public static Properties properties; + static { + loadProperties(); + } + + public static void loadProperties() { + properties = new Properties(); + String propertiesFile = System.getProperty("eclipse.target.properties"); + if (propertiesFile == null) + return; + File file = new File(propertiesFile); + if (file.isDirectory()) + file = new File(file, "target.properties"); + try { + BufferedReader reader = new BufferedReader(new FileReader(file)); + try { + for (String line;(line = reader.readLine()) != null;) { + int sep = line.indexOf("="); + String property = line.substring(0, sep).trim(); + String value = line.substring(sep + 1).trim(); + properties.setProperty(property, value); + } + } finally { + reader.close(); + } + } catch (Exception e) { + System.err.println("Could not read repository properties file: " + file.getAbsolutePath()); + } + } + + public TargetTestSetup(Test test) { + super(test); + } + /** + * Retrieves the Site object that the TargetProvider is contained in. + * @return Site + */ + Site getSite() { + try { + URL url = new URL(properties.getProperty("location")); + return TargetManager.getSite(properties.getProperty("target"), url); + } catch (MalformedURLException e) { + return null; + } + } + /** + * @see TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); + Site location; + ISiteFactory factory = TargetManager.getSiteFactory(properties.getProperty("target")); + assertNotNull(factory); + Site[] locations = TargetManager.getSites(); + + if (locations.length == 0) { + Site l = factory.newSite(properties); + TargetManager.addSite(l); + } + location = getSite(); + TargetProvider target = location.newProvider(new Path(properties.getProperty("test_dir"))); + assertNotNull(target); + } +}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TeamTest.java b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TeamTest.java index feb37bffa..ac634c418 100644 --- a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TeamTest.java +++ b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TeamTest.java @@ -1,12 +1,38 @@ package org.eclipse.team.tests.core; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.core.tests.harness.EclipseWorkspaceTest; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.core.sync.IRemoteResource; +import org.eclipse.team.core.target.Site; +import org.eclipse.team.core.target.TargetManager; +import org.eclipse.team.core.target.TargetProvider; public class TeamTest extends EclipseWorkspaceTest { + + protected static final IProgressMonitor DEFAULT_PROGRESS_MONITOR = new NullProgressMonitor(); + + Properties properties; + public TeamTest() { super(); } @@ -18,7 +44,7 @@ public class TeamTest extends EclipseWorkspaceTest { IProject target = getWorkspace().getRoot().getProject(name); if (!target.exists()) { target.create(null); - target.open(null); + target.open(null); } assertExistsInFileSystem(target); return target; @@ -32,4 +58,127 @@ public class TeamTest extends EclipseWorkspaceTest { protected IStatus getTeamTestStatus(int severity) { return new Status(severity, "org.eclipse.team.tests.core", 0, "team status", null); } + /** + * Retrieves the Site object that the TargetProvider is contained in. + * @return Site + */ + Site getSite() { + try { + URL url = new URL(properties.getProperty("location")); + return TargetManager.getSite(properties.getProperty("target"), url); + } catch (MalformedURLException e) { + return null; + } + } + /** + * Creates filesystem 'resources' with the given names and fills them with random text. + * @param container An object that can hold the newly created resources. + * @param hierarchy A list of files & folder names to use as resources + * @param includeContainer A flag that controls whether the container is included in the list of resources. + * @return IResource[] An array of resources filled with variable amounts of random text + * @throws CoreException + */ + public IResource[] buildResources(IContainer container, String[] hierarchy, boolean includeContainer) throws CoreException { + List resources = new ArrayList(hierarchy.length + 1); + if (includeContainer) + resources.add(container); + resources.addAll(Arrays.asList(buildResources(container, hierarchy))); + IResource[] result = (IResource[]) resources.toArray(new IResource[resources.size()]); + ensureExistsInWorkspace(result, true); + for (int i = 0; i < result.length; i++) { + if (result[i].getType() == IResource.FILE) // 3786 bytes is the average size of Eclipse Java files! + ((IFile) result[i]).setContents(getRandomContents(100), true, false, null); + } + return result; + } + public IResource[] buildEmptyResources(IContainer container, String[] hierarchy, boolean includeContainer) throws CoreException { + List resources = new ArrayList(hierarchy.length + 1); + resources.addAll(Arrays.asList(buildResources(container, hierarchy))); + if (includeContainer) + resources.add(container); + IResource[] result = (IResource[]) resources.toArray(new IResource[resources.size()]); + ensureExistsInWorkspace(result, true); + return result; + } + /** + * Creates an InputStream filled with random text in excess of a specified minimum. + * @param sizeAtLeast The minimum number of chars to fill the input stream with. + * @return InputStream The input stream containing random text. + */ + protected static InputStream getRandomContents(int sizeAtLeast) { + StringBuffer randomStuff = new StringBuffer(sizeAtLeast + 100); + while (randomStuff.length() < sizeAtLeast) { + randomStuff.append(getRandomSnippet()); + } + return new ByteArrayInputStream(randomStuff.toString().getBytes()); + } + /** + * Produces a random chunk of text from a finite collection of pre-written phrases. + * @return String Some random words. + */ + public static String getRandomSnippet() { + switch ((int) Math.round(Math.random() * 10)) { + case 0 : + return "este e' o meu conteudo (portuguese)"; + case 1 : + return "Dann brauchen wir aber auch einen deutschen Satz!"; + case 2 : + return "I'll be back"; + case 3 : + return "don't worry, be happy"; + case 4 : + return "there is no imagination for more sentences"; + case 5 : + return "customize yours"; + case 6 : + return "foo"; + case 7 : + return "bar"; + case 8 : + return "foobar"; + case 9 : + return "case 9"; + default : + return "these are my contents"; + } + } + public TargetProvider createProvider(IProject project) throws TeamException { + TargetManager.map(project, getSite(), new Path(properties.getProperty("test_dir")).append(project.getName())); + TargetProvider target = getProvider(project); + return target; + } + + public TargetProvider getProvider(IProject project) throws TeamException { + return TargetManager.getProvider(project); + } + + public void sleep(int ms) { + try { + Thread.currentThread().sleep(ms); + } catch (InterruptedException e) { + System.err.println("Testing was rudely interrupted."); + } + } + void assertLocalEqualsRemote(IProject project) throws CoreException, TeamException { + IProject newProject = getNamedTestProject("equals"); + TargetProvider target = TargetManager.getProvider(project); + IResource[] localResources = project.members(); + for (int i = 0; i < localResources.length; i++) { + assertEquals(target.getRemoteResourceFor(localResources[i]), localResources[i]); + } + } + // Assert that the two containers have equal contents + protected void assertEquals(IRemoteResource container1, IResource container2) throws CoreException, TeamException { + if (container2.getType() == IResource.FILE) { + // Ignore .project file + if (container2.getName().equals(".project")) return; + assertTrue(compareContent(container1.getContents(null), ((IFile) container2).getContents())); + } else { + IRemoteResource[] remoteResources = container1.members(null); + IResource[] localResources = ((IFolder) container2).members(); + for (int i = 0; i < localResources.length; i++) { + assertEquals(remoteResources[i],localResources[i]); + } + } + } } diff --git a/tests/org.eclipse.team.tests.core/webdav.properties b/tests/org.eclipse.team.tests.core/webdav.properties new file mode 100644 index 000000000..eb0c9c0ab --- /dev/null +++ b/tests/org.eclipse.team.tests.core/webdav.properties @@ -0,0 +1,7 @@ +target=webdav +test_dir=target +location=http://web.dav.server/path +httpClient.username=username +httpClient.password=password +httpClient.proxyURL=proxyURLIfThereIsOne +httpClient.connectionTimeout=6000
\ No newline at end of file |