All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.archive.util.TmpDirTestCase Maven / Gradle / Ivy

There is a newer version: 1.1.9
Show newest version
/*
 *  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.util;

import java.io.File;
import java.io.IOException;

import junit.framework.TestCase;


/**
 * Base class for TestCases that want access to a tmp dir for the writing
 * of files.
 *
 * @author stack
 */
public abstract class TmpDirTestCase extends TestCase
{
    /**
     * Name of the system property that holds pointer to tmp directory into
     * which we can safely write files.
     */
    public static final String TEST_TMP_SYSTEM_PROPERTY_NAME = "testtmpdir";

    /**
     * Default test tmp.
     */
    public static final String DEFAULT_TEST_TMP_DIR = File.separator + "tmp" +
        File.separator + "heritrix-junit-tests";

    /**
     * Directory to write temporary files to.
     */
    private File tmpDir = null;


    public TmpDirTestCase()
    {
        super();
    }

    public TmpDirTestCase(String testName)
    {
        super(testName);
    }

    /*
     * @see TestCase#setUp()
     */
    protected void setUp() throws Exception {
        super.setUp();
        this.tmpDir = tmpDir();
    }

    /**
     * @return Returns the tmpDir.
     */
    public File getTmpDir()
    {
        return this.tmpDir;
    }

    /**
     * Delete any files left over from previous run.
     *
     * @param basename Base name of files we're to clean up.
     */
    public void cleanUpOldFiles(String basename) {
        cleanUpOldFiles(getTmpDir(), basename);
    }

    /**
     * Delete any files left over from previous run.
     *
     * @param prefix Base name of files we're to clean up.
     * @param basedir Directory to start cleaning in.
     */
    public void cleanUpOldFiles(File basedir, String prefix) {
        File [] files = FileUtils.getFilesWithPrefix(basedir, prefix);
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                org.apache.commons.io.FileUtils.deleteQuietly(files[i]);
            }
        }
    }
    
    
    public static File tmpDir() throws IOException {
        String tmpDirStr = System.getProperty(TEST_TMP_SYSTEM_PROPERTY_NAME);
        tmpDirStr = (tmpDirStr == null)? DEFAULT_TEST_TMP_DIR: tmpDirStr;
        File tmpDir = new File(tmpDirStr);
        FileUtils.ensureWriteableDirectory(tmpDir);

        if (!tmpDir.canWrite())
        {
            throw new IOException(tmpDir.getAbsolutePath() +
                 " is unwriteable.");
        }
        
        return tmpDir;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy