Skip to content

Commit 62405f7

Browse files
committed
Fixed a bug where caching would clear the cache
1 parent 5d2e9ff commit 62405f7

File tree

2 files changed

+41
-5
lines changed

2 files changed

+41
-5
lines changed

src/Chewett/CacheNCrunch/CacheNCrunch.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ public static function register($scriptName, $publicPath, $physicalPath) {
4747
self::$jsFiles[$scriptName] = new CachingFile($scriptName, $publicPath, $physicalPath);
4848
}
4949

50+
public static function removeScript($scriptName) {
51+
unset(self::$jsFiles[$scriptName]);
52+
}
53+
5054
public static function setDebug($debug) {
5155
self::$debugMode = $debug;
5256
}
@@ -99,6 +103,9 @@ public static function crunch() {
99103

100104
$data = [];
101105
require self::$cacheDirectory . self::$JS_LOADING_FILES . self::$JS_FILE_CACHE_DETAILS;
106+
if(isset($JS_FILES)) {
107+
$data = $JS_FILES;
108+
}
102109

103110
foreach(self::$jsFiles as $scriptName => $file) {
104111
$fileContents = file_get_contents($file->getPhysicalPath());

tests/Chewett/CacheNCrunch/CacheNCrunchTest.php

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
*/
1212
class CacheNCrunchTest extends \PHPUnit_Framework_TestCase {
1313

14-
public function setUp() {
15-
$cacheDir = __DIR__ . "/../../../build/output/cache/";
14+
private static $CACHE_DIR = __DIR__ . "/../../../build/output/cache/";
1615

17-
if(is_dir($cacheDir)) {
16+
public function setUp() {
17+
if(is_dir(self::$CACHE_DIR)) {
1818
$fs = new Filesystem();
19-
$fs->remove($cacheDir);
19+
$fs->remove(self::$CACHE_DIR);
2020
}
2121

22-
CacheNCrunch::setUpCacheDirectory($cacheDir, '/build/output/cache/');
22+
CacheNCrunch::setUpCacheDirectory(self::$CACHE_DIR, '/build/output/cache/');
2323
CacheNCrunch::setDebug(false);
2424
}
2525

@@ -62,5 +62,34 @@ public function testCachePresentOutput() {
6262
);
6363
}
6464

65+
public function testMultiCachePresentOutput() {
66+
CacheNCrunch::register("testJs", "/static/testJs.js", __DIR__ . "/../../../static/testJs.js");
67+
CacheNCrunch::register("testA", "/static/testA.js", __DIR__ . "/../../../static/testA.js");
68+
69+
$this->assertEquals(
70+
"<script src='/static/testJs.js'></script><script src='/static/testA.js'></script>",
71+
CacheNCrunch::getScriptImports()
72+
);
73+
74+
CacheNCrunch::crunch();
75+
$this->assertEquals(
76+
"<script src='/build/output/cache/static/js/6ffaf172520927af80aaca83b0e74e48.js'></script><script src='/build/output/cache/static/js/76082198a45cb1943e8855d258ebb4d0.js'></script>",
77+
CacheNCrunch::getScriptImports()
78+
);
79+
}
80+
81+
public function testMultiCachePresentOutputTwoCrunches() {
82+
CacheNCrunch::register("testJs", "/static/testJs.js", __DIR__ . "/../../../static/testJs.js");
83+
CacheNCrunch::crunch();
84+
CacheNCrunch::removeScript("testJs");
85+
CacheNCrunch::register("testA", "/static/testA.js", __DIR__ . "/../../../static/testA.js");
86+
CacheNCrunch::crunch();
87+
88+
require self::$CACHE_DIR . CacheNCrunch::$JS_LOADING_FILES . CacheNCrunch::$JS_FILE_CACHE_DETAILS;
89+
$this->assertTrue(isset($JS_FILES));
90+
$this->assertCount(2, $JS_FILES);
91+
92+
}
93+
6594

6695
}

0 commit comments

Comments
 (0)