1
0
mirror of https://github.com/mrclay/minify.git synced 2025-09-04 11:35:38 +02:00

26 Commits

Author SHA1 Message Date
Elan Ruusamäe
e1c8b925be Fill changelog for 4.0.1 2025-02-03 10:53:27 +02:00
Elan Ruusamäe
9eb43c9f9f Add reflink to 4.0.0 release in changelog 2025-02-03 10:50:10 +02:00
Elan Ruusamäe
5597771d6e Update .semver to 4.0.1 2025-02-03 10:48:56 +02:00
Elan Ruusamäe
2d5ca3614e Fix ubuntu typo in github actions 2025-02-03 10:47:31 +02:00
Elan Ruusamäe
1a8cdbb6c7 Merge pull request #714 from thirsch/feature/php84
Add support for php 8.4
2025-02-03 10:31:59 +02:00
Thomas A. Hirsch
c222c65211 adding php 8.4 to github actions 2025-01-28 15:50:49 +01:00
Thomas A. Hirsch
60f49fa1e3 explicitly mark parameters as nullable 2025-01-28 15:50:41 +01:00
Elan Ruusamäe
230770a277 Merge pull request #711 from mrclay/deprecation
Recommend against use
2024-06-19 13:18:46 +03:00
Steve Clay
14b1d60448 Recommend against use 2024-06-13 23:57:49 -04:00
Steve Clay
43fb768c13 Fixes #693 2024-01-04 01:29:02 -05:00
Steve Clay
6166d3b785 Skip some tests on CI 2024-01-04 01:19:42 -05:00
Steve Clay
e84d55d4d6 Use Github actions 2024-01-04 01:12:40 -05:00
Steve Clay
45463786f8 Merge pull request #709 from mrclay/docker
Updates
2024-01-04 01:08:48 -05:00
Steve Clay
00e5e20abe Changelog update 2024-01-04 01:08:31 -05:00
Steve Clay
9e182a6255 Use scssphp/scssphp 2024-01-04 01:00:44 -05:00
Steve Clay
bc1ffdc5fc Test fixes 2024-01-04 01:00:44 -05:00
Steve Clay
aa3721156e Require PHP 8.1. Fixes #708 2024-01-04 01:00:35 -05:00
Steve Clay
3047f5c48f Add docker-compose setup 2024-01-03 21:41:47 -05:00
Elan Ruusamäe
104ccd2bfe Update .semver file 2023-05-05 15:03:33 +03:00
Elan Ruusamäe
dc02cdfba7 Fill changelog for 3.0.14 2023-05-05 15:03:06 +03:00
Elan Ruusamäe
23f055d3f5 Merge pull request #705 from rossbearman/monolog-v3 2023-04-13 23:03:05 +03:00
Ross Bearman
4970127e91 Support monolog v3 2023-04-12 16:11:35 +01:00
Elan Ruusamäe
39c37bdd8c Merge pull request #700 from turbulent/feat/allow-invalidation 2022-12-15 12:42:05 +02:00
Adrien Poupa
4a9d0595e3 feat: Allow invalidation from manual invocation 2022-12-14 15:21:52 -05:00
Elan Ruusamäe
ca8fdc6fdd Merge pull request #699 from tamakianimalife/php8.2
Add property declaration
2022-12-14 20:52:27 +02:00
tamakianimalife
8c69866874 Add property declaration 2022-12-14 17:30:53 +09:00
31 changed files with 228 additions and 147 deletions

54
.github/workflows/php.yml vendored Normal file
View File

@@ -0,0 +1,54 @@
name: PHP Composer
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-versions:
["8.1", "8.2", "8.3", "8.4"]
name: PHP ${{ matrix.php-versions }} Test on ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
tools: composer, wp-cli, phpunit-polyfills:1.0
env:
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Validate composer.json and composer.lock
run: composer validate --strict
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
# Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit"
# Docs: https://getcomposer.org/doc/articles/scripts.md
- name: Run test suite
run: composer run-script test

View File

@@ -1,6 +1,6 @@
---
:major: 3
:major: 4
:minor: 0
:patch: 11
:patch: 1
:special: ''
:metadata: ''

View File

