Commit graph

108 commits

Author SHA1 Message Date
jenkins-bot
e36a953cc2 Merge "tests: Clean up file headers" 2015-04-01 22:27:33 +00:00
csteipp
b7ee3aca38 SECURITY: Always expand xml entities when checking SVG's
XmlTypeCheck's use of xml_parse for filtering SVG's sometimes left xml
entities unexpanded, which can lead to false-negatives when the
callback was used for filtering. Update XmlTypeCheck to use XMLReader
instead, tell the library to fully expand entities, and rely on the
library to error out if it encounters XML that is likely to cause a DoS
if parsed.

Bug: T88310
Change-Id: I77c77a2d6d22f549e7ef969811f7edd77a45dbba
2015-04-01 09:56:20 -07:00
Timo Tijhof
b4bac102b6 tests: Clean up file headers
* Remove redundant @licence/@license from test suite files.
  They already have full licence headers. And @licence raises a
  warning in Doxygen.

* Fix weird messes of comments inside comments and other things.

Change-Id: I38da8ca76330f72b8dc22b0ecf1ea69d5ea55ede
2015-04-01 00:17:12 +01:00
Kunal Mehta
13975fe76a Use wikimedia/utfnormal library, add backwards-compatability layer
This drops support for the custom utf8 normal PHP extension in favor
of the intl extension.

Bug: T90825
Change-Id: Ifbaeb2ef684217cf6187ccc4fb4d303f89608300
2015-03-24 12:59:26 -07:00
Kunal Mehta
dfcca581bd Convert UtfNormalTest into a PHPUnit test
Change-Id: I20b90b1d9d2225d12adadb8c00c793fe7927f1bc
2015-02-20 06:04:26 +00:00
jenkins-bot
fd95d37add Merge "StringUtils: throw InvalidArgumentException and move into libs/" 2015-01-31 00:43:58 +00:00
jenkins-bot
7cfdac3aaa Merge "normal: Add @covers tag to UtfNormal test" 2015-01-29 20:55:13 +00:00
jenkins-bot
e5a5439f4f Merge "DeferredStringifier: Clean up comments and indentation in tests" 2015-01-29 20:54:53 +00:00
jenkins-bot
3a75e6a4e1 Merge "ProcessCacheLRU: Clean up doc comments and add @covers tags to tests" 2015-01-29 20:54:06 +00:00
Timo Tijhof
44c33d3d28 normal: Add @covers tag to UtfNormal test
Change-Id: Ib0d64bda44cbb1f72ea69025785442967bb26d74
2015-01-29 12:38:34 -08:00
Timo Tijhof
9f58d49a27 DeferredStringifier: Clean up comments and indentation in tests
Change-Id: Ifdf2fe711a0be495465255c6fabb55fe34b79b27
2015-01-29 12:10:08 -08:00
Timo Tijhof
9b62a6ad80 ProcessCacheLRU: Clean up doc comments and add @covers tags to tests
Change-Id: Ie7e8f4b31d89fc0bee748c03d94cb54b23ab4f83
2015-01-29 12:08:27 -08:00
Timo Tijhof
9a2e47d188 CSSMin: Add tests for isRemoteUrl and isLocalUrl
Change-Id: I5a84eb62eaac96d0dd7f7e27bf76f64e7d7657cf
2015-01-29 19:47:46 +00:00
Kunal Mehta
4675950b19 StringUtils: throw InvalidArgumentException and move into libs/
Bug: T87863
Change-Id: Iac5bd958c27cad834e35930d0b99adb75c60411b
2015-01-29 10:30:57 -08:00
Kunal Mehta
b2e1b70e15 Turn Utf8Test into a PHPUnit test case
Change-Id: I7e709f475a37a592fb3052f367894ebce32310f3
2015-01-29 00:08:01 +00:00
Kunal Mehta
c8900f30af Move includes/normal to includes/libs/normal
Change-Id: Ib530ad9dbe1d3a33dc53ef8b9620f61d4e1a2d62
2015-01-29 00:00:35 +00:00
Kunal Mehta
6a55db1a97 Move DeferredStringifier into libs, add tests
Change-Id: I384d1a3854e957315584d30ec58c48c02fee6a2c
2015-01-13 11:04:44 -08:00
gladoscc
2967766734 Rename testBug32548Exponent to testExponentLineBreaking
Fix for @todo

