1 package org
.spearce
.egit
.core
.op
;
3 import java
.io
.ByteArrayInputStream
;
5 import java
.io
.IOException
;
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);
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
);
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
);
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);
98 final boolean f
[] = new boolean[1];
100 protected IStatus
run(IProgressMonitor monitor
) {
102 System
.out
.println("MyJob");
108 setRule(project
.getProject());
113 System
.out
.println("Waiting");
116 System
.out
.println("DONE");