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
.RefUpdate
;
22 import org
.spearce
.jgit
.lib
.Repository
;
23 import org
.spearce
.jgit
.lib
.Tree
;
25 public class T0001_ConnectProviderOperationTest
extends GitTestCase
{
27 public void testNoRepository() throws CoreException
{
29 ConnectProviderOperation operation
= new ConnectProviderOperation(
30 project
.getProject(), null);
33 // We are shared because we declared as shared
34 assertTrue(RepositoryProvider
.isShared(project
.getProject()));
35 assertTrue(!gitDir
.exists());
38 public void testNewRepository() throws CoreException
{
40 File gitDir
= new File(project
.getProject().getWorkspace().getRoot()
41 .getRawLocation().toFile(), ".git");
42 ConnectProviderOperation operation
= new ConnectProviderOperation(
43 project
.getProject(), gitDir
);
46 assertTrue(RepositoryProvider
.isShared(project
.getProject()));
48 assertTrue(gitDir
.exists());
51 public void testNewUnsharedFile() throws CoreException
, IOException
,
52 InterruptedException
{
54 project
.createSourceFolder();
55 IFile fileA
= project
.getProject().getFolder("src").getFile("A.java");
56 String srcA
= "class A {\n" + "}\n";
57 fileA
.create(new ByteArrayInputStream(srcA
.getBytes()), false, null);
59 File gitDir
= new File(project
.getProject().getWorkspace().getRoot()
60 .getRawLocation().toFile(), ".git");
61 Repository thisGit
= new Repository(gitDir
);
63 Tree rootTree
= new Tree(thisGit
);
64 Tree prjTree
= rootTree
.addTree(project
.getProject().getName());
65 Tree srcTree
= prjTree
.addTree("src");
66 FileTreeEntry entryA
= srcTree
.addFile("A.java");
67 ObjectWriter writer
= new ObjectWriter(thisGit
);
68 entryA
.setId(writer
.writeBlob(fileA
.getRawLocation().toFile()));
69 srcTree
.setId(writer
.writeTree(srcTree
));
70 prjTree
.setId(writer
.writeTree(prjTree
));
71 rootTree
.setId(writer
.writeTree(rootTree
));
72 Commit commit
= new Commit(thisGit
);
73 commit
.setTree(rootTree
);
74 commit
.setAuthor(new PersonIdent("J. Git", "j.git@egit.org", new Date(
75 1999, 1, 1), TimeZone
.getTimeZone("GMT+1")));
76 commit
.setCommitter(commit
.getAuthor());
77 commit
.setMessage("testNewUnsharedFile\n\nJunit tests\n");
78 ObjectId id
= writer
.writeCommit(commit
);
79 RefUpdate lck
= thisGit
.updateRef("refs/heads/master");
80 assertNotNull("obtained lock", lck
);
81 lck
.setNewObjectId(id
);
82 assertEquals(RefUpdate
.Result
.NEW
, lck
.forceUpdate());
84 // helper asserts, this is not what we are really testing
85 assertTrue("blob missing", new File(gitDir
,
86 "objects/2e/2439c32d01f0ef39644d561945e8f4b2239489").exists());
88 assertTrue("tree missing", new File(gitDir
,
89 "objects/87/a105cc4bc0a79885d07ec560c3eee49438acf0").exists());
90 assertTrue("tree missing", new File(gitDir
,
91 "objects/08/ccc3d91a14d337a45f355d3d63bd97fd5e4db9").exists());
92 assertTrue("tree missing", new File(gitDir
,
93 "objects/9d/aeec817090098f05eeca858e3a552d78b0a346").exists());
94 assertTrue("commit missing", new File(gitDir
,
95 "objects/09/6f1a84091b90b6d9fb12f95848da69496305c1").exists());
97 ConnectProviderOperation operation
= new ConnectProviderOperation(
98 project
.getProject(), null);
101 final boolean f
[] = new boolean[1];
103 protected IStatus
run(IProgressMonitor monitor
) {
105 System
.out
.println("MyJob");
111 setRule(project
.getProject());
116 System
.out
.println("Waiting");
119 System
.out
.println("DONE");