Change-Id: I0dcef36fe9cee95ae320b535bac883d5e26ad140
2015-01-09 12:06:31 +00:00
Kunal Mehta
17ccfbb7b3 Don't display composer installed extensions/skins on Special:Version
Extensions and skins should already be adding their credits through
$wgExtensionCredits, meaning that they would be duplicated in the
"Installed libraries" section.

Anything that has a type that begins with "mediawiki-" will now
be skipped.

Release notes were added for this commit and 528297f8db.

Change-Id: Ie873b16c1a8a696c7de833ae69b263161d9e15a8
2015-01-05 15:58:43 +00:00
Kunal Mehta
6739df6b7f Fix @covers tags for includes/libs/composer
Change-Id: I90a39bce22f304eb06dd595eb845bb953e6937c3
2015-01-02 15:03:43 +00:00
Chad Horohoe
59afd687ce Convert most libs/ tests to use PHPUnit_Framework_TestCase
They don't actually need any of the mess that MediaWikiTestCase provides

Change-Id: Ibd067480fc294096d1249132cb800e09889efb18
2014-12-29 20:53:24 -08:00
Kunal Mehta
ce49874d9f Add checkComposerLockUpToDate.php script
Checks whether your composer.lock file is up to date
with the current composer.json file.

Bug: T77388
Change-Id: I528d63172c238cf1ea9bc02e8eb39b93225865de
2014-12-29 23:20:30 +00:00
umherirrender
1d8b52fbfd Move Test files under same folder structure where class is (/includes/)
Change-Id: I95f1aa6f0ed2cc3306aa6e588a11f359854315c1
2014-12-16 21:56:44 +01:00
Timo Tijhof
ff6513f28b Remove '@section LICENSE'
This was used in 2 special classes, the logger classes and spread
to a few other random classes.

Afaik this has no meaning. Is for something we don't use, and
goes against the meaning of '@section' in Doxygen, which we do
use.

In Doxygen output, all LICENSE references became links to
ProfilerXhprof (the one Doxygen encoutered first).

Bug: T72328
Change-Id: Icc7c443245c70bc0f549bee7d105eef5691c864d
2014-11-26 02:20:55 +00:00
Kunal Mehta
987d2e4c77 Use cdb library and provide a back-compat layer
The new cdb library is pulled in via composer. Since the
library uses namespaces, a backwards-compatability layer
is provided for the old class names:
* CdbReader
* CdbWriter
* CdbException

The PHP/DBA-specific classes should never have been used directly.

Depends on I98302bdf1 in mediawiki/vendor

Change-Id: I39549ac8540b262cf91f7d1830d36327afb3033d
2014-11-19 18:39:27 +00:00
Bryan Davis
98a34a5224 Work around test provider running before setUp()
If the xhprof extension is not present we skip running the test, but
phpunit runs the test provider function before that check so we need to
guard against missing constants to avoid spurious warnings in the test
output.

Change-Id: I5541a062ff0c47ca8802315554b3f32dfd01dcd0
2014-11-13 13:18:08 -07:00
jenkins-bot
0e2a9baff3 Merge "Enable profiling via xhprof" 2014-11-12 22:00:30 +00:00
Kunal Mehta
e774a8a779 Add @covers tags to ObjectFactoryTest
Change-Id: I0130b133ef8261e43082d90b08cf2b9abf64ffc9
2014-11-12 17:17:36 +00:00
Kunal Mehta
0136b75d1a Move CdbTest into includes/libs/cdb as well
Change-Id: If0ad645129692129d5674fd0e6651032b03a13c0
2014-11-10 11:02:46 -08:00
Bryan Davis
46c47e11bc Enable profiling via xhprof
Add a helper class to assist in collecting profiling information using
XHProf <https://github.com/phacility/xhprof> and a Profiler
implementation to hook it into the existing MediaWiki profiling system.

The Profiler includes support for generating tabular reports similar to
the traditional output of ProfilerSimpleText and ProfilerSimpleTrace or
sending data to a udpprofile daemon as supported by ProfilerSimpleUDP.
It also produces data compatible with the debugging toolbar.

