1
0
mirror of https://github.com/mrclay/minify.git synced 2025-09-06 12:10:45 +02:00

58 Commits

Author SHA1 Message Date
Elan Ruusamäe
9b492d3c6a Run php-cs-fixer in Travis CI 2019-12-11 16:52:11 +02:00
Elan Ruusamäe
b632b916a7 php-cs-fixer: restore using cache 2019-12-11 16:52:11 +02:00
Elan Ruusamäe
a4c3c41161 Setup php-cs-fixer 2019-12-10 08:42:12 +02:00
Elan Ruusamäe
7378a0efe8 Composer: sort packages, set platform version 2019-12-10 08:31:58 +02:00
Jason Varga
c0dd8f50a1 Upgrade mrclay/props-dic (#658)
* Upgrade mrclay/props-dic
* Also support existing version
2019-12-08 22:38:04 +02:00
Elan Ruusamäe
63a812af8d Update changelog for 3.0.6 2019-10-28 13:39:13 +02:00
Elan Ruusamäe
8836df06d2 Bugfix for option sanitizer (#655) 2019-10-28 13:38:13 +02:00
Matthias Zronek
2f33b69786 Bugfix for option sanitizer 2019-10-28 11:03:44 +01:00
Elan Ruusamäe
8e4b0ceb86 Update changelog to format similar to keepachangelog.com 2019-10-01 13:09:59 +03:00
Elan Ruusamäe
266ddd7d54 Update changelog for 3.0.5 2019-10-01 13:04:39 +03:00
Elan Ruusamäe
07ed67aa77 Fix syntax error in composer.json (#653) 2019-10-01 13:03:36 +03:00
Elan Ruusamäe
2bbcce054d travis: add php 7.3, 7.4, 8.0; remove hhvm 2019-10-01 12:52:50 +03:00
Elan Ruusamäe
9040437901 Fix unit test for bd7d1077 2019-10-01 11:40:04 +03:00
Elan Ruusamäe
f954e1bd58 Fix syntax error in composer.json 2019-10-01 10:35:33 +03:00
Elan Ruusamäe
a8a77e6054 Set 3.0.4 release date 2019-09-24 08:12:01 +03:00
Elan Ruusamäe
25065b1559 Merge pull request #634 from dpauli/#633-Move-lesserphp-to-require
#633 move lesserphp to require
2019-09-19 10:31:19 +03:00
Elan Ruusamäe
807f41903e Merge pull request #642 from csabahete/master
Set "Vary: Accept-Encoding" header only if encoding is set and not empty
2019-09-19 10:30:56 +03:00
Elan Ruusamäe
b81ad2289a Merge pull request #646 from dli7319/master
Do not pass undefined variables into compact() for PHP 7.3
2019-09-19 10:30:25 +03:00
Elan Ruusamäe
fecf395de3 Allow monolog v2 (#650) 2019-09-19 10:29:27 +03:00
Jason Varga
2bd66ae3f9 use phpunit from vendor 2019-09-18 15:02:27 -04:00
Jason Varga
4453f3a4cb Allow monolog v2 2019-09-18 14:18:55 -04:00
David Li
f50353a952 Check if each variable is in the symbol table.
Delete if not before passing into compact.
2019-02-27 14:39:56 -05:00
Csaba Hete
bd7d1077b3 set "Vary: Accept-Encoding" header only if encoding is set and not empty 2018-11-06 19:24:25 +01:00
David Pauli
40f89b528c #633 Remove from suggest 2018-05-16 16:15:07 +02:00
David Pauli
b1bbdccef0 #633 Move marcusschwarz/lesserphp from require-dev to require 2018-05-16 16:13:44 +02:00
Elan Ruusamäe
258e495451 Revert "simplify substr third param"
This reverts commit 5659799c42.

the change actually broken MinifyImportProcessorTest
2018-01-05 19:13:28 +02:00
Elan Ruusamäe
b97a1db01d cleanup unneeded import 2018-01-05 19:09:42 +02:00
Elan Ruusamäe
3081a88dbd Merge pull request #623 from glensc/cs2
Code Quality fixes
2018-01-05 18:32:57 +02:00
Elan Ruusamäe
df7fddfa09 import classes instead of manual qualify 2018-01-05 14:35:57 +02:00
Elan Ruusamäe
c580d24e1b simplify return statement 2018-01-05 14:35:09 +02:00
Elan Ruusamäe
f9c96b6a3c use in_array instead of array_search (clearer intent) 2018-01-05 14:34:43 +02:00
Elan Ruusamäe
d3decb27e1 strict comparison 2018-01-05 14:34:06 +02:00
Elan Ruusamäe
0038cdb5de use empty string comparison instead of strlen 2018-01-05 14:34:06 +02:00
Elan Ruusamäe
5659799c42 simplify substr third param 2018-01-05 14:34:06 +02:00
Elan Ruusamäe
57be61586e use origin function instead of alias 2018-01-05 14:33:52 +02:00
Elan Ruusamäe
2198482600 drop useless return phpdoc annotation for constructor 2018-01-05 14:30:01 +02:00
Elan Ruusamäe
c2f40feb0c split workflows (no else after return) 2018-01-05 14:29:16 +02:00
Elan Ruusamäe
5c300aca97 do not define default value 2018-01-05 14:28:28 +02:00
Elan Ruusamäe
76c1edc6ff drop stale version comment 2018-01-05 14:27:22 +02:00
Elan Ruusamäe
919fc10139 Merge pull request #622 from glensc/travis-php-versions
travis: test php 5.3..7.3
2018-01-05 14:12:04 +02:00
Elan Ruusamäe
bb7fc74330 tests: rename dataproviders not to be picked up as tests 2018-01-05 13:13:20 +02:00
Elan Ruusamäe
eb4c0f6541 leafo/scssphp: allow 0.3/0.6/0.7
tests/ScssSourceTest.php passed with all versions

refs:
- commit ddf3a4e57f
- PR #562
2018-01-05 13:03:30 +02:00
Elan Ruusamäe
b6ef6fa397 travis: test php 5.3..7.3 2017-12-26 02:30:50 +02:00
Elan Ruusamäe
00b9f28630 Merge pull request #621 from glensc/phpunit
tests: move tests to Minify\Test namespace
2017-12-26 02:28:55 +02:00
Elan Ruusamäe
be40d4f9b2 fix namespaced _gzdecode 2017-12-22 18:18:07 +02:00
Elan Ruusamäe
9ee5fb7701 moved tests to minify\test namespace 2017-12-22 18:05:33 +02:00
Elan Ruusamäe
7d60fb9d0f use Minify\Test namespace for tests 2017-12-22 17:58:01 +02:00
Elan Ruusamäe
6236431c8f use forward-compatible phpunit testcase 2017-12-22 17:54:17 +02:00
Elan Ruusamäe
404664509c fill 3.0.3 release notes 2017-11-03 23:00:15 +02:00
Elan Ruusamäe
9ed7f9dc24 Fix closure-compiler's error "redirection limit reached". fixes #618, #619 2017-11-03 22:58:09 +02:00
Emanuele "ToX" Toscano
d9b392c474 Fix closure-compiler's "redirection limit reached"
Since a few days, the js minification was complaining about a redirection limit in the closure-compiler call. This was generating an error each time I have tried to use this tool.

After a bit of investigation I have found out that it was missing some parameters that are now mandatory. Plus, it now works in https only.
2017-11-03 10:24:25 +01:00
Steve Clay
004f6bf730 3.0.2 release notes 2017-09-14 18:13:04 -04:00
Steve Clay
72ece76cdf Fixes syntax error in Groups controller
Fixes #613
2017-09-14 18:03:49 -04:00
Elan Ruusamäe
bde7a41021 Merge pull request #610 from glensc/lesserphp
replace leafo/lessphp with marcusschwarz/lesserphp
2017-08-17 09:38:36 +03:00
Elan Ruusamäe
88aca4019d replace leafo/lessphp with marcusschwarz/lesserphp
This is a better maintained fork of lessphp. It seems to be fully
compatible, so this is more or less a drop in replacement.

Dokuwiki switched to this fork:
https://github.com/splitbrain/dokuwiki/pull/1969
2017-08-17 09:33:05 +03:00
Steve Clay
70952d88f9 Merge pull request #608 from benface/patch-1
Fix issue where minify() would corrupt some characters such as   in some environments
2017-08-10 12:22:30 -04:00
Benoît Rouleau
6b274afd0b unicode flag everywhere to fix more issues with   and MAMP 2017-08-09 17:22:32 -04:00
Benoît Rouleau
449f009b39 Fix issue where minify() would corrupt Unicode characters (such as  ) in some environments
Adding the `u` flag there fixes an issue in my environment (MAMP 4.1.1 with PHP 7.1.5) where `minify()` would corrupt the ` ` character (it would get replaced by the replacement character).
2017-07-20 20:34:49 -04:00
43 changed files with 602 additions and 190 deletions

263
.php_cs
View File

@@ -1,27 +1,240 @@
<?php
<?php declare(strict_types=1);
$finder = Symfony\CS\Finder\DefaultFinder::create()
->in(__DIR__ . '/lib')
;
return PhpCsFixer\Config::create()
->setUsingCache(true)
->setRiskyAllowed(true)
->setRules(
[
'align_multiline_comment' => [
'comment_type' => 'all_multiline',
],
'array_indentation' => true,
'array_syntax' => [
'syntax' => 'long',
],
'backtick_to_shell_exec' => true,
'binary_operator_spaces' => [
'operators' => ['=>' => 'align_single_space_minimal'],
],
'blank_line_after_namespace' => true,
'blank_line_after_opening_tag' => false,
'blank_line_before_statement' => true,
'braces' => true,
'cast_spaces' => [
'space' => 'single',
],
'class_attributes_separation' => true,
'class_keyword_remove' => false,
'combine_consecutive_issets' => true,
'combine_consecutive_unsets' => true,
'combine_nested_dirname' => true,
// 'compact_nullable_typehint' => true, // PHP >= 7.1
'concat_space' => [
'spacing' => 'one',
],
'date_time_immutable' => false,
'declare_equal_normalize' => true,
'declare_strict_types' => false, // some tests need declare_strict_types === 0
'dir_constant' => true,
'elseif' => true,
'encoding' => true,
'ereg_to_preg' => true,
'error_suppression' => false,
'escape_implicit_backslashes' => false,
'explicit_indirect_variable' => true,
'explicit_string_variable' => true,
'final_internal_class' => true,
'fopen_flag_order' => true,
'fopen_flags' => true,
'full_opening_tag' => true,
'fully_qualified_strict_types' => false, // maybe better for readability, so keep it ...
'function_declaration' => true,
'function_to_constant' => true,
'function_typehint_space' => true,
'general_phpdoc_annotation_remove' => [
'annotations' => [
'author',
'package',
'version',
],
],
'heredoc_to_nowdoc' => false,
'implode_call' => false,
'include' => true,
'increment_style' => false, // maybe better for readability, so keep it ...
'indentation_type' => true,
'line_ending' => true,
'linebreak_after_opening_tag' => false,
/* // Requires PHP >= 7.1
'list_syntax' => [
'syntax' => 'short',
],
*/
'logical_operators' => true,
'lowercase_cast' => true,
'lowercase_constants' => true,
'lowercase_keywords' => true,
'lowercase_static_reference' => true,
'magic_constant_casing' => true,
'magic_method_casing' => true,
'method_argument_space' => [
'ensure_fully_multiline' => true,
'keep_multiple_spaces_after_comma' => false,
],
'method_chaining_indentation' => false, // maybe better for readability, so keep it ...
'modernize_types_casting' => true,
'multiline_comment_opening_closing' => false, // maybe better for readability, so keep it ...
'multiline_whitespace_before_semicolons' => [
'strategy' => 'no_multi_line',
],
'native_constant_invocation' => true,
'native_function_casing' => true,
'native_function_invocation' => true,
'new_with_braces' => true,
'no_alias_functions' => true,
'no_alternative_syntax' => true,
'no_binary_string' => true,
'no_blank_lines_after_class_opening' => false,
'no_blank_lines_after_phpdoc' => true,
'no_blank_lines_before_namespace' => false,
'no_break_comment' => true,
'no_closing_tag' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => true,
'no_homoglyph_names' => true,
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => [
'use' => 'echo',
],
'no_multiline_whitespace_around_double_arrow' => true,
'no_null_property_initialization' => true,
'no_php4_constructor' => true,
'no_short_bool_cast' => true,
'no_short_echo_tag' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_after_function_name' => true,
'no_spaces_around_offset' => true,
'no_spaces_inside_parenthesis' => true,
'no_superfluous_elseif' => false, // maybe better for readability, so keep it ...
'no_superfluous_phpdoc_tags' => false, // maybe add extra description, so keep it ...
'no_trailing_comma_in_list_call' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unneeded_control_parentheses' => true,
'no_unneeded_curly_braces' => true,
'no_unneeded_final_method' => true,
'no_unreachable_default_argument_value' => false, // do not changes the logic of the code ...
'no_unset_on_property' => true,
'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'non_printable_character' => true,
'normalize_index_brace' => true,
'not_operator_with_space' => false,
'not_operator_with_successor_space' => false,
'object_operator_without_whitespace' => true,
'ordered_class_elements' => false, // maybe better for readability, so keep it ...
'ordered_imports' => true,
'phpdoc_add_missing_param_annotation' => [
'only_untyped' => true,
],
'phpdoc_align' => false, // maybe better for readability for very long names, so keep it ...
'phpdoc_annotation_without_dot' => true,
'phpdoc_indent' => true,
'phpdoc_inline_tag' => true,
'phpdoc_no_access' => true,
'phpdoc_no_alias_tag' => true,
'phpdoc_no_empty_return' => false, // maybe better for readability, so keep it ...
'phpdoc_no_package' => true,
'phpdoc_no_useless_inheritdoc' => true,
'phpdoc_order' => true,
'phpdoc_return_self_reference' => true,
'phpdoc_scalar' => true,
'phpdoc_separation' => true,
'phpdoc_single_line_var_spacing' => true,
'phpdoc_summary' => false,
'phpdoc_to_comment' => false,
'phpdoc_to_return_type' => false,
'phpdoc_trim' => true,
'phpdoc_trim_consecutive_blank_line_separation' => true,
'phpdoc_types' => true,
'phpdoc_types_order' => [
'null_adjustment' => 'always_last',
'sort_algorithm' => 'alpha',
],
'phpdoc_var_without_name' => true,
'php_unit_construct' => true,
'php_unit_dedicate_assert' => true,
'php_unit_expectation' => true,
'php_unit_fqcn_annotation' => true,
'php_unit_internal_class' => true,
'php_unit_method_casing' => true,
'php_unit_mock' => true,
'php_unit_namespaced' => true,
'php_unit_no_expectation_annotation' => true,
'php_unit_ordered_covers' => true,
'php_unit_set_up_tear_down_visibility' => true,
'php_unit_strict' => true,
'php_unit_test_annotation' => true,
'php_unit_test_case_static_method_calls' => true,
'php_unit_test_class_requires_covers' => false,
'pow_to_exponentiation' => true,
'pre_increment' => false,
'protected_to_private' => true,
'return_assignment' => true,
'return_type_declaration' => true,
// 'self_accessor' => true, // PHP >= 5.4
'semicolon_after_instruction' => true,
'set_type_to_cast' => true,
'short_scalar_cast' => true,
'silenced_deprecation_error' => false,
'simplified_null_return' => false, // maybe better for readability, so keep it ...
'single_blank_line_at_eof' => true,
'single_class_element_per_statement' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_line_comment_style' => [
'comment_types' => ['hash'],
],
'single_quote' => true,
'space_after_semicolon' => true,
'standardize_increment' => false, // maybe better for readability, so keep it ...
'standardize_not_equals' => true,
// 'static_lambda' => true, // PHP >= 5.4
'strict_comparison' => true,
'strict_param' => true,
'string_line_ending' => true,
'switch_case_semicolon_to_colon' => true,
'switch_case_space' => true,
'ternary_operator_spaces' => true,
// 'ternary_to_null_coalescing' => true, // PHP >= 7.0
'trailing_comma_in_multiline_array' => true,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'visibility_required' => true,
// 'void_return' => true, // PHP >= 7.1
'whitespace_after_comma_in_array' => true,
'yoda_style' => [
'equal' => false,
'identical' => false,
'less_and_greater' => false,
],
]
)
->setIndent(" ")
->setLineEnding("\n")
->setFinder(
PhpCsFixer\Finder::create()
->in(['.', 'builder/', 'lib/', 'tests/', 'min_extras/', 'static/'])
->name('*.php')
->ignoreDotFiles(true)
->ignoreVCS(true)
);
return Symfony\CS\Config\Config::create()
->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
->setUsingCache(true)
->fixers(array(
'linefeed',
'trailing_spaces',
'unused_use',
'short_tag',
'return',
'visibility',
'php_closing_tag',
'extra_empty_lines',
'function_declaration',
'include',
'controls_spaces',
'elseif',
'-eof_ending',
'-method_argument_space',
))
->finder($finder)
;
// vim:ft=php

View File

@@ -1,21 +1,31 @@
language: php
sudo: false
dist: trusty
php:
- 7.0
- 5.6
- 5.5
- 5.4
- hhvm
jobs:
fast_finish: true
allow_failures:
- php: "7.4snapshot"
- php: "nightly"
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.4snapshot"
- name: "Php CS Fixer"
php: "7.3"
env:
- PHP_CS_FIXER=1
env:
- CLOSURE_VERSION: 20161024
matrix:
allow_failures:
- php: hhvm
- php: 7.0
services:
- memcached
@@ -31,7 +41,14 @@ before_script:
- tests/dl-closure.sh
script:
- PATH=vendor/bin:$PATH
- composer validate
- phpunit --verbose
- |
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

@@ -1,8 +1,36 @@
## Version 3.0.1 (2017-06-09)
# Changelog
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/).
## 3.0.6 - 2019-10-28
- Bugfix for option sanitizer, #654, #655
## 3.0.5 - 2019-10-01
- Fix syntax error in composer.json, #653
## 3.0.4 - 2019-09-24
- Fix PHP 7.3 compatibility issues, #648
## 3.0.3 - 2017-11-03
* Fix closure-compiler's error "redirection limit reached". #618, #619
## 3.0.2 - 2017-09-14
* Fixes syntax error in Groups controller, #613
* Better-maintained lessphp fork, #610
* No longer corrupts some chars in some environments, #608
## 3.0.1 - 2017-06-09
* Update CSSmin to v4, #599, #590
## Version 3.0.0 (2017-04-03)
## 3.0.0 - 2017-04-03
* Improved CSS minification via Túbal Martín's CSSMin
* Easier error identification (just see error_log)
* Adds feature to serve static files directly
@@ -20,7 +48,8 @@
* BREAKING: Removes `$min_libPath` option
* BREAKING: The Minify, source, and controller components have changed APIs
## Version 2.3.0 (2016-03-11)
## 2.3.0 - 2016-03-11
* Adds `$min_concatOnly` option to just concatenate files
* Deprecates use of Minify_Loader
* Deprecates use of Minify_Logger
@@ -28,13 +57,15 @@
* Deprecates use of FirePHP
* Deprecates use of DooDigestAuth
## Version 2.2.1 (2014-10-30)
## 2.2.1 - 2014-10-30
* Builder styled with Bootstrap (thanks to help from acidvertigo)
* Update CSSmin to v.2.4.8
* Added WinCache
* URLs with spaces properly rewritten
## Version 2.2.0 (2014-03-12)
## 2.2.0 - 2014-03-12
* Fix handling of RegEx in certain situations in JSMin
* Thanks to Vovan-VE for reporting this
* Update composer.json with support info
@@ -56,11 +87,13 @@
* Allow far-future expiration and file versioning with the "v" querystirng parameter in addition to existing method
* Lots of general code tidy ups
## Version 2.1.7 (2013-07-23)
## 2.1.7 - 2013-07-23
* Fixes arbitrary file inclusion vulnerability on some systems
* Thanks to Matt Mecham for reporting this
## Version 2.1.6 (2013-07-19)
## 2.1.6 - 2013-07-19
* JSMin fixes
* Prevents some Closure Compiler API failures
* Uses autoloading for all class loading
@@ -72,7 +105,8 @@
* CLI script more portable
* Adds composer.json
## Version 2.1.5 (2012-03-10)
## 2.1.5 - 2012-03-10
* Removed XSS vulnerability
* Disabled builder by default
* command line tools to minify and rewrite URIs in CSS
@@ -81,7 +115,8 @@
* Closure Compiler uses cURL when allow\_url\_fopen is off
* Missing file notices when using groups
## Version 2.1.4b (2010-07-10)
## 2.1.4b - 2010-07-10
* Option to minify JS with Closure Compiler API w/ JSMin failover
* Cookie/bookmarklet-based debug mode. No HTML editing!
* Allows 1 file to be missing w/o complete failure
@@ -97,7 +132,8 @@
* Removed annoying maxFiles limit
* mbstring.func\_overload usage is safer
## Version 2.1.3 (2009-06-30)
## 2.1.3 - 2009-06-30
* CSS fixes
* A few URI rewriting bugs fixed
* comment/whitespace removal no longer breaks some values
@@ -112,7 +148,8 @@
* API: Can set contentType Minify\_Source objects (fixes an annoying [caveat](http://groups.google.com/group/minify/msg/8446d32ee99a4961))
* [Resolved Issue list](http://code.google.com/p/minify/issues/list?can=1&q=label%3ARelease-2.1.2%20status%3AVerified)
## Version 2.1.2 (2009-03-04)
## 2.1.2 - 2009-03-04
* Javascript fixes
* Debug mode no longer confused by `*/*` in strings/RegExps (jQuery)
* quote characters inside RegExp literals no longer cause exception
@@ -124,14 +161,16 @@
* Builder app doesn't fail on systems without gzdeflate()
* APC caching class included
## Version 2.1.1 (2008-10-19)
## 2.1.1 - 2008-10-19
* Bug fix release
* Detection and workarounds for zlib.output\_compression and non-PHP encoding modules
* Zlib not required (mod\_rewrite, et.al., can still be used for encoding)
* HTML : More IE conditional comments preserved
* Minify\_groupUri() utility fixed
## Version 2.1.0 (2008-09-18)
## 2.1.0 - 2008-09-18
* "min" default application for quick deployment
* Minify URI Builder app & bookmarklet for quickly creating minify URIs
* Relative URIs in CSS file are fixed automatically by default
@@ -147,8 +186,8 @@
* Minify\_Cache\_File has flock()s (by default)
* Workaround for Windows mtime reporting bug
## 2.0.0 - 2008-05-22
## Version 2.0.0 (2008-05-22)
* Complete code overhaul. Minify is now a PEAR-style class and toolkit for building customized minifying file servers.
* Content-Encoding: deflate/gzip/compress, based on request headers
* Expanded CSS and HTML minifiers with test cases
@@ -157,10 +196,12 @@
* Compression & encoding modules lazy-loaded as needed (304 responses use minimal code)
* Separate utility classes for HTTP encoding and cache control
## Version 1.0.1 (2007-05-05)
## 1.0.1 - 2007-05-05
* Fixed various problems resolving pathnames when hosted on an NFS mount.
* Fixed 'undefined constant' notice.
* Replaced old JSMin library with a much faster custom implementation.
## Version 1.0.0 (2007-05-02)
## 1.0.0 - 2007-05-02
* First release.

View File

@@ -1,7 +1,7 @@
{
"name": "mrclay/minify",
"type": "library",
"description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers",
"description": "Minify is a PHP app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers",
"homepage": "https://github.com/mrclay/minify",
"license": "BSD-3-Clause",
"authors": [
@@ -20,28 +20,33 @@
"classmap": ["lib/"]
},
"autoload-dev": {
"classmap": ["tests/TestCase.php"]
"psr-4": {"Minify\\Test\\": "tests/"}
},
"config": {
"platform": {
"php": "5.3.29"
},
"sort-packages": true
},
"require": {
"php": "^5.3.0 || ^7.0",
"ext-pcre": "*",
"intervention/httpauth": "~2.0",
"monolog/monolog": "~1.1",
"marcusschwarz/lesserphp": "~0.5.1",
"monolog/monolog": "~1.1|~2.0",
"mrclay/jsmin-php": "~2",
"mrclay/props-dic": "^2.2",
"php": "^5.3.0 || ^7.0",
"mrclay/props-dic": "^2.2|^3.0",
"tubalmartin/cssmin": "~4"
},
"require-dev": {
"firephp/firephp-core": "~0.4.0",
"leafo/lessphp": "~0.4.0",
"leafo/scssphp": "~0.6.6",
"leafo/scssphp": "^0.3 || ^0.6 || ^0.7",
"meenie/javascript-packer": "~1.1",
"phpunit/phpunit": "4.8.*",
"phpunit/phpunit": "^4.8.36",
"tedivm/jshrink": "~1.1.0"
},
"suggest": {
"firephp/firephp-core": "Use FirePHP for Log messages",
"leafo/lessphp": "LESS support",
"meenie/javascript-packer": "Keep track of the Packer PHP port using Composer"
},
"scripts": {

View File

@@ -128,8 +128,8 @@ class HTTP_ConditionalGet
$etagAppend = '';
if (isset($spec['encoding'])) {
$this->_stripEtag = true;
$this->_headers['Vary'] = 'Accept-Encoding';
if ('' !== $spec['encoding']) {
$this->_headers['Vary'] = 'Accept-Encoding';
if (0 === strpos($spec['encoding'], 'x-')) {
$spec['encoding'] = substr($spec['encoding'], 2);
}

View File

@@ -14,9 +14,6 @@ use Psr\Log\LoggerInterface;
* This library was inspired by {@link mailto:flashkot@mail.ru jscsscomp by Maxim Martynyuk}
* and by the article {@link http://www.hunlock.com/blogs/Supercharged_Javascript "Supercharged JavaScript" by Patrick Hunlock}.
*
* Requires PHP 5.1.0.
* Tested on PHP 5.1.6.
*
* @package Minify
* @author Ryan Grove <ryan@wonko.com>
* @author Stephen Clay <steve@mrclay.org>
@@ -48,14 +45,14 @@ class Minify
*
* @var Minify_CacheInterface
*/
private $cache = null;
private $cache;
/**
* Active controller for current request
*
* @var Minify_Controller_Base
*/
protected $controller = null;
protected $controller;
/**
* @var Minify_Env
@@ -77,12 +74,12 @@ class Minify
*
* @var array
*/
protected $options = null;
protected $options;
/**
* @var LoggerInterface|null
*/
protected $logger = null;
protected $logger;
/**
* @param Minify_CacheInterface $cache
@@ -302,20 +299,20 @@ class Minify
$cg->sendHeaders();
return;
} else {
return array(
'success' => true,
'statusCode' => 304,
'content' => '',
'headers' => $cg->getHeaders(),
);
}
} else {
// client will need output
$headers = $cg->getHeaders();
unset($cg);
return array(
'success' => true,
'statusCode' => 304,
'content' => '',
'headers' => $cg->getHeaders(),
);
}
// client will need output
$headers = $cg->getHeaders();
unset($cg);
if ($this->options['contentType'] === self::TYPE_CSS && $this->options['rewriteCssUris']) {
$this->setupUriRewrites();
}

View File

@@ -2,23 +2,34 @@
namespace Minify;
use Minify_Cache_File;
use Minify_CacheInterface;
use Minify_Controller_MinApp;
use Minify_ControllerInterface;
use Minify_DebugDetector;
use Minify_Env;
use Minify_Source_Factory;
use Props\Container;
use Psr\Log\LoggerInterface;
use RuntimeException;
use Monolog;
use Minify;
/**
* @property \Minify_CacheInterface $cache
* @property \Minify\Config $config
* @property Minify_CacheInterface $cache
* @property Config $config
* @property string $configPath
* @property \Minify_ControllerInterface $controller
* @property Minify_ControllerInterface $controller
* @property string $dir
* @property string $docRoot
* @property \Minify_Env $env
* @property \Monolog\Handler\ErrorLogHandler $errorLogHandler
* @property Minify_Env $env
* @property Monolog\Handler\ErrorLogHandler $errorLogHandler
* @property array $groupsConfig
* @property string $groupsConfigPath
* @property \Psr\Log\LoggerInterface $logger
* @property LoggerInterface $logger
* @property \Minify $minify
* @property array $serveOptions
* @property \Minify_Source_Factory $sourceFactory
* @property Minify_Source_Factory $sourceFactory
* @property array $sourceFactoryOptions
*/
class App extends Container
@@ -38,29 +49,29 @@ class App extends Container
$this->cache = function (App $app) use ($that) {
$config = $app->config;
if ($config->cachePath instanceof \Minify_CacheInterface) {
if ($config->cachePath instanceof Minify_CacheInterface) {
return $config->cachePath;
}
if (!$config->cachePath || is_string($config->cachePath)) {
return new \Minify_Cache_File($config->cachePath, $config->cacheFileLocking, $app->logger);
return new Minify_Cache_File($config->cachePath, $config->cacheFileLocking, $app->logger);
}
$type = $that->typeOf($config->cachePath);
throw new \RuntimeException('$min_cachePath must be a path or implement Minify_CacheInterface.'
throw new RuntimeException('$min_cachePath must be a path or implement Minify_CacheInterface.'
. " Given $type");
};
$this->config = function (App $app) {
$config = (require $app->configPath);
if ($config instanceof \Minify\Config) {
if ($config instanceof Minify\Config) {
return $config;
}
// copy from vars into properties
$config = new \Minify\Config();
$config = new Minify\Config();
$propNames = array_keys(get_object_vars($config));
@@ -69,6 +80,13 @@ class App extends Container
};
$varNames = array_map($prefixer, $propNames);
$varDefined = get_defined_vars();
$varNames = array_filter($varNames, function($name) use($varDefined)
{
return array_key_exists($name, $varDefined);
});
$vars = compact($varNames);
foreach ($varNames as $varName) {
@@ -94,17 +112,17 @@ class App extends Container
$config = $app->config;
if (empty($config->factories['controller'])) {
$ctrl = new \Minify_Controller_MinApp($app->env, $app->sourceFactory, $app->logger);
$ctrl = new Minify_Controller_MinApp($app->env, $app->sourceFactory, $app->logger);
} else {
$ctrl = call_user_func($config->factories['controller'], $app);
}
if ($ctrl instanceof \Minify_ControllerInterface) {
if ($ctrl instanceof Minify_ControllerInterface) {
return $ctrl;
}
$type = $that->typeOf($ctrl);
throw new \RuntimeException('$min_factories["controller"] callable must return an implementation'
throw new RuntimeException('$min_factories["controller"] callable must return an implementation'
." of Minify_CacheInterface. Returned $type");
};
@@ -118,13 +136,13 @@ class App extends Container
};
$this->env = function (App $app) {
return new \Minify_Env($app->config->envArgs);
return new Minify_Env($app->config->envArgs);
};
$this->errorLogHandler = function (App $app) {
$format = "%channel%.%level_name%: %message% %context% %extra%";
$handler = new \Monolog\Handler\ErrorLogHandler();
$handler->setFormatter(new \Monolog\Formatter\LineFormatter($format));
$handler = new Monolog\Handler\ErrorLogHandler();
$handler->setFormatter(new Monolog\Formatter\LineFormatter($format));
return $handler;
};
@@ -138,11 +156,11 @@ class App extends Container
$this->logger = function (App $app) use ($that) {
$value = $app->config->errorLogger;
if ($value instanceof \Psr\Log\LoggerInterface) {
if ($value instanceof LoggerInterface) {
return $value;
}
$logger = new \Monolog\Logger('minify');
$logger = new Monolog\Logger('minify');
if (!$value) {
return $logger;
@@ -150,12 +168,12 @@ class App extends Container
if ($value === true || $value instanceof \FirePHP) {
$logger->pushHandler($app->errorLogHandler);
$logger->pushHandler(new \Monolog\Handler\FirePHPHandler());
$logger->pushHandler(new Monolog\Handler\FirePHPHandler());
return $logger;
}
if ($value instanceof \Monolog\Handler\HandlerInterface) {
if ($value instanceof Monolog\Handler\HandlerInterface) {
$logger->pushHandler($value);
return $logger;
@@ -163,14 +181,14 @@ class App extends Container
// BC
if (is_object($value) && is_callable(array($value, 'log'))) {
$handler = new \Minify\Logger\LegacyHandler($value);
$handler = new Minify\Logger\LegacyHandler($value);
$logger->pushHandler($handler);
return $logger;
}
$type = $that->typeOf($value);
throw new \RuntimeException('If set, $min_errorLogger must be a PSR-3 logger or a Monolog handler.'
throw new RuntimeException('If set, $min_errorLogger must be a PSR-3 logger or a Monolog handler.'
." Given $type");
};
@@ -187,7 +205,7 @@ class App extends Container
}
$type = $that->typeOf($minify);
throw new \RuntimeException('$min_factories["minify"] callable must return a Minify object.'
throw new RuntimeException('$min_factories["minify"] callable must return a Minify object.'
." Returned $type");
};
@@ -207,7 +225,7 @@ class App extends Container
}
if ($config->allowDebugFlag) {
$ret['debug'] = \Minify_DebugDetector::shouldDebugRequest($env);
$ret['debug'] = Minify_DebugDetector::shouldDebugRequest($env);
}
if ($config->concatOnly) {
@@ -228,7 +246,7 @@ class App extends Container
};
$this->sourceFactory = function (App $app) {
return new \Minify_Source_Factory($app->env, $app->sourceFactoryOptions, $app->cache);
return new Minify_Source_Factory($app->env, $app->sourceFactoryOptions, $app->cache);
};
$this->sourceFactoryOptions = function (App $app) {

View File

@@ -80,7 +80,6 @@ class Minify_Build
*
* @param array $sources array of Minify_Source objects and/or file paths
*
* @return null
*/
public function __construct($sources)
{

View File

@@ -91,8 +91,8 @@ class Minify_CSS
$symlinks = $options['symlinks'];
return Minify_CSS_UriRewriter::rewrite($css, $currentDir, $docRoot, $symlinks);
} else {
return Minify_CSS_UriRewriter::prepend($css, $options['prependRelativePath']);
}
return Minify_CSS_UriRewriter::prepend($css, $options['prependRelativePath']);
}
}

View File

@@ -78,11 +78,11 @@ class Minify_CSSmin
,$options['docRoot']
,$options['symlinks']
);
} else {
return Minify_CSS_UriRewriter::prepend(
$css
,$options['prependRelativePath']
);
}
return Minify_CSS_UriRewriter::prepend(
$css
,$options['prependRelativePath']
);
}
}

View File

@@ -38,14 +38,14 @@ class Minify_ClosureCompiler
*
* @var string
*/
public static $jarFile = null;
public static $jarFile;
/**
* Writable temp directory. This must be set before calling minifyJs().
*
* @var string
*/
public static $tempDir = null;
public static $tempDir;
/**
* Filepath of "java" executable (may be needed if not in shell's PATH)
@@ -129,7 +129,7 @@ class Minify_ClosureCompiler
$this->getOptionsCommandLine($userOptions)
);
return join(' ', $args) . ' ' . escapeshellarg($tmpFile);
return implode(' ', $args) . ' ' . escapeshellarg($tmpFile);
}
/**

View File

@@ -48,7 +48,7 @@ class Minify_Controller_Groups extends Minify_Controller_Files
if (isset($server['ORIG_PATH_INFO'])) {
$pathInfo = substr($server['ORIG_PATH_INFO'], 1);
} elseif (isset($server['PATH_INFO'])) {
$pathInfo = substr($server['PATH_INFO'], 1)
$pathInfo = substr($server['PATH_INFO'], 1);
} else {
$pathInfo = false;
}

View File

@@ -102,10 +102,10 @@ class Minify_Env
return $path;
}
protected $server = null;
protected $get = null;
protected $post = null;
protected $cookie = null;
protected $server;
protected $get;
protected $post;
protected $cookie;
/**
* Compute $_SERVER['DOCUMENT_ROOT'] for IIS using SCRIPT_FILENAME and SCRIPT_NAME.

View File

@@ -99,52 +99,52 @@ class Minify_HTML
// replace SCRIPTs (and minify) with placeholders
$this->_html = preg_replace_callback(
'/(\\s*)<script(\\b[^>]*?>)([\\s\\S]*?)<\\/script>(\\s*)/i'
'/(\\s*)<script(\\b[^>]*?>)([\\s\\S]*?)<\\/script>(\\s*)/iu'
,array($this, '_removeScriptCB')
,$this->_html);
// replace STYLEs (and minify) with placeholders
$this->_html = preg_replace_callback(
'/\\s*<style(\\b[^>]*>)([\\s\\S]*?)<\\/style>\\s*/i'
'/\\s*<style(\\b[^>]*>)([\\s\\S]*?)<\\/style>\\s*/iu'
,array($this, '_removeStyleCB')
,$this->_html);
// remove HTML comments (not containing IE conditional comments).
$this->_html = preg_replace_callback(
'/<!--([\\s\\S]*?)-->/'
'/<!--([\\s\\S]*?)-->/u'
,array($this, '_commentCB')
,$this->_html);
// replace PREs with placeholders
$this->_html = preg_replace_callback('/\\s*<pre(\\b[^>]*?>[\\s\\S]*?<\\/pre>)\\s*/i'
$this->_html = preg_replace_callback('/\\s*<pre(\\b[^>]*?>[\\s\\S]*?<\\/pre>)\\s*/iu'
,array($this, '_removePreCB')
,$this->_html);
// replace TEXTAREAs with placeholders
$this->_html = preg_replace_callback(
'/\\s*<textarea(\\b[^>]*?>[\\s\\S]*?<\\/textarea>)\\s*/i'
'/\\s*<textarea(\\b[^>]*?>[\\s\\S]*?<\\/textarea>)\\s*/iu'
,array($this, '_removeTextareaCB')
,$this->_html);
// trim each line.
// @todo take into account attribute values that span multiple lines.
$this->_html = preg_replace('/^\\s+|\\s+$/m', '', $this->_html);
$this->_html = preg_replace('/^\\s+|\\s+$/mu', '', $this->_html);
// remove ws around block/undisplayed elements
$this->_html = preg_replace('/\\s+(<\\/?(?:area|article|aside|base(?:font)?|blockquote|body'
.'|canvas|caption|center|col(?:group)?|dd|dir|div|dl|dt|fieldset|figcaption|figure|footer|form'
.'|frame(?:set)?|h[1-6]|head|header|hgroup|hr|html|legend|li|link|main|map|menu|meta|nav'
.'|ol|opt(?:group|ion)|output|p|param|section|t(?:able|body|head|d|h||r|foot|itle)'
.'|ul|video)\\b[^>]*>)/i', '$1', $this->_html);
.'|ul|video)\\b[^>]*>)/iu', '$1', $this->_html);
// remove ws outside of all elements
$this->_html = preg_replace(
'/>(\\s(?:\\s*))?([^<]+)(\\s(?:\s*))?</'
'/>(\\s(?:\\s*))?([^<]+)(\\s(?:\s*))?</u'
,'>$1$2$3<'
,$this->_html);
// use newlines before 1st attribute in open tags (to limit line lengths)
$this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/i', "$1\n$2", $this->_html);
$this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/iu', "$1\n$2", $this->_html);
// fill placeholders
$this->_html = str_replace(
@@ -177,11 +177,11 @@ class Minify_HTML
return $placeholder;
}
protected $_isXhtml = null;
protected $_replacementHash = null;
protected $_isXhtml;
protected $_replacementHash;
protected $_placeholders = array();
protected $_cssMinifier = null;
protected $_jsMinifier = null;
protected $_cssMinifier;
protected $_jsMinifier;
protected function _removePreCB($m)
{
@@ -198,7 +198,7 @@ class Minify_HTML
$openStyle = "<style{$m[1]}";
$css = $m[2];
// remove HTML comments
$css = preg_replace('/(?:^\\s*<!--|-->\\s*$)/', '', $css);
$css = preg_replace('/(?:^\\s*<!--|-->\\s*$)/u', '', $css);
// remove CDATA section markers
$css = $this->_removeCdata($css);
@@ -226,7 +226,7 @@ class Minify_HTML
// remove HTML comments (and ending "//" if present)
if ($this->_jsCleanComments) {
$js = preg_replace('/(?:^\\s*<!--\\s*|\\s*(?:\\/\\/)?\\s*-->\\s*$)/', '', $js);
$js = preg_replace('/(?:^\\s*<!--\\s*|\\s*(?:\\/\\/)?\\s*-->\\s*$)/u', '', $js);
}
// remove CDATA section markers
@@ -253,6 +253,6 @@ class Minify_HTML
protected function _needsCdata($str)
{
return ($this->_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/', $str));
return ($this->_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/u', $str));
}
}

View File

@@ -32,15 +32,15 @@ class Minify_ImportProcessor
}
// allows callback funcs to know the current directory
private $_currentDir = null;
private $_currentDir;
// allows callback funcs to know the directory of the file that inherits this one
private $_previewsDir = null;
private $_previewsDir;
// allows _importCB to write the fetched content back to the obj
private $_importedContent = '';
private static $_isCss = null;
private static $_isCss;
/**
* @param String $currentDir
@@ -182,7 +182,7 @@ class Minify_ImportProcessor
private function truepath($path)
{
// whether $path is unix or not
$unipath = (strlen($path) == 0) || ($path{0} != '/');
$unipath = ('' === $path) || ($path{0} !== '/');
// attempts to detect if path is relative in which case, add cwd
if (strpos($path, ':') === false && $unipath) {
@@ -194,10 +194,10 @@ class Minify_ImportProcessor
$parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
$absolutes = array();
foreach ($parts as $part) {
if ('.' == $part) {
if ('.' === $part) {
continue;
}
if ('..' == $part) {
if ('..' === $part) {
array_pop($absolutes);
} else {
$absolutes[] = $part;

View File

@@ -54,7 +54,7 @@ class Minify_JS_ClosureCompiler
/**
* @var string $url URL of compiler server. defaults to Google's
*/
protected $serviceUrl = 'http://closure-compiler.appspot.com/compile';
protected $serviceUrl = 'https://closure-compiler.appspot.com/compile';
/**
* @var int $maxBytes The maximum JS size that can be sent to the compiler server in bytes
@@ -174,6 +174,9 @@ class Minify_JS_ClosureCompiler
$contents = file_get_contents($this->serviceUrl, false, stream_context_create(array(
'http' => array(
'method' => 'POST',
'compilation_level' => 'SIMPLE',
'output_format' => 'text',
'output_info' => 'compiled_code',
'header' => "Content-type: application/x-www-form-urlencoded\r\nConnection: close\r\n",
'content' => $postBody,
'max_redirects' => 0,

View File

@@ -49,7 +49,7 @@ class Minify_Lines
$newLines = array();
while (null !== ($line = array_shift($lines))) {
if (('' !== $id) && (0 == $i % 50)) {
if (('' !== $id) && (0 === $i % 50)) {
if ($inComment) {
array_push($newLines, '', "/* {$id} *|", '');
} else {

View File

@@ -63,7 +63,7 @@ class Minify_NailgunClosureCompiler extends Minify_ClosureCompiler
$server = array(
self::$javaExecutable,
'-server',
'-cp', join(':', $classPath),
'-cp', implode(':', $classPath),
self::NG_SERVER,
);
@@ -101,9 +101,9 @@ class Minify_NailgunClosureCompiler extends Minify_ClosureCompiler
private function startServer()
{
$serverCommand = join(' ', $this->getServerCommandLine());
$serverCommand = implode(' ', $this->getServerCommandLine());
$psCommand = $this->shell("ps -o cmd= -C " . self::$javaExecutable);
if (array_search($serverCommand, $psCommand) !== false) {
if (in_array($serverCommand, $psCommand, true)) {
// already started!
return;
}

View File

@@ -19,12 +19,12 @@ class Minify_Source implements Minify_SourceInterface
/**
* @var int time of last modification
*/
protected $lastModified = null;
protected $lastModified;
/**
* @var callback minifier function specifically for this source.
*/
protected $minifier = null;
protected $minifier;
/**
* @var array minification options specific to this source.
@@ -34,27 +34,27 @@ class Minify_Source implements Minify_SourceInterface
/**
* @var string full path of file
*/
protected $filepath = null;
protected $filepath;
/**
* @var string HTTP Content Type (Minify requires one of the constants Minify::TYPE_*)
*/
protected $contentType = null;
protected $contentType;
/**
* @var string
*/
protected $content = null;
protected $content;
/**
* @var callable
*/
protected $getContentFunc = null;
protected $getContentFunc;
/**
* @var string
*/
protected $id = null;
protected $id;
/**
* Create a Minify_Source
@@ -137,7 +137,7 @@ class Minify_Source implements Minify_SourceInterface
$minifier = 'Minify::nullMinifier';
}
if ($minifier !== null && !is_callable($minifier, true)) {
throw new \InvalidArgumentException('minifier must be null or a valid callable');
throw new InvalidArgumentException('minifier must be null or a valid callable');
}
$this->minifier = $minifier;
}
@@ -180,8 +180,13 @@ class Minify_Source implements Minify_SourceInterface
} else {
$content = file_get_contents($this->filepath);
}
// remove UTF-8 BOM if present
return ("\xEF\xBB\xBF" === substr($content, 0, 3)) ? substr($content, 3) : $content;
if (strpos($content, "\xEF\xBB\xBF") === 0) {
return substr($content, 3);
}
return $content;
}
/**

View File

@@ -38,7 +38,7 @@ class Minify_YUICompressor
*
* @var string
*/
public static $jarFile = null;
public static $jarFile;
/**
* Writable temp directory. This must be set before calling minifyJs()
@@ -46,7 +46,7 @@ class Minify_YUICompressor
*
* @var string
*/
public static $tempDir = null;
public static $tempDir;
/**
* Filepath of "java" executable (may be needed if not in shell's PATH)

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use HTTP_ConditionalGet;
class HTTPConditionalGetTest extends TestCase
{
public function TestData()

View File

@@ -1,9 +1,13 @@
<?php
namespace Minify\Test;
use HTTP_Encoder;
class HTTPEncoderTest extends TestCase
{
/**
* @dataProvider testToIe6Data
* @dataProvider ToIe6DataProvider
* @preserveGlobals
*/
public function testToIe6($ua, $ae, $exp, $desc)
@@ -16,7 +20,7 @@ class HTTPEncoderTest extends TestCase
$this->assertSame($exp, $ret, $desc);
}
public function testToIe6Data()
public function ToIe6DataProvider()
{
return array(
array(
@@ -65,7 +69,7 @@ class HTTPEncoderTest extends TestCase
}
/**
* @dataProvider testEncodeNonIeData
* @dataProvider EncodeNonIeDataProvider
*/
public function testEncodeNonIe($ua, $ae, $exp, $desc)
{
@@ -77,7 +81,7 @@ class HTTPEncoderTest extends TestCase
$this->assertSame($exp, $ret, $desc);
}
public function testEncodeNonIeData()
public function EncodeNonIeDataProvider()
{
return array(
array(
@@ -104,7 +108,7 @@ class HTTPEncoderTest extends TestCase
$encodingTests = array(
array('method' => 'deflate', 'inv' => 'gzinflate', 'exp' => 32268),
array('method' => 'gzip', 'inv' => '_gzdecode', 'exp' => 32286),
array('method' => 'gzip', 'inv' => __NAMESPACE__ . '\\_gzdecode', 'exp' => 32286),
array('method' => 'compress', 'inv' => 'gzuncompress', 'exp' => 32325),
);
@@ -117,7 +121,7 @@ class HTTPEncoderTest extends TestCase
$ret = $this->countBytes($e->getContent());
// test uncompression
$roundTrip = @call_user_func($test['inv'], $e->getContent());
$roundTrip = call_user_func($test['inv'], $e->getContent());
$desc = "{$test['method']} : uncompress possible";
$this->assertSame($variedContent, $roundTrip, $desc);

View File

@@ -1,8 +1,11 @@
<?php
namespace Minify\Test;
use Exception;
use JSMin\JSMin;
class JsMinTest extends TestCase
class JSMinTest extends TestCase
{
public function test1()
{
@@ -54,7 +57,8 @@ class JsMinTest extends TestCase
* @param string $label
* @param string $expClass
* @param string $expMessage
* @dataProvider testJSMinExceptionData
*
* @dataProvider JSMinExceptionDataProvider
*/
public function testJSMinException($js, $label, $expClass, $expMessage)
{
@@ -68,7 +72,7 @@ class JsMinTest extends TestCase
$this->assertTrue($eClass === $expClass && $eMsg === $expMessage, 'Throw on ' . $label);
}
public function testJSMinExceptionData()
public function JSMinExceptionDataProvider()
{
// $js, $label, $expClass, $expMessage
return array(

View File

@@ -1,6 +1,11 @@
<?php
class JsClosureCompilerTest extends PHPUnit_Framework_TestCase
namespace Minify\Test;
use Minify_JS_ClosureCompiler;
use Minify_JS_ClosureCompiler_Exception;
class JsClosureCompilerTest extends TestCase
{
public function test1()
{
@@ -27,7 +32,8 @@ class JsClosureCompilerTest extends PHPUnit_Framework_TestCase
$this->compile($src);
} catch (Minify_JS_ClosureCompiler_Exception $e) {
}
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e, 'Throws Minify_JS_ClosureCompiler_Exception');
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e,
'Throws Minify_JS_ClosureCompiler_Exception');
}
// Test maximum byte size check (default)
@@ -40,7 +46,8 @@ class JsClosureCompilerTest extends PHPUnit_Framework_TestCase
$this->compile($src);
} catch (Minify_JS_ClosureCompiler_Exception $e) {
}
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e, 'Throws Minify_JS_ClosureCompiler_Exception');
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e,
'Throws Minify_JS_ClosureCompiler_Exception');
$expected = 'POST content larger than ' . Minify_JS_ClosureCompiler::DEFAULT_MAX_BYTES . ' bytes';
$this->assertEquals($expected, $e->getMessage(), 'Message must tell how big maximum byte size is');
@@ -69,7 +76,8 @@ class JsClosureCompilerTest extends PHPUnit_Framework_TestCase
));
} catch (Minify_JS_ClosureCompiler_Exception $e) {
}
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e, 'Throws Minify_JS_ClosureCompiler_Exception');
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e,
'Throws Minify_JS_ClosureCompiler_Exception');
$expected = 'POST content larger than ' . $allowedBytes . ' bytes';
$this->assertEquals($expected, $e->getMessage(), 'Message must tell how big maximum byte size is');
@@ -88,7 +96,8 @@ class JsClosureCompilerTest extends PHPUnit_Framework_TestCase
));
} catch (Minify_JS_ClosureCompiler_Exception $e) {
}
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e, 'Throws Minify_JS_ClosureCompiler_Exception');
$this->assertInstanceOf('Minify_JS_ClosureCompiler_Exception', $e,
'Throws Minify_JS_ClosureCompiler_Exception');
}
public function test7()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_HTML_Helper;
class LessSourceTest extends TestCase
{
public function setUp()

View File

@@ -1,5 +1,10 @@
<?php
namespace Minify\Test;
use Minify_Build;
use Minify_Source;
class MinifyBuildTest extends TestCase
{
public function test()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_CSS_UriRewriter;
class MinifyCSSUriRewriterTest extends TestCase
{
public function setUp()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_Cache_APC;
class MinifyCacheAPCTest extends TestCase
{
public function setUp()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_Cache_File;
class MinifyCacheFileTest extends TestCase
{
public function test1()

View File

@@ -1,5 +1,10 @@
<?php
namespace Minify\Test;
use Memcache;
use Minify_Cache_Memcache;
class MinifyCacheMemcacheTest extends TestCase
{
/** @var Memcache */

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_Cache_WinCache;
class MinifyCacheWinCacheTest extends TestCase
{
public function setUp()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_Cache_ZendPlatform;
class MinifyCacheZendPlatformTest extends TestCase
{
public function setUp()

View File

@@ -1,5 +1,10 @@
<?php
namespace Minify\Test;
use Exception;
use Minify_ClosureCompiler;
class MinifyClosureCompilerTest extends TestCase
{
public static function setupBeforeClass()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_CommentPreserver;
class MinifyCommentPreserverTest extends TestCase
{
public function test()

View File

@@ -1,5 +1,10 @@
<?php
namespace Minify\Test;
use Minify_HTML_Helper;
use Minify_Source;
class MinifyHTMLHelperTest extends TestCase
{
private $realDocRoot;
@@ -40,8 +45,10 @@ class MinifyHTMLHelperTest extends TestCase
$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'
,
'minAppUri' => '/myApp/min/'
,
'groupsConfigFile' => self::$test_files . '/htmlHelper_groupsConfig.php'
));
$this->assertEquals($expected, $actual, 'existing group');
@@ -67,7 +74,8 @@ class MinifyHTMLHelperTest extends TestCase
));
$output = Minify_mtime(array(
$obj
, 'css'
,
'css'
), self::$test_files . '/htmlHelper_groupsConfig.php');
$this->assertEquals($maxTime, $output, 'utils.php : Minify_mtime w/ obj & group');
}

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_HTML;
class MinifyHTMLTest extends TestCase
{
public function test1()

View File

@@ -1,5 +1,9 @@
<?php
namespace Minify\Test;
use Minify_ImportProcessor;
class MinifyImportProcessorTest extends TestCase
{
public function test()
@@ -19,6 +23,7 @@ class MinifyImportProcessorTest extends TestCase
realpath($linDir . '/lib/css/example.css'),
);
$this->assertEquals($expectedIncludes, Minify_ImportProcessor::$filesIncluded, 'included right files in right order');
$this->assertEquals($expectedIncludes, Minify_ImportProcessor::$filesIncluded,
'included right files in right order');
}
}

View File

@@ -1,5 +1,13 @@
<?php
namespace Minify\Test;
use Minify;
use Minify_Cache_Null;
use Minify_Controller_Files;
use Minify_Env;
use Minify_Source_Factory;
class MinifyLinesTest extends TestCase
{
public function test_lines()

View File

@@ -1,5 +1,11 @@
<?php
namespace Minify\Test;
use Exception;
use Minify_ClosureCompiler;
use Minify_NailgunClosureCompiler;
class MinifyNailgunClosureCompilerTest extends TestCase
{
public static function setupBeforeClass()

View File

@@ -1,5 +1,13 @@
<?php
namespace Minify\Test;
use Minify;
use Minify_Cache_Null;
use Minify_Controller_Files;
use Minify_Env;
use Minify_Source_Factory;
class MinifyTest extends TestCase
{
public function test_Minify()
@@ -37,7 +45,6 @@ class MinifyTest extends TestCase
'content' => '',
'headers' => array(
'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $_SERVER['REQUEST_TIME'] + 1800),
'Vary' => 'Accept-Encoding',
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
'ETag' => "\"pub{$lastModified}\"",
'Cache-Control' => 'max-age=1800',
@@ -146,7 +153,8 @@ class MinifyTest extends TestCase
));
$output = $output['content'];
$this->assertFalse(strpos($output, $defaultOptions['importWarning']), 'Issue 89 : don\'t warn about valid imports');
$this->assertFalse(strpos($output, $defaultOptions['importWarning']),
'Issue 89 : don\'t warn about valid imports');
// Test Issue 132
if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
@@ -156,7 +164,8 @@ class MinifyTest extends TestCase
'encodeOutput' => false,
));
$this->assertEquals(77, $output['headers']['Content-Length'], 'Issue 132 : mbstring.func_overload shouldn\'t cause incorrect Content-Length');
$this->assertEquals(77, $output['headers']['Content-Length'],
'Issue 132 : mbstring.func_overload shouldn\'t cause incorrect Content-Length');
}
// Test minifying CSS and responding with Etag/Last-Modified

View File

@@ -1,5 +1,10 @@
<?php
namespace Minify\Test;
use Exception;
use Minify_YUICompressor;
class MinifyYuiCSSTest extends TestCase
{
public static function setupBeforeClass()
@@ -13,7 +18,8 @@ class MinifyYuiCSSTest extends TestCase
Minify_YUICompressor::$tempDir = sys_get_temp_dir();
}
public function setUp() {
public function setUp()
{
$this->assertHasJar();
}
@@ -49,7 +55,7 @@ class MinifyYuiCSSTest extends TestCase
{
$this->assertNotEmpty(Minify_YUICompressor::$jarFile);
try {
$this->assertFileExists(Minify_YUICompressor::$jarFile , "Have YUI yuicompressor.jar");
$this->assertFileExists(Minify_YUICompressor::$jarFile, "Have YUI yuicompressor.jar");
} catch (Exception $e) {
$this->markTestSkipped($e->getMessage());
}

View File

@@ -1,13 +1,13 @@
<?php
namespace Minify\Test;
use Minify_HTML_Helper;
class ScssSourceTest extends TestCase
{
public function setUp()
{
if (version_compare(PHP_VERSION, '5.4.0', '<')) {
$this->markTestSkipped('scssphp is not compatible with this PHP version.');
}
$this->realDocRoot = $_SERVER['DOCUMENT_ROOT'];
$_SERVER['DOCUMENT_ROOT'] = self::$document_root;
}

View File

@@ -1,6 +1,10 @@
<?php
class TestCase extends PHPUnit_Framework_TestCase
namespace Minify\Test;
use Minify_CacheInterface;
abstract class TestCase extends \PHPUnit\Framework\TestCase
{
/** @var string */
protected static $document_root;