From c5cb3f355d10cc315d07d67a4953949d1e1c6450 Mon Sep 17 00:00:00 2001 From: Mathias Kinzler Date: Wed, 7 Jul 2010 17:25:02 +0200 Subject: EGit Core Tests: cleanup 1. Get rid of Txxxx-prefixes for test classes 2. Remove System.out.println() calls which don't help but disturb the test output (in ConnectProviderOprationTest.testNewUnsharedFile()) No tests logic was changed. Change-Id: Ie11249e0a3be19ea6a09319d4daae4134a6342f4 Signed-off-by: Mathias Kinzler --- .../core/test/AdaptableFileTreeIteratorTest.java | 82 +++++++++ .../test/T0003_AdaptableFileTreeIteratorTest.java | 82 --------- .../core/test/internal/mapping/HistoryTest.java | 199 +++++++++++++++++++++ .../test/internal/mapping/T0002_HistoryTest.java | 199 --------------------- .../egit/core/test/op/BranchOperationTest.java | 69 +++++++ .../core/test/op/ConnectProviderOperationTest.java | 130 ++++++++++++++ .../egit/core/test/op/ResetOperationTest.java | 154 ++++++++++++++++ .../op/T0001_ConnectProviderOperationTest.java | 133 -------------- .../core/test/op/T0004_BranchOperationTest.java | 69 ------- .../core/test/op/T0005_ResetOperationTest.java | 154 ---------------- 10 files changed, 634 insertions(+), 637 deletions(-) create mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java delete mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/T0003_AdaptableFileTreeIteratorTest.java create mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/HistoryTest.java delete mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/T0002_HistoryTest.java create mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/BranchOperationTest.java create mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ConnectProviderOperationTest.java create mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ResetOperationTest.java delete mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0001_ConnectProviderOperationTest.java delete mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0004_BranchOperationTest.java delete mode 100644 org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0005_ResetOperationTest.java (limited to 'org.eclipse.egit.core.test') diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java new file mode 100644 index 0000000000..a43d248aa9 --- /dev/null +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/AdaptableFileTreeIteratorTest.java @@ -0,0 +1,82 @@ +/******************************************************************************* + * Copyright (C) 2009, Tor Arne Vestbø + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.egit.core.test; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Collections; +import java.util.Set; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.egit.core.AdaptableFileTreeIterator; +import org.eclipse.egit.core.ContainerTreeIterator; +import org.eclipse.egit.core.op.ConnectProviderOperation; +import org.eclipse.egit.core.project.RepositoryMapping; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.treewalk.TreeWalk; +import org.eclipse.jgit.treewalk.WorkingTreeIterator; +import org.eclipse.jgit.treewalk.filter.PathFilterGroup; +import org.junit.Before; +import org.junit.Test; + +public class AdaptableFileTreeIteratorTest extends GitTestCase { + + private Repository repository; + + private File repositoryRoot; + + private File file; + + @Before + public void setUp() throws Exception { + super.setUp(); + + repository = new Repository(gitDir); + repositoryRoot = repository.getWorkDir(); + repository.create(); + + file = new File(project.getProject().getLocation().toFile(), "a.txt"); + final FileWriter fileWriter = new FileWriter(file); + fileWriter.write("aaaaaaaaaaa"); + fileWriter.close(); + + final ConnectProviderOperation operation = new ConnectProviderOperation( + project.getProject(), gitDir); + operation.execute(null); + } + + @Test + public void testFileTreeToContainerAdaptation() throws IOException { + final IWorkspaceRoot root = project.getProject().getWorkspace() + .getRoot(); + + final TreeWalk treeWalk = new TreeWalk(repository); + treeWalk.addTree(new AdaptableFileTreeIterator(repositoryRoot, root)); + treeWalk.setRecursive(true); + + final IFile eclipseFile = project.getProject().getFile(file.getName()); + final RepositoryMapping mapping = RepositoryMapping + .getMapping(eclipseFile); + final Set repositoryPaths = Collections.singleton(mapping + .getRepoRelativePath(eclipseFile)); + + assertTrue(repositoryPaths.size() == 1); + treeWalk.setFilter(PathFilterGroup.createFromStrings(repositoryPaths)); + + assertTrue(treeWalk.next()); + + final WorkingTreeIterator iterator = treeWalk.getTree(1, + WorkingTreeIterator.class); + assertTrue(iterator instanceof ContainerTreeIterator); + } +} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/T0003_AdaptableFileTreeIteratorTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/T0003_AdaptableFileTreeIteratorTest.java deleted file mode 100644 index 557df3c43b..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/T0003_AdaptableFileTreeIteratorTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2009, Tor Arne Vestbø - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.egit.core.test; - -import static org.junit.Assert.assertTrue; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Collections; -import java.util.Set; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.egit.core.AdaptableFileTreeIterator; -import org.eclipse.egit.core.ContainerTreeIterator; -import org.eclipse.egit.core.op.ConnectProviderOperation; -import org.eclipse.egit.core.project.RepositoryMapping; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.treewalk.TreeWalk; -import org.eclipse.jgit.treewalk.WorkingTreeIterator; -import org.eclipse.jgit.treewalk.filter.PathFilterGroup; -import org.junit.Before; -import org.junit.Test; - -public class T0003_AdaptableFileTreeIteratorTest extends GitTestCase { - - private Repository repository; - - private File repositoryRoot; - - private File file; - - @Before - public void setUp() throws Exception { - super.setUp(); - - repository = new Repository(gitDir); - repositoryRoot = repository.getWorkDir(); - repository.create(); - - file = new File(project.getProject().getLocation().toFile(), "a.txt"); - final FileWriter fileWriter = new FileWriter(file); - fileWriter.write("aaaaaaaaaaa"); - fileWriter.close(); - - final ConnectProviderOperation operation = new ConnectProviderOperation( - project.getProject(), gitDir); - operation.execute(null); - } - - @Test - public void testFileTreeToContainerAdaptation() throws IOException { - final IWorkspaceRoot root = project.getProject().getWorkspace() - .getRoot(); - - final TreeWalk treeWalk = new TreeWalk(repository); - treeWalk.addTree(new AdaptableFileTreeIterator(repositoryRoot, root)); - treeWalk.setRecursive(true); - - final IFile eclipseFile = project.getProject().getFile(file.getName()); - final RepositoryMapping mapping = RepositoryMapping - .getMapping(eclipseFile); - final Set repositoryPaths = Collections.singleton(mapping - .getRepoRelativePath(eclipseFile)); - - assertTrue(repositoryPaths.size() == 1); - treeWalk.setFilter(PathFilterGroup.createFromStrings(repositoryPaths)); - - assertTrue(treeWalk.next()); - - final WorkingTreeIterator iterator = treeWalk.getTree(1, - WorkingTreeIterator.class); - assertTrue(iterator instanceof ContainerTreeIterator); - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/HistoryTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/HistoryTest.java new file mode 100644 index 0000000000..28c0217d03 --- /dev/null +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/HistoryTest.java @@ -0,0 +1,199 @@ +/******************************************************************************* + * Copyright (C) 2008, Robin Rosenberg + * Copyright (C) 2008, Shawn O. Pearce + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.egit.core.test.internal.mapping; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; + +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.egit.core.GitProvider; +import org.eclipse.egit.core.op.ConnectProviderOperation; +import org.eclipse.egit.core.test.GitTestCase; +import org.eclipse.jgit.lib.Commit; +import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.FileTreeEntry; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectWriter; +import org.eclipse.jgit.lib.PersonIdent; +import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.lib.Tree; +import org.eclipse.team.core.RepositoryProvider; +import org.eclipse.team.core.history.IFileHistory; +import org.eclipse.team.core.history.IFileHistoryProvider; +import org.eclipse.team.core.history.IFileRevision; +import org.junit.Before; +import org.junit.Test; + +public class HistoryTest extends GitTestCase { + + protected static final PersonIdent jauthor; + + protected static final PersonIdent jcommitter; + + static { + jauthor = new PersonIdent("J. Author", "jauthor@example.com"); + jcommitter = new PersonIdent("J. Committer", "jcommitter@example.com"); + } + + private File workDir; + private File gitDir; + private Repository thisGit; + private Tree tree; + private ObjectWriter objectWriter; + + @Before + public void setUp() throws Exception { + super.setUp(); + + project.createSourceFolder(); + gitDir = new File(project.getProject().getWorkspace().getRoot() + .getRawLocation().toFile(), Constants.DOT_GIT); + thisGit = new Repository(gitDir); + workDir = thisGit.getWorkDir(); + thisGit.create(); + objectWriter = new ObjectWriter(thisGit); + + tree = new Tree(thisGit); + Tree projectTree = tree.addTree("Project-1"); + File project1_a_txt = createFile("Project-1/A.txt","A.txt - first version\n"); + addFile(projectTree,project1_a_txt); + projectTree.setId(objectWriter.writeTree(projectTree)); + File project1_b_txt = createFile("Project-1/B.txt","B.txt - first version\n"); + addFile(projectTree,project1_b_txt); + projectTree.setId(objectWriter.writeTree(projectTree)); + tree.setId(objectWriter.writeTree(tree)); + Commit commit = new Commit(thisGit); + commit.setAuthor(new PersonIdent(jauthor, new Date(0L), TimeZone + .getTimeZone("GMT+1"))); + commit.setCommitter(new PersonIdent(jcommitter, new Date(0L), TimeZone + .getTimeZone("GMT+1"))); + commit.setMessage("Foo\n\nMessage"); + commit.setTree(tree); + ObjectId commitId = objectWriter.writeCommit(commit); + + tree = new Tree(thisGit); + projectTree = tree.addTree("Project-1"); + addFile(projectTree,project1_a_txt); + + File project1_b_v2_txt = createFile("Project-1/B.txt","B.txt - second version\n"); + addFile(projectTree,project1_b_v2_txt); + projectTree.setId(objectWriter.writeTree(projectTree)); + tree.setId(objectWriter.writeTree(tree)); + commit = new Commit(thisGit); + commit.setAuthor(new PersonIdent(jauthor, new Date(0L), TimeZone + .getTimeZone("GMT+1"))); + commit.setCommitter(new PersonIdent(jcommitter, new Date(0L), TimeZone + .getTimeZone("GMT+1"))); + commit.setMessage("Modified"); + commit.setParentIds(new ObjectId[] { commitId }); + commit.setTree(tree); + commitId = objectWriter.writeCommit(commit); + + RefUpdate lck = thisGit.updateRef("refs/heads/master"); + assertNotNull("obtained lock", lck); + lck.setNewObjectId(commitId); + assertEquals(RefUpdate.Result.NEW, lck.forceUpdate()); + + ConnectProviderOperation operation = new ConnectProviderOperation( + project.getProject(), gitDir); + operation.execute(null); + } + + private void addFile(Tree t,File f) throws IOException { + ObjectId id = objectWriter.writeBlob(f); + t.addEntry(new FileTreeEntry(t,id,f.getName().getBytes("UTF-8"),false)); + } + + private File createFile(String name, String content) throws IOException { + File f = new File(workDir, name); + FileWriter fileWriter = new FileWriter(f); + fileWriter.write(content); + fileWriter.close(); + return f; + } + + @Test + public void testSingleRevision_1() { + GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); + assertNotNull(provider); + IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); + IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); + IFileRevision fileRevision = fileHistory.getFileRevision("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359"); + assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevision.getContentIdentifier()); + assertEquals("J. Author",fileRevision.getAuthor()); + } + + @Test + public void testSingleRevision_2() { + GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); + assertNotNull(provider); + IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); + IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); + IFileRevision fileRevision = fileHistory.getFileRevision("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f"); + assertNull(fileRevision); // not matched by getFileHistoryFor + } + + @Test + public void testSingleRevision_3() { + GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); + assertNotNull(provider); + IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); + IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/B.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); + IFileRevision fileRevision = fileHistory.getFileRevision("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f"); + assertEquals("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f", fileRevision.getContentIdentifier()); + assertEquals("J. Author",fileRevision.getAuthor()); + } + + @Test + public void testShallowHistory() { + GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); + assertNotNull(provider); + IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); + IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); + IFileRevision[] fileRevisions = fileHistory.getFileRevisions(); + assertEquals(1, fileRevisions.length); + assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevisions[0].getContentIdentifier()); + assertEquals("J. Author",fileRevisions[0].getAuthor()); + } + + @Test + public void testDeepHistory_A() { + GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); + assertNotNull(provider); + IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); + IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.NONE, new NullProgressMonitor()); + IFileRevision[] fileRevisions = fileHistory.getFileRevisions(); + assertEquals(1, fileRevisions.length); + assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevisions[0].getContentIdentifier()); + assertEquals("J. Author",fileRevisions[0].getAuthor()); + } + + @Test + public void testDeepHistory_B() { + GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); + assertNotNull(provider); + IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); + IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/B.txt"), IFileHistoryProvider.NONE, new NullProgressMonitor()); + IFileRevision[] fileRevisions = fileHistory.getFileRevisions(); + assertEquals(2, fileRevisions.length); + assertEquals("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f", fileRevisions[0].getContentIdentifier()); + assertEquals("J. Author",fileRevisions[0].getAuthor()); + assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevisions[1].getContentIdentifier()); + assertEquals("J. Author",fileRevisions[0].getAuthor()); + } +} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/T0002_HistoryTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/T0002_HistoryTest.java deleted file mode 100644 index 7e90e24a31..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/internal/mapping/T0002_HistoryTest.java +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2008, Robin Rosenberg - * Copyright (C) 2008, Shawn O. Pearce - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.egit.core.test.internal.mapping; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Date; -import java.util.TimeZone; - -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.egit.core.GitProvider; -import org.eclipse.egit.core.op.ConnectProviderOperation; -import org.eclipse.egit.core.test.GitTestCase; -import org.eclipse.jgit.lib.Commit; -import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.FileTreeEntry; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.ObjectWriter; -import org.eclipse.jgit.lib.PersonIdent; -import org.eclipse.jgit.lib.RefUpdate; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.lib.Tree; -import org.eclipse.team.core.RepositoryProvider; -import org.eclipse.team.core.history.IFileHistory; -import org.eclipse.team.core.history.IFileHistoryProvider; -import org.eclipse.team.core.history.IFileRevision; -import org.junit.Before; -import org.junit.Test; - -public class T0002_HistoryTest extends GitTestCase { - - protected static final PersonIdent jauthor; - - protected static final PersonIdent jcommitter; - - static { - jauthor = new PersonIdent("J. Author", "jauthor@example.com"); - jcommitter = new PersonIdent("J. Committer", "jcommitter@example.com"); - } - - private File workDir; - private File gitDir; - private Repository thisGit; - private Tree tree; - private ObjectWriter objectWriter; - - @Before - public void setUp() throws Exception { - super.setUp(); - - project.createSourceFolder(); - gitDir = new File(project.getProject().getWorkspace().getRoot() - .getRawLocation().toFile(), Constants.DOT_GIT); - thisGit = new Repository(gitDir); - workDir = thisGit.getWorkDir(); - thisGit.create(); - objectWriter = new ObjectWriter(thisGit); - - tree = new Tree(thisGit); - Tree projectTree = tree.addTree("Project-1"); - File project1_a_txt = createFile("Project-1/A.txt","A.txt - first version\n"); - addFile(projectTree,project1_a_txt); - projectTree.setId(objectWriter.writeTree(projectTree)); - File project1_b_txt = createFile("Project-1/B.txt","B.txt - first version\n"); - addFile(projectTree,project1_b_txt); - projectTree.setId(objectWriter.writeTree(projectTree)); - tree.setId(objectWriter.writeTree(tree)); - Commit commit = new Commit(thisGit); - commit.setAuthor(new PersonIdent(jauthor, new Date(0L), TimeZone - .getTimeZone("GMT+1"))); - commit.setCommitter(new PersonIdent(jcommitter, new Date(0L), TimeZone - .getTimeZone("GMT+1"))); - commit.setMessage("Foo\n\nMessage"); - commit.setTree(tree); - ObjectId commitId = objectWriter.writeCommit(commit); - - tree = new Tree(thisGit); - projectTree = tree.addTree("Project-1"); - addFile(projectTree,project1_a_txt); - - File project1_b_v2_txt = createFile("Project-1/B.txt","B.txt - second version\n"); - addFile(projectTree,project1_b_v2_txt); - projectTree.setId(objectWriter.writeTree(projectTree)); - tree.setId(objectWriter.writeTree(tree)); - commit = new Commit(thisGit); - commit.setAuthor(new PersonIdent(jauthor, new Date(0L), TimeZone - .getTimeZone("GMT+1"))); - commit.setCommitter(new PersonIdent(jcommitter, new Date(0L), TimeZone - .getTimeZone("GMT+1"))); - commit.setMessage("Modified"); - commit.setParentIds(new ObjectId[] { commitId }); - commit.setTree(tree); - commitId = objectWriter.writeCommit(commit); - - RefUpdate lck = thisGit.updateRef("refs/heads/master"); - assertNotNull("obtained lock", lck); - lck.setNewObjectId(commitId); - assertEquals(RefUpdate.Result.NEW, lck.forceUpdate()); - - ConnectProviderOperation operation = new ConnectProviderOperation( - project.getProject(), gitDir); - operation.execute(null); - } - - private void addFile(Tree t,File f) throws IOException { - ObjectId id = objectWriter.writeBlob(f); - t.addEntry(new FileTreeEntry(t,id,f.getName().getBytes("UTF-8"),false)); - } - - private File createFile(String name, String content) throws IOException { - File f = new File(workDir, name); - FileWriter fileWriter = new FileWriter(f); - fileWriter.write(content); - fileWriter.close(); - return f; - } - - @Test - public void testSingleRevision_1() { - GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); - assertNotNull(provider); - IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); - IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); - IFileRevision fileRevision = fileHistory.getFileRevision("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359"); - assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevision.getContentIdentifier()); - assertEquals("J. Author",fileRevision.getAuthor()); - } - - @Test - public void testSingleRevision_2() { - GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); - assertNotNull(provider); - IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); - IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); - IFileRevision fileRevision = fileHistory.getFileRevision("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f"); - assertNull(fileRevision); // not matched by getFileHistoryFor - } - - @Test - public void testSingleRevision_3() { - GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); - assertNotNull(provider); - IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); - IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/B.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); - IFileRevision fileRevision = fileHistory.getFileRevision("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f"); - assertEquals("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f", fileRevision.getContentIdentifier()); - assertEquals("J. Author",fileRevision.getAuthor()); - } - - @Test - public void testShallowHistory() { - GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); - assertNotNull(provider); - IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); - IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.SINGLE_LINE_OF_DESCENT, new NullProgressMonitor()); - IFileRevision[] fileRevisions = fileHistory.getFileRevisions(); - assertEquals(1, fileRevisions.length); - assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevisions[0].getContentIdentifier()); - assertEquals("J. Author",fileRevisions[0].getAuthor()); - } - - @Test - public void testDeepHistory_A() { - GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); - assertNotNull(provider); - IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); - IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/A.txt"), IFileHistoryProvider.NONE, new NullProgressMonitor()); - IFileRevision[] fileRevisions = fileHistory.getFileRevisions(); - assertEquals(1, fileRevisions.length); - assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevisions[0].getContentIdentifier()); - assertEquals("J. Author",fileRevisions[0].getAuthor()); - } - - @Test - public void testDeepHistory_B() { - GitProvider provider = (GitProvider)RepositoryProvider.getProvider(project.project); - assertNotNull(provider); - IFileHistoryProvider fileHistoryProvider = provider.getFileHistoryProvider(); - IFileHistory fileHistory = fileHistoryProvider.getFileHistoryFor(project.getProject().getWorkspace().getRoot().findMember("Project-1/B.txt"), IFileHistoryProvider.NONE, new NullProgressMonitor()); - IFileRevision[] fileRevisions = fileHistory.getFileRevisions(); - assertEquals(2, fileRevisions.length); - assertEquals("fd5a571c8a3a4a152e4c413d09d3ecb7d41e1e5f", fileRevisions[0].getContentIdentifier()); - assertEquals("J. Author",fileRevisions[0].getAuthor()); - assertEquals("60f0d7917fe2aed5c92b5bc35dfb55b9b8ada359", fileRevisions[1].getContentIdentifier()); - assertEquals("J. Author",fileRevisions[0].getAuthor()); - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/BranchOperationTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/BranchOperationTest.java new file mode 100644 index 0000000000..2f6b0de69c --- /dev/null +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/BranchOperationTest.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (C) 2010, Jens Baumgart + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.egit.core.test.op; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.File; + +import org.eclipse.egit.core.op.BranchOperation; +import org.eclipse.egit.core.test.GitTestCase; +import org.eclipse.egit.core.test.TestRepository; +import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.Repository; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class BranchOperationTest extends GitTestCase{ + + private static final String TEST = Constants.R_HEADS + "test"; + private static final String MASTER = Constants.R_HEADS + "master"; + TestRepository testRepository; + Repository repository; + + @Before + public void setUp() throws Exception { + super.setUp(); + testRepository = new TestRepository(gitDir); + repository = testRepository.getRepository(); + } + + @After + public void tearDown() throws Exception { + testRepository.dispose(); + repository = null; + super.tearDown(); + } + + @Test + public void testBranchOperation() throws Exception { + // create first commit containing a dummy file + testRepository.createInitialCommit("testBranchOperation\n\nfirst commit\n"); + // create branch test and switch to branch test + testRepository.createBranch(MASTER, TEST); + new BranchOperation(repository, TEST).execute(null); + assertTrue(repository.getFullBranch().equals(TEST)); + // add .project to version control and commit + String path = project.getProject().getLocation().append(".project").toOSString(); + File file = new File(path); + testRepository.track(file); + testRepository.commit("Add .project file"); + // switch back to master branch + // .project must disappear, related Eclipse project must be deleted + new BranchOperation(repository, MASTER).execute(null); + assertFalse(file.exists()); + assertFalse(project.getProject().exists()); + // switch back to master test + // .project must reappear + new BranchOperation(repository, TEST).execute(null); + assertTrue(file.exists()); + } +} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ConnectProviderOperationTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ConnectProviderOperationTest.java new file mode 100644 index 0000000000..934e132fde --- /dev/null +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ConnectProviderOperationTest.java @@ -0,0 +1,130 @@ +/******************************************************************************* + * Copyright (C) 2007, Robin Rosenberg + * Copyright (C) 2008, Shawn O. Pearce + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.egit.core.test.op; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.egit.core.op.ConnectProviderOperation; +import org.eclipse.egit.core.test.GitTestCase; +import org.eclipse.jgit.lib.Commit; +import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.FileTreeEntry; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectWriter; +import org.eclipse.jgit.lib.PersonIdent; +import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.lib.Tree; +import org.eclipse.team.core.RepositoryProvider; +import org.junit.Test; + +public class ConnectProviderOperationTest extends GitTestCase { + + @Test + public void testNoRepository() throws CoreException { + + ConnectProviderOperation operation = new ConnectProviderOperation( + project.getProject(), new File("../..", Constants.DOT_GIT)); + operation.execute(null); + + assertFalse(RepositoryProvider.isShared(project.getProject())); + assertTrue(!gitDir.exists()); + } + + @Test + public void testNewRepository() throws CoreException, IOException { + + File gitDir = new File(project.getProject().getWorkspace().getRoot() + .getRawLocation().toFile(), Constants.DOT_GIT); + Repository repository = new Repository(gitDir); + repository.create(); + repository.close(); + ConnectProviderOperation operation = new ConnectProviderOperation( + project.getProject(), gitDir); + operation.execute(null); + + assertTrue(RepositoryProvider.isShared(project.getProject())); + + assertTrue(gitDir.exists()); + } + + @Test + public void testNewUnsharedFile() throws CoreException, IOException, + InterruptedException { + + project.createSourceFolder(); + IFile fileA = project.getProject().getFolder("src").getFile("A.java"); + String srcA = "class A {\n" + "}\n"; + fileA.create(new ByteArrayInputStream(srcA.getBytes()), false, null); + + File gitDir = new File(project.getProject().getWorkspace().getRoot() + .getRawLocation().toFile(), Constants.DOT_GIT); + Repository thisGit = new Repository(gitDir); + thisGit.create(); + Tree rootTree = new Tree(thisGit); + Tree prjTree = rootTree.addTree(project.getProject().getName()); + Tree srcTree = prjTree.addTree("src"); + FileTreeEntry entryA = srcTree.addFile("A.java"); + ObjectWriter writer = new ObjectWriter(thisGit); + entryA.setId(writer.writeBlob(fileA.getRawLocation().toFile())); + srcTree.setId(writer.writeTree(srcTree)); + prjTree.setId(writer.writeTree(prjTree)); + rootTree.setId(writer.writeTree(rootTree)); + Commit commit = new Commit(thisGit); + commit.setTree(rootTree); + commit.setAuthor(new PersonIdent("J. Git", "j.git@egit.org", new Date( + 60876075600000L), TimeZone.getTimeZone("GMT+1"))); + commit.setCommitter(commit.getAuthor()); + commit.setMessage("testNewUnsharedFile\n\nJunit tests\n"); + ObjectId id = writer.writeCommit(commit); + RefUpdate lck = thisGit.updateRef("refs/heads/master"); + assertNotNull("obtained lock", lck); + lck.setNewObjectId(id); + assertEquals(RefUpdate.Result.NEW, lck.forceUpdate()); + + ConnectProviderOperation operation = new ConnectProviderOperation( + project.getProject(), gitDir); + operation.execute(null); + + final boolean f[] = new boolean[1]; + new Job("wait") { + protected IStatus run(IProgressMonitor monitor) { + + f[0] = true; + return null; + } + + { + setRule(project.getProject()); + schedule(); + } + }; + while (!f[0]) { + Thread.sleep(1000); + } + + assertNotNull(RepositoryProvider.getProvider(project.getProject())); + + } +} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ResetOperationTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ResetOperationTest.java new file mode 100644 index 0000000000..5da8306d4e --- /dev/null +++ b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/ResetOperationTest.java @@ -0,0 +1,154 @@ +/******************************************************************************* + * Copyright (C) 2010, Jens Baumgart + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.egit.core.test.op; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.InputStream; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.egit.core.op.ResetOperation; +import org.eclipse.egit.core.test.GitTestCase; +import org.eclipse.egit.core.test.TestRepository; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class ResetOperationTest extends GitTestCase { + + TestRepository testRepository; + + Repository repository; + + // members filled by setupRepository() + RevCommit initialCommit; + + File projectFile; + + IFile untrackedFile; + + IFile fileInIndex; + + @Before + public void setUp() throws Exception { + super.setUp(); + testRepository = new TestRepository(gitDir); + repository = testRepository.getRepository(); + } + + @After + public void tearDown() throws Exception { + testRepository.dispose(); + repository = null; + super.tearDown(); + } + + @Test + public void testHardReset() throws Exception { + setupRepository(); + String fileInIndexPath = fileInIndex.getLocation().toOSString(); + new ResetOperation(repository, initialCommit.getName(), + ResetOperation.ResetType.HARD).execute(null); + // .project must disappear, related Eclipse project must be deleted + assertFalse(projectFile.exists()); + assertFalse(project.getProject().exists()); + // check if HEAD points to initial commit now + assertTrue(repository.resolve("HEAD").equals(initialCommit)); + // check if files were removed + assertFalse(untrackedFile.exists()); + assertFalse(fileInIndex.exists()); + // fileInIndex must no longer be in HEAD and in the index + assertFalse(testRepository.inHead(fileInIndexPath)); + assertFalse(testRepository.inIndex(fileInIndexPath)); + } + + @Test + public void testSoftReset() throws Exception { + setupRepository(); + String fileInIndexPath = fileInIndex.getLocation().toOSString(); + new ResetOperation(repository, initialCommit.getName(), + ResetOperation.ResetType.SOFT).execute(null); + // .project must remain + assertTrue(projectFile.exists()); + assertTrue(project.getProject().exists()); + // check if HEAD points to initial commit now + assertTrue(repository.resolve("HEAD").equals(initialCommit)); + // untrackedFile and fileInIndex must still exist + assertTrue(untrackedFile.exists()); + assertTrue(fileInIndex.exists()); + // fileInIndex must no longer be in HEAD + assertFalse(testRepository.inHead(fileInIndexPath)); + // fileInIndex must exist in the index + assertTrue(testRepository.inIndex(fileInIndexPath)); + } + + @Test + public void testMixedReset() throws Exception { + setupRepository(); + String fileInIndexPath = fileInIndex.getLocation().toOSString(); + new ResetOperation(repository, initialCommit.getName(), + ResetOperation.ResetType.MIXED).execute(null); + // .project must remain + assertTrue(projectFile.exists()); + assertTrue(project.getProject().exists()); + // check if HEAD points to initial commit now + assertTrue(repository.resolve("HEAD").equals(initialCommit)); + // untrackedFile and fileInIndex must still exist + assertTrue(untrackedFile.exists()); + assertTrue(fileInIndex.exists()); + // fileInIndex must no longer be in HEAD + assertFalse(testRepository.inHead(fileInIndexPath)); + // fileInIndex must not in the index + assertFalse(testRepository.inIndex(fileInIndexPath)); + } + + private void setupRepository() throws Exception { + // create first commit containing a dummy file + initialCommit = testRepository + .createInitialCommit("testResetOperation\n\nfirst commit\n"); + // add .project to version control + String path = project.getProject().getLocation().append(".project") + .toOSString(); + projectFile = new File(path); + testRepository.track(projectFile); + // add fileInIndex to version control + fileInIndex = createFile("fileInIndex"); + testRepository.track(new File(fileInIndex.getLocation().toOSString())); + testRepository.commit("Add .project file"); + // modify fileInIndex and add it to the index + InputStream stream = new ByteArrayInputStream(new byte[] { 'I', 'n', + 'd', 'e', 'x' }); + fileInIndex.setContents(stream, 0, null); + testRepository.addToIndex(fileInIndex); + // create an untracked file + untrackedFile = createFile("untrackedFile"); + } + + /** + * create a file with the given name in the root folder of testproject + * + * @param name + * name of file + * @return new file + * @throws CoreException + */ + private IFile createFile(String name) throws CoreException { + IFile file = project.project.getFile(name); + file.create( + new ByteArrayInputStream(new byte[] { 'T', 'e', 's', 't' }), + true, null); + return file; + } +} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0001_ConnectProviderOperationTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0001_ConnectProviderOperationTest.java deleted file mode 100644 index 13300144ad..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0001_ConnectProviderOperationTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007, Robin Rosenberg - * Copyright (C) 2008, Shawn O. Pearce - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.egit.core.test.op; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.util.Date; -import java.util.TimeZone; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.egit.core.op.ConnectProviderOperation; -import org.eclipse.egit.core.test.GitTestCase; -import org.eclipse.jgit.lib.Commit; -import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.FileTreeEntry; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.ObjectWriter; -import org.eclipse.jgit.lib.PersonIdent; -import org.eclipse.jgit.lib.RefUpdate; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.lib.Tree; -import org.eclipse.team.core.RepositoryProvider; -import org.junit.Test; - -public class T0001_ConnectProviderOperationTest extends GitTestCase { - - @Test - public void testNoRepository() throws CoreException { - - ConnectProviderOperation operation = new ConnectProviderOperation( - project.getProject(), new File("../..", Constants.DOT_GIT)); - operation.execute(null); - - assertFalse(RepositoryProvider.isShared(project.getProject())); - assertTrue(!gitDir.exists()); - } - - @Test - public void testNewRepository() throws CoreException, IOException { - - File gitDir = new File(project.getProject().getWorkspace().getRoot() - .getRawLocation().toFile(), Constants.DOT_GIT); - Repository repository = new Repository(gitDir); - repository.create(); - repository.close(); - ConnectProviderOperation operation = new ConnectProviderOperation( - project.getProject(), gitDir); - operation.execute(null); - - assertTrue(RepositoryProvider.isShared(project.getProject())); - - assertTrue(gitDir.exists()); - } - - @Test - public void testNewUnsharedFile() throws CoreException, IOException, - InterruptedException { - - project.createSourceFolder(); - IFile fileA = project.getProject().getFolder("src").getFile("A.java"); - String srcA = "class A {\n" + "}\n"; - fileA.create(new ByteArrayInputStream(srcA.getBytes()), false, null); - - File gitDir = new File(project.getProject().getWorkspace().getRoot() - .getRawLocation().toFile(), Constants.DOT_GIT); - Repository thisGit = new Repository(gitDir); - thisGit.create(); - Tree rootTree = new Tree(thisGit); - Tree prjTree = rootTree.addTree(project.getProject().getName()); - Tree srcTree = prjTree.addTree("src"); - FileTreeEntry entryA = srcTree.addFile("A.java"); - ObjectWriter writer = new ObjectWriter(thisGit); - entryA.setId(writer.writeBlob(fileA.getRawLocation().toFile())); - srcTree.setId(writer.writeTree(srcTree)); - prjTree.setId(writer.writeTree(prjTree)); - rootTree.setId(writer.writeTree(rootTree)); - Commit commit = new Commit(thisGit); - commit.setTree(rootTree); - commit.setAuthor(new PersonIdent("J. Git", "j.git@egit.org", new Date( - 60876075600000L), TimeZone.getTimeZone("GMT+1"))); - commit.setCommitter(commit.getAuthor()); - commit.setMessage("testNewUnsharedFile\n\nJunit tests\n"); - ObjectId id = writer.writeCommit(commit); - RefUpdate lck = thisGit.updateRef("refs/heads/master"); - assertNotNull("obtained lock", lck); - lck.setNewObjectId(id); - assertEquals(RefUpdate.Result.NEW, lck.forceUpdate()); - - ConnectProviderOperation operation = new ConnectProviderOperation( - project.getProject(), gitDir); - operation.execute(null); - - final boolean f[] = new boolean[1]; - new Job("wait") { - protected IStatus run(IProgressMonitor monitor) { - - System.out.println("MyJob"); - f[0] = true; - return null; - } - - { - setRule(project.getProject()); - schedule(); - } - }; - while (!f[0]) { - System.out.println("Waiting"); - Thread.sleep(1000); - } - System.out.println("DONE"); - - assertNotNull(RepositoryProvider.getProvider(project.getProject())); - - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0004_BranchOperationTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0004_BranchOperationTest.java deleted file mode 100644 index 5b11666095..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0004_BranchOperationTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2010, Jens Baumgart - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.egit.core.test.op; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.File; - -import org.eclipse.egit.core.op.BranchOperation; -import org.eclipse.egit.core.test.GitTestCase; -import org.eclipse.egit.core.test.TestRepository; -import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.Repository; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class T0004_BranchOperationTest extends GitTestCase{ - - private static final String TEST = Constants.R_HEADS + "test"; - private static final String MASTER = Constants.R_HEADS + "master"; - TestRepository testRepository; - Repository repository; - - @Before - public void setUp() throws Exception { - super.setUp(); - testRepository = new TestRepository(gitDir); - repository = testRepository.getRepository(); - } - - @After - public void tearDown() throws Exception { - testRepository.dispose(); - repository = null; - super.tearDown(); - } - - @Test - public void testBranchOperation() throws Exception { - // create first commit containing a dummy file - testRepository.createInitialCommit("testBranchOperation\n\nfirst commit\n"); - // create branch test and switch to branch test - testRepository.createBranch(MASTER, TEST); - new BranchOperation(repository, TEST).execute(null); - assertTrue(repository.getFullBranch().equals(TEST)); - // add .project to version control and commit - String path = project.getProject().getLocation().append(".project").toOSString(); - File file = new File(path); - testRepository.track(file); - testRepository.commit("Add .project file"); - // switch back to master branch - // .project must disappear, related Eclipse project must be deleted - new BranchOperation(repository, MASTER).execute(null); - assertFalse(file.exists()); - assertFalse(project.getProject().exists()); - // switch back to master test - // .project must reappear - new BranchOperation(repository, TEST).execute(null); - assertTrue(file.exists()); - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0005_ResetOperationTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0005_ResetOperationTest.java deleted file mode 100644 index 59adaaf23f..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/test/op/T0005_ResetOperationTest.java +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2010, Jens Baumgart - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.egit.core.test.op; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.InputStream; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.egit.core.op.ResetOperation; -import org.eclipse.egit.core.test.GitTestCase; -import org.eclipse.egit.core.test.TestRepository; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevCommit; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class T0005_ResetOperationTest extends GitTestCase { - - TestRepository testRepository; - - Repository repository; - - // members filled by setupRepository() - RevCommit initialCommit; - - File projectFile; - - IFile untrackedFile; - - IFile fileInIndex; - - @Before - public void setUp() throws Exception { - super.setUp(); - testRepository = new TestRepository(gitDir); - repository = testRepository.getRepository(); - } - - @After - public void tearDown() throws Exception { - testRepository.dispose(); - repository = null; - super.tearDown(); - } - - @Test - public void testHardReset() throws Exception { - setupRepository(); - String fileInIndexPath = fileInIndex.getLocation().toOSString(); - new ResetOperation(repository, initialCommit.getName(), - ResetOperation.ResetType.HARD).execute(null); - // .project must disappear, related Eclipse project must be deleted - assertFalse(projectFile.exists()); - assertFalse(project.getProject().exists()); - // check if HEAD points to initial commit now - assertTrue(repository.resolve("HEAD").equals(initialCommit)); - // check if files were removed - assertFalse(untrackedFile.exists()); - assertFalse(fileInIndex.exists()); - // fileInIndex must no longer be in HEAD and in the index - assertFalse(testRepository.inHead(fileInIndexPath)); - assertFalse(testRepository.inIndex(fileInIndexPath)); - } - - @Test - public void testSoftReset() throws Exception { - setupRepository(); - String fileInIndexPath = fileInIndex.getLocation().toOSString(); - new ResetOperation(repository, initialCommit.getName(), - ResetOperation.ResetType.SOFT).execute(null); - // .project must remain - assertTrue(projectFile.exists()); - assertTrue(project.getProject().exists()); - // check if HEAD points to initial commit now - assertTrue(repository.resolve("HEAD").equals(initialCommit)); - // untrackedFile and fileInIndex must still exist - assertTrue(untrackedFile.exists()); - assertTrue(fileInIndex.exists()); - // fileInIndex must no longer be in HEAD - assertFalse(testRepository.inHead(fileInIndexPath)); - // fileInIndex must exist in the index - assertTrue(testRepository.inIndex(fileInIndexPath)); - } - - @Test - public void testMixedReset() throws Exception { - setupRepository(); - String fileInIndexPath = fileInIndex.getLocation().toOSString(); - new ResetOperation(repository, initialCommit.getName(), - ResetOperation.ResetType.MIXED).execute(null); - // .project must remain - assertTrue(projectFile.exists()); - assertTrue(project.getProject().exists()); - // check if HEAD points to initial commit now - assertTrue(repository.resolve("HEAD").equals(initialCommit)); - // untrackedFile and fileInIndex must still exist - assertTrue(untrackedFile.exists()); - assertTrue(fileInIndex.exists()); - // fileInIndex must no longer be in HEAD - assertFalse(testRepository.inHead(fileInIndexPath)); - // fileInIndex must not in the index - assertFalse(testRepository.inIndex(fileInIndexPath)); - } - - private void setupRepository() throws Exception { - // create first commit containing a dummy file - initialCommit = testRepository - .createInitialCommit("testResetOperation\n\nfirst commit\n"); - // add .project to version control - String path = project.getProject().getLocation().append(".project") - .toOSString(); - projectFile = new File(path); - testRepository.track(projectFile); - // add fileInIndex to version control - fileInIndex = createFile("fileInIndex"); - testRepository.track(new File(fileInIndex.getLocation().toOSString())); - testRepository.commit("Add .project file"); - // modify fileInIndex and add it to the index - InputStream stream = new ByteArrayInputStream(new byte[] { 'I', 'n', - 'd', 'e', 'x' }); - fileInIndex.setContents(stream, 0, null); - testRepository.addToIndex(fileInIndex); - // create an untracked file - untrackedFile = createFile("untrackedFile"); - } - - /** - * create a file with the given name in the root folder of testproject - * - * @param name - * name of file - * @return new file - * @throws CoreException - */ - private IFile createFile(String name) throws CoreException { - IFile file = project.project.getFile(name); - file.create( - new ByteArrayInputStream(new byte[] { 'T', 'e', 's', 't' }), - true, null); - return file; - } -} -- cgit v1.2.3