Commit graph

762 commits

Author SHA1 Message Date
Matthias Mullie
d6bc1b2589 Remove test code that depends on extension
And allow extensions to add their own media handlers.

I'm not too happy with the introduction of another global,
but didn't like the alternatives either:
* Add some hook to MockMediaHandlerFactory that would allow
  extensions to add their own stuff in.
* Use another hook (like ParserTestTables or ParserTestGlobals)
  and then override the service with a new instance - seemed
  too hacky
The good thing about this is that it lets us kill off a class.
I'm other to other suggestions in case I missed something.

Bug: T169258
Depends-On: I5875621c58597426ad5242bf3d07714555c439b5
Change-Id: I1c2e903fb235395a8de8e0f7bf65ce07739d2930
2017-08-13 12:04:37 -04:00
Umherirrender
5544cef16b Add missing type to @param documentation
Change-Id: I6b2c9c7af9a281fe457099cc3a336a60a25e74aa
2017-08-11 20:37:35 +02:00
Umherirrender
ace44e2064 Use correct variable name in @param documentation
For some varargs a variable name is added with suffix ,... as seen for
many other varargs

Some @param are swapped, because there are in the wrong order

Enable Sniff MediaWiki.Commenting.FunctionComment.ParamNameNoMatch

Change-Id: I60fec6025bce824d5c67563ab7b65ad6cd628ad8
2017-08-11 19:27:19 +02:00
Max Semenik
fd6e9ef2d4 Human-readable section ID support
It adds the ability to replace the current section ID escaping
schema (.C0.DE) with a HTML5-compliant escaping schema that is
displayed as Unicode in many modern browsers.

See the linked bug for discussion of various options that were
considered before the implementation. A few remarks:
* Because Sanitizer::escapeId() is used in a bunch of places without
  escaping, I'm deprecating it without altering its behavior.
* The bug described in comments for Parser::guessLegacySectionNameFromWikiText()
  is still there in some Edge versions that display mojibake.

Bug: T152540
Change-Id: Id304010a0342efbb7ef2d56c5b8b244f2e4fb2c5
2017-08-01 20:32:20 -07:00
jenkins-bot
3aa1cd89d5 Merge "parserTests: Use "fallback" skin unless otherwise specified" 2017-07-25 23:47:48 +00:00
Fomafix
9e02e9f66d Add parser tests for decoding of entities in indicator names
This change adds parser tests that test the current behavior of decoding
HTML entities in indicator names when generating the indicator IDs as
described in T104196.

The parser tests currently does not compare the generated HTML with
the ID.

With I88e8e2077e the tests get changed to the new behavior.

Change-Id: Id561c4a00ece09b4db381edfe0d5f98120cacf5e
2017-07-25 22:12:54 +02:00
Kunal Mehta
7916919c81 parserTests: Use "fallback" skin unless otherwise specified
ParserOutput::getText() depends on the current skin to format edit
section links, which some (e.g. MinervaNeue) have customized. This
causes parser tests to fail when they expect the default edit section
link format.

Default to always using the built-in fallback skin when parsing, but
allow it to be overridden with a "skin=..." option.

We also have to override $wgOut in addition to the main RequestContext
since that's what ParserOutput uses.

Bug: T170880
Change-Id: Ib7f0bd15dd0a9255e1e5140907e800478b658b92
2017-07-25 18:54:03 +00:00
Fomafix
86fbcd6792 Add parser tests for decoding of entities in IDs and fragments
This change adds parser tests that test the current behavior of decoding
HTML entities in headings and links for IDs and fragments of links as
described in T103714.

With I88e8e2077e the tests get changed to the new behavior.

Change-Id: Ia79af95e53114c1154dd52769f2ad1ab673fdd9e
2017-07-25 09:14:21 +02:00
Kunal Mehta
d1cf48a397 build: Update mediawiki/mediawiki-codesniffer to 0.10.1
And auto-fix all errors.

The `<exclude-pattern>` stanzas are now included in the default ruleset
and don't need to be repeated.

