Add a JUnit test project for egit.
[egit.git] / org.spearce.egit.core.test / src / org / spearce / egit / core / op / T0001_ConnectProviderOperationTest.java
blob63ba83ebacd72308e70e97bcebd217ca88a4511d
1 package org.spearce.egit.core.op;
3 import java.io.ByteArrayInputStream;
4 import java.io.File;
5 import java.io.IOException;
6 import java.util.Date;
7 import java.util.TimeZone;
9 import org.eclipse.core.resources.IFile;
10 import org.eclipse.core.runtime.CoreException;
11 import org.eclipse.core.runtime.IProgressMonitor;
12 import org.eclipse.core.runtime.IStatus;
13 import org.eclipse.core.runtime.jobs.Job;
14 import org.eclipse.team.core.RepositoryProvider;
15 import org.spearce.egit.core.test.GitTestCase;
16 import org.spearce.jgit.lib.Commit;
17 import org.spearce.jgit.lib.FileTreeEntry;
18 import org.spearce.jgit.lib.ObjectId;
19 import org.spearce.jgit.lib.ObjectWriter;
20 import org.spearce.jgit.lib.PersonIdent;
21 import org.spearce.jgit.lib.Repository;
22 import org.spearce.jgit.lib.Tree;
24 public class T0001_ConnectProviderOperationTest extends GitTestCase {
26 public void testNoRepository() throws CoreException {
28 ConnectProviderOperation operation = new ConnectProviderOperation(
29 project.getProject(), null);
30 operation.run(null);
32 // We are shared because we declared as shared
33 assertTrue(RepositoryProvider.isShared(project.getProject()));
34 assertTrue(!gitDir.exists());
37 public void testNewRepository() throws CoreException {
39 File gitDir = new File(project.getProject().getWorkspace().getRoot()
40 .getRawLocation().toFile(), ".git");
41 ConnectProviderOperation operation = new ConnectProviderOperation(
42 project.getProject(), gitDir);
43 operation.run(null);
45 assertTrue(RepositoryProvider.isShared(project.getProject()));
47 assertTrue(gitDir.exists());
50 public void testNewUnsharedFile() throws CoreException, IOException,
51 InterruptedException {
53 project.createSourceFolder();
54 IFile fileA = project.getProject().getFolder("src").getFile("A.java");
55 String srcA = "class A {\n" + "}\n";
56 fileA.create(new ByteArrayInputStream(srcA.getBytes()), false, null);
58 File gitDir = new File(project.getProject().getWorkspace().getRoot()
59 .getRawLocation().toFile(), ".git");
60 Repository thisGit = new Repository(gitDir);
61 thisGit.create();
62 Tree rootTree = new Tree(thisGit);
63 Tree prjTree = rootTree.addTree(project.getProject().getName());
64 Tree srcTree = prjTree.addTree("src");
65 FileTreeEntry entryA = srcTree.addFile("A.java");
66 ObjectWriter writer = new ObjectWriter(thisGit);
67 entryA.setId(writer.writeBlob(fileA.getRawLocation().toFile()));
68 srcTree.setId(writer.writeTree(srcTree));
69 prjTree.setId(writer.writeTree(prjTree));
70 rootTree.setId(writer.writeTree(rootTree));
71 Commit commit = new Commit(thisGit);
72 commit.setTree(rootTree);
73 commit.setAuthor(new PersonIdent("J. Git", "j.git@egit.org", new Date(
74 1999, 1, 1), TimeZone.getTimeZone("GMT+1")));
75 commit.setCommitter(commit.getAuthor());
76 commit.setMessage("testNewUnsharedFile\n\nJunit tests\n");
77 ObjectId id = writer.writeCommit(commit);
78 thisGit.writeRef("refs/heads/master", id);
80 // helper asserts, this is not what we are really testing
81 assertTrue("blob missing", new File(gitDir,
82 "objects/2e/2439c32d01f0ef39644d561945e8f4b2239489").exists());
84 assertTrue("tree missing", new File(gitDir,
85 "objects/87/a105cc4bc0a79885d07ec560c3eee49438acf0").exists());
86 assertTrue("tree missing", new File(gitDir,
87 "objects/08/ccc3d91a14d337a45f355d3d63bd97fd5e4db9").exists());
88 assertTrue("tree missing", new File(gitDir,
89 "objects/9d/aeec817090098f05eeca858e3a552d78b0a346").exists());
91 assertTrue("commit missing", new File(gitDir,
92 "objects/45/df73fd9abbc2c61620c036948b1157e4d21253").exists());
94 ConnectProviderOperation operation = new ConnectProviderOperation(
95 project.getProject(), null);
96 operation.run(null);
98 final boolean f[] = new boolean[1];
99 new Job("wait") {
100 protected IStatus run(IProgressMonitor monitor) {
102 System.out.println("MyJob");
103 f[0] = true;
104 return null;
108 setRule(project.getProject());
109 schedule();
112 while (!f[0]) {
113 System.out.println("Waiting");
114 Thread.sleep(1000);
116 System.out.println("DONE");