From 2f88829e1bc914e859be9ef270b3d657ee6a787b Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Sun, 22 Mar 2015 20:06:28 -0700 Subject: [PATCH] TemplateParser: make most functions protected, only expose processTemplate() All of the other functions expose internal implementation details, which no external caller should ever need. In fact, no external caller does use these functions directly. The TemplateParser::compile() tests were removed as they're simply just checking LightnCandy functionality, which is something the library should be doing. Change-Id: If9003d40315e0e5aa361c174b764b799e3b88c34 --- includes/TemplateParser.php | 10 +-- .../data/templates/foobar_args.mustache | 1 + tests/phpunit/includes/TemplateParserTest.php | 67 +++++++------------ 3 files changed, 30 insertions(+), 48 deletions(-) create mode 100644 tests/phpunit/data/templates/foobar_args.mustache diff --git a/includes/TemplateParser.php b/includes/TemplateParser.php index 0131fe6945..b105ca493c 100644 --- a/includes/TemplateParser.php +++ b/includes/TemplateParser.php @@ -51,7 +51,7 @@ class TemplateParser { * @return string * @throws UnexpectedValueException Disallows upwards directory traversal via $templateName */ - public function getTemplateFilename( $templateName ) { + protected function getTemplateFilename( $templateName ) { // Prevent upwards directory traversal using same methods as Title::secureAndSplit if ( strpos( $templateName, '.' ) !== false && @@ -77,7 +77,7 @@ class TemplateParser { * @return callable * @throws RuntimeException */ - public function getTemplate( $templateName ) { + protected function getTemplate( $templateName ) { // If a renderer has already been defined for this template, reuse it if ( isset( $this->renderers[$templateName] ) && is_callable( $this->renderers[$templateName] ) ) { return $this->renderers[$templateName]; @@ -145,9 +145,9 @@ class TemplateParser { * @return string PHP code (without 'compile( $fileContents ); if ( !$code ) { throw new RuntimeException( "Could not compile template: {$filename}" ); @@ -167,7 +167,7 @@ class TemplateParser { * @return string PHP code (with 'setExpectedException( $exception ); } - - $tp = new TemplateParser( $dir ); - $path = $tp->getTemplateFilename( $name ); - $this->assertEquals( $result, $path ); + $tp = new TemplateParser( $this->templateDir ); + $this->assertEquals( $result, $tp->processTemplate( $name, $args ) ); } - public static function provideGetTemplateFilename() { + public static function provideProcessTemplate() { return array( array( - 'dir/templates', 'foobar', - 'dir/templates/foobar.mustache', + array(), + "hello world!\n" + ), + array( + 'foobar_args', + array( + 'planet' => 'world', + ), + "hello world!\n", ), array( - 'dir/templates', '../foobar', - '', + array(), + false, 'UnexpectedValueException' ), - ); - } - - /** - * @covers TemplateParser::getTemplate - */ - public function testGetTemplate() { - $tp = new TemplateParser( $this->templateDir ); - $this->assertTrue( is_callable( $tp->getTemplate( 'foobar' ) ) ); - } - - /** - * @covers TemplateParser::compile - */ - public function testTemplateCompilation() { - $this->assertRegExp( - '/^<\?php return function/', - TemplateParser::compile( "test" ), - 'compile a simple mustache template' - ); - } - - /** - * @covers TemplateParser::compile - */ - public function testTemplateCompilationWithVariable() { - $this->assertRegExp( - '/return \'\'\.htmlentities\(\(string\)\(\(isset\(\$in\[\'value\'\]\) && ' - . 'is_array\(\$in\)\) \? \$in\[\'value\'\] : null\), ENT_QUOTES, ' - . '\'UTF-8\'\)\.\'\';/', - TemplateParser::compile( "{{value}}" ), - 'compile a mustache template with an escaped variable' + array( + 'nonexistenttemplate', + array(), + false, + 'RuntimeException', + ) ); } } -- 2.20.1