Change-Id: I928af549dc88ac2c6cb82058f64c7c7f3111598a
2017-07-22 18:24:09 -07:00
jenkins-bot
3b5b239e85 Merge "Make multiple colons escaping interlanguage links invalid, consistently" 2017-07-11 15:19:17 +00:00
Kunal Mehta
9081dd1217 Autodiscover parser tests for extensions, deprecate $wgParserTestFiles
This implements autodiscovery of extension parser tests that are located
in the tests/parser/ directory. Any *.txt file in that directory tree
will be treated as a parser test.

Core parser tests are now defined in ParserTestRunner::$coreTestFiles,
and $wgParserTestFiles is marked as deprecated.

Bug: T143976
Change-Id: Ia24fd8ef52e6732c698153b17bb679a5f511a2a7
2017-07-08 00:47:02 +00:00
Timo Tijhof
69432435e0 parser: Add unit tests for parser output flags ('showflags' option)
Add logic to ParserTestRunner to allow testing of ParserOutput flags,
and use it in the existing {{REVISIONID}} test, and for the added
flag for user-signature from I77de05849c (T84843).

Change-Id: I96e3d050e17a2d7e3d0478c702ecd53310259f56
2017-07-06 18:06:43 -07:00
Timo Tijhof
640d6ebb34 parser: Add parser tests for 4 and 5 tildes in PST
Add logic in ParserTestRunner that sets the same fake timestamp
used by the Parser magic word expansion, also in ParserOptions,
which is used by preSaveTransform().

Change-Id: I5adacffccb1212651c3031ca2fc4c20f717ff24a
2017-07-07 01:05:08 +00:00
Arlo Breault
0e1b52a40e Make multiple colons escaping interlanguage links invalid, consistently
* Right now, one or two are permitted.  This patch limits it to one.
   The current behaviour seems more a byproduct of refactoring than an
   explicit goal.

 * Note that this will break links on a handful of pages surfaced in
   Parsoid's roundtrip testing.

Change-Id: Icabd34bbf15781bb891bd8e0c079d1a65eb28595
2017-07-06 17:09:25 -04:00
jenkins-bot
d00939f76d Merge "tests: Use TestingAccessWrapper to reload LanguageConverter tables" 2017-06-27 22:08:42 +00:00
jenkins-bot
6b604178ac Merge "tests: Reset LanguageConverter conversion tables between test cases" 2017-06-27 22:08:39 +00:00
C. Scott Ananian
5e76bb2657 tests: Use TestingAccessWrapper to reload LanguageConverter tables
Make the LanguageConverter::reloadTables method actually private,
and use the TestingAccessWrapper to call it when running parser tests.

Follow-up to I65736520cd04bfe8949b29ade07338a6e1b88a4d.

Change-Id: I43b81b8fef6441ad50b858ff7757732ecb5eef91
2017-06-27 17:11:09 -04:00
C. Scott Ananian
b80b7020ce tests: Reset LanguageConverter conversion tables between test cases
Conversion rules defined in a previous test case were leaking into
subsequent test cases.  Existing tests had worked around this by defining
non-overlapping rules, but it's better to just fix the problem at the
source.

Change-Id: I65736520cd04bfe8949b29ade07338a6e1b88a4d
2017-06-26 13:56:30 -04:00
Umherirrender
be42e09aa8 build: Prepare for mediawiki/mediawiki-codesniffer to 0.9.0
The used phpcs has a bug, so the version 0.9.0 could not be enforced at the moment.
Will be fixed in next version, see T167168

