diff options
author | Oleg Pudeyev <oleg@bsdpower.com> | 2011-05-13 10:46:10 -0400 |
---|---|---|
committer | Oleg Pudeyev <oleg@bsdpower.com> | 2011-05-14 15:30:20 -0400 |
commit | be8fc0864c005e7240ba28b24de317a969c7f9b6 (patch) | |
tree | 829954f0714a98dff0b20a8284288351c8a43e71 /tests/template | |
parent | 94560d708649df876f8486d4ba5361475037f1ff (diff) | |
download | forums-be8fc0864c005e7240ba28b24de317a969c7f9b6.tar forums-be8fc0864c005e7240ba28b24de317a969c7f9b6.tar.gz forums-be8fc0864c005e7240ba28b24de317a969c7f9b6.tar.bz2 forums-be8fc0864c005e7240ba28b24de317a969c7f9b6.tar.xz forums-be8fc0864c005e7240ba28b24de317a969c7f9b6.zip |
[feature/template-engine] Added a test for inclusion of php files from subdir.
PHPBB3-9726
Diffstat (limited to 'tests/template')
-rw-r--r-- | tests/template/subdir/includephp_from_subdir_test.php | 33 | ||||
-rw-r--r-- | tests/template/template_test.php | 102 | ||||
-rw-r--r-- | tests/template/template_test_case.php | 113 |
3 files changed, 148 insertions, 100 deletions
diff --git a/tests/template/subdir/includephp_from_subdir_test.php b/tests/template/subdir/includephp_from_subdir_test.php new file mode 100644 index 0000000000..7bfd852d9e --- /dev/null +++ b/tests/template/subdir/includephp_from_subdir_test.php @@ -0,0 +1,33 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2011 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once dirname(__FILE__) . '/../../../phpBB/includes/functions.php'; +require_once dirname(__FILE__) . '/../../../phpBB/includes/template.php'; +require_once dirname(__FILE__) . '/../template_test_case.php'; + +class phpbb_template_subdir_includephp_from_subdir_test extends phpbb_template_template_test_case +{ + // Exact copy of test_includephp_relatve from ../template_test.php. + // Verifies that relative php inclusion works when including script + // (and thus current working directory) is in a subdirectory of + // board root. + public function test_includephp_relative() + { + $GLOBALS['config']['tpl_allow_php'] = true; + + $cache_file = $this->template->cachepath . 'includephp_relative.html.php'; + + $this->run_template('includephp_relative.html', array(), array(), array(), "Path is relative to board root.\ntesting included php", $cache_file); + + $this->template->set_filenames(array('test' => 'includephp_relative.html')); + $this->assertEquals("Path is relative to board root.\ntesting included php", $this->display('test'), "Testing INCLUDEPHP"); + + $GLOBALS['config']['tpl_allow_php'] = false; + } +} diff --git a/tests/template/template_test.php b/tests/template/template_test.php index a9850cd5ef..09f0de3046 100644 --- a/tests/template/template_test.php +++ b/tests/template/template_test.php @@ -9,68 +9,10 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; require_once dirname(__FILE__) . '/../../phpBB/includes/template.php'; +require_once dirname(__FILE__) . '/template_test_case.php'; -class phpbb_template_template_test extends phpbb_test_case +class phpbb_template_template_test extends phpbb_template_template_test_case { - private $template; - private $template_path; - - // Keep the contents of the cache for debugging? - const PRESERVE_CACHE = true; - - private function display($handle) - { - ob_start(); - $this->assertTrue($this->template->display($handle, false)); - return self::trim_template_result(ob_get_clean()); - } - - private static function trim_template_result($result) - { - return str_replace("\n\n", "\n", implode("\n", array_map('trim', explode("\n", trim($result))))); - } - - private function setup_engine() - { - global $phpbb_root_path, $phpEx, $config, $user; - - $this->template_path = dirname(__FILE__) . '/templates'; - $this->template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user); - $this->template->set_custom_template($this->template_path, 'tests'); - } - - protected function setUp() - { - // Test the engine can be used - $this->setup_engine(); - - if (!is_writable(dirname($this->template->cachepath))) - { - $this->markTestSkipped("Template cache directory is not writable."); - } - - foreach (glob($this->template->cachepath . '*') as $file) - { - unlink($file); - } - - $GLOBALS['config'] = array( - 'load_tplcompile' => true, - 'tpl_allow_php' => false, - ); - } - - protected function tearDown() - { - if (is_object($this->template)) - { - foreach (glob($this->template->cachepath . '*') as $file) - { - unlink($file); - } - } - } - /** * @todo put test data into templates/xyz.test */ @@ -337,46 +279,6 @@ class phpbb_template_template_test extends phpbb_test_case $this->display('test'); } - private function run_template($file, array $vars, array $block_vars, array $destroy, $expected, $cache_file) - { - $this->template->set_filenames(array('test' => $file)); - $this->template->assign_vars($vars); - - foreach ($block_vars as $block => $loops) - { - foreach ($loops as $_vars) - { - $this->template->assign_block_vars($block, $_vars); - } - } - - foreach ($destroy as $block) - { - $this->template->destroy_block_vars($block); - } - - try - { - $this->assertEquals($expected, $this->display('test'), "Testing $file"); - $this->assertFileExists($cache_file); - } - catch (ErrorException $e) - { - if (file_exists($cache_file)) - { - copy($cache_file, str_replace('ctpl_', 'tests_ctpl_', $cache_file)); - } - throw $e; - } - - // For debugging. - // When testing eval path the cache file may not exist. - if (self::PRESERVE_CACHE && file_exists($cache_file)) - { - copy($cache_file, str_replace('ctpl_', 'tests_ctpl_', $cache_file)); - } - } - /** * @dataProvider template_data */ diff --git a/tests/template/template_test_case.php b/tests/template/template_test_case.php new file mode 100644 index 0000000000..e7c12065cc --- /dev/null +++ b/tests/template/template_test_case.php @@ -0,0 +1,113 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2011 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/template.php'; + +class phpbb_template_template_test_case extends phpbb_test_case +{ + protected $template; + protected $template_path; + + // Keep the contents of the cache for debugging? + const PRESERVE_CACHE = true; + + protected function display($handle) + { + ob_start(); + $this->assertTrue($this->template->display($handle, false)); + return self::trim_template_result(ob_get_clean()); + } + + protected static function trim_template_result($result) + { + return str_replace("\n\n", "\n", implode("\n", array_map('trim', explode("\n", trim($result))))); + } + + protected function setup_engine() + { + global $phpbb_root_path, $phpEx, $config, $user; + + $this->template_path = dirname(__FILE__) . '/templates'; + $this->template = new phpbb_template($phpbb_root_path, $phpEx, $config, $user); + $this->template->set_custom_template($this->template_path, 'tests'); + } + + protected function setUp() + { + // Test the engine can be used + $this->setup_engine(); + + if (!is_writable(dirname($this->template->cachepath))) + { + $this->markTestSkipped("Template cache directory is not writable."); + } + + foreach (glob($this->template->cachepath . '*') as $file) + { + unlink($file); + } + + $GLOBALS['config'] = array( + 'load_tplcompile' => true, + 'tpl_allow_php' => false, + ); + } + + protected function tearDown() + { + if (is_object($this->template)) + { + foreach (glob($this->template->cachepath . '*') as $file) + { + unlink($file); + } + } + } + + protected function run_template($file, array $vars, array $block_vars, array $destroy, $expected, $cache_file) + { + $this->template->set_filenames(array('test' => $file)); + $this->template->assign_vars($vars); + + foreach ($block_vars as $block => $loops) + { + foreach ($loops as $_vars) + { + $this->template->assign_block_vars($block, $_vars); + } + } + + foreach ($destroy as $block) + { + $this->template->destroy_block_vars($block); + } + + try + { + $this->assertEquals($expected, $this->display('test'), "Testing $file"); + $this->assertFileExists($cache_file); + } + catch (ErrorException $e) + { + if (file_exists($cache_file)) + { + copy($cache_file, str_replace('ctpl_', 'tests_ctpl_', $cache_file)); + } + throw $e; + } + + // For debugging. + // When testing eval path the cache file may not exist. + if (self::PRESERVE_CACHE && file_exists($cache_file)) + { + copy($cache_file, str_replace('ctpl_', 'tests_ctpl_', $cache_file)); + } + } +} |