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.
  • Field Details

  • Constructor Details

    • 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 Details

    • 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 using getDate().
      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 - if an error occurred
      Since:
      5.13.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
    • 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.

      See commit(int, RevTree, RevCommit...).

      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).

      Parameters:
      secDelta - number of seconds to advance tick(int) by.
      parents - zero or more parents of the commit.
      Returns:
      the new commit.
      Throws:
      Exception
    • 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.

      Parameters:
      secDelta - number of seconds to advance tick(int) by.
      tree - the root tree for the commit.
      parents - zero or more parents of the commit.
      Returns:
      the new, fully parsed commit.
      Throws:
      Exception
    • 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.

      Parameters:
      secDelta - number of seconds to advance tick(int) by.
      tree - the root tree for the commit.
      parents - zero or more IDs of the commit's parents.
      Returns:
      the ID of the new commit.
      Throws:
      Exception
    • commit

      public TestRepository<R>.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 with refs/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<R>.CommitBuilder to) throws Exception
      Update a reference to point to an object.
      Parameters:
      ref - the name of the reference to update to. If ref does not start with refs/ and is not the magic names HEAD FETCH_HEAD or MERGE_HEAD, then refs/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<R>.CommitBuilder amendRef(String ref) throws Exception
      Amend an existing ref.
      Parameters:
      ref - the name of the reference to amend, which must already exist. If ref does not start with refs/ and is not the magic names HEAD FETCH_HEAD or MERGE_HEAD, then refs/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<R>.CommitBuilder amend(AnyObjectId id) throws Exception
      Amend an existing commit.
      Parameters:
      id - the id of the commit to amend.
      Returns:
      commit builder.
      Throws:
      Exception
    • amend

      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. If ref does not start with refs/ and is not the magic names HEAD FETCH_HEAD or MERGE_HEAD, then refs/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 as update(String, AnyObjectId).
      Throws:
      Exception
      Since:
      4.4
    • normalizeRef

      private static String normalizeRef(String ref)
    • 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

      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.
      Type Parameters:
      T - type of object, e.g. RevTag or RevCommit.
      Parameters:
      object - reference to the (possibly unparsed) object to force body parsing of.
      Returns:
      object
      Throws:
      Exception
    • branch

      public TestRepository<R>.BranchBuilder branch(String ref)
      Create a new branch builder for this repository.
      Parameters:
      ref - name of the branch to be constructed. If ref does not start with refs/ the prefix refs/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 it
      obj - the object to tag
      Returns:
      the tagged object
      Throws:
      Exception
    • fsck

      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
    • assertHash

      private static void assertHash(RevObject id, byte[] bin)
    • 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 underlying Repository object and any other internal resources.

      AutoCloseable resources that may escape this object, such as those returned by the git and getRevWalk() methods are not closed.

      Specified by:
      close in interface AutoCloseable
    • prunePacked

      private static void prunePacked(ObjectDirectory odb) throws IOException
      Throws:
      IOException
    • writeFile

      private void writeFile(File p, byte[] bin) throws IOException, ObjectWritingException
      Throws:
      IOException
      ObjectWritingException