Changed:
- Remove duplicate newline at end of file
- Add space between function and ( for closures
- and -> &&, or -> ||

Change-Id: I4172fb08861729bccd55aecbd07e029e2638d311
2017-06-26 17:14:31 +00:00
Brad Jorsch
83b798bbab Hide <style> tags from Tidy
Some versions of html-tidy (e.g. the one currently in use on WMF wikis)
will try to move all <style> tags in the body into the head, effectively
removing them for our purposes. We need to avoid that for TemplateStyles.

Bug: T167349
Change-Id: I133776d16f366cad73ed30af0e5a665fdf9f5ed9
2017-06-13 13:02:57 -04:00
jenkins-bot
a2254d32bf Merge "Sync up with Parsoid parserTests.txt" 2017-06-12 20:51:54 +00:00
Arlo Breault
a0e6bc14b6 Sync up with Parsoid parserTests.txt
This now aligns with Parsoid commit 108eed81b3eb78b77ade5ba5daac71fb43fff6de

Change-Id: Ib2b31f008adaf16866de16ef963bc58d6cabb088
2017-06-12 15:39:42 -04:00
Fomafix
fbf939cdda Remove id selector for toctitle
In 1bf5a652 the id selector was changed to a class selector for toctitle.
The cached HTML has been expired now and the id selector is not necessary
anymore.

Also remove the id selector #toc.tochidden for print style. This is not
necessary because the tochidden gets only added to .toc and not to #toc.

Change-Id: I43cfffdb0807e8ed8f6b7b8732ba857b709bee80
2017-06-08 10:05:00 +02:00
C. Scott Ananian
b9280829ef Sync up with Parsoid parserTests.txt
This now aligns with Parsoid commit ebac189004d6edc4801719a5802766113bc84beb

Change-Id: I09bd3a72fd6210abc200bead2a16ad4106bcc6f9
2017-05-23 13:28:40 -04:00
C. Scott Ananian
186a182a15 Protect language converter markup in the preprocessor (take 2).
This revises 2877402276, which was
reverted in master due to unexpected issues with `-{{...}} ` markup
on translatewiki and enwiki.  Test cases are added to ensure that this
is parsed as a template, not as language converter markup.

https://www.mediawiki.org/wiki/Preprocessor_ABNF is the canonical
documentation for the preprocessor; this will be updated after this
patch is merged.  The basic principles described in that page are
maintained in this patch:

* Rightmost opening structure has precedence: `-{{` is parsed as a
dash followed by template opening.

* `{{{` has precedence over `{{` and `-{`: `-{{{{` is parsed as
`-{` `{{{` since we first grab the rightmost `{{{`.

A bunch of test cases were added to verify the "ideal precedence"
order described on that wiki page.

This patch introduced some minor incompatibilities in existing
markup, in particular with chemical formulae in templates.
Fixes for these are being tracked at
https://www.mediawiki.org/wiki/Parsoid/Language_conversion/Preprocessor_fixups

Bug: T146304
Bug: T153761
Change-Id: I2f0c186c75e392c95e1a3d89266cae2586349150
2017-05-23 15:43:49 +01:00
Brion Vibber
33e4ac5b22 Add \b to regexes in BlockLevelPass to avoid confusing tr & track
With TimedMediaHandler in video.js mode, videos can be inline,
without a wrapper div.

Previously, in this mode two paragraphs where one contained a
video would end up merged into one paragraph, due to BlockLevelPass
matching "<track .../>" against "<tr" in its regexes.

Added \b to a couple of the regexes to protect against such errors,
and corrected a parser test case that had bad output listed, where
"<link .../>" matched against "<li".

Bug: T165817
Change-Id: I06e82b881f5ebddae5e7df7fb940adfa54f6b659
2017-05-20 00:53:05 +02:00
C. Scott Ananian
f9de807e28 Sync up with Parsoid parserTests.txt
This now aligns with Parsoid commit d163deefa3aaeb0926af09a91075d6a611b36363

Change-Id: I9e543f0803247ffc264e634bf66b6bd0e143f187
2017-05-16 15:12:40 -04:00
Brad Jorsch
1aac0a2992 Wrap parser output in <div class="mw-parser-output">
This will allow CSS to target just the parser output, without also
accidentally targeting the edit form, diff tables, and so on.

Bug: T37247
Change-Id: If4eb5bf71f94fa366ec4eddb6964e8f4df6b824a
Depends-On: I330c6aa4aaee045614b1801ed34bc9e03be69650
Depends-On: I52a518fa44e017841fe78474012cd69823e0a41d
2017-05-08 05:32:03 +00:00
Arlo Breault
ed1afdee35 Sync up with Parsoid parserTests.txt
This now aligns with Parsoid commit 906375badbbf3d10455f36d9ecbaa8f66f5e6425

Change-Id: I1a102a4b6988eb972215eb7210a44cdf19d04c47
2017-04-10 17:15:05 -04:00
Ed Sanders
1bf5a652d6 Use classes instead of IDs for TOC collapsing
One may way to have multiple TOC's on the page (e.g. in VisualEditor).

Change-Id: I19701c4037b653b2944e407752e50f444861f883
2017-04-10 17:00:03 +00:00
jenkins-bot
4f43a9608f Merge "Valid tags on a gallery should correspond to unordered list" 2017-04-03 18:25:37 +00:00
Arlo Breault
aea349488c Valid tags on a gallery should correspond to unordered list
* This was introduced in 4d3446a8e3 when galleries were tables.
   However, in 05579cf0e6, it switched to ul's, but missed updating the
   sanitization.

 * As an example, the test shows that summary is currently wrongly
   permitted.

Change-Id: I8c52477dc65499d0c8a1ee5cc661a5f9ae78cc07
2017-04-01 09:59:21 -04:00
Fomafix
7a3418ae33 Use consistent spaces at start and end of comments
Change-Id: Idbb09b69aa1ef4e46433319aaea62f34f0dbc038
2017-03-30 22:06:40 +02:00
Arlo Breault
c593079972 Sync up with Parsoid parserTests.txt
This now aligns with Parsoid commit b1b271460c341e844e21641b5307794cf4dd7feb

Change-Id: I792787b38c464efcb8c68b66b52a4dc9a0b41c36
2017-03-30 10:23:38 -04:00
James D. Forrester
9f53096051 Linker: Render selflinks as href-less classed <a>s, not <strong>s
Self-links are still semantically links, and representing them as <strong>s
is inelegant and more important a real pain to work with, especially in
contexts where they may change state (like inside an editor).

Instead, render them as <a>, with no href to avoid user agent style over-
rides and with a class to style them as before, named 'mw-selflink' to go
with 'mw-redirect'. This allows much easier adjustment later. The old CSS
class 'selflink' is retained for backwards compatibility, but deprecated.

Bug: T160480
Change-Id: If058843924c3b30c116df2520aef93a004d98a5d
2017-03-29 23:12:17 +00:00
Aaron Schulz
488a647831 Move IDatabase/IMaintainableDatabase to Rdbms namespace
Change-Id: If7e8a8ff574661fd827de8bcec11d2c39a687300
2017-03-28 15:32:38 -07:00
Bartosz Dziewoński
bebe29662b Do not use real message names in 'All_system_messages' preprocessor test
This file seems to be a stress-test for the MediaWiki preprocessor.
It doesn't really matter whether the messages references here exist.
As messages are occasionally renamed or deleted, and since this file
was generated in 2011, people keep getting confused when they grep
for a message name and run into this list (and sometimes needlessly
spend their time updating this file, as seen in its Git history).

This commit replaces all of the message names with their SHA1 hash
truncated to 8 hex characters.

Regexps used for matching:
(?<=\?title=MediaWiki\:)([^&{}<>|\[\]]+)
(?<=int:)([^&{}<>|\[\]]+)
(?<=\[\[MediaWiki_talk:)([^&{}<>|\[\]]+)
(?<=action=edit )([^&{}<>|\[\]]+)

Change-Id: I52a71c0cc0e6fa21a61420d52df755066c6e9a08
2017-03-08 17:02:53 +01:00
C. Scott Ananian
3e32d21210 Strip U+0000 in wikitext
U+0000 is not allowed in HTML5, there's no reason to allow it in wikitext.

It simplifies our code if we can just strip them at the start.  Strip in
PST as well so they don't sneak into our database either.

Tweaked the EXT_LINK URLs to account for the fact that invalid characters
get transformed into U+FFFD when using Preprocessor_DOM.  See 73649741ed
(r65967) for context on that change.

Bug: T159174
Change-Id: I3f67e92b61aacc87a40c3662085c84d1dac08bfb
2017-03-06 22:23:38 +00:00
Brad Jorsch
69be6f316a Make the parser tests' "subpage" option actually enable for all subpages
The option says "enable subpages (disabled by default)", but it
currently just enables subpages for namespaces 0 and 2. This tripped me
up when writing some parser tests for TemplateStyles where I need
subpages enabled for namespace 10.

There's probably no reason not to have it enable subpages for all
namespaces.

Change-Id: Icf864dafc4208a76af7b3e71f5f9c97576c065b7
2017-03-03 05:32:36 +00:00
jenkins-bot
8a65a5486f Merge "Remove duplicate test" 2017-02-23 02:10:12 +00:00
Arlo Breault
44d4992a95 Remove duplicate test
Change-Id: If99b0672c631e0428550a73a2a6116394ef32bb9
2017-02-22 11:58:06 -08:00
Arlo Breault
0366498177 Sync up with Parsoid parserTests.txt
This now aligns with Parsoid commit e23a818554548cd922ee262ea1d8da47ea457248

Change-Id: Ib26b170c51aa4425a54871fa32543b2eef5db41e
2017-02-22 09:25:57 -08:00
James D. Forrester
1e9c361960 tests: Replace implicit Bugzilla bug numbers with Phab ones
It's unreasonable to expect newbies to know that "bug 12345" means "Task T14345"
except where it doesn't, so let's just standardise on the real numbers.

Change-Id: I46261416f7603558dceb76ebe695a5cac274e417
2017-02-21 02:14:34 +00:00
James D. Forrester
d3a9f574c3 parserTests.txt: Replace implicit Bugzilla bug numbers with Phab ones
It's unreasonable to expect newbies to know that "bug 12345" means "Task T14345"
except where it doesn't, so let's just standardise on the real numbers.

Change-Id: I3eeffe40e0a752e1e3c79e65fa2fb556950d9a24
2017-02-21 02:14:18 +00:00
C. Scott Ananian
3a8a986e35 Don't bail on single-line definition list due to excess close tags.
When parsing a single line definition list, we track nested tags so that:

	; <b>foo:bar</b>: baz

breaks before `baz`, not between `foo` and `bar`.  But we currently bail
out of this algorithm entirely if we see a mismatched close tag.  We should
just ignore the unmatched tag, like Parsoid does.

Change-Id: I6306dcad6347abeb6ab001d35562f1ab9f374bd1
2017-02-17 16:34:55 -05:00
C. Scott Ananian
ee002d67c9 Protect -{...}- variant constructs in definition lists.
Given the wikitext:

	;-{zh-cn:AAA;zh-tw:BBB}-

Prevent `doBlockLevels` from trying to split the definition list at the
embedded colon and using `AAA;zh-tw:BBB}-` as the `<dd>` portion.

Bug: T153135
Change-Id: I3a4d02f1fbd0d0fe8278d6b7c66005f0dd3dd36b
2017-02-17 15:52:44 -05:00
Arlo Breault
e9ee631c88 Don't test for tidy class on hhvm
* It doesn't support the oo interface.

 * Should make the tidy tests run in CI.

Bug: T157730
Change-Id: Ied80f70b7cafcf64d736cb0eeb1a30d52c1d7921
2017-02-13 14:54:48 -08:00
Kunal Mehta
1deada4f7f parser test editor: Fix emitting of !! hooks
The first newline was missing so a block like:
 !! hooks
 source
 !! endhooks

would turn into:
 !! hookssource
 !! endhooks

Change-Id: I2a4c5e52050d55fb0c9b4f5d0494eb00e34b233c
2017-01-31 03:12:15 +00:00
Kunal Mehta
54666773bf parserTests: Avoid using <big> for adoption agency algorithm test
The behavior of <big> may change in the future, c.f. T154067.

Change-Id: I817894c25cab96a491028fe2a9443140ea1d6e97
2017-01-30 01:52:23 -08:00
jenkins-bot
90f0807c54 Merge "Update html/php clauses for subpage parserTests." 2017-01-25 19:08:23 +00:00