mirror of
https://github.com/moodle/moodle.git
synced 2025-03-04 08:06:30 +01:00
List of changes: * New OOP API using PHP namespace \core\session\. * All handlers now update the sessions table consistently. * Experimental DB session support in Oracle. * Full support for session file handler (filesystem locking required). * New option for alternative session directory. * Official memcached session handler support. * Workaround for memcached version with non-functional gc. * Improved security - forced session id regeneration. * Improved compatibility with recent PHP releases. * Fixed borked CSS during install in debug mode. * Switched to file based sessions in new installs. * DB session setting disappears if DB does not support sessions. * DB session setting disappears if session handler specified in config.php. * Fast purging of sessions used in request only. * No legacy distinction - file, database and memcached support the same functionality. * Session handler name included in performance info. * Fixed user_loggedin and user_loggedout event triggering. * Other minor bugfixing and improvements. * Fixed database session segfault if MUC disposed before $DB. Limitations: * Session access time is now updated right after session start. * Support for $CFG->sessionlockloggedinonly was removed. * First request does not update userid in sessions table. * The timeouts may break badly if server hosting forces PHP.ini session settings. * The session GC is a lot slower, we do not rely on external session timeouts. * There cannot be any hooks triggered at the session write time. * File and memcached handlers do not support session lock acquire timeouts. * Some low level PHP session functions can not be used directly in Moodle code.
PHPUnit testing support in Moodle
Documentation
Composer installation
Composer is a new dependency manager for PHP projects. It installs PHP libraries into /vendor/ subdirectory inside your moodle dirroot.
- install Composer - http://getcomposer.org/doc/00-intro.md
- go to your moodle dirroot and execute
php composer.phar install --dev
PEAR installation (not recommended)
PEAR is a framework and distribution system for reusable PHP components. The packages installed via PEAR are available in all PHP projects.
- install PEAR package manager - see PEAR Manual
- install PHPUnit package and phpunit/DbUnit extension - see PHPUnit installation documentation
- edit main config.php - add
$CFG->phpunit_prefix
and$CFG->phpunit_dataroot
- see config-dist.php - execute
php admin/tool/phpunit/cli/init.php
to initialise the test environment, repeat it after every upgrade or installation of plugins
Test execution
- execute
vendor/bin/phpunit
(orphpunit
if you use PEAR) from dirroot directory - you can execute a single test case class using class name followed by path to test file
vendor/bin/phpunit core_phpunit_basic_testcase lib/tests/phpunit_test.php
- it is also possible to create custom configuration files in xml format and use
vendor/bin/phpunit -c mytestsuites.xml
How to add more tests?
- create
tests
directory in your plugin - add
local/mytest/tests/my_test.php
file withlocal_my_testcase
class that extendsbasic_testcase
oradvanced_testcase
- add some test_*() methods
- execute your new test case
phpunit local_my_testcase local/mytest/tests/my_test.php
- execute
php admin/tool/phpunit/cli/init.php
to get the plugin tests included in main phpunit.xml configuration file
How to convert existing tests?
- create new test file in
xxx/tests/yyy_test.php
- copy contents of the old test file
- replace
extends UnitTestCase
withextends basic_testcase
- fix setUp(), tearDown(), asserts, etc.