This reverts commit e08ea8ccb9.
Reason for revert: Breaks Phan in extensions, and as far as I’m aware,
this change isn’t urgently needed for anything, so the simplest fix is
to revert it again for now. After PHP 7.4 it should be safer to try this
again (we hopefully won’t need the two “hack” classes by then).
Bug: T308443
Change-Id: Iff3318cbf97a67f821f78e60da62a583f63e389e
73 lines
2 KiB
PHP
73 lines
2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group ResourceLoader
|
|
* @covers ResourceLoaderLessVarFileModule
|
|
*/
|
|
class ResourceLoaderLessVarFileModuleTest extends ResourceLoaderTestCase {
|
|
|
|
public static function providerWrapAndEscapeMessage() {
|
|
return [
|
|
[
|
|
"Foo", '"Foo"',
|
|
],
|
|
[
|
|
"Foo bananas", '"Foo bananas"',
|
|
],
|
|
[
|
|
"Who's that test? Who's that test? It's Jess!",
|
|
'"Who\\\'s that test? Who\\\'s that test? It\\\'s Jess!"',
|
|
],
|
|
[
|
|
'Hello "he" said',
|
|
'"Hello \"he\" said"',
|
|
],
|
|
[
|
|
'boo";-o-link:javascript:alert(1);color:red;content:"',
|
|
'"boo\";-o-link:javascript:alert(1);color:red;content:\""',
|
|
],
|
|
[
|
|
'"jon\'s"',
|
|
'"\"jon\\\'s\""'
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider providerWrapAndEscapeMessage
|
|
* @covers ResourceLoaderLessVarFileModule::wrapAndEscapeMessage
|
|
*/
|
|
public function testEscapeMessage( $msg, $expected ) {
|
|
$method = new ReflectionMethod( ResourceLoaderLessVarFileModule::class, 'wrapAndEscapeMessage' );
|
|
$method->setAccessible( true );
|
|
$this->assertEquals( $expected, $method->invoke( null, $msg ) );
|
|
}
|
|
|
|
public function testLessMessagesFound() {
|
|
$context = $this->getResourceLoaderContext( 'qqx' );
|
|
$basePath = __DIR__ . '/../../data/less';
|
|
$module = new ResourceLoaderLessVarFileModule( [
|
|
'localBasePath' => $basePath,
|
|
'styles' => [ 'less-messages.less' ],
|
|
'lessMessages' => [ 'pieday' ],
|
|
] );
|
|
$module->setMessageBlob( '{"pieday":"March 14"}', 'qqx' );
|
|
|
|
$styles = $module->getStyles( $context );
|
|
$this->assertStringEqualsFile( $basePath . '/less-messages-exist.css', $styles['all'] );
|
|
}
|
|
|
|
public function testLessMessagesFailGraceful() {
|
|
$context = $this->getResourceLoaderContext( 'qqx' );
|
|
$basePath = __DIR__ . '/../../data/less';
|
|
$module = new ResourceLoaderLessVarFileModule( [
|
|
'localBasePath' => $basePath,
|
|
'styles' => [ 'less-messages.less' ],
|
|
'lessMessages' => [ 'pieday' ],
|
|
] );
|
|
$module->setMessageBlob( '{"something":"Else"}', 'qqx' );
|
|
|
|
$styles = $module->getStyles( $context );
|
|
$this->assertStringEqualsFile( $basePath . '/less-messages-nonexist.css', $styles['all'] );
|
|
}
|
|
}
|