summaryrefslogtreecommitdiffstats
path: root/tests/mocks
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mocks')
-rw-r--r--tests/mocks/core/loader.php40
1 files changed, 26 insertions, 14 deletions
diff --git a/tests/mocks/core/loader.php b/tests/mocks/core/loader.php
index 53d88d55b..9eb78253b 100644
--- a/tests/mocks/core/loader.php
+++ b/tests/mocks/core/loader.php
@@ -5,27 +5,39 @@ class Mock_Core_Loader extends CI_Loader {
/**
* Since we use paths to load up models, views, etc, we need the ability to
* mock up the file system so when core tests are run, we aren't mucking
- * in the application directory. this will give finer grained control over
- * these tests. So yeah, while this looks odd, I need to overwrite protected
- * class vars in the loader. So here we go...
+ * in the application directory. This will give finer grained control over
+ * these tests. Also, by mocking the system directory, we eliminate dependency
+ * on any other classes so errors in libraries, helpers, etc. don't give false
+ * negatives for the actual loading process. So yeah, while this looks odd,
+ * I need to overwrite protected class vars in the loader. So here we go...
*
* @covers CI_Loader::__construct()
*/
public function __construct()
{
- vfsStreamWrapper::register();
- vfsStreamWrapper::setRoot(new vfsStreamDirectory('application'));
+ // Create VFS tree of loader locations
+ $this->root = vfsStream::setup();
+ $this->app_root = vfsStream::newDirectory('application')->at($this->root);
+ $this->base_root = vfsStream::newDirectory('system')->at($this->root);
- $this->models_dir = vfsStream::newDirectory('models')->at(vfsStreamWrapper::getRoot());
- $this->libs_dir = vfsStream::newDirectory('libraries')->at(vfsStreamWrapper::getRoot());
- $this->helpers_dir = vfsStream::newDirectory('helpers')->at(vfsStreamWrapper::getRoot());
- $this->views_dir = vfsStream::newDirectory('views')->at(vfsStreamWrapper::getRoot());
+ // Get VFS app and base path URLs
+ $this->app_path = vfsStream::url('application').'/';
+ $this->base_path = vfsStream::url('system').'/';
+ // Set loader paths with VFS URLs
$this->_ci_ob_level = ob_get_level();
- $this->_ci_library_paths = array(vfsStream::url('application').'/', BASEPATH);
- $this->_ci_helper_paths = array(vfsStream::url('application').'/', BASEPATH);
- $this->_ci_model_paths = array(vfsStream::url('application').'/');
- $this->_ci_view_paths = array(vfsStream::url('application').'/views/' => TRUE);
+ $this->_ci_library_paths = array($this->app_path, $this->base_path);
+ $this->_ci_helper_paths = array($this->app_path, $this->base_path);
+ $this->_ci_model_paths = array($this->app_path);
+ $this->_ci_view_paths = array($this->app_path.'views/' => TRUE);
}
-} \ No newline at end of file
+ /**
+ * Give public access to _ci_autoloader for testing
+ */
+ public function autoload()
+ {
+ $this->_ci_autoloader();
+ }
+
+}