assertEquals( $expected, InstallDocFormatter::format( $unformattedText ), $message ); } /** * Provider for testFormat() */ public static function provideDocFormattingTests() { # Format: (expected string, unformattedText string, optional message) return [ # Escape some wikitext [ 'Install <tag>', 'Install ', 'Escaping <' ], [ 'Install {{template}}', 'Install {{template}}', 'Escaping [[' ], [ 'Install [[page]]', 'Install [[page]]', 'Escaping {{' ], [ 'Install __TOC__', 'Install __TOC__', 'Escaping __' ], [ 'Install ', "Install \r", 'Removing \r' ], # Transform \t{1,2} into :{1,2} [ ':One indentation', "\tOne indentation", 'Replacing a single \t' ], [ '::Two indentations', "\t\tTwo indentations", 'Replacing 2 x \t' ], # Transform 'T123' links [ '[https://phabricator.wikimedia.org/T123 T123]', 'T123', 'Testing T123 links' ], [ 'bug [https://phabricator.wikimedia.org/T123 T123]', 'bug T123', 'Testing bug T123 links' ], [ '([https://phabricator.wikimedia.org/T987654 T987654])', '(T987654)', 'Testing (T987654) links' ], # "Tabc" shouldn't work [ 'Tfoobar', 'Tfoobar', "Don't match T followed by non-digits" ], [ 'T!!fakefake!!', 'T!!fakefake!!', "Don't match T followed by non-digits" ], # Transform 'bug 123' links [ '[https://bugzilla.wikimedia.org/123 bug 123]', 'bug 123', 'Testing bug 123 links' ], [ '([https://bugzilla.wikimedia.org/987654 bug 987654])', '(bug 987654)', 'Testing (bug 987654) links' ], # "bug abc" shouldn't work [ 'bug foobar', 'bug foobar', "Don't match bug followed by non-digits" ], [ 'bug !!fakefake!!', 'bug !!fakefake!!', "Don't match bug followed by non-digits" ], # Transform '$wgFooBar' links [ '' . '[https://www.mediawiki.org/wiki/Manual:$wgFooBar $wgFooBar]', '$wgFooBar', 'Testing basic $wgFooBar' ], [ '' . '[https://www.mediawiki.org/wiki/Manual:$wgFooBar45 $wgFooBar45]', '$wgFooBar45', 'Testing $wgFooBar45 (with numbers)' ], [ '' . '[https://www.mediawiki.org/wiki/Manual:$wgFoo_Bar $wgFoo_Bar]', '$wgFoo_Bar', 'Testing $wgFoo_Bar (with underscore)' ], # Icky variables that shouldn't link [ '$myAwesomeVariable', '$myAwesomeVariable', 'Testing $myAwesomeVariable (not starting with $wg)' ], [ '$()not!a&Var', '$()not!a&Var', 'Testing $()not!a&Var (obviously not a variable)' ], ]; } }