1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
<?php
namespace MediaWiki\Tests\Maintenance;
use GrepPages;
use MediaWiki\WikiMap\WikiMap;
/**
* @covers GrepPages
* @group Database
* @author Dreamy Jazz
*/
class GrepPagesTest extends MaintenanceBaseTestCase {
protected function getMaintenanceClass() {
return GrepPages::class;
}
private function getTestPageWithContent( $title, $content ) {
$testPage = $this->getExistingTestPage( $title );
$this->editPage( $testPage, $content );
}
public function addDBDataOnce() {
// Create a variety of pages for the test
$this->getTestPageWithContent( 'TestPage1', 'testingabcdef' );
$this->getTestPageWithContent( 'TestPage2', 'abcdef' );
$this->getTestPageWithContent( 'Talk:TestPage1', 'talk-testing' );
$this->getTestPageWithContent(
'Template:TestPage',
"template-test\n== Test ==\nTest section"
);
}
/** @dataProvider provideExecute */
public function testExecute( $regex, $options, $expectedOutputString ) {
$this->maintenance->setArg( 0, $regex );
foreach ( $options as $name => $value ) {
$this->maintenance->setOption( $name, $value );
}
$this->maintenance->execute();
$this->expectOutputString( $expectedOutputString );
}
public static function provideExecute() {
return [
'Regex defined to be all pages with --pages-with-matches defined' => [
'/.*/', [ 'pages-with-matches' => 1 ],
"TestPage1\nTestPage2\nTalk:TestPage1\nTemplate:TestPage\n",
],
'Regex defined as no pages' => [ '/^$/', [], '' ],
'Regex defined as pages containing the word test' => [
'test', [],
"TestPage1:1:testingabcdef\nTalk:TestPage1:1:talk-testing\nTemplate:TestPage:1:template-test\n",
],
'--prefix for template namespace and --pages-with-matches' => [
'', [ 'prefix' => [ 'Template:' ], 'pages-with-matches' => 1 ],
"Template:TestPage\n",
],
'--prefix for template namespace' => [
'', [ 'prefix' => [ 'Template:' ] ],
"Template:TestPage:1:template-test\nTemplate:TestPage:2:== Test ==\nTemplate:TestPage:3:Test section\n",
],
'--prefix without namespace and --pages-with-matches' => [
'', [ 'prefix' => [ 'TestPage' ], 'pages-with-matches' => 1 ], "TestPage1\nTestPage2\n",
],
'--prefix specified twice and --pages-with-matches' => [
'', [ 'prefix' => [ 'TestPage', 'Talk:TestPage' ], 'pages-with-matches' => 1 ],
"TestPage1\nTestPage2\nTalk:TestPage1\n",
],
];
}
public function testExecuteForShowWiki() {
$wikiName = WikiMap::getCurrentWikiId();
$this->testExecute(
'test', [ 'show-wiki' => 1 ],
$wikiName . "\tTestPage1:1:testingabcdef\n" .
$wikiName . "\tTalk:TestPage1:1:talk-testing\n" .
$wikiName . "\tTemplate:TestPage:1:template-test\n",
);
}
public function testExecuteForShowWikiAndPageWithMatches() {
$wikiName = WikiMap::getCurrentWikiId();
$this->testExecute(
'test', [ 'show-wiki' => 1, 'pages-with-matches' => 1 ],
$wikiName . "\tTestPage1\n" .
$wikiName . "\tTalk:TestPage1\n" .
$wikiName . "\tTemplate:TestPage\n",
);
}
}
|