Class TestRepository<R extends Repository>
- java.lang.Object
-
- org.eclipse.jgit.junit.TestRepository<R>
-
- Type Parameters:
R
- type of Repository the test data is stored on.
- All Implemented Interfaces:
AutoCloseable
public class TestRepository<R extends Repository> extends Object implements AutoCloseable
Wrapper to make creating test data easier.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
TestRepository.BranchBuilder
Helper to build a branch with one or more commitsclass
TestRepository.CommitBuilder
Helper to generate a commit.
-
Field Summary
Fields Modifier and Type Field Description static String
AUTHOR
ConstantAUTHOR="J.
static String
AUTHOR_EMAIL
ConstantAUTHOR_EMAIL="jauthor@example.com"
static String
COMMITTER
ConstantCOMMITTER="J.
static String
COMMITTER_EMAIL
ConstantCOMMITTER_EMAIL="jcommitter@example.com"
-
Constructor Summary
Constructors Constructor Description TestRepository(R db)
Wrap a repository with test building tools.TestRepository(R db, RevWalk rw)
Wrap a repository with test building tools.TestRepository(R db, RevWalk rw, MockSystemReader reader)
Wrap a repository with test building tools.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TestRepository.CommitBuilder
amend(AnyObjectId id)
Amend an existing commit.TestRepository.CommitBuilder
amendRef(String ref)
Amend an existing ref.RevBlob
blob(byte[] content)
Create a new blob object in the repository.RevBlob
blob(String content)
Create a new blob object in the repository.TestRepository.BranchBuilder
branch(String ref)
Create a new branch builder for this repository.RevCommit
cherryPick(AnyObjectId id)
Cherry-pick a commit onto HEAD.void
close()
Closes the underlyingRepository
object and any other internal resources.TestRepository.CommitBuilder
commit()
Create commit builderRevCommit
commit(int secDelta, RevCommit... parents)
Create a new commit.RevCommit
commit(int secDelta, RevTree tree, RevCommit... parents)
Create a new commit.RevCommit
commit(RevCommit... parents)
Create a new commit.RevCommit
commit(RevTree tree, RevCommit... parents)
Create a new commit.void
delete(String ref)
Delete a reference.DirCacheEntry
file(String path, RevBlob blob)
Construct a regular file mode tree entry.void
fsck(RevObject... tips)
Run consistency checks against the object database.RevObject
get(RevTree tree, String path)
Lookup an entry stored in a tree, failing if not present.Date
getDate()
Get dateR
getRepository()
Get repositoryRevWalk
getRevWalk()
Get RevWalkTimeZone
getTimeZone()
Get timezoneGit
git()
Return Git API wrapperObjectId
lightweightTag(String name, ObjectId obj)
Tag an object using a lightweight tag.DirCacheEntry
link(String path, RevBlob blob)
Construct a symlink mode tree entry.void
packAndPrune()
Pack all reachable objects in the repository into a single pack file.<T extends RevObject>
TparseBody(T object)
Ensure the body of the given object has been parsed.void
reset(String name)
Soft-reset HEAD to a different commit.void
reset(AnyObjectId id)
Soft-reset HEAD to a detached state.void
setAuthorAndCommitter(CommitBuilder c)
Set the author and committer usinggetDate()
.RevTag
tag(String name, RevObject dst)
Construct an annotated tag object pointing at another object.void
tick(int secDelta)
Adjust the current time that will used by the next commit.RevTree
tree(DirCacheEntry... entries)
Construct a tree from a specific listing of file entries.ObjectId
unparsedCommit(int secDelta, RevTree tree, ObjectId... parents)
Create a new, unparsed commit.ObjectId
unparsedCommit(ObjectId... parents)
Create a new, unparsed commit.RevCommit
update(String ref, TestRepository.CommitBuilder to)
Update a reference to point to an object.<T extends AnyObjectId>
Tupdate(String ref, T obj)
Update a reference to point to an object.void
updateServerInfo()
Update the dumb client server info files.
-
-
-
Field Detail
-
AUTHOR
public static final String AUTHOR
ConstantAUTHOR="J. Author"
- See Also:
- Constant Field Values
-
AUTHOR_EMAIL
public static final String AUTHOR_EMAIL
ConstantAUTHOR_EMAIL="jauthor@example.com"
- See Also:
- Constant Field Values
-
COMMITTER
public static final String COMMITTER
ConstantCOMMITTER="J. Committer"
- See Also:
- Constant Field Values
-
COMMITTER_EMAIL
public static final String COMMITTER_EMAIL
ConstantCOMMITTER_EMAIL="jcommitter@example.com"
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
TestRepository
public TestRepository(R db) throws IOException
Wrap a repository with test building tools.- Parameters:
db
- the test repository to write into.- Throws:
IOException
-
TestRepository
public TestRepository(R db, RevWalk rw) throws IOException
Wrap a repository with test building tools.- Parameters:
db
- the test repository to write into.rw
- the RevObject pool to use for object lookup.- Throws:
IOException
-
TestRepository
public TestRepository(R db, RevWalk rw, MockSystemReader reader) throws IOException
Wrap a repository with test building tools.- Parameters:
db
- the test repository to write into.rw
- the RevObject pool to use for object lookup.reader
- the MockSystemReader to use for clock and other system operations.- Throws:
IOException
- Since:
- 4.2
-
-
Method Detail
-
getRepository
public R getRepository()
Get repository- Returns:
- the repository this helper class operates against.
-
getRevWalk
public RevWalk getRevWalk()
Get RevWalk- Returns:
- get the RevWalk pool all objects are allocated through.
-
git
public Git git()
Return Git API wrapper- Returns:
- an API wrapper for the underlying repository. This wrapper does not allocate any new resources and need not be closed (but closing it is harmless).
-
getDate
public Date getDate()
Get date- Returns:
- current date.
- Since:
- 4.2
-
getTimeZone
public TimeZone getTimeZone()
Get timezone- Returns:
- timezone used for default identities.
-
tick
public void tick(int secDelta)
Adjust the current time that will used by the next commit.- Parameters:
secDelta
- number of seconds to add to the current time.
-
setAuthorAndCommitter
public void setAuthorAndCommitter(CommitBuilder c)
Set the author and committer usinggetDate()
.- Parameters:
c
- the commit builder to store.
-
blob
public RevBlob blob(String content) throws Exception
Create a new blob object in the repository.- Parameters:
content
- file content, will be UTF-8 encoded.- Returns:
- reference to the blob.
- Throws:
Exception
-
blob
public RevBlob blob(byte[] content) throws Exception
Create a new blob object in the repository.- Parameters:
content
- binary file content.- Returns:
- the new, fully parsed blob.
- Throws:
Exception
-
file
public DirCacheEntry file(String path, RevBlob blob) throws Exception
Construct a regular file mode tree entry.- Parameters:
path
- path of the file.blob
- a blob, previously constructed in the repository.- Returns:
- the entry.
- Throws:
Exception
-
link
public DirCacheEntry link(String path, RevBlob blob) throws Exception
Construct a symlink mode tree entry.- Parameters:
path
- path of the symlink.blob
- a blob, previously constructed in the repository.- Returns:
- the entry.
- Throws:
Exception
- Since:
- 6.3
-
tree
public RevTree tree(DirCacheEntry... entries) throws Exception
Construct a tree from a specific listing of file entries.- Parameters:
entries
- the files to include in the tree. The collection does not need to be sorted properly and may be empty.- Returns:
- the new, fully parsed tree specified by the entry list.
- Throws:
Exception
-
get
public RevObject get(RevTree tree, String path) throws Exception
Lookup an entry stored in a tree, failing if not present.- Parameters:
tree
- the tree to search.path
- the path to find the entry of.- Returns:
- the parsed object entry at this path, never null.
- Throws:
Exception
-
unparsedCommit
public ObjectId unparsedCommit(ObjectId... parents) throws Exception
Create a new, unparsed commit.See
unparsedCommit(int, RevTree, ObjectId...)
. The tree is the empty tree (no files or subdirectories).- Parameters:
parents
- zero or more IDs of the commit's parents.- Returns:
- the ID of the new commit.
- Throws:
Exception
- Since:
- 5.5
-
commit
public RevCommit commit(RevCommit... parents) throws Exception
Create a new commit.See
commit(int, RevTree, RevCommit...)
. The tree is the empty tree (no files or subdirectories).- Parameters:
parents
- zero or more parents of the commit.- Returns:
- the new commit.
- Throws:
Exception
-
commit
public RevCommit commit(RevTree tree, RevCommit... parents) throws Exception
Create a new commit.- Parameters:
tree
- the root tree for the commit.parents
- zero or more parents of the commit.- Returns:
- the new commit.
- Throws:
Exception
-
commit
public RevCommit commit(int secDelta, RevCommit... parents) throws Exception
Create a new commit.See
commit(int, RevTree, RevCommit...)
. The tree is the empty tree (no files or subdirectories).
-
commit
public RevCommit commit(int secDelta, RevTree tree, RevCommit... parents) throws Exception
Create a new commit.The author and committer identities are stored using the current timestamp, after being incremented by
secDelta
. The message body is empty.
-
unparsedCommit
public ObjectId unparsedCommit(int secDelta, RevTree tree, ObjectId... parents) throws Exception
Create a new, unparsed commit.The author and committer identities are stored using the current timestamp, after being incremented by
secDelta
. The message body is empty.
-
commit
public TestRepository.CommitBuilder commit()
Create commit builder- Returns:
- a new commit builder.
-
tag
public RevTag tag(String name, RevObject dst) throws Exception
Construct an annotated tag object pointing at another object.The tagger is the committer identity, at the current time as specified by
tick(int)
. The time is not increased.The tag message is empty.
- Parameters:
name
- name of the tag. Traditionally a tag name should not start withrefs/tags/
.dst
- object the tag should be pointed at.- Returns:
- the new, fully parsed annotated tag object.
- Throws:
Exception
-
update
public RevCommit update(String ref, TestRepository.CommitBuilder to) throws Exception
Update a reference to point to an object.- Parameters:
ref
- the name of the reference to update to. Ifref
does not start withrefs/
and is not the magic namesHEAD
FETCH_HEAD
orMERGE_HEAD
, thenrefs/heads/
will be prefixed in front of the given name, thereby assuming it is a branch.to
- the target object.- Returns:
- the target object.
- Throws:
Exception
-
amendRef
public TestRepository.CommitBuilder amendRef(String ref) throws Exception
Amend an existing ref.- Parameters:
ref
- the name of the reference to amend, which must already exist. Ifref
does not start withrefs/
and is not the magic namesHEAD
FETCH_HEAD
orMERGE_HEAD
, thenrefs/heads/
will be prefixed in front of the given name, thereby assuming it is a branch.- Returns:
- commit builder that amends the branch on commit.
- Throws:
Exception
-
amend
public TestRepository.CommitBuilder amend(AnyObjectId id) throws Exception
Amend an existing commit.- Parameters:
id
- the id of the commit to amend.- Returns:
- commit builder.
- Throws:
Exception
-
update
public <T extends AnyObjectId> T update(String ref, T obj) throws Exception
Update a reference to point to an object.- Type Parameters:
T
- type of the target object.- Parameters:
ref
- the name of the reference to update to. Ifref
does not start withrefs/
and is not the magic namesHEAD
FETCH_HEAD
orMERGE_HEAD
, thenrefs/heads/
will be prefixed in front of the given name, thereby assuming it is a branch.obj
- the target object.- Returns:
- the target object.
- Throws:
Exception
-
delete
public void delete(String ref) throws Exception
Delete a reference.- Parameters:
ref
- the name of the reference to delete. This is normalized in the same way asupdate(String, AnyObjectId)
.- Throws:
Exception
- Since:
- 4.4
-
reset
public void reset(AnyObjectId id) throws Exception
Soft-reset HEAD to a detached state.- Parameters:
id
- ID of detached head.- Throws:
Exception
- See Also:
reset(String)
-
reset
public void reset(String name) throws Exception
Soft-reset HEAD to a different commit.This is equivalent to
git reset --soft
in that it modifies HEAD but not the index or the working tree of a non-bare repository.- Parameters:
name
- revision string; either an existing ref name, or something that can be parsed to an object ID.- Throws:
Exception
-
cherryPick
public RevCommit cherryPick(AnyObjectId id) throws Exception
Cherry-pick a commit onto HEAD.This differs from
git cherry-pick
in that it works in a bare repository. As a result, any merge failure results in an exception, as there is no way to recover.- Parameters:
id
- commit-ish to cherry-pick.- Returns:
- the new, fully parsed commit, or null if no work was done due to the resulting tree being identical.
- Throws:
Exception
-
updateServerInfo
public void updateServerInfo() throws Exception
Update the dumb client server info files.- Throws:
Exception
-
parseBody
public <T extends RevObject> T parseBody(T object) throws Exception
Ensure the body of the given object has been parsed.
-
branch
public TestRepository.BranchBuilder branch(String ref)
Create a new branch builder for this repository.- Parameters:
ref
- name of the branch to be constructed. Ifref
does not start withrefs/
the prefixrefs/heads/
will be added.- Returns:
- builder for the named branch.
-
lightweightTag
public ObjectId lightweightTag(String name, ObjectId obj) throws Exception
Tag an object using a lightweight tag.- Parameters:
name
- the tag name. The /refs/tags/ prefix will be added if the name doesn't start with itobj
- the object to tag- Returns:
- the tagged object
- Throws:
Exception
-
fsck
public void fsck(RevObject... tips) throws MissingObjectException, IncorrectObjectTypeException, IOException
Run consistency checks against the object database.This method completes silently if the checks pass. A temporary revision pool is constructed during the checking.
- Parameters:
tips
- the tips to start checking from; if not supplied the refs of the repository are used instead.- Throws:
MissingObjectException
IncorrectObjectTypeException
IOException
-
packAndPrune
public void packAndPrune() throws Exception
Pack all reachable objects in the repository into a single pack file.All loose objects are automatically pruned. Existing packs however are not removed.
- Throws:
Exception
-
close
public void close()
Closes the underlyingRepository
object and any other internal resources.AutoCloseable
resources that may escape this object, such as those returned by thegit
andgetRevWalk()
methods are not closed.- Specified by:
close
in interfaceAutoCloseable
-
-