/*
* This file is part of the Heritrix web crawler (crawler.archive.org).
*
* Licensed to the Internet Archive (IA) by one or more individual
* contributors.
*
* The IA licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.archive.crawler;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.archive.spring.PathSharingContext;
import org.archive.util.TmpDirTestCase;
import org.springframework.beans.BeansException;
/**
* Test all bundled job directories -- that they build, but have
* exactly one validation error (need to enter contact URL).
*
* @contributor pjack
*/
public class BasicProfileTest extends TmpDirTestCase {
/**
* Tests the default profile that gets put in the heritrix tarball.
*/
public void testBundledProfiles() throws Exception {
File srcDir = new File("src/main/conf/jobs");
if (!srcDir.exists()) {
srcDir = new File("dist/src/main/conf/jobs");
}
if (!srcDir.exists()) {
throw new IllegalStateException("Couldn't find jobs directory");
}
for (File f: srcDir.listFiles()) {
if (f.isDirectory() && !f.getName().startsWith(".")) {
testProfileDirectory(f);
}
}
}
protected void testProfileDirectory(File srcDir) throws Exception {
System.out.println("\nNow testing " + srcDir.getName());
File tmpDir = new File(getTmpDir(), "validatorTest");
File configDir = new File(tmpDir, srcDir.getName());
org.archive.util.FileUtils.ensureWriteableDirectory(configDir);
FileUtils.copyDirectory(srcDir, configDir);
PathSharingContext ac = null;
try {
File config = new File(configDir,"profile-crawler-beans.cxml");
ac = new PathSharingContext("file:"+config.getAbsolutePath());
} catch (BeansException be){
be.printStackTrace(System.err);
} finally {
assertNotNull("profile not buildable",ac);
ac.validate();
assertEquals("did not get the expected one error",1,ac.getAllErrors().size());
ac.destroy();
}
}
}