Improved VFS usage in Loader and Config units, added Loader driver test, and moved config load testing to Config unit

Signed-off-by: dchill42 <dchill42@gmail.com>
diff --git a/tests/mocks/core/loader.php b/tests/mocks/core/loader.php
index 53d88d5..e28650d 100644
--- a/tests/mocks/core/loader.php
+++ b/tests/mocks/core/loader.php
@@ -5,27 +5,31 @@
 	/**
 	 * 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
+}