Class RepositoryTestCase

  • Direct Known Subclasses:
    SshTestHarness

    public abstract class RepositoryTestCase
    extends LocalDiskRepositoryTestCase
    Base class for most JGit unit tests. Sets up a predefined test repository and has support for creating additional repositories and destroying them when the tests are finished.
    • Field Detail

      • db

        protected FileRepository db
        Test repository, initialized for this test case.
      • trash

        protected File trash
        Working directory of db.
    • Constructor Detail

      • RepositoryTestCase

        public RepositoryTestCase()
    • Method Detail

      • writeLink

        protected Path writeLink​(String link,
                                 String target)
                          throws Exception
        Create a symbolic link
        Parameters:
        link - the path of the symbolic link to create
        target - the target of the symbolic link
        Returns:
        the path to the symbolic link
        Throws:
        Exception
        Since:
        4.2
      • check

        protected boolean check​(String name)
        Check if file exists
        Parameters:
        name - file name
        Returns:
        if the file exists
      • deleteTrashFile

        protected void deleteTrashFile​(String name)
                                throws IOException
        Delete a trash file
        Parameters:
        name - file name
        Throws:
        IOException
      • checkFile

        protected static void checkFile​(File f,
                                        String checkData)
                                 throws IOException
        Check content of a file.
        Parameters:
        f -
        checkData - expected content
        Throws:
        IOException
      • indexState

        public String indexState​(int includedOptions)
                          throws IllegalStateException,
                                 IOException
        Represent the state of the index in one String. This representation is useful when writing tests which do assertions on the state of the index. By default information about path, mode, stage (if different from 0) is included. A bitmask controls which additional info about modificationTimes, smudge state and length is included.

        The format of the returned string is described with this BNF:

         result = ( "[" path mode stage? time? smudge? length? sha1? content? "]" )* .
         mode = ", mode:" number .
         stage = ", stage:" number .
         time = ", time:t" timestamp-index .
         smudge = "" | ", smudged" .
         length = ", length:" number .
         sha1 = ", sha1:" hex-sha1 .
         content = ", content:" blob-data .
         
        'stage' is only presented when the stage is different from 0. All reported time stamps are mapped to strings like "t0", "t1", ... "tn". The smallest reported time-stamp will be called "t0". This allows to write assertions against the string although the concrete value of the time stamps is unknown.
        Parameters:
        includedOptions - a bitmask constructed out of the constants LocalDiskRepositoryTestCase.MOD_TIME, LocalDiskRepositoryTestCase.SMUDGE, LocalDiskRepositoryTestCase.LENGTH, LocalDiskRepositoryTestCase.CONTENT_ID and LocalDiskRepositoryTestCase.CONTENT controlling which info is present in the resulting string.
        Returns:
        a string encoding the index state
        Throws:
        IllegalStateException
        IOException
      • resetIndex

        protected void resetIndex​(FileTreeIterator treeItr)
                           throws FileNotFoundException,
                                  IOException
        Resets the index to represent exactly some filesystem content. E.g. the following call will replace the index with the working tree content:

        resetIndex(new FileSystemIterator(db))

        This method can be used by testcases which first prepare a new commit somewhere in the filesystem (e.g. in the working-tree) and then want to have an index which matches their prepared content.

        Parameters:
        treeItr - a FileTreeIterator which determines which files should go into the new index
        Throws:
        FileNotFoundException
        IOException
      • lookup

        public static String lookup​(Object l,
                                    String nameTemplate,
                                    Map<Object,​String> lookupTable)
        Helper method to map arbitrary objects to user-defined names. This can be used create short names for objects to produce small and stable debug output. It is guaranteed that when you lookup the same object multiple times even with different nameTemplates this method will always return the same name which was derived from the first nameTemplate. nameTemplates can contain "%n" which will be replaced by a running number before used as a name.
        Parameters:
        l - the object to lookup
        lookupTable - a table storing object-name mappings.
        nameTemplate - the name for that object. Can contain "%n" which will be replaced by a running number before used as a name. If the lookup table already contains the object this parameter will be ignored
        Returns:
        a name of that object. Is not guaranteed to be unique. Use nameTemplates containing "%n" to always have unique names
      • slashify

        public static String slashify​(String str)
        Replaces '\' by '/'
        Parameters:
        str - the string in which backslashes should be replaced
        Returns:
        the resulting string with slashes
        Since:
        4.2
      • fsTick

        public static Instant fsTick​(File lastFile)
                              throws InterruptedException,
                                     IOException
        Waits until it is guaranteed that a subsequent file modification has a younger modification timestamp than the modification timestamp of the given file. This is done by touching a temporary file, reading the lastmodified attribute and, if needed, sleeping. After sleeping this loop starts again until the filesystem timer has advanced enough. The temporary file will be created as a sibling of lastFile.
        Parameters:
        lastFile - the file on which we want to wait until the filesystem timer has advanced more than the lastmodification timestamp of this file
        Returns:
        return the last measured value of the filesystem timer which is greater than then the lastmodification time of lastfile.
        Throws:
        InterruptedException
        IOException
        Since:
        5.1.9
      • writeTrashFiles

        protected File writeTrashFiles​(boolean ensureDistinctTimestamps,
                                       String... contents)
                                throws IOException,
                                       InterruptedException
        Writes a number of files in the working tree. The first content specified will be written into a file named '0', the second into a file named "1" and so on. If null is specified as content then this file is skipped.
        Parameters:
        ensureDistinctTimestamps - if set to true then between two write operations this method will wait to ensure that the second file will get a different lastmodification timestamp than the first file.
        contents - the contents which should be written into the files
        Returns:
        the File object associated to the last written file.
        Throws:
        IOException
        InterruptedException
      • commitFile

        protected RevCommit commitFile​(String filename,
                                       String contents,
                                       String branch)
        Commit a file with the specified contents on the specified branch, creating the branch if it didn't exist before.

        It switches back to the original branch after the commit if there was one.

        Parameters:
        filename -
        contents -
        branch -
        Returns:
        the created commit
      • createEntry

        protected DirCacheEntry createEntry​(String path,
                                            FileMode mode)
        Create DirCacheEntry
        Parameters:
        path -
        mode -
        Returns:
        the DirCacheEntry
      • createEntry

        protected DirCacheEntry createEntry​(String path,
                                            FileMode mode,
                                            String content)
        Create DirCacheEntry
        Parameters:
        path -
        mode -
        content -
        Returns:
        the DirCacheEntry
      • createEntry

        protected DirCacheEntry createEntry​(String path,
                                            FileMode mode,
                                            int stage,
                                            String content)
        Create DirCacheEntry
        Parameters:
        path -
        mode -
        stage -
        content -
        Returns:
        the DirCacheEntry
      • createGitLink

        protected DirCacheEntry createGitLink​(String path,
                                              AnyObjectId objectId)
        Create DirCacheEntry
        Parameters:
        path -
        objectId -
        Returns:
        the DirCacheEntry
      • assertEqualsFile

        public static void assertEqualsFile​(File expected,
                                            File actual)
                                     throws IOException
        Assert files are equal
        Parameters:
        expected -
        actual -
        Throws:
        IOException