- Patch #330633 by drewish: temporary file clean-up _and_ unit tests. Oh yeah.
parent
48673b7506
commit
53b83cdcb9
|
@ -1513,18 +1513,15 @@ function system_cron() {
|
||||||
db_query('DELETE FROM {batch} WHERE timestamp < %d', REQUEST_TIME - 864000);
|
db_query('DELETE FROM {batch} WHERE timestamp < %d', REQUEST_TIME - 864000);
|
||||||
|
|
||||||
// Remove temporary files that are older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
|
// Remove temporary files that are older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
|
||||||
$result = db_query('SELECT * FROM {files} WHERE status = %d and timestamp < %d', FILE_STATUS_TEMPORARY, REQUEST_TIME - DRUPAL_MAXIMUM_TEMP_FILE_AGE);
|
$result = db_query('SELECT fid FROM {files} WHERE status & :permanent != :permanent AND timestamp < :timestamp', array(':permanent' => FILE_STATUS_PERMANENT, ':timestamp' => REQUEST_TIME - DRUPAL_MAXIMUM_TEMP_FILE_AGE));
|
||||||
while ($file = db_fetch_object($result)) {
|
foreach ($result as $row) {
|
||||||
if (file_exists($file->filepath)) {
|
if ($file = file_load($row->fid)) {
|
||||||
// If files that exist cannot be deleted, continue so the database remains
|
|
||||||
// consistent.
|
|
||||||
if (!file_delete($file)) {
|
if (!file_delete($file)) {
|
||||||
watchdog('file system', 'Could not delete temporary file "%path" during garbage collection', array('%path' => $file->filepath), WATCHDOG_ERROR);
|
watchdog('file system', 'Could not delete temporary file "%path" during garbage collection', array('%path' => $file->filepath), WATCHDOG_ERROR);
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db_query('DELETE FROM {files} WHERE fid = %d', $file->fid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$core = array('cache', 'cache_block', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu');
|
$core = array('cache', 'cache_block', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu');
|
||||||
$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
|
$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
|
||||||
foreach ($cache_tables as $table) {
|
foreach ($cache_tables as $table) {
|
||||||
|
|
|
@ -252,6 +252,41 @@ class CronRunTestCase extends DrupalWebTestCase {
|
||||||
// Execute cron directly.
|
// Execute cron directly.
|
||||||
$this->assertTrue(drupal_cron_run(), t('Cron ran successfully.'));
|
$this->assertTrue(drupal_cron_run(), t('Cron ran successfully.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure that temporary files are removed.
|
||||||
|
*/
|
||||||
|
function testTempFileCleanup() {
|
||||||
|
// Create files for all the possible combinations of age and status. We're
|
||||||
|
// using UPDATE statments rather than file_save() because it would set the
|
||||||
|
// timestamp.
|
||||||
|
|
||||||
|
// Temporary file that is older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
|
||||||
|
$temp_old = file_save_data('');
|
||||||
|
db_query('UPDATE {files} SET status = :status, timestamp = :timestamp WHERE fid = :fid', array(':status' => FILE_STATUS_TEMPORARY, ':timestamp' => 1, ':fid' => $temp_old->fid));
|
||||||
|
$this->assertTrue(file_exists($temp_old->filepath), t('Old temp file was created correctly.'));
|
||||||
|
|
||||||
|
// Temporary file that is less than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
|
||||||
|
$temp_new = file_save_data('');
|
||||||
|
db_query('UPDATE {files} SET status = :status WHERE fid = :fid', array(':status' => FILE_STATUS_TEMPORARY, ':fid' => $temp_new->fid));
|
||||||
|
$this->assertTrue(file_exists($temp_new->filepath), t('New temp file was created correctly.'));
|
||||||
|
|
||||||
|
// Permanent file that is older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
|
||||||
|
$perm_old = file_save_data('');
|
||||||
|
db_query('UPDATE {files} SET timestamp = :timestamp WHERE fid = :fid', array(':timestamp' => 1, ':fid' => $perm_old->fid));
|
||||||
|
$this->assertTrue(file_exists($perm_old->filepath), t('Old permanent file was created correctly.'));
|
||||||
|
|
||||||
|
// Permanent file that is newer than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
|
||||||
|
$perm_new = file_save_data('');
|
||||||
|
$this->assertTrue(file_exists($perm_new->filepath), t('New permanent file was created correctly.'));
|
||||||
|
|
||||||
|
// Run cron and then ensure that only the old, temp file was deleted.
|
||||||
|
$this->assertTrue(drupal_cron_run(), t('Cron ran successfully.'));
|
||||||
|
$this->assertFalse(file_exists($temp_old->filepath), t('Old temp file was correctly removed.'));
|
||||||
|
$this->assertTrue(file_exists($temp_new->filepath), t('New temp file was correctly ignored.'));
|
||||||
|
$this->assertTrue(file_exists($perm_old->filepath), t('Old permanent file was correctly ignored.'));
|
||||||
|
$this->assertTrue(file_exists($perm_new->filepath), t('New permanent file was correctly ignored.'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AdminOverviewTestCase extends DrupalWebTestCase {
|
class AdminOverviewTestCase extends DrupalWebTestCase {
|
||||||
|
|
Loading…
Reference in New Issue