aboutsummaryrefslogtreecommitdiffstats
path: root/tests/template
diff options
context:
space:
mode:
authorOleg Pudeyev <oleg@bsdpower.com>2011-05-13 10:46:10 -0400
committerOleg Pudeyev <oleg@bsdpower.com>2011-05-14 15:30:20 -0400
commitbe8fc0864c005e7240ba28b24de317a969c7f9b6 (patch)
tree829954f0714a98dff0b20a8284288351c8a43e71 /tests/template
parent94560d708649df876f8486d4ba5361475037f1ff (diff)
downloadforums-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.php33
-rw-r--r--tests/template/template_test.php102
-rw-r--r--tests/template/template_test_case.php113
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));
+ }
+ }
+}