Move depsCache clearing to SCSSCacher/JSCombiner

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2018-02-03 12:41:21 +01:00
parent bf24b4db24
commit 69b22c2d61
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
6 changed files with 45 additions and 31 deletions

View File

@ -23,15 +23,11 @@
namespace OC\Repair;
use OC\Core\Command\Maintenance\ClearCacheJSCSS;
use OC\Template\JSCombiner;
use OC\Template\SCSSCacher;
use OCP\AppFramework\QueryException;
use OCP\ICacheFactory;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Component\Console\Output\BufferedOutput;
class ClearFrontendCaches implements IRepairStep {
@ -59,17 +55,13 @@ class ClearFrontendCaches implements IRepairStep {
public function run(IOutput $output) {
try {
$c = $this->cacheFactory->createDistributed('imagePath');
$c->clear('');
$c->clear();
$output->info('Image cache cleared');
$this->scssCacher->resetCache();
$c = $this->cacheFactory->createDistributed('SCSS');
$c->clear('');
$output->info('SCSS cache cleared');
$this->jsCombiner->resetCache();
$c = $this->cacheFactory->createDistributed('JS');
$c->clear('');
$output->info('JS cache cleared');
} catch (\Exception $e) {
$output->warning('Unable to clear the frontend cache');

View File

@ -236,10 +236,8 @@ class JSCombiner {
* @throws NotFoundException
*/
public function resetCache() {
$this->depsCache->clear();
$appDirectory = $this->appData->getDirectoryListing();
if(empty($appDirectory)){
return;
}
foreach ($appDirectory as $folder) {
foreach ($folder->getDirectoryListing() as $file) {
$file->delete();

View File

@ -256,10 +256,8 @@ class SCSSCacher {
*/
public function resetCache() {
$this->injectedVariables = null;
$this->depsCache->clear();
$appDirectory = $this->appData->getDirectoryListing();
if(empty($appDirectory)){
return;
}
foreach ($appDirectory as $folder) {
foreach ($folder->getDirectoryListing() as $file) {
$file->delete();

View File

@ -63,14 +63,6 @@ class ClearFrontendCachesTest extends \Test\TestCase {
$imagePathCache->expects($this->once())
->method('clear')
->with('');
$jsCache = $this->createMock(ICache::class);
$jsCache->expects($this->once())
->method('clear')
->with('');
$cssCache = $this->createMock(ICache::class);
$cssCache->expects($this->once())
->method('clear')
->with('');
$this->jsCombiner->expects($this->once())
->method('resetCache');
$this->scssCacher->expects($this->once())
@ -79,14 +71,6 @@ class ClearFrontendCachesTest extends \Test\TestCase {
->method('createDistributed')
->with('imagePath')
->willReturn($imagePathCache);
$this->cacheFactory->expects($this->at(1))
->method('createDistributed')
->with('SCSS')
->willReturn($cssCache);
$this->cacheFactory->expects($this->at(2))
->method('createDistributed')
->with('JS')
->willReturn($jsCache);
$this->repair->run($this->outputMock);
$this->assertTrue(true);

View File

@ -511,4 +511,25 @@ var b = \'world\';
$expected = [];
$this->assertEquals($expected, $this->jsCombiner->getContent($pathInfo['dirname'], $pathInfo['basename']));
}
public function testResetCache() {
$file = $this->createMock(ISimpleFile::class);
$file->expects($this->once())
->method('delete');
$folder = $this->createMock(ISimpleFolder::class);
$folder->expects($this->once())
->method('getDirectoryListing')
->willReturn([$file]);
$this->depsCache->expects($this->once())
->method('clear')
->with('');
$this->appData->expects($this->once())
->method('getDirectoryListing')
->willReturn([$folder]);
$this->jsCombiner->resetCache();
}
}

View File

@ -445,4 +445,25 @@ class SCSSCacherTest extends \Test\TestCase {
$this->rrmdir($tmpDir.$path);
}
public function testResetCache() {
$file = $this->createMock(ISimpleFile::class);
$file->expects($this->once())
->method('delete');
$folder = $this->createMock(ISimpleFolder::class);
$folder->expects($this->once())
->method('getDirectoryListing')
->willReturn([$file]);
$this->depsCache->expects($this->once())
->method('clear')
->with('');
$this->appData->expects($this->once())
->method('getDirectoryListing')
->willReturn([$folder]);
$this->scssCacher->resetCache();
}
}