1 /*******************************************************************************
2 * Copyright (C) 2007, Robin Rosenberg <robin.rosenberg@dewire.com>
3 * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
5 * All rights reserved. This program and the accompanying materials
6 * are made available under the terms of the Eclipse Public License v1.0
7 * See LICENSE for the full license text, also available.
8 *******************************************************************************/
9 package org
.spearce
.egit
.core
.op
;
11 import java
.io
.ByteArrayInputStream
;
13 import java
.io
.IOException
;
14 import java
.util
.Date
;
15 import java
.util
.TimeZone
;
17 import org
.eclipse
.core
.resources
.IFile
;
18 import org
.eclipse
.core
.runtime
.CoreException
;
19 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
20 import org
.eclipse
.core
.runtime
.IStatus
;
21 import org
.eclipse
.core
.runtime
.jobs
.Job
;
22 import org
.eclipse
.team
.core
.RepositoryProvider
;
23 import org
.spearce
.egit
.core
.test
.GitTestCase
;
24 import org
.spearce
.jgit
.lib
.Commit
;
25 import org
.spearce
.jgit
.lib
.FileTreeEntry
;
26 import org
.spearce
.jgit
.lib
.ObjectId
;
27 import org
.spearce
.jgit
.lib
.ObjectWriter
;
28 import org
.spearce
.jgit
.lib
.PersonIdent
;
29 import org
.spearce
.jgit
.lib
.RefUpdate
;
30 import org
.spearce
.jgit
.lib
.Repository
;
31 import org
.spearce
.jgit
.lib
.Tree
;
33 public class T0001_ConnectProviderOperationTest
extends GitTestCase
{
35 public void testNoRepository() throws CoreException
{
37 ConnectProviderOperation operation
= new ConnectProviderOperation(
38 project
.getProject());
41 // We are shared because we declared as shared
42 assertTrue(RepositoryProvider
.isShared(project
.getProject()));
43 assertTrue(!gitDir
.exists());
46 public void testNewRepository() throws CoreException
, IOException
{
48 File gitDir
= new File(project
.getProject().getWorkspace().getRoot()
49 .getRawLocation().toFile(), ".git");
50 Repository repository
= new Repository(gitDir
);
53 ConnectProviderOperation operation
= new ConnectProviderOperation(
54 project
.getProject());
57 assertTrue(RepositoryProvider
.isShared(project
.getProject()));
59 assertTrue(gitDir
.exists());
62 public void testNewUnsharedFile() throws CoreException
, IOException
,
63 InterruptedException
{
65 project
.createSourceFolder();
66 IFile fileA
= project
.getProject().getFolder("src").getFile("A.java");
67 String srcA
= "class A {\n" + "}\n";
68 fileA
.create(new ByteArrayInputStream(srcA
.getBytes()), false, null);
70 File gitDir
= new File(project
.getProject().getWorkspace().getRoot()
71 .getRawLocation().toFile(), ".git");
72 Repository thisGit
= new Repository(gitDir
);
74 Tree rootTree
= new Tree(thisGit
);
75 Tree prjTree
= rootTree
.addTree(project
.getProject().getName());
76 Tree srcTree
= prjTree
.addTree("src");
77 FileTreeEntry entryA
= srcTree
.addFile("A.java");
78 ObjectWriter writer
= new ObjectWriter(thisGit
);
79 entryA
.setId(writer
.writeBlob(fileA
.getRawLocation().toFile()));
80 srcTree
.setId(writer
.writeTree(srcTree
));
81 prjTree
.setId(writer
.writeTree(prjTree
));
82 rootTree
.setId(writer
.writeTree(rootTree
));
83 Commit commit
= new Commit(thisGit
);
84 commit
.setTree(rootTree
);
85 commit
.setAuthor(new PersonIdent("J. Git", "j.git@egit.org", new Date(
86 60876075600000L), TimeZone
.getTimeZone("GMT+1")));
87 commit
.setCommitter(commit
.getAuthor());
88 commit
.setMessage("testNewUnsharedFile\n\nJunit tests\n");
89 ObjectId id
= writer
.writeCommit(commit
);
90 RefUpdate lck
= thisGit
.updateRef("refs/heads/master");
91 assertNotNull("obtained lock", lck
);
92 lck
.setNewObjectId(id
);
93 assertEquals(RefUpdate
.Result
.NEW
, lck
.forceUpdate());
95 ConnectProviderOperation operation
= new ConnectProviderOperation(
96 project
.getProject());
99 final boolean f
[] = new boolean[1];
101 protected IStatus
run(IProgressMonitor monitor
) {
103 System
.out
.println("MyJob");
109 setRule(project
.getProject());
114 System
.out
.println("Waiting");
117 System
.out
.println("DONE");
119 assertNotNull(RepositoryProvider
.getProvider(project
.getProject()));