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
|
code_coverage
|
||||||
*~
|
*~
|
||||||
*.swp
|
*.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