org.eclipse.jgit.junit
Class LocalDiskRepositoryTestCase

java.lang.Object
  extended by org.eclipse.jgit.junit.LocalDiskRepositoryTestCase

public abstract class LocalDiskRepositoryTestCase
extends java.lang.Object

JUnit TestCase with specialized support for temporary local repository.

A temporary directory is created for each test, allowing each test to use a fresh environment. The temporary directory is cleaned up after the test ends.

Callers should not use RepositoryCache from within these tests as it may wedge file descriptors open past the end of the test.

A system property jgit.junit.usemmap defines whether memory mapping is used. Memory mapping has an effect on the file system, in that memory mapped files in Java cannot be deleted as long as the mapped arrays have not been reclaimed by the garbage collector. The programmer cannot control this with precision, so temporary files may hang around longer than desired during a test, or tests may fail altogether if there is insufficient file descriptors or address space for the test process.


Field Summary
protected  PersonIdent author
          A fake (but stable) identity for author fields in the test.
protected  PersonIdent committer
          A fake (but stable) identity for committer fields in the test.
 
Constructor Summary
LocalDiskRepositoryTestCase()
           
 
Method Summary
 void addRepoToClose(Repository r)
          Adds a repository to the list of repositories which is closed at the end of the tests
protected  FileRepository createBareRepository()
          Creates a new empty bare repository.
protected  java.io.File createTempDirectory(java.lang.String name)
          Creates a unique directory for a test
protected  java.io.File createTempFile()
           
protected  java.io.File createUniqueTestGitDir(boolean bare)
          Creates a new unique directory for a test repository
protected  FileRepository createWorkRepository()
          Creates a new empty repository within a new empty working directory.
protected  java.util.List<java.io.File> getCeilings()
           
protected  java.lang.String read(java.io.File f)
          Fully read a UTF-8 file and return as a string.
protected  void recursiveDelete(java.io.File dir)
          Recursively delete a directory, failing the test if the delete fails.
protected  int runHook(Repository db, java.io.File hook, java.lang.String... args)
          Run a hook script in the repository, returning the exit status.
 void setUp()
           
 void tearDown()
           
protected  void tick()
          Increment the author and committer times.
protected  void write(java.io.File f, java.lang.String body)
          Write a string as a UTF-8 file.
protected  java.io.File write(java.lang.String body)
          Create a string to a UTF-8 temporary file and return the path.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

author

protected PersonIdent author
A fake (but stable) identity for author fields in the test.


committer

protected PersonIdent committer
A fake (but stable) identity for committer fields in the test.

Constructor Detail

LocalDiskRepositoryTestCase

public LocalDiskRepositoryTestCase()
Method Detail

setUp

public void setUp()
           throws java.lang.Exception
Throws:
java.lang.Exception

getCeilings

protected java.util.List<java.io.File> getCeilings()

tearDown

public void tearDown()
              throws java.lang.Exception
Throws:
java.lang.Exception

tick

protected void tick()
Increment the author and committer times.


recursiveDelete

protected void recursiveDelete(java.io.File dir)
Recursively delete a directory, failing the test if the delete fails.

Parameters:
dir - the recursively directory to delete, if present.

createBareRepository

protected FileRepository createBareRepository()
                                       throws java.io.IOException
Creates a new empty bare repository.

Returns:
the newly created repository, opened for access
Throws:
java.io.IOException - the repository could not be created in the temporary area

createWorkRepository

protected FileRepository createWorkRepository()
                                       throws java.io.IOException
Creates a new empty repository within a new empty working directory.

Returns:
the newly created repository, opened for access
Throws:
java.io.IOException - the repository could not be created in the temporary area

addRepoToClose

public void addRepoToClose(Repository r)
Adds a repository to the list of repositories which is closed at the end of the tests

Parameters:
r - the repository to be closed

createTempDirectory

protected java.io.File createTempDirectory(java.lang.String name)
                                    throws java.io.IOException
Creates a unique directory for a test

Parameters:
name - a subdirectory
Returns:
a unique directory for a test
Throws:
java.io.IOException

createUniqueTestGitDir

protected java.io.File createUniqueTestGitDir(boolean bare)
                                       throws java.io.IOException
Creates a new unique directory for a test repository

Parameters:
bare - true for a bare repository; false for a repository with a working directory
Returns:
a unique directory for a test repository
Throws:
java.io.IOException

createTempFile

protected java.io.File createTempFile()
                               throws java.io.IOException
Throws:
java.io.IOException

runHook

protected int runHook(Repository db,
                      java.io.File hook,
                      java.lang.String... args)
               throws java.io.IOException,
                      java.lang.InterruptedException
Run a hook script in the repository, returning the exit status.

Parameters:
db - repository the script should see in GIT_DIR environment
hook - path of the hook script to execute, must be executable file type on this platform
args - arguments to pass to the hook script
Returns:
exit status code of the invoked hook
Throws:
java.io.IOException - the hook could not be executed
java.lang.InterruptedException - the caller was interrupted before the hook completed

write

protected java.io.File write(java.lang.String body)
                      throws java.io.IOException
Create a string to a UTF-8 temporary file and return the path.

Parameters:
body - complete content to write to the file. If the file should end with a trailing LF, the string should end with an LF.
Returns:
path of the temporary file created within the trash area.
Throws:
java.io.IOException - the file could not be written.

write

protected void write(java.io.File f,
                     java.lang.String body)
              throws java.io.IOException
Write a string as a UTF-8 file.

Parameters:
f - file to write the string to. Caller is responsible for making sure it is in the trash directory or will otherwise be cleaned up at the end of the test. If the parent directory does not exist, the missing parent directories are automatically created.
body - content to write to the file.
Throws:
java.io.IOException - the file could not be written.

read

protected java.lang.String read(java.io.File f)
                         throws java.io.IOException
Fully read a UTF-8 file and return as a string.

Parameters:
f - file to read the content of.
Returns:
UTF-8 decoded content of the file, empty string if the file exists but has no content.
Throws:
java.io.IOException - the file does not exist, or could not be read.


Copyright © 2011. All Rights Reserved.