‪TYPO3CMS  ‪main
ResourceCompressorIntegrationTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use org\bovigo\vfs\vfsStream;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
27 class ‪ResourceCompressorIntegrationTest extends UnitTestCase
28 {
29  protected bool ‪$backupEnvironment = true;
30 
32  protected ?string ‪$fixtureDir;
33  protected ?string ‪$fixtureDirFromTest;
34 
35  protected string ‪$basedir = 'basedir';
36  protected ?string ‪$mountDir;
37  protected array ‪$vfsContents = [];
38 
39  protected function ‪setUp(): void
40  {
41  parent::setUp();
42  $this->mountDir = ‪StringUtility::getUniqueId('mount-');
43  $this->basedir = ‪StringUtility::getUniqueId('base-');
44  vfsStream::setup($this->basedir);
45  // Add an entry for the mount directory to the VFS contents
46  $this->vfsContents = [$this->mountDir => []];
47  $this->fixtureDir = 'typo3/sysext/core/Tests/Unit/Resource/ResourceCompressorTest/Fixtures/';
48  $this->fixtureDirFromTest = GeneralUtility::fixWindowsFilePath(__DIR__ . '/ResourceCompressorTest/Fixtures/');
49  }
50 
51  public function ‪tearDown(): void
52  {
53  $this->testFilesToDelete[] = ‪Environment::getPublicPath() . '/' . $this->resourceCompressor->getTargetDirectory();
54  parent::tearDown();
55  }
56 
60  public function ‪initializeCreatesTargetDirectory(): void
61  {
62  $this->resourceCompressor = $this->getAccessibleMock(TestableResourceCompressor::class, null);
63  $this->resourceCompressor->_call('initialize');
64  ‪$dir = ‪Environment::getPublicPath() . '/' . $this->resourceCompressor->getTargetDirectory();
65  self::assertFileExists(‪$dir);
66  }
67 
71  public function ‪initializeCreatesHtaccessFileIfSet(): void
72  {
73  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['generateApacheHtaccess'] = true;
74  $this->resourceCompressor = $this->getAccessibleMock(TestableResourceCompressor::class, null);
75  $this->resourceCompressor->_call('initialize');
76  $htaccessPath = ‪Environment::getPublicPath() . '/' . $this->resourceCompressor->getTargetDirectory() . '.htaccess';
77  self::assertStringEqualsFile($htaccessPath, $this->resourceCompressor->getHtaccessTemplate());
78  }
79 
84  {
85  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['generateApacheHtaccess'] = false;
86  $this->resourceCompressor = $this->getAccessibleMock(TestableResourceCompressor::class, null);
87  $this->resourceCompressor->_call('initialize');
88  $htaccessPath = ‪Environment::getPublicPath() . '/' . $this->resourceCompressor->getTargetDirectory() . '.htaccess';
89  self::assertFileDoesNotExist($htaccessPath);
90  }
91 
95  public function ‪concatenateCssFiles(): void
96  {
97  $files = [
98  'sampleFile1' => [
99  'excludeFromConcatenation' => false,
100  'file' => $this->fixtureDir . 'css_input_with_import.css',
101  'media' => 'screen',
102  'forceOnTop' => false,
103  ],
104  ];
105  $this->resourceCompressor = new ‪TestableResourceCompressor();
106  $concatFiles = $this->resourceCompressor->concatenateCssFiles($files);
107  $mergedFile = array_pop($concatFiles);
108  $expected = file_get_contents(
109  $this->fixtureDirFromTest . 'expected' . DIRECTORY_SEPARATOR . 'merged-css_input_with_import.css'
110  );
111  self::assertStringEqualsFile(GeneralUtility::fixWindowsFilePath(‪Environment::getPublicPath() . '/' . $mergedFile['file']), $expected);
112  }
117  {
120  true,
121  false,
126  ‪Environment::getPublicPath() . '/index.php',
127  ‪Environment::isWindows() ? 'WINDOWS' : 'UNIX'
128  );
129  $testFile = ‪Environment::getPublicPath() . '/typo3temp/var/transient/css_input_with_import.css';
130  $this->testFilesToDelete[] = $testFile;
131  copy(‪Environment::getPublicPath() . '/' . $this->fixtureDir . 'css_input_with_import.css', $testFile);
132  $files = [
133  'sampleFile1' => [
134  'excludeFromConcatenation' => false,
135  'file' => 'typo3temp/var/transient/css_input_with_import.css',
136  'media' => 'screen',
137  'forceOnTop' => false,
138  ],
139  ];
140  $this->resourceCompressor = new ‪TestableResourceCompressor();
141  $concatFiles = $this->resourceCompressor->concatenateCssFiles($files);
142  $mergedFile = array_pop($concatFiles);
143  $expected = file_get_contents(
144  $this->fixtureDirFromTest . 'expected' . DIRECTORY_SEPARATOR . 'merged-css_input_with_import_non_root.css'
145  );
146  self::assertStringEqualsFile(GeneralUtility::fixWindowsFilePath(‪Environment::getPublicPath() . '/' . $mergedFile['file']), $expected);
147  }
148 }
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$fixtureDir
‪string $fixtureDir
Definition: ResourceCompressorIntegrationTest.php:32
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:204
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\initializeDoesNotCreateHtaccessFileIfSetToFalse
‪initializeDoesNotCreateHtaccessFileIfSetToFalse()
Definition: ResourceCompressorIntegrationTest.php:83
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\tearDown
‪tearDown()
Definition: ResourceCompressorIntegrationTest.php:51
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\initializeCreatesTargetDirectory
‪initializeCreatesTargetDirectory()
Definition: ResourceCompressorIntegrationTest.php:60
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$fixtureDirFromTest
‪string $fixtureDirFromTest
Definition: ResourceCompressorIntegrationTest.php:33
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest
Definition: ResourceCompressorIntegrationTest.php:28
‪TYPO3\CMS\Core\Tests\Unit\Resource
Definition: AbstractFileTest.php:18
‪TYPO3\CMS\Core\Core\Environment\isWindows
‪static bool isWindows()
Definition: Environment.php:321
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\concatenateCssFiles
‪concatenateCssFiles()
Definition: ResourceCompressorIntegrationTest.php:95
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\setUp
‪setUp()
Definition: ResourceCompressorIntegrationTest.php:39
‪$dir
‪$dir
Definition: validateRstFiles.php:213
‪TYPO3\CMS\Core\Core\Environment\getContext
‪static ApplicationContext getContext()
Definition: Environment.php:139
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$basedir
‪string $basedir
Definition: ResourceCompressorIntegrationTest.php:35
‪TYPO3\CMS\Core\Core\Environment\getProjectPath
‪static string getProjectPath()
Definition: Environment.php:175
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$vfsContents
‪array $vfsContents
Definition: ResourceCompressorIntegrationTest.php:37
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$mountDir
‪string $mountDir
Definition: ResourceCompressorIntegrationTest.php:36
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$resourceCompressor
‪TestableResourceCompressor $resourceCompressor
Definition: ResourceCompressorIntegrationTest.php:31
‪TYPO3\CMS\Core\Core\Environment\initialize
‪static initialize(ApplicationContext $context, bool $cli, bool $composerMode, string $projectPath, string $publicPath, string $varPath, string $configPath, string $currentScript, string $os)
Definition: Environment.php:109
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorTest\Fixtures\TestableResourceCompressor
Definition: TestableResourceCompressor.php:23
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\concatenateCssFilesWorksWithFileFromNonRootPath
‪concatenateCssFilesWorksWithFileFromNonRootPath()
Definition: ResourceCompressorIntegrationTest.php:116
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Core\Core\Environment\getConfigPath
‪static string getConfigPath()
Definition: Environment.php:233
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\initializeCreatesHtaccessFileIfSet
‪initializeCreatesHtaccessFileIfSet()
Definition: ResourceCompressorIntegrationTest.php:71
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:51
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorIntegrationTest\$backupEnvironment
‪bool $backupEnvironment
Definition: ResourceCompressorIntegrationTest.php:29
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:24
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static getUniqueId(string $prefix='')
Definition: StringUtility.php:29
‪TYPO3\CMS\Core\Core\Environment\getVarPath
‪static string getVarPath()
Definition: Environment.php:216