Class TestRepository<R extends Repository>

  • 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.
    • 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 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
        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
      • 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
        Since:
        5.5
      • 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.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.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
      • 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
      • 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.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
      • 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