From e2074b8b43c0da92b6ee7c2333af68f784ae50c8 Mon Sep 17 00:00:00 2001 From: stronk7 Date: Fri, 26 Jun 2009 09:10:01 +0000 Subject: [PATCH] MDL-19579 code coverage - initial frontend for both unit and db tests --- admin/report/unittest/dbtest.php | 26 ++++++++++++++++++++------ admin/report/unittest/index.php | 17 ++++++++++++----- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/admin/report/unittest/dbtest.php b/admin/report/unittest/dbtest.php index f59eda70e54..a2468e82a5b 100644 --- a/admin/report/unittest/dbtest.php +++ b/admin/report/unittest/dbtest.php @@ -7,12 +7,13 @@ /** */ require_once(dirname(__FILE__).'/../../../config.php'); require_once($CFG->libdir.'/adminlib.php'); -require_once($CFG->libdir.'/simpletestlib.php'); +require_once($CFG->libdir.'/simpletestcoveragelib.php'); require_once('ex_simple_test.php'); require_once('ex_reporter.php'); -$showpasses = optional_param('showpasses', 0, PARAM_BOOL); -$selected = optional_param('selected', array(), PARAM_INT); +$showpasses = optional_param('showpasses', false, PARAM_BOOL); +$codecoverage = optional_param('codecoverage', false, PARAM_BOOL); +$selected = optional_param('selected', array(), PARAM_INT); // Print the header and check access. admin_externalpage_setup('reportdbtest'); @@ -67,6 +68,9 @@ if (!empty($tests)) { @ob_implicit_flush(true); while(@ob_end_flush()); + $covreporter = new moodle_coverage_reporter('Functional DB Tests Code Coverage Report', 'dbtest'); + $covrecorder = new moodle_coverage_recorder($covreporter); + foreach ($tests as $i=>$database) { $dbinfo = $dbinfos[$i]; @@ -75,7 +79,8 @@ if (!empty($tests)) { print_heading('Running tests on: '.$dbinfo['name'], '', 3); // TODO: localise // Create the group of tests. - $test = new AutoGroupTest(false, true); + $test = new autogroup_test_coverage(false, true, $codecoverage); + $test->addTestFile($CFG->libdir.'/dml/simpletest/testdml.php'); $test->addTestFile($CFG->libdir.'/ddl/simpletest/testddl.php'); @@ -83,13 +88,17 @@ if (!empty($tests)) { // Make the reporter, which is what displays the results. $reporter = new ExHtmlReporter($showpasses); - set_time_limit(300); - $test->run($reporter); + set_time_limit(300); // 5 mins per DB should be enough + $test->run_with_external_coverage($reporter, $covrecorder); unset($UNITTEST->func_test_db); echo '
'; } + if ($codecoverage) { + $covrecorder->generate_report(); + moodle_coverage_reporter::print_summary_info('dbtest'); + } } @@ -99,6 +108,11 @@ echo '
'; echo '
'; print_heading("Run functional database tests"); // TODO: localise echo '

'; print_checkbox('showpasses', 1, $showpasses, get_string('showpasses', 'simpletest')); echo '

'; +if (moodle_coverage_recorder::can_run_codecoverage()) { + echo '

'; print_checkbox('codecoverage', 1, $codecoverage, get_string('codecoverageanalysis', 'simpletest')); echo '

'; +} else { + echo '

'; print_string('codecoveragedisabled', 'simpletest'); echo '

'; +} echo '

'."Databases:".''; echo '

    '; foreach ($dbinfos as $i=>$dbinfo) { diff --git a/admin/report/unittest/index.php b/admin/report/unittest/index.php index 671e2116ab9..1b7edba56d3 100644 --- a/admin/report/unittest/index.php +++ b/admin/report/unittest/index.php @@ -12,7 +12,7 @@ /** */ require_once(dirname(__FILE__).'/../../../config.php'); require_once($CFG->libdir.'/adminlib.php'); -require_once($CFG->libdir.'/simpletestlib.php'); +require_once($CFG->libdir.'/simpletestcoveragelib.php'); require_once('ex_simple_test.php'); require_once('ex_reporter.php'); @@ -22,9 +22,10 @@ error_reporting($CFG->debug); raise_memory_limit('256M'); // page parameters -$path = optional_param('path', null, PARAM_PATH); -$showpasses = optional_param('showpasses', false, PARAM_BOOL); -$showsearch = optional_param('showsearch', false, PARAM_BOOL); +$path = optional_param('path', null, PARAM_PATH); +$showpasses = optional_param('showpasses', false, PARAM_BOOL); +$codecoverage = optional_param('codecoverage', false, PARAM_BOOL); +$showsearch = optional_param('showsearch', false, PARAM_BOOL); admin_externalpage_setup('reportsimpletest', '', array('showpasses'=>$showpasses, 'showsearch'=>$showsearch)); @@ -46,7 +47,7 @@ if (!is_null($path)) { unset($origxmlstrictheaders); // Create the group of tests. - $test = new AutoGroupTest($showsearch); + $test = new autogroup_test_coverage($showsearch, true, $codecoverage, 'Moodle Unit Tests Code Coverage Report', 'unittest'); // OU specific. We use the _nonproject folder for stuff we want to // keep in CVS, but which is not really relevant. It does no harm @@ -88,6 +89,7 @@ if (!is_null($path)) { $title = get_string('moodleunittests', $langfile, $displaypath); } print_heading($title); + set_time_limit(300); // 5 mins $test->run($reporter); } @@ -104,6 +106,11 @@ echo ''; echo '
    '; echo '

    '; print_checkbox('showpasses', 1, $showpasses, get_string('showpasses', $langfile)); echo '

    '; echo '

    '; print_checkbox('showsearch', 1, $showsearch, get_string('showsearch', $langfile)); echo '

    '; +if (moodle_coverage_recorder::can_run_codecoverage()) { + echo '

    '; print_checkbox('codecoverage', 1, $codecoverage, get_string('codecoverageanalysis', 'simpletest')); echo '

    '; +} else { + echo '

    '; print_string('codecoveragedisabled', 'simpletest'); echo '

    '; +} echo '

    '; echo ' '; echo '';