]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Cache: simplify cached content cleanup, improve tests 309/head
authorVirtualTam <virtualtam@flibidi.net>
Thu, 13 Aug 2015 19:39:51 +0000 (21:39 +0200)
committerVirtualTam <virtualtam@flibidi.net>
Thu, 13 Aug 2015 21:51:31 +0000 (23:51 +0200)
Signed-off-by: VirtualTam <virtualtam@flibidi.net>
application/Cache.php
tests/CacheTest.php

index 9c7e818fe7a99c05b60e3419de4f9d048e0a1b08..5d050165dbf7e8472094f7df8d984808cccb9413 100644 (file)
@@ -7,26 +7,18 @@
  * Purges all cached pages
  *
  * @param string $pageCacheDir page cache directory
+ *
+ * @return mixed an error string if the directory is missing
  */
 function purgeCachedPages($pageCacheDir)
 {
     if (! is_dir($pageCacheDir)) {
-        return;
+        $error = 'Cannot purge '.$pageCacheDir.': no directory';
+        error_log($error);
+        return $error;
     }
 
-    // TODO: check write access to the cache directory
-
-    $handler = opendir($pageCacheDir);
-    if ($handler == false) {
-        return;
-    }
-
-    while (($filename = readdir($handler)) !== false) {
-        if (endsWith($filename, '.cache')) {
-                unlink($pageCacheDir.'/'.$filename);
-        }
-    }
-    closedir($handler);
+    array_map('unlink', glob($pageCacheDir.'/*.cache'));
 }
 
 /**
index 4caf6552ac668a2238672c4dfa5513d92e5489cb..aa5395b0ab8f16b1906dfa8ece3b1976a43d9d94 100644 (file)
@@ -27,11 +27,14 @@ class CachedTest extends PHPUnit_Framework_TestCase
     {
         if (! is_dir(self::$testCacheDir)) {
             mkdir(self::$testCacheDir);
+        } else {
+            array_map('unlink', glob(self::$testCacheDir.'/*'));
         }
         
         foreach (self::$pages as $page) {
             file_put_contents(self::$testCacheDir.'/'.$page.'.cache', $page);
         }
+        file_put_contents(self::$testCacheDir.'/intru.der', 'ShouldNotBeThere');
     }
 
     /**
@@ -42,7 +45,20 @@ class CachedTest extends PHPUnit_Framework_TestCase
         purgeCachedPages(self::$testCacheDir);
         foreach (self::$pages as $page) {
             $this->assertFileNotExists(self::$testCacheDir.'/'.$page.'.cache');
-        }        
+        }
+
+        $this->assertFileExists(self::$testCacheDir.'/intru.der');
+    }
+
+    /**
+     * Purge cached pages - missing directory
+     */
+    public function testPurgeCachedPagesMissingDir()
+    {
+        $this->assertEquals(
+            'Cannot purge tests/dummycache_missing: no directory',
+            purgeCachedPages(self::$testCacheDir.'_missing')
+        );
     }
 
     /**