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 * which accompanies this distribution, and is available at
8 * http://www.eclipse.org/legal/epl-v10.html
9 *******************************************************************************/
10 package org
.eclipse
.egit
.core
.op
;
12 import java
.io
.ByteArrayInputStream
;
14 import java
.io
.IOException
;
15 import java
.util
.Date
;
16 import java
.util
.TimeZone
;
18 import org
.eclipse
.core
.resources
.IFile
;
19 import org
.eclipse
.core
.runtime
.CoreException
;
20 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
21 import org
.eclipse
.core
.runtime
.IStatus
;
22 import org
.eclipse
.core
.runtime
.jobs
.Job
;
23 import org
.eclipse
.egit
.core
.op
.ConnectProviderOperation
;
24 import org
.eclipse
.egit
.core
.test
.GitTestCase
;
25 import org
.eclipse
.team
.core
.RepositoryProvider
;
26 import org
.eclipse
.jgit
.lib
.Commit
;
27 import org
.eclipse
.jgit
.lib
.FileTreeEntry
;
28 import org
.eclipse
.jgit
.lib
.ObjectId
;
29 import org
.eclipse
.jgit
.lib
.ObjectWriter
;
30 import org
.eclipse
.jgit
.lib
.PersonIdent
;
31 import org
.eclipse
.jgit
.lib
.RefUpdate
;
32 import org
.eclipse
.jgit
.lib
.Repository
;
33 import org
.eclipse
.jgit
.lib
.Tree
;
35 public class T0001_ConnectProviderOperationTest
extends GitTestCase
{
37 public void testNoRepository() throws CoreException
{
39 ConnectProviderOperation operation
= new ConnectProviderOperation(
40 project
.getProject());
43 assertFalse(RepositoryProvider
.isShared(project
.getProject()));
44 assertTrue(!gitDir
.exists());
47 public void testNewRepository() throws CoreException
, IOException
{
49 File gitDir
= new File(project
.getProject().getWorkspace().getRoot()
50 .getRawLocation().toFile(), ".git");
51 Repository repository
= new Repository(gitDir
);
54 ConnectProviderOperation operation
= new ConnectProviderOperation(
55 project
.getProject());
58 assertTrue(RepositoryProvider
.isShared(project
.getProject()));
60 assertTrue(gitDir
.exists());
63 public void testNewUnsharedFile() throws CoreException
, IOException
,
64 InterruptedException
{
66 project
.createSourceFolder();
67 IFile fileA
= project
.getProject().getFolder("src").getFile("A.java");
68 String srcA
= "class A {\n" + "}\n";
69 fileA
.create(new ByteArrayInputStream(srcA
.getBytes()), false, null);
71 File gitDir
= new File(project
.getProject().getWorkspace().getRoot()
72 .getRawLocation().toFile(), ".git");
73 Repository thisGit
= new Repository(gitDir
);
75 Tree rootTree
= new Tree(thisGit
);
76 Tree prjTree
= rootTree
.addTree(project
.getProject().getName());
77 Tree srcTree
= prjTree
.addTree("src");
78 FileTreeEntry entryA
= srcTree
.addFile("A.java");
79 ObjectWriter writer
= new ObjectWriter(thisGit
);
80 entryA
.setId(writer
.writeBlob(fileA
.getRawLocation().toFile()));
81 srcTree
.setId(writer
.writeTree(srcTree
));
82 prjTree
.setId(writer
.writeTree(prjTree
));
83 rootTree
.setId(writer
.writeTree(rootTree
));
84 Commit commit
= new Commit(thisGit
);
85 commit
.setTree(rootTree
);
86 commit
.setAuthor(new PersonIdent("J. Git", "j.git@egit.org", new Date(
87 60876075600000L), TimeZone
.getTimeZone("GMT+1")));
88 commit
.setCommitter(commit
.getAuthor());
89 commit
.setMessage("testNewUnsharedFile\n\nJunit tests\n");
90 ObjectId id
= writer
.writeCommit(commit
);
91 RefUpdate lck
= thisGit
.updateRef("refs/heads/master");
92 assertNotNull("obtained lock", lck
);
93 lck
.setNewObjectId(id
);
94 assertEquals(RefUpdate
.Result
.NEW
, lck
.forceUpdate());
96 ConnectProviderOperation operation
= new ConnectProviderOperation(
97 project
.getProject());
100 final boolean f
[] = new boolean[1];
102 protected IStatus
run(IProgressMonitor monitor
) {
104 System
.out
.println("MyJob");
110 setRule(project
.getProject());
115 System
.out
.println("Waiting");
118 System
.out
.println("DONE");
120 assertNotNull(RepositoryProvider
.getProvider(project
.getProject()));