diff options
author | Christopher Smith <chris@jalakai.co.uk> | 2014-03-16 18:32:07 +0000 |
---|---|---|
committer | Christopher Smith <chris@jalakai.co.uk> | 2014-03-16 18:32:07 +0000 |
commit | b23560022e3a99310a04296b3c385325e7abb747 (patch) | |
tree | ca5e0ea0022149cec5cbd6036df9125b4589f59c /_test/tests/inc/cache_use.test.php | |
parent | 1359eacbdbff842b241a85ea274a00982fec9267 (diff) | |
download | dokuwiki-b23560022e3a99310a04296b3c385325e7abb747.tar.gz dokuwiki-b23560022e3a99310a04296b3c385325e7abb747.zip |
Fix longstanding issue with cache class & cachetime setting
1. cachetime setting should only be applied to the cache_renderer
class. Previously it was applied to cache_parser (and by
extension cache_handler).
2. two special cachetime values, -1 & 0, weren't handled, per
FS#2183
To handle the cachetime setting, -1, disable caching, a new
property _nocache is added. When that property is true, any cache
file must not be used and storecache() should not store any values
Diffstat (limited to '_test/tests/inc/cache_use.test.php')
-rw-r--r-- | _test/tests/inc/cache_use.test.php | 56 |
1 files changed, 50 insertions, 6 deletions
diff --git a/_test/tests/inc/cache_use.test.php b/_test/tests/inc/cache_use.test.php index f5349df13..292f5c975 100644 --- a/_test/tests/inc/cache_use.test.php +++ b/_test/tests/inc/cache_use.test.php @@ -6,22 +6,22 @@ * Tests if caching can actually be used */ class cache_use_test extends DokuWikiTest { - /** @var cache_renderer $cache */ + /** @var cache_parser $cache */ private $cache; function setUp() { - global $ID; + global $ID, $conf; parent::setUp(); $ID = 'cached'; $file = wikiFN($ID); + $conf['cachetime'] = 0; // ensure the value is not -1, which disables caching saveWikiText($ID, 'Content', 'Created'); // set the modification time a second in the past in order to ensure that the cache is newer than the page touch($file, time()-1); - # Create cache. Note that the metadata cache is used as the xhtml cache triggers metadata rendering - $this->cache = new cache_renderer($ID, $file, 'metadata'); + $this->cache = new cache_renderer($ID, $file, 'xhtml'); $this->cache->storeCache('Test'); } @@ -29,8 +29,52 @@ class cache_use_test extends DokuWikiTest { $this->assertTrue($this->cache->useCache()); } - + /** + * In all the following tests the cache should not be usable + * as such, they are meaningless if test_use didn't pass. + * + * @depends test_use + */ function test_purge() { - $this->assertFalse($this->cache->useCache(array('purge' => true))); + /* @var Input $INPUT */ + global $INPUT; + $INPUT->set('purge',1); + + $this->assertFalse($this->cache->useCache()); + $this->assertNotEmpty($this->cache->depends['purge']); + } + + /** + * @depends test_use + */ + function test_filedependency() { + // give the dependent src file the same mtime as the cache + touch($this->cache->file, filemtime($this->cache->cache)); + $this->assertFalse($this->cache->useCache()); + } + + /** + * @depends test_use + */ + function test_age() { + // need to age both our source file & the cache + $age = 10; + $time = time() - $age - 1; // older than age + + touch($this->cache->file, $time - 1); + touch($this->cache->cache, $time); + + $this->assertFalse($this->cache->useCache(array('age' => $age))); + } + + /** + * @depends test_use + */ + function test_confnocaching() { + global $conf; + $conf['cachetime'] = -1; // disables renderer caching + + $this->assertFalse($this->cache->useCache()); + $this->assertNotEmpty($this->cache->_nocache); } }
\ No newline at end of file |