From cba21baacb4880eefd35279b0589e035c5a5c78e Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Fri, 16 Nov 2012 13:59:17 +0100
Subject: [PATCH] started to add some unit tests to config manager

Parsing the config file should be completely tested before we can rely
on it and safely extend it. This just adds the first very basic tests.
---
 .../config/_test/configuration.test.php       | 31 +++++++++++++++++++
 lib/plugins/config/_test/data/config.php      | 14 +++++++++
 lib/plugins/config/_test/data/metadata.php    | 11 +++++++
 lib/plugins/config/settings/config.class.php  |  3 ++
 4 files changed, 59 insertions(+)
 create mode 100644 lib/plugins/config/_test/configuration.test.php
 create mode 100644 lib/plugins/config/_test/data/config.php
 create mode 100644 lib/plugins/config/_test/data/metadata.php

diff --git a/lib/plugins/config/_test/configuration.test.php b/lib/plugins/config/_test/configuration.test.php
new file mode 100644
index 000000000..eeeff61a3
--- /dev/null
+++ b/lib/plugins/config/_test/configuration.test.php
@@ -0,0 +1,31 @@
+<?php
+
+class plugin_config_configuration_test extends DokuWikiTest {
+
+    private $config = '';
+    private $meta = '';
+
+    function __construct() {
+        $this->config = dirname(__FILE__).'/data/config.php';
+        $this->meta   = dirname(__FILE__).'/data/metadata.php';
+        require_once(dirname(__FILE__).'/../settings/config.class.php');
+    }
+
+    function test_readconfig() {
+        $confmgr = new configuration($this->meta);
+
+        $conf = $confmgr->_read_config($this->config);
+
+        //print_r($conf);
+
+        $this->assertEquals('42', $conf['int1']);
+        $this->assertEquals('6*7', $conf['int2']);
+
+        $this->assertEquals('Hello World', $conf['str1']);
+        $this->assertEquals('G\'day World', $conf['str2']);
+        $this->assertEquals('Hello World', $conf['str3']);
+        $this->assertEquals("Hello 'World'", $conf['str4']);
+        $this->assertEquals('Hello "World"', $conf['str5']);
+    }
+
+}
\ No newline at end of file
diff --git a/lib/plugins/config/_test/data/config.php b/lib/plugins/config/_test/data/config.php
new file mode 100644
index 000000000..4ed450e93
--- /dev/null
+++ b/lib/plugins/config/_test/data/config.php
@@ -0,0 +1,14 @@
+<?php
+
+
+$conf['int1'] = 42;
+$conf['int2'] = 6*7;
+
+$conf['str1']  = 'Hello World';
+$conf['str2']  = 'G\'day World';
+$conf['str3']  = "Hello World";
+$conf['str4']  = "Hello 'World'";
+$conf['str5']  = "Hello \"World\"";
+
+$conf['foo']['bar'] = 'x1';
+$conf['foo']['baz'] = 'x2';
diff --git a/lib/plugins/config/_test/data/metadata.php b/lib/plugins/config/_test/data/metadata.php
new file mode 100644
index 000000000..34ab42be7
--- /dev/null
+++ b/lib/plugins/config/_test/data/metadata.php
@@ -0,0 +1,11 @@
+<?php
+
+$meta['int1'] = array('numeric');
+$meta['int2'] = array('numeric');
+
+$meta['str1'] = array('string');
+$meta['str2'] = array('string');
+$meta['str3'] = array('string');
+$meta['str4'] = array('string');
+$meta['str5'] = array('string');
+
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index e71a7e5f9..5a2aa2980 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -6,6 +6,9 @@
  *  @author  Ben Coburn <btcoburn@silicodon.net>
  */
 
+
+if(!defined('CM_KEYMARKER')) define('CM_KEYMARKER','____');
+
 if (!class_exists('configuration')) {
 
   class configuration {
-- 
GitLab