@@ -1,55 +0,0 @@
language: php
sudo: false
dist: trusty
jobs:
fast_finish: true
allow_failures:
- php: "nightly"
- name: "Php CS Fixer"
include:
- php: "5.3"
dist: precise
- php: "5.4"
- php: "5.5"
- php: "5.6"
- php: "7.0"
- php: "7.1"
- php: "7.2"
- php: "7.3"
- php: "7.4"
- php: "nightly"
- name: "Php CS Fixer"
php: "7.3"
env:
- PHP_CS_FIXER=1
env:
- CLOSURE_VERSION: 20161024
services:
- memcached
cache:
directories:
- $HOME/.composer/cache
- vendor
install:
- composer update --no-interaction --prefer-source
before_script:
- tests/dl-closure.sh
script:
- PATH=vendor/bin:$PATH
- composer validate
- |
if [ "$PHP_CS_FIXER" ]; then
composer config --unset platform.php
composer require --dev friendsofphp/php-cs-fixer:2.16
php-cs-fixer fix --verbose --diff --dry-run --ansi
fi
- vendor/bin/phpunit --verbose
# vim:ts=2:sw=2:et

View File

@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
## [4.0.1] - 2025-02-03
- Recommend against use, [#711]
- Fix htmlspecialchars incompatibility with php 8.1, [#693]
- Support PHP 8.4, [#714]
[4.0.1]: https://github.com/mrclay/minify/compare/4.0.0...4.0.1
[#711]: https://github.com/mrclay/minify/pull/711
[#693]: https://github.com/mrclay/minify/issues/693
[#714]: https://github.com/mrclay/minify/pull/714
## [4.0.0] - 2024-01-04
- Support PHP 8.1+
- Update PHPUnit to 8.x
- Replace `leafo/scssphp` with `scssphp/scssphp`
[4.0.0]: https://github.com/mrclay/minify/compare/3.0.14...4.0.0
## [3.0.14] - 2023-05-05
- Support monolog v3, [#705]
- Allow invalidation from manual invocation, [#700]
- Add property declaration, [#699]
[3.0.14]: https://github.com/mrclay/minify/compare/3.0.13...3.0.14
[#705]: https://github.com/mrclay/minify/pull/705
[#700]: https://github.com/mrclay/minify/pull/700
[#699]: https://github.com/mrclay/minify/pull/699
## [3.0.13] - 2022-10-03
- Add `Minify_Cache_APCu` to replace `Minify_Cache_APC`, [#697]

View File

@@ -1,4 +1,10 @@
# Welcome to Minify!
## Minify is no longer regularly maintained
The original authors no longer recommend using Minify, especially previous versions, which were not designed to handle modern JS and CSS syntax. Instead, use an up-to-date performance measurement tool like [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview) and follow its recommendations.
In 2010, Minify offered a fine improvement for some websites, but browsers and HTTP servers are now much better, and Minify may offer only a marginal performance benefit in narrow cases. Also both JS and CSS now change rapidly, and new syntaxes are likely to lead to broken code being served through Minify.
## About
Minify is an HTTP server for JS and CSS assets. It compresses and combines files
and serves it with appropriate headers, allowing conditional GET or long-Expires.

View File

@@ -17,32 +17,36 @@
"wiki": "https://github.com/mrclay/minify/blob/master/docs"
},
"autoload": {
"classmap": ["lib/"]
"classmap": [
"lib/"
]
},
"autoload-dev": {
"psr-4": {"Minify\\Test\\": "tests/"}
"psr-4": {
"Minify\\Test\\": "tests/"
}
},
"config": {
"platform": {
"php": "5.3.29"
"php": "8.1.0"
},
"sort-packages": true
},
"require": {
"php": "^5.3.0 || ^7.0 || ^8.0",
"php": "^8.1",
"ext-pcre": "*",
"intervention/httpauth": "^2.0|^3.0",
"marcusschwarz/lesserphp": "^0.5.5",
"monolog/monolog": "~1.1|~2.0",
"monolog/monolog": "~1.1|~2.0|~3.0",
"mrclay/jsmin-php": "~2",
"mrclay/props-dic": "^2.2|^3.0",
"mrclay/props-dic": "^4",
"tubalmartin/cssmin": "~4"
},
"require-dev": {
"firephp/firephp-core": "~0.4.0",
"leafo/scssphp": "^0.3 || ^0.6 || ^0.7",
"meenie/javascript-packer": "~1.1",
"phpunit/phpunit": "^4.8.36",
"phpunit/phpunit": "^8",
"scssphp/scssphp": "^1.12",
"tedivm/jshrink": "~1.1.0"
},
"suggest": {

8
docker-compose.yml Normal file
View File

@@ -0,0 +1,8 @@
version: "3.7"
services:
apache:
image: php:8.3-apache
ports:
- 8080:80
volumes:
- .:/var/www/html/min

View File

@@ -85,7 +85,7 @@ class Minify
* @param Minify_CacheInterface $cache
* @param LoggerInterface $logger
*/
public function __construct(Minify_CacheInterface $cache, LoggerInterface $logger = null)
public function __construct(Minify_CacheInterface $cache, ?LoggerInterface $logger = null)
{
$this->cache = $cache;
$this->logger = $logger;
@@ -118,6 +118,7 @@ class Minify
'quiet' => false, // serve() will send headers and output
'debug' => false,
'concatOnly' => false,
'invalidate' => false,
// if you override these, the response codes MUST be directly after
// the first space.
@@ -284,6 +285,7 @@ class Minify
'lastModifiedTime' => $this->options['lastModifiedTime'],
'isPublic' => $this->options['isPublic'],
'encoding' => $this->options['encodeMethod'],
'invalidate' => $this->options['invalidate'],
);
if ($this->options['maxAge'] > 0) {
@@ -469,7 +471,7 @@ class Minify
*/
public function errorExit($header, $url = '', $msgHtml = '')
{
$url = htmlspecialchars($url, ENT_QUOTES);
$url = htmlspecialchars($url);
list(, $h1) = explode(' ', $header, 2);
$h1 = htmlspecialchars($h1);
// FastCGI environments require 3rd arg to header() to be set

View File

@@ -122,7 +122,7 @@ class App extends Container
$type = $that->typeOf($ctrl);
throw new RuntimeException('$min_factories["controller"] callable must return an implementation'
." of Minify_CacheInterface. Returned $type");
. " of Minify_CacheInterface. Returned $type");
};
$this->docRoot = function (App $app) {
@@ -188,7 +188,7 @@ class App extends Container
$type = $that->typeOf($value);
throw new RuntimeException('If set, $min_errorLogger must be a PSR-3 logger or a Monolog handler.'
." Given $type");
. " Given $type");
};
$this->minify = function (App $app) use ($that) {
@@ -205,7 +205,7 @@ class App extends Container
$type = $that->typeOf($minify);
throw new RuntimeException('$min_factories["minify"] callable must return a Minify object.'
." Returned $type");
. " Returned $type");
};
$this->serveOptions = function (App $app) {
@@ -232,7 +232,7 @@ class App extends Container
}
// check for URI versioning
if ($env->get('v') !== null || preg_match('/&\\d/', $app->env->server('QUERY_STRING'))) {
if ($env->get('v') !== null || preg_match('/&\\d/', $app->env->server('QUERY_STRING') ?? '')) {
$ret['maxAge'] = 31536000;
}

View File

@@ -29,7 +29,7 @@ class Minify_Cache_File implements Minify_CacheInterface
* @param bool $fileLocking
* @param LoggerInterface $logger
*/
public function __construct($path = '', $fileLocking = false, LoggerInterface $logger = null)
public function __construct($path = '', $fileLocking = false, ?LoggerInterface $logger = null)
{
if (! $path) {
$path = sys_get_temp_dir();

View File

@@ -188,7 +188,7 @@ class Minify_ClosureCompiler
*/
protected function checkTempdir($tempDir)
{
if (!is_dir($tempDir)) {
if ($tempDir === null || !is_dir($tempDir)) {
throw new Minify_ClosureCompiler_Exception('$tempDir(' . $tempDir . ') is not a valid direcotry.');
}
if (!is_writable($tempDir)) {

View File

@@ -38,7 +38,7 @@ abstract class Minify_Controller_Base implements Minify_ControllerInterface
* @param Minify_Source_Factory $sourceFactory
* @param LoggerInterface $logger
*/
public function __construct(Minify_Env $env, Minify_Source_Factory $sourceFactory, LoggerInterface $logger = null)
public function __construct(Minify_Env $env, Minify_Source_Factory $sourceFactory, ?LoggerInterface $logger = null)
{
$this->env = $env;
$this->sourceFactory = $sourceFactory;

View File

@@ -22,6 +22,11 @@ class Minify_HTML
* @var boolean
*/
protected $_jsCleanComments = true;
/**
* @var string
*/
protected $_html;
/**
* "Minify" an HTML page

View File

@@ -52,7 +52,7 @@ class Minify_HTML_Helper
}
$uri = $h->getRawUri($opts['farExpires'], $opts['debug']);
return htmlspecialchars($uri, ENT_QUOTES, $opts['charset']);
return htmlspecialchars($uri, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, $opts['charset']);
}
/**
@@ -163,7 +163,7 @@ class Minify_HTML_Helper
* @return \Minify\App
* @internal
*/
public static function app(\Minify\App $app = null)
public static function app(?\Minify\App $app = null)
{
static $cached;
if ($app) {

View File

@@ -1,7 +1,6 @@
<?php
use Leafo\ScssPhp\Compiler;
use Leafo\ScssPhp\Server;
use Leafo\ScssPhp\Version;
use ScssPhp\ScssPhp\Compiler;
use ScssPhp\ScssPhp\Version;
/**
* Class for using SCSS files
@@ -152,12 +151,12 @@ class Minify_ScssCssSource extends Minify_Source
// and will treat the @import line as css import
$scss->setImportPaths(dirname($filename));
$css = $scss->compile(file_get_contents($filename), $filename);
$css = $scss->compileString(file_get_contents($filename), $filename)->getCss();
$elapsed = round((microtime(true) - $start), 4);
$v = Version::VERSION;
$ts = date('r', $start);
$css = "/* compiled by scssphp $v on $ts (${elapsed}s) */\n\n" . $css;
$ts = date('r', (int) $start);
$css = "/* compiled by scssphp $v on $ts ({$elapsed}s) */\n\n" . $css;
$imports = $scss->getParsedFiles();

View File

@@ -44,7 +44,7 @@ class Minify_Source_Factory
* @param Minify_CacheInterface $cache Optional cache for handling .less files.
*
*/
public function __construct(Minify_Env $env, array $options = array(), Minify_CacheInterface $cache = null)
public function __construct(Minify_Env $env, array $options = array(), ?Minify_CacheInterface $cache = null)
{
$this->env = $env;
$this->options = array_merge(array(

View File

@@ -108,7 +108,7 @@ class Cli
* @return Arg
* @throws InvalidArgumentException
*/
public function addArgument($letter, $required, Arg $arg = null)
public function addArgument($letter, $required, ?Arg $arg = null)
{
if (! preg_match('/^[a-zA-Z]$/', $letter)) {
throw new InvalidArgumentException('$letter must be in [a-zA-Z]');

View File

@@ -113,10 +113,12 @@ class HTTPEncoderTest extends TestCase
);
foreach ($encodingTests as $test) {
$e = new HTTP_Encoder(array(
'content' => $variedContent,
'method' => $test['method'],
));
$e = new HTTP_Encoder(
array(
'content' => $variedContent,
'method' => $test['method'],
)
);
$e->encode(9);
$ret = $this->countBytes($e->getContent());
@@ -153,12 +155,12 @@ function _gzdecode($data)
}
// http://www.php.net/manual/en/function.gzdecode.php#82930
function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
function _phpman_gzdecode($data, &$filename = '', &$error = '', $maxlength = 0)
{
$mbIntEnc = null;
$hasMbOverload = (function_exists('mb_strlen')
&& (ini_get('mbstring.func_overload') !== '')
&& ((int)ini_get('mbstring.func_overload') & 2));
&& (ini_get('mbstring.func_overload') !== '')
&& ((int) ini_get('mbstring.func_overload') & 2));
if ($hasMbOverload) {
$mbIntEnc = mb_internal_encoding();
mb_internal_encoding('8bit');
@@ -174,7 +176,7 @@ function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
return null; // Not GZIP format (See RFC 1952)
}
$method = ord(substr($data, 2, 1)); // Compression method
$flags = ord(substr($data, 3, 1)); // Flags
$flags = ord(substr($data, 3, 1)); // Flags
if ($flags & 31 != $flags) {
$error = "Reserved bits not allowed.";
if ($mbIntEnc !== null) {
@@ -185,11 +187,11 @@ function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
// NOTE: $mtime may be negative (PHP integer limitations)
$mtime = unpack("V", substr($data, 4, 4));
$mtime = $mtime[1];
$xfl = substr($data, 8, 1);
$os = substr($data, 8, 1);
$xfl = substr($data, 8, 1);
$os = substr($data, 8, 1);
$headerlen = 10;
$extralen = 0;
$extra = "";
$extralen = 0;
$extra = "";
if ($flags & 4) {
// 2-byte length prefixed EXTRA data in header
if ($len - $headerlen - 2 < 8) {
@@ -276,7 +278,7 @@ function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
$isize = unpack("V", substr($data, -4));
$isize = $isize[1];
// decompression:
$bodylen = $len-$headerlen-8;
$bodylen = $len - $headerlen - 8;
if ($bodylen < 1) {
// IMPLEMENTATION BUG!
if ($mbIntEnc !== null) {
@@ -288,20 +290,20 @@ function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
$data = "";
if ($bodylen > 0) {
switch ($method) {
case 8:
// Currently the only supported compression method:
$data = gzinflate($body, $maxlength);
break;
default:
$error = "Unknown compression method.";
if ($mbIntEnc !== null) {
mb_internal_encoding($mbIntEnc);
}
return false;
case 8:
// Currently the only supported compression method:
$data = gzinflate($body, $maxlength);
break;
default:
$error = "Unknown compression method.";
if ($mbIntEnc !== null) {
mb_internal_encoding($mbIntEnc);
}
return false;
}
} // zero-byte body content is allowed
// Verifiy CRC32
$crc = sprintf("%u", crc32($data));
$crc = sprintf("%u", crc32($data));
$crcOK = $crc == $datacrc;
$lenOK = $isize == strlen($data);
if (!$lenOK || !$crcOK) {

View File

@@ -6,7 +6,9 @@ use Minify_HTML_Helper;
class LessSourceTest extends TestCase
{
public function setUp()
public string $realDocRoot;
public function setUp(): void
{
$this->realDocRoot = $_SERVER['DOCUMENT_ROOT'];
$_SERVER['DOCUMENT_ROOT'] = self::$document_root;

View File

@@ -6,7 +6,7 @@ use Minify_CSS_UriRewriter;
class MinifyCSSUriRewriterTest extends TestCase
{
public function setUp()
public function setUp(): void
{
Minify_CSS_UriRewriter::$debugText = '';
}

View File

@@ -6,7 +6,7 @@ use Minify_Cache_APC;
class MinifyCacheAPCTest extends TestCase
{
public function setUp()
public function setUp(): void
{
if (!function_exists('apc_store')) {
$this->markTestSkipped("To test this component, install APC extension");

View File

@@ -6,8 +6,13 @@ use Minify_Cache_APCu;
class MinifyCacheAPCuTest extends TestCase
{
public function setUp()
public function setUp(): void
{
if (getenv('GITHUB_ACTION')) {
$this->markTestSkipped("Skipping on CI");
return;
}
if (!function_exists('apcu_store')) {
$this->markTestSkipped("To test this component, install APCu extension");
}

View File

@@ -10,8 +10,13 @@ class MinifyCacheMemcacheTest extends TestCase
/** @var Memcache */
private $mc;
public function setUp()
public function setUp(): void
{
if (getenv('GITHUB_ACTION')) {
$this->markTestSkipped("Skipping on CI");
return;
}
if (!function_exists('memcache_set')) {
$this->markTestSkipped("To test this component, install memcache in PHP");
}

View File

@@ -6,7 +6,7 @@ use Minify_Cache_WinCache;
class MinifyCacheWinCacheTest extends TestCase
{
public function setUp()
public function setUp(): void
{
if (!function_exists('wincache_ucache_info')) {
$this->markTestSkipped("To test this component, install WinCache extension");

View File

@@ -6,7 +6,7 @@ use Minify_Cache_ZendPlatform;
class MinifyCacheZendPlatformTest extends TestCase
{
public function setUp()
public function setUp(): void
{
if (!function_exists('output_cache_put')) {
// FIXME: be specific what to actually install

View File

@@ -7,7 +7,7 @@ use Minify_ClosureCompiler;
class MinifyClosureCompilerTest extends TestCase
{
public static function setupBeforeClass()
public static function setupBeforeClass(): void
{
parent::setupBeforeClass();
Minify_ClosureCompiler::$isDebug = true;

View File

@@ -9,14 +9,14 @@ class MinifyHTMLHelperTest extends TestCase
{
private $realDocRoot;
public function setUp()
public function setUp(): void
{
$this->realDocRoot = $_SERVER['DOCUMENT_ROOT'];
$_SERVER['DOCUMENT_ROOT'] = self::$document_root;
}
// TODO: this is probably not needed if backupGlobals is enabled?
public function tearDown()
public function tearDown(): void
{
$_SERVER['DOCUMENT_ROOT'] = $this->realDocRoot;
}
@@ -43,13 +43,16 @@ class MinifyHTMLHelperTest extends TestCase
$this->assertEquals($expected, $actual, 'non-existent group & debug');
$expected = "/myApp/min/?g=css&amp;{$maxTime}";
$actual = Minify_HTML_Helper::getUri('css', array(
'rewriteWorks' => false
,
'minAppUri' => '/myApp/min/'
,
'groupsConfigFile' => self::$test_files . '/htmlHelper_groupsConfig.php'
));
$actual = Minify_HTML_Helper::getUri(
'css',
array(
'rewriteWorks' => false
,
'minAppUri' => '/myApp/min/'
,
'groupsConfigFile' => self::$test_files . '/htmlHelper_groupsConfig.php'
)
);
$this->assertEquals($expected, $actual, 'existing group');
@@ -58,25 +61,32 @@ class MinifyHTMLHelperTest extends TestCase
require_once $utilsFile;
$fiveSecondsAgo = $_SERVER['REQUEST_TIME'] - 5;
$obj = new Minify_Source(array(
'id' => '1',
'content' => '1',
'lastModified' => $fiveSecondsAgo,
));
$obj = new Minify_Source(
array(
'id' => '1',
'content' => '1',
'lastModified' => $fiveSecondsAgo,
)
);
$output = Minify_mtime(array($uri1, $uri2, $obj));
$this->assertEquals($fiveSecondsAgo, $output, 'utils.php : Minify_mtime w/ files & obj');
$obj = new Minify_Source(array(
'id' => '2',
'content' => '2',
'lastModified' => strtotime('2000-01-01'),
));
$output = Minify_mtime(array(
$obj
,
'css'
), self::$test_files . '/htmlHelper_groupsConfig.php');
$obj = new Minify_Source(
array(
'id' => '2',
'content' => '2',
'lastModified' => strtotime('2000-01-01'),
)
);
$output = Minify_mtime(
array(
$obj
,
'css'
),
self::$test_files . '/htmlHelper_groupsConfig.php'
);
$this->assertEquals($maxTime, $output, 'utils.php : Minify_mtime w/ obj & group');
}
}

View File

@@ -8,7 +8,7 @@ use Minify_NailgunClosureCompiler;
class MinifyNailgunClosureCompilerTest extends TestCase
{
public static function setupBeforeClass()
public static function setupBeforeClass(): void
{
parent::setupBeforeClass();
Minify_ClosureCompiler::$isDebug = true;

View File

@@ -7,7 +7,7 @@ use Minify_YUICompressor;
class MinifyYuiCSSTest extends TestCase
{
public static function setupBeforeClass()
public static function setupBeforeClass(): void
{
parent::setupBeforeClass();
@@ -18,7 +18,7 @@ class MinifyYuiCSSTest extends TestCase
Minify_YUICompressor::$tempDir = sys_get_temp_dir();
}
public function setUp()
public function setUp(): void
{
$this->assertHasJar();
}

View File

@@ -6,7 +6,9 @@ use Minify_HTML_Helper;
class ScssSourceTest extends TestCase
{
public function setUp()
public string $realDocRoot;
public function setUp(): void
{
$this->realDocRoot = $_SERVER['DOCUMENT_ROOT'];
$_SERVER['DOCUMENT_ROOT'] = self::$document_root;

View File

@@ -11,7 +11,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
/** @var string */
protected static $test_files;
public static function setupBeforeClass()
public static function setupBeforeClass(): void
{
self::$document_root = __DIR__;
self::$test_files = __DIR__ . '/_test_files';
@@ -25,7 +25,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase
*/
protected function countBytes($str)
{
return (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2))
return (function_exists('mb_strlen') && ((int) ini_get('mbstring.func_overload') & 2))
? mb_strlen($str, '8bit')
: strlen($str);
}