markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"'); } } /** * @dataProvider loadCommentSpec */ public function testCommentSpec($template, $data, $partials, $expected, $desc) { $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } /** * @dataProvider loadDelimitersSpec */ public function testDelimitersSpec($template, $data, $partials, $expected, $desc) { $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } /** * @dataProvider loadInterpolationSpec */ public function testInterpolationSpec($template, $data, $partials, $expected, $desc) { $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } /** * @dataProvider loadInvertedSpec */ public function testInvertedSpec($template, $data, $partials, $expected, $desc) { $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } /** * @dataProvider loadLambdasSpec */ public function testLambdasSpec($template, $data, $partials, $expected, $desc) { $this->markTestSkipped("Lambdas for PHP haven't made it into the spec yet, so we'll skip them to avoid a bajillion failed tests."); if (!version_compare(PHP_VERSION, '5.3.0', '>=')) { $this->markTestSkipped('Unable to test Lambdas spec with PHP < 5.3.'); } $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } /** * @dataProvider loadPartialsSpec */ public function testPartialsSpec($template, $data, $partials, $expected, $desc) { // skip partial recursion tests, see: http://hile.mn/bYIIYt if (strpos($desc, 'recurse') !== false) { $this->markTestSkipped('Mustache.php has an issue with recursive partials. See http://hile.mn/bYIIYt'); } $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } /** * @dataProvider loadSectionsSpec */ public function testSectionsSpec($template, $data, $partials, $expected, $desc) { $m = new Mustache($template, $data, $partials); $this->assertEquals($expected, $m->render(), $desc); } public function loadCommentSpec() { return $this->loadSpec('comments'); } public function loadDelimitersSpec() { return $this->loadSpec('delimiters'); } public function loadInterpolationSpec() { return $this->loadSpec('interpolation'); } public function loadInvertedSpec() { return $this->loadSpec('inverted'); } public function loadLambdasSpec() { return $this->loadSpec('lambdas'); } public function loadPartialsSpec() { return $this->loadSpec('partials'); } public function loadSectionsSpec() { return $this->loadSpec('sections'); } /** * Data provider for the mustache spec test. * * Loads YAML files from the spec and converts them to PHPisms. * * @access public * @return array */ protected function loadSpec($name) { $filename = dirname(__FILE__) . '/spec/specs/' . $name . '.yml'; if (!file_exists($filename)) { return array(); } $data = array(); $spec = spyc_load_file($filename); foreach ($spec['tests'] as $test) { $data[] = array($test['template'], $test['data'], isset($test['partials']) ? $test['partials'] : array(), $test['expected'], $test['desc']); } return $data; } }