* RemexHtml is the future of "tidy" in MediaWiki,
so run our parser tests using it.
* This is a necessary step before we can make it
the default in MediaWiki (T185753).
* Cleaned up a bunch of tests:
(a) where html/php+tidy and html/parsoid match up,
retained a html+tidy section and removed the others.
(b) where html/php and html/php+tidy match up,
retained the html/php section and removed the
html/php+tidy section.
* Annotating tests with explanations where Parsoid & Remex
output differ. This is usually because of two reasons:
(a) Parsoid has Tidy-emulation code in some cases (which
we can consider stripping away separately).
(b) Parsoid does a bunch of cleanup on the DOM (which was
probably done to emulate Tidy output, but which could
probably be retained). Since Parsoid (in some form)
will be default parser in the future, no reason to try
to port this cleanup (in broken markup scenarios) into
Remex.
* Left a bunch of FIXMEs for later followup.
Unrelated cleanup:
* Renamed a few tests since the functionality in Parsoid
was fixed up. There is no more "implicit <td>" support.
Those all now lead to fostered content.
* Fixed some clearly broken output in html/parsoid sections
for some tests.
Co-Authored-by: Kunal Mehta <legoktm@member.fsf.org>
Co-Authored-by: Subramanya Sastry <ssastry@wikimedia.org>
Bug: T188167
Depends-On: I646dbabb3c2ed28c1ea72c5bd8f7f92d03f57c75
Change-Id: Ic7c34d57a300dbd36a37f03fbfe33391b2950b44
77 lines
2 KiB
PHP
77 lines
2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
* @ingroup Testing
|
|
*/
|
|
|
|
/**
|
|
* Initialize and detect the tidy support
|
|
*/
|
|
class TidySupport {
|
|
private $enabled;
|
|
private $config;
|
|
|
|
/**
|
|
* Determine if there is a usable tidy.
|
|
* @param bool $useConfiguration
|
|
*/
|
|
public function __construct( $useConfiguration = false ) {
|
|
global $wgUseTidy, $wgTidyBin, $wgTidyInternal, $wgTidyConfig,
|
|
$wgTidyConf, $wgTidyOpts;
|
|
|
|
$this->enabled = true;
|
|
if ( $useConfiguration ) {
|
|
if ( $wgTidyConfig !== null ) {
|
|
$this->config = $wgTidyConfig;
|
|
} elseif ( $wgUseTidy ) {
|
|
$this->config = [
|
|
'tidyConfigFile' => $wgTidyConf,
|
|
'debugComment' => false,
|
|
'tidyBin' => $wgTidyBin,
|
|
'tidyCommandLine' => $wgTidyOpts
|
|
];
|
|
if ( $wgTidyInternal ) {
|
|
$this->config['driver'] = wfIsHHVM() ? 'RaggettInternalHHVM' : 'RaggettInternalPHP';
|
|
} else {
|
|
$this->config['driver'] = 'RaggettExternal';
|
|
}
|
|
} else {
|
|
$this->enabled = false;
|
|
}
|
|
} else {
|
|
$this->config = [ 'driver' => 'RemexHtml' ];
|
|
}
|
|
if ( !$this->enabled ) {
|
|
$this->config = [ 'driver' => 'disabled' ];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns true if tidy is usable
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isEnabled() {
|
|
return $this->enabled;
|
|
}
|
|
|
|
public function getConfig() {
|
|
return $this->config;
|
|
}
|
|
}
|