Setup the testing environment
This commit is contained in:
parent
ae877f0e79
commit
d6d1fa6576
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,3 +4,4 @@ Icon?
|
|||
code_coverage
|
||||
*~
|
||||
*.swp
|
||||
coverage
|
||||
|
|
30
TESTING.md
Normal file
30
TESTING.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
Unit Testing Kohana
|
||||
===
|
||||
|
||||
Guidelines for writing unit tests
|
||||
---
|
||||
|
||||
* Use @covers - This helps provide proper code coverage
|
||||
* Use providers when appropriate - This helps keep your tests simple and makes it easy to add new test cases.
|
||||
* When a new feature of bug fix is applied, create a test for it. This may only consist of adding a provider.
|
||||
|
||||
How to use the tests
|
||||
---
|
||||
|
||||
Simply run `phpunit` from this directory. PHPUnit will grab the config settings stored in phpunit.xml and run
|
||||
the tests for kohana. If everything goes ok phpunit should print a series of dots (each dot represents a test that's passed)
|
||||
followed by something along the lines of `OK (520 tests, 1939 assertions)`.
|
||||
|
||||
If the result is instead something like `Ok but skipped or incomplete tests` then this just means that some tests were unable to run
|
||||
on your system or their implementation is not quite finished.
|
||||
|
||||
By default code coverage is not calculated, if you want to collect it then you need to run `./phpunitcc` which will
|
||||
run phpunit with the config in `code_coverage.xml`. Once the tests have finished running open `code_coverage/index.html`
|
||||
in your browser.
|
||||
|
||||
Known failing tests
|
||||
---
|
||||
|
||||
NONE
|
||||
|
||||
* If any other tests fail for your system, please [file a bug](http://dev.kohanaframework.org/projects/kohana3/issues/new)
|
183
application/test_bootstrap.php
Normal file
183
application/test_bootstrap.php
Normal file
|
@ -0,0 +1,183 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The directory in which your application specific resources are located.
|
||||
* The application directory must contain the bootstrap.php file.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/about.install#application
|
||||
*/
|
||||
$application = '../application';
|
||||
|
||||
/**
|
||||
* The directory in which your modules are located.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/about.install#modules
|
||||
*/
|
||||
$modules = '../modules';
|
||||
|
||||
/**
|
||||
* The directory in which the Kohana resources are located. The system
|
||||
* directory must contain the classes/kohana.php file.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/about.install#system
|
||||
*/
|
||||
$system = '../system';
|
||||
|
||||
/**
|
||||
* The default extension of resource files. If you change this, all resources
|
||||
* must be renamed to use the new extension.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/about.install#ext
|
||||
*/
|
||||
define('EXT', '.php');
|
||||
|
||||
/**
|
||||
* Set the PHP error reporting level. If you set this in php.ini, you remove this.
|
||||
* @see http://php.net/error_reporting
|
||||
*
|
||||
* When developing your application, it is highly recommended to enable notices
|
||||
* and strict warnings. Enable them by using: E_ALL | E_STRICT
|
||||
*
|
||||
* In a production environment, it is safe to ignore notices and strict warnings.
|
||||
* Disable them by using: E_ALL ^ E_NOTICE
|
||||
*
|
||||
* When using a legacy application with PHP >= 5.3, it is recommended to disable
|
||||
* deprecated notices. Disable with: E_ALL & ~E_DEPRECATED
|
||||
*/
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
|
||||
/**
|
||||
* End of standard configuration! Changing any of the code below should only be
|
||||
* attempted by those with a working knowledge of Kohana internals.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/using.configuration
|
||||
*/
|
||||
|
||||
// Set the full path to the docroot
|
||||
define('DOCROOT', realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR);
|
||||
|
||||
// Make the application relative to the docroot
|
||||
if ( ! is_dir($application) AND is_dir(DOCROOT.$application))
|
||||
$application = DOCROOT.$application;
|
||||
|
||||
// Make the modules relative to the docroot
|
||||
if ( ! is_dir($modules) AND is_dir(DOCROOT.$modules))
|
||||
$modules = DOCROOT.$modules;
|
||||
|
||||
// Make the system relative to the docroot
|
||||
if ( ! is_dir($system) AND is_dir(DOCROOT.$system))
|
||||
$system = DOCROOT.$system;
|
||||
|
||||
// Define the absolute paths for configured directories
|
||||
define('APPPATH', realpath($application).DIRECTORY_SEPARATOR);
|
||||
define('MODPATH', realpath($modules).DIRECTORY_SEPARATOR);
|
||||
define('SYSPATH', realpath($system).DIRECTORY_SEPARATOR);
|
||||
|
||||
// Clean up the configuration vars
|
||||
unset($application, $modules, $system);
|
||||
|
||||
// Load the base, low-level functions
|
||||
require SYSPATH.'base'.EXT;
|
||||
|
||||
// Load the core Kohana class
|
||||
require SYSPATH.'classes/kohana/core'.EXT;
|
||||
|
||||
if (is_file(APPPATH.'classes/kohana'.EXT))
|
||||
{
|
||||
// Application extends the core
|
||||
require APPPATH.'classes/kohana'.EXT;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Load empty core extension
|
||||
require SYSPATH.'classes/kohana'.EXT;
|
||||
}
|
||||
|
||||
//-- Environment setup --------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Set the default time zone.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/using.configuration
|
||||
* @see http://php.net/timezones
|
||||
*/
|
||||
date_default_timezone_set('America/Chicago');
|
||||
|
||||
/**
|
||||
* Set the default locale.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/using.configuration
|
||||
* @see http://php.net/setlocale
|
||||
*/
|
||||
setlocale(LC_ALL, 'en_US.utf-8');
|
||||
|
||||
/**
|
||||
* Enable the Kohana auto-loader.
|
||||
*
|
||||
* @see http://kohanaframework.org/guide/using.autoloading
|
||||
* @see http://php.net/spl_autoload_register
|
||||
*/
|
||||
spl_autoload_register(array('Kohana', 'auto_load'));
|
||||
|
||||
/**
|
||||
* Enable the Kohana auto-loader for unserialization.
|
||||
*
|
||||
* @see http://php.net/spl_autoload_call
|
||||
* @see http://php.net/manual/var.configuration.php#unserialize-callback-func
|
||||
*/
|
||||
ini_set('unserialize_callback_func', 'spl_autoload_call');
|
||||
|
||||
//-- Configuration and initialization -----------------------------------------
|
||||
|
||||
/**
|
||||
* Initialize Kohana, setting the default options.
|
||||
*
|
||||
* The following options are available:
|
||||
*
|
||||
* - string base_url path, and optionally domain, of your application NULL
|
||||
* - string index_file name of your index file, usually "index.php" index.php
|
||||
* - string charset internal character set used for input and output utf-8
|
||||
* - string cache_dir set the internal cache directory APPPATH/cache
|
||||
* - boolean errors enable or disable error handling TRUE
|
||||
* - boolean profile enable or disable internal profiling TRUE
|
||||
* - boolean caching enable or disable internal caching FALSE
|
||||
*/
|
||||
Kohana::init(array(
|
||||
'base_url' => '/',
|
||||
));
|
||||
|
||||
/**
|
||||
* Attach the file write to logging. Multiple writers are supported.
|
||||
*/
|
||||
Kohana::$log->attach(new Kohana_Log_File(APPPATH.'logs'));
|
||||
|
||||
/**
|
||||
* Attach a file reader to config. Multiple readers are supported.
|
||||
*/
|
||||
Kohana::$config->attach(new Kohana_Config_File);
|
||||
|
||||
/**
|
||||
* Enable modules. Modules are referenced by a relative or absolute path.
|
||||
*/
|
||||
Kohana::modules(array(
|
||||
// 'auth' => MODPATH.'auth', // Basic authentication
|
||||
// 'cache' => MODPATH.'cache', // Caching with multiple backends
|
||||
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
|
||||
// 'database' => MODPATH.'database', // Database access
|
||||
// 'image' => MODPATH.'image', // Image manipulation
|
||||
// 'orm' => MODPATH.'orm', // Object Relationship Mapping
|
||||
// 'oauth' => MODPATH.'oauth', // OAuth authentication
|
||||
// 'pagination' => MODPATH.'pagination', // Paging of results
|
||||
'unittest' => MODPATH.'unittest', // Unit testing
|
||||
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
|
||||
));
|
||||
|
||||
/**
|
||||
* Set the routes. Each route must have a minimum of a name, a URI and a set of
|
||||
* defaults for the URI.
|
||||
*/
|
||||
Route::set('default', '(<controller>(/<action>(/<id>)))')
|
||||
->defaults(array(
|
||||
'controller' => 'welcome',
|
||||
'action' => 'index',
|
||||
));
|
18
code_coverage.xml
Normal file
18
code_coverage.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit colors="true" bootstrap="./application/test_bootstrap.php">
|
||||
<filter addUncoveredFilesFromWhitelist="true">
|
||||
<whitelist>
|
||||
<directory suffix=".php">./system/classes/kohana/</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
<logging>
|
||||
<log type="coverage-html" target="coverage" charset="UTF-8"
|
||||
yui="true" highlight="true"
|
||||
lowUpperBound="35" highLowerBound="70"/>
|
||||
</logging>
|
||||
<testsuites>
|
||||
<testsuite name="Kohana Tests">
|
||||
<directory suffix=".php">./system/tests/kohana/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
13
phpunit.xml
Normal file
13
phpunit.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit colors="true" bootstrap="application/test_bootstrap.php">
|
||||
<filter addUncoveredFilesFromWhitelist="true">
|
||||
<whitelist>
|
||||
<directory suffix=".php">./system/classes/kohana/</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
<testsuites>
|
||||
<testsuite name="Kohana Tests">
|
||||
<directory suffix=".php">./system/tests/kohana/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
Loading…
Reference in a new issue