From 67cc7d3d001fa2fadfa33582916a93e17a76a7b6 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 5 May 2016 10:42:15 +0900 Subject: [PATCH] Compile LESS/SCSS again if variables change --- .../FrontEndFileHandler.class.php | 2 +- .../unit/classes/FrontEndFileHandlerTest.php | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php index 5c96df733..855f8ebf6 100644 --- a/classes/frontendfile/FrontEndFileHandler.class.php +++ b/classes/frontendfile/FrontEndFileHandler.class.php @@ -268,7 +268,7 @@ class FrontEndFileHandler extends Handler } $compiledFileName = $file->fileName . ($minify ? '.min' : '') . '.css'; - $compiledFileHash = ltrim(str_replace(array('/', '\\'), '.', substr($file->fileRealPath, strlen(\RX_BASEDIR))), '.'); + $compiledFileHash = sha1($file->fileRealPath . ':' . serialize($vars)); $compiledFilePath = \RX_BASEDIR . self::$assetdir . '/compiled/' . $compiledFileHash . '.' . $compiledFileName; if (!file_exists($compiledFilePath) || filemtime($compiledFilePath) < filemtime($file->fileFullPath)) diff --git a/tests/unit/classes/FrontEndFileHandlerTest.php b/tests/unit/classes/FrontEndFileHandlerTest.php index 1ae85ac90..fd3a5df81 100644 --- a/tests/unit/classes/FrontEndFileHandlerTest.php +++ b/tests/unit/classes/FrontEndFileHandlerTest.php @@ -39,11 +39,13 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler = new FrontEndFileHandler(); $handler->loadFile(array('./common/css/rhymix.scss')); $handler->loadFile(array('./common/css/mobile.css')); - $expected[] = array('file' => '/rhymix/files/cache/assets/compiled/common.css.rhymix.scss.css', 'media' => 'all', 'targetie' => null); - $expected[] = array('file' => '/rhymix/common/css/mobile.css' . $this->_filemtime('common/css/mobile.css'), 'media' => 'all', 'targetie' => null); $result = $handler->getCssFileList(); - $result[0]['file'] = preg_replace('/\?\d+$/', '', $result[0]['file']); - $this->assertEquals($result, $expected); + $this->assertRegexp('/\.rhymix\.scss\.css\b/', $result[0]['file']); + $this->assertEquals('all', $result[0]['media']); + $this->assertEmpty($result[0]['targetie']); + $this->assertEquals('/rhymix/common/css/mobile.css' . $this->_filemtime('common/css/mobile.css'), $result[1]['file']); + $this->assertEquals('all', $result[1]['media']); + $this->assertEmpty($result[1]['targetie']); }); $this->specify("order (duplicate)", function() { @@ -153,12 +155,13 @@ class FrontEndFileHandlerTest extends \Codeception\TestCase\Test $handler = new FrontEndFileHandler(); $handler->loadFile(array('./common/css/rhymix.scss')); $handler->loadFile(array('./common/css/mobile.css')); - $expected[] = array('file' => '/rhymix/files/cache/assets/compiled/common.css.rhymix.scss.min.css', 'media' => 'all', 'targetie' => null); - $expected[] = array('file' => '/rhymix/files/cache/assets/minified/common.css.mobile.min.css', 'media' => 'all', 'targetie' => null); $result = $handler->getCssFileList(); - $result[0]['file'] = preg_replace('/\?\d+$/', '', $result[0]['file']); - $result[1]['file'] = preg_replace('/\?\d+$/', '', $result[1]['file']); - $this->assertEquals($result, $expected); + $this->assertRegexp('/\.rhymix\.scss\.min\.css\b/', $result[0]['file']); + $this->assertEquals('all', $result[0]['media']); + $this->assertEmpty($result[0]['targetie']); + $this->assertRegexp('/minified\/common\.css\.mobile\.min\.css\b/', $result[1]['file']); + $this->assertEquals('all', $result[1]['media']); + $this->assertEmpty($result[1]['targetie']); }); $this->specify("external file", function() {