SVN implements SourceControl { public void validate() throws CruiseControlException { ValidationHelper.assertTrue(repositoryLocation != null || localWorkingCopy != null, "At least 'repositoryLocation'or 'localWorkingCopy' is a required attribute on the Subversion task "); if (localWorkingCopy != null) { File workingDir = new File(localWorkingCopy); ValidationHelper.assertTrue(workingDir.exists() && workingDir.isDirectory(), "'localWorkingCopy' must be an existing directory. Was " + workingDir.getAbsolutePath()); } }  Map<String, String> getProperties(); void setProperty(String property); void setPropertyOnDelete(String propertyOnDelete); void setConfigDir(String configDir); void setCheckExternals(boolean value); void setRepositoryLocation(String repositoryLocation); void setLocalWorkingCopy(String localWorkingCopy); void setUsername(String userName); void setPassword(String password); void validate(); List<Modification> getModifications(final Date lastBuild, final Date now); static DateFormat getOutDateFormatter(); void setUseLocalRevision(boolean useLocalRevision);  }
@Test(expected = CruiseControlException.class) public void failsValidationWhenNoAttributesAreSet() throws CruiseControlException { svn.validate(); }