Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java view on Meta::CPAN
/**
* the map of all items expected to be received by the callback for the
* log message. After each commit, this will be cleared
*/
protected Map<String, MyCommitItem> expectedCommitItems;
/**
* Common root directory for all tests. Can be set by the command
* line or by the system property <code>test.rootdir</code>. If
* not set, the current working directory of this process is used.
*/
protected static String rootDirectoryName;
/**
* common root URL for all tests. Can be set by the command line or by the
* system property "test.rooturl". If not set, the file url of the
* rootDirectoryName is used.
*/
protected static String rootUrl;
/**
* Username to use in tests
*/
protected final static String USERNAME = "jrandom";
/**
* Password to use in tests
*/
protected final static String PASSWORD = "rayjandom";
/**
* Create a JUnit <code>TestCase</code> instance.
*/
protected SVNTests()
{
init();
}
/**
* Create a JUnit <code>TestCase</code> instance.
*/
protected SVNTests(String name)
{
super(name);
init();
}
private void init()
{
// if not already set, get a usefull value for rootDir
if (rootDirectoryName == null)
rootDirectoryName = System.getProperty("test.rootdir");
if (rootDirectoryName == null)
rootDirectoryName = System.getProperty("user.dir");
rootDir = new File(rootDirectoryName);
// if not already set, get a useful value for root url
if (rootUrl == null)
rootUrl = System.getProperty("test.rooturl");
if (rootUrl == null || rootUrl.trim().length() == 0)
{
// if no root url, set build a file url
rootUrl = rootDir.toURI().toString();
// The JRE may have a different view about the number of
// '/' characters to follow "file:" in a URL than
// Subversion. We convert to the Subversion view.
if (rootUrl.startsWith("file:///"))
; // this is the form subversion needs
else if (rootUrl.startsWith("file://"))
rootUrl = rootUrl.replaceFirst("file://", "file:///");
else if (rootUrl.startsWith("file:/"))
rootUrl = rootUrl.replaceFirst("file:/", "file:///");
// According to
// http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#toURL()
// the URL from rootDir.toURI() may end with a trailing /
// if rootDir exists and is a directory, so depending if
// the test suite has been previously run and rootDir
// exists, then the trailing / may or may not be there.
// The makeReposUrl() method assumes that the rootUrl ends
// in a trailing /, so add it now.
if (!rootUrl.endsWith("/"))
rootUrl = rootUrl + '/';
}
// Determine the Subversion file system type to use.
if (this.fsType == null)
{
this.fsType =
System.getProperty("test.fstype", ISVNRepos.FSFS).toLowerCase();
if (!(ISVNRepos.FSFS.equals(this.fsType) ||
ISVNRepos.BDB.equals(this.fsType)))
{
this.fsType = ISVNRepos.FSFS;
}
}
this.localTmp = new File(this.rootDir, "local_tmp");
this.conf = new File(this.localTmp, "config");
this.repositories = new File(this.rootDir, "repositories");
this.workingCopies = new File(this.rootDir, "working_copies");
}
/**
* Standard initialization of one test
* @throws Exception
*/
protected void setUp() throws Exception
{
super.setUp();
createDirectories();
// create and configure the needed subversion objects
admin = new SVNRepos();
initClient();
// build and dump the sample repository
File greekFiles = buildGreekFiles();
greekRepos = new File(localTmp, "repos");
src/subversion/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java view on Meta::CPAN
greekWC.addItem("A/D/H/psi", "This is the file 'psi'.");
greekWC.addItem("A/D/H/omega", "This is the file 'omega'.");
greekWC.addItem("A/D/G", null);
greekWC.addItem("A/D/G/pi", "This is the file 'pi'.");
greekWC.addItem("A/D/G/rho", "This is the file 'rho'.");
greekWC.addItem("A/D/G/tau", "This is the file 'tau'.");
greekWC.materialize(greekFiles);
return greekFiles;
}
/**
* Remove a file or a directory and all its content.
*
* @param path The file or directory to be removed.
*/
static final void removeDirOrFile(File path)
{
if (!path.exists())
{
return;
}
if (path.isDirectory())
{
// Recurse (depth-first), deleting contents.
for (File file : path.listFiles())
{
removeDirOrFile(file);
}
}
path.delete();
}
/**
* cleanup after one test
* @throws Exception
*/
protected void tearDown() throws Exception
{
// take care of our subversion objects.
admin.dispose();
client.dispose();
// remove the temporary directory
removeDirOrFile(localTmp);
super.tearDown();
}
/**
* Create the url for the repository to be used for the tests.
* @param file the directory of the repository
* @return the URL for the repository
* @throws SubversionException
*/
protected URI makeReposUrl(File file) throws SubversionException
{
try
{
// split the common part of the root directory
String path = file.getAbsolutePath()
.substring(this.rootDir.getAbsolutePath().length() + 1);
// append to the root url
return new URI(rootUrl + path.replace(File.separatorChar, '/'));
}
catch (URISyntaxException ex)
{
throw new SubversionException(ex.getMessage());
}
}
/**
* add another commit item expected during the callback for the
* log message.
* @param workingCopyPath the path of the of the working
* @param baseUrl the url for the repository
* @param itemPath the path of the item relative the working copy
* @param nodeKind expected node kind (dir or file or none)
* @param stateFlags expected commit state flags
* (see CommitItemStateFlags)
*/
protected void addExpectedCommitItem(String workingCopyPath,
String baseUrl,
String itemPath,
NodeKind nodeKind,
int stateFlags)
{
//determine the full working copy path and the full url of the item.
String path = null;
if (workingCopyPath != null)
if (itemPath != null)
path = workingCopyPath.replace(File.separatorChar, '/') +
'/' + itemPath;
else
path = workingCopyPath.replace(File.separatorChar, '/');
String url = null;
if (baseUrl != null)
if (itemPath != null)
url = baseUrl + '/' + itemPath;
else
url = baseUrl;
// the key of the item is either the url or the path (if no url)
String key;
if (url != null)
key = url;
else
key = path;
expectedCommitItems.put(key, new MyCommitItem(path, nodeKind,
stateFlags, url));
}
/**
* Intended to be called as part of test method execution
* (post-{@link #setUp()}). Calls <code>fail()</code> if the
* directory name cannot be determined.
*
* @return The name of the working copy administrative directory.
* @since 1.3
*/
protected String getAdminDirectoryName() {
String admDirName = null;
( run in 1.283 second using v1.01-cache-2.11-cpan-d8267643d1d )