Bug: T759
Change-Id: I16a75cb7636cb5dcef3830d738b2dcd2047d0aaa
2014-11-08 11:47:25 -07:00
Kunal Mehta
d5563db924 Deprecate MWFunction::newObj() in favor of ObjectFactory
Change-Id: Iaa803311409cf7b649f64f69bafe2935a418d31c
2014-11-06 13:41:18 -07:00
Bartosz Dziewoński
bf3b97791b CSSMin: Don't generate double rules for IE < 8 when embedding SVG files
Bug: 71003
Change-Id: Ic232e8d62b164940003afdfe7cce9f964d7e9cbc
2014-09-30 21:19:58 +00:00
Bartosz Dziewoński
fa223d65d6 CSSMin: Do not base64-encode non-binary files when embedding
Do not base64-encode non-binary files (containing only whitespace and
printable ASCII characters, which matches sane SVG files).

For SVG files the percent-encoded URIs are actually slightly longer
than the base64-encoded ones (~10%), but compress a lot better
resulting on 15-20% less data to transfer after gzip compression.

(The effect is best seen on the 'oojs-ui' module, which consists
mostly of SVG icons – especially after commenting out everything other
than 'oojs-ui.svg.css'.)

I tried this for binary files too, just in case; but as expected, they
suffer from a noticeable size increase even with compression (~15%).

Bug: 67341
Change-Id: Iddaf863b6be98570a2bb8e606f13946a96345f65
2014-09-30 23:13:42 +02:00
Timo Tijhof
282847e6d3 Use CSSJanus from upstream (v1.1.0)
Remove the local copy and include upstream instead.

Remove local unit tests as it's now a proper upstream lib that
is tested by uptream.

Release:

  https://github.com/cssjanus/php-cssjanus/releases/tag/v1.1.0

Changes:

  Features
  * Support "/*!" syntax for @noflip.
  * Flip border-style.

  Bug fixes
  * Improve flipping of background-position.
  * Restrict four_notation_quantity to margin, padding and border-width.
  * Flip two values in border-radius rule (in addition to four values).

Change-Id: Ieb6e179d6163f99a9c98fd99c2277d25135871fe
2014-09-25 18:00:27 -07:00
Bartosz Dziewoński
4c01f8b2bc Make "/*@noflip*/ /*@embed*/" annotation work without CSSJanus hacks
This reverts most of commit 2d842f1425,
leaving only the test added in it, and reimplements the same
functionality better.

Instead of stripping /*@noflip*/ annotations in CSSJanus, which is
incompatible with other implementations that preserve it, extend
CSSMin to allow other CSS comments to be present before the
rule-global @embed annotation. (This required making the regex logic
in it even worse than it was, but it's actually slightly less terrible
than I expected it would be. Good thing we have tests!)

Bug: 69698
Change-Id: I58603ef64f7d7cdc6461b34721a4d6b15f15ad79
2014-09-23 22:47:54 +00:00
Timo Tijhof
96771e3a65 test: Clean up data providers that should be static
Follows-up b36d883.

By far most data providers are static (and PHPUnit expects them
to be static and calls them that way).

Most of these classes already had their data providers static
but additional commits sloppily introduced non-static ones.

* ResourceLoaderWikiModuleTest, 8968d8787f.
* TitleTest, 545f1d3a73.
  Odd unused method 'dataTestIsValidMoveOperation' was introduced
  in 550b878e63.
* GlobalVarConfigTest, a3e18c3670.

Change-Id: I5da99f7cd3da68c550ae507ffe1f725d31e7666f
2014-09-18 12:52:44 -07:00
Bartosz Dziewoński
2d842f1425 Make "/*@noflip*/ /*@embed*/" annotation work
To do it, just remove /*@noflip*/ annotations in CSSJanus after
we're done processing. They are not needed anymore and some obscure
interactions with CSSMin logic for preserving comments caused
`/*@noflip*/ /*@embed*/ background-image: url(…)` not to work
correctly (it would not be embedded).

This also requires us to always do CSSJanus processing, even when we
don't need flipping, to consistently handle the annotations.
I'm not entirely sure if this is worth it, but I still greatly prefer
doing it to documenting this stupid limitation. :)

