Package org.eclipse.jgit.junit
Class RepositoryTestCase
- java.lang.Object
-
- org.eclipse.jgit.junit.LocalDiskRepositoryTestCase
-
- org.eclipse.jgit.junit.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 Summary
Fields Modifier and Type Field Description protected FileRepository
db
Test repository, initialized for this test case.protected File
trash
Working directory ofdb
.-
Fields inherited from class org.eclipse.jgit.junit.LocalDiskRepositoryTestCase
ASSUME_UNCHANGED, author, committer, CONTENT, CONTENT_ID, currentTest, LENGTH, mockSystemReader, MOD_TIME, SMUDGE
-
-
Constructor Summary
Constructors Constructor Description RepositoryTestCase()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
assertEqualsFile(File expected, File actual)
Assert files are equalprotected boolean
check(String name)
Check if file existsprotected static void
checkFile(File f, String checkData)
Check content of a file.protected void
checkoutBranch(String branchName)
Checkout a branchprotected 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.protected static void
copyFile(File src, File dst)
Copy a fileprotected void
createBranch(ObjectId objectId, String branchName)
Create a branchprotected DirCacheEntry
createEntry(String path, FileMode mode)
CreateDirCacheEntry
protected DirCacheEntry
createEntry(String path, FileMode mode, int stage, String content)
CreateDirCacheEntry
protected DirCacheEntry
createEntry(String path, FileMode mode, String content)
CreateDirCacheEntry
protected DirCacheEntry
createGitLink(String path, AnyObjectId objectId)
CreateDirCacheEntry
protected void
deleteTrashFile(String name)
Delete a trash filestatic Instant
fsTick(File lastFile)
Waits until it is guaranteed that a subsequent file modification has a younger modification timestamp than the modification timestamp of the given file.List<Ref>
getRefs()
Get all RefsString
indexState(int includedOptions)
Represent the state of the index in one String.static String
lookup(Object l, String nameTemplate, Map<Object,String> lookupTable)
Helper method to map arbitrary objects to user-defined names.protected String
read(String name)
Read content of a fileprotected void
resetIndex(FileTreeIterator treeItr)
Resets the index to represent exactly some filesystem content.void
setUp()
Setup teststatic String
slashify(String str)
Replaces '\' by '/'void
tearDown()
Tear down the testprotected Path
writeLink(String link, String target)
Create a symbolic linkprotected File
writeTrashFile(String name, String data)
Write a trash fileprotected File
writeTrashFile(String subdir, String name, String data)
Write a trash fileprotected File
writeTrashFiles(boolean ensureDistinctTimestamps, String... contents)
Writes a number of files in the working tree.-
Methods inherited from class org.eclipse.jgit.junit.LocalDiskRepositoryTestCase
addRepoToClose, createBareRepository, createRepository, createRepository, createTempDirectory, createTempFile, createUniqueTestGitDir, createWorkRepository, getCeilings, getTemporaryDirectory, indexState, read, recursiveDelete, runHook, tick, write, write
-
-
-
-
Field Detail
-
db
protected FileRepository db
Test repository, initialized for this test case.
-
-
Method Detail
-
copyFile
protected static void copyFile(File src, File dst) throws IOException
Copy a file- Parameters:
src
-dst
-- Throws:
IOException
-
writeTrashFile
protected File writeTrashFile(String name, String data) throws IOException
Write a trash file- Parameters:
name
-data
-- Returns:
- the trash file
- Throws:
IOException
-
writeLink
protected Path writeLink(String link, String target) throws Exception
Create a symbolic link- Parameters:
link
- the path of the symbolic link to createtarget
- the target of the symbolic link- Returns:
- the path to the symbolic link
- Throws:
Exception
- Since:
- 4.2
-
writeTrashFile
protected File writeTrashFile(String subdir, String name, String data) throws IOException
Write a trash file- Parameters:
subdir
-name
-data
-- Returns:
- the trash file
- Throws:
IOException
-
read
protected String read(String name) throws IOException
Read content of a file- Parameters:
name
-- Returns:
- the file's content
- Throws:
IOException
-
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
-
setUp
public void setUp() throws Exception
Setup test- Overrides:
setUp
in classLocalDiskRepositoryTestCase
- Throws:
Exception
-
tearDown
public void tearDown() throws Exception
Description copied from class:LocalDiskRepositoryTestCase
Tear down the test- Overrides:
tearDown
in classLocalDiskRepositoryTestCase
- Throws:
Exception
-
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 constantsLocalDiskRepositoryTestCase.MOD_TIME
,LocalDiskRepositoryTestCase.SMUDGE
,LocalDiskRepositoryTestCase.LENGTH
,LocalDiskRepositoryTestCase.CONTENT_ID
andLocalDiskRepositoryTestCase.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
- aFileTreeIterator
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 lookuplookupTable
- 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
-
createBranch
protected void createBranch(ObjectId objectId, String branchName) throws IOException
Create a branch- Parameters:
objectId
-branchName
-- Throws:
IOException
-
getRefs
public List<Ref> getRefs() throws IOException
Get all Refs- Returns:
- list of refs
- Throws:
IOException
-
checkoutBranch
protected void checkoutBranch(String branchName) throws IllegalStateException, IOException
Checkout a branch- Parameters:
branchName
-- Throws:
IllegalStateException
IOException
-
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. Ifnull
is specified as content then this file is skipped.- Parameters:
ensureDistinctTimestamps
- if set totrue
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)
CreateDirCacheEntry
- Parameters:
path
-mode
-- Returns:
- the DirCacheEntry
-
createEntry
protected DirCacheEntry createEntry(String path, FileMode mode, String content)
CreateDirCacheEntry
- Parameters:
path
-mode
-content
-- Returns:
- the DirCacheEntry
-
createEntry
protected DirCacheEntry createEntry(String path, FileMode mode, int stage, String content)
CreateDirCacheEntry
- Parameters:
path
-mode
-stage
-content
-- Returns:
- the DirCacheEntry
-
createGitLink
protected DirCacheEntry createGitLink(String path, AnyObjectId objectId)
CreateDirCacheEntry
- 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
-
-