Bug: 69698
Change-Id: I311b12b08b2dff9d45efb584db08cf4a11318f59
2014-08-18 17:40:51 +02:00
Shahyar
923ad97b3a Correct shadow flipping in CSSJanus
Was incorrectly assuming values between -1 and 1 were 0
Fixes an issue with mw-ui-input class in RTL mode which
makes use of box shadow.

Change-Id: I13e52467721bc2534e0a7c5245e3380ac43736ef
2014-07-30 23:14:32 +00:00
jenkins-bot
cfda511688 Merge "Skip 64 bit MWMessagePack tests on 32 bit machines" 2014-07-09 16:59:58 +00:00
Thiemo Mättig
ceb196fa9f Skip 64 bit MWMessagePack tests on 32 bit machines
It's not only Windows. I have an Ubuntu machine with a PHP setup
limited to 32 bit (which is totally fine, it allows me to develop
and always stay compatible to Windows and other 32 bit environments).

I don't see an other way than to skip these tests on a 32 bit
machine. The loss (PHP clips values larger than 2147483647 to
2147483647) does not happen in the code that is tested but in the
test setup.

Change-Id: Ie9a173c0a92ed84eaaea981a25ba130f2eca169e
2014-07-09 17:21:40 +02:00
Stephan Gambke
3b1b2b0c33 Fix CSSMin url() remapping when comments in CSS contain curly braces
Remapping of url()s was thrown off if the CSS contained comments
with curly braces. To fix, replace all block comments (except @embed
directives) with placeholders before url() processing and swap them
back in afterwards. Patch also includes tests.

Bug: 60077
Change-Id: If18a93c17ea9bcd529f6a664aa2dcc51d4a37f38
2014-06-30 09:14:10 +00:00
Trevor Parscal
3e2fd810d2 Revert "Fix "CSSMin url() value remapping not working in certain obscure cases""
This reverts commit fa1053a16a.

Breaks CSS output, making the skin and extensions look unstyled.

Change-Id: I297150f775dd5559f91f2c9c25c64b134459c6b6
2014-06-10 22:04:40 +00:00
Stephan Gambke
fa1053a16a Fix "CSSMin url() value remapping not working in certain obscure cases"
This patch extends the regex used to find URLs by css block quote subpatterns.

Bug: 60077
Change-Id: Ife00d01b78c6369f20ffc49d20aa58e354a61ee7
2014-06-09 23:50:28 +02:00
Bartosz Dziewoński
b8c88afe59 CSSMin: Add tests for handling existing data: URIs
Just a sanity check inspired by bug 66112.

Change-Id: Iac60a1eb15b3ff60822a3f24f2511c4bc64c092a
2014-06-05 18:38:41 +02:00
Brandon Black
e323bc3393 Speed up CIDR matching from $wgSquidServersNoPurge
This adds a new generic library class IPSet, which precomputes
a reasonably-efficient data structure from the input list of
addresses and CIDR net/mask specs for fast runtime matching,
and then uses it to check trusted XFF-setters.

See also: 32b4f19f173fc5cff1029eedee63a39a2d72dd3a
Bug: 57021
Change-Id: Ia3b12fb90c3e7e492374a128943b014481cc2730
2014-05-15 17:23:12 +00:00
Siebrand Mazeland
896bda7c85 Pass phpcs-strict on some test files (7/11)
Change-Id: Ia0ceea60e7ef43959f868378f3fcd463a3adf782
2014-04-24 18:27:12 +00:00
umherirrender
b9cd789fce docs: closure -> Closure; callback -> callable
Changed closure to capital word Closure in doc and type hint,
also changed callback in docs to callable

Change-Id: I52c8e8f13d38a837052101c38b9986be780ca057
2014-04-19 08:43:31 +02:00
umherirrender
092cd8ee31 Fixed some @params documentation (tests)
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Also added some missing @param.

Change-Id: Ic8aaf0a93796b97d0fa4617c1f86ff59f4b36131
2014-04-17 20:43:42 +02:00
jenkins-bot
2eefaf1705 Merge "Moved ProcessCacheLRU to /libs" 2014-03-18 17:22:34 +00:00
Aaron Schulz
400e4848ec Moved ProcessCacheLRU to /libs
Change-Id: I7052d04d9847f0310c1e62bd66365c813fddeab5
2014-03-16 16:32:34 -07:00