]> git.joonet.de Git - adminer.git/commitdiff
Save coverage to temporary file
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 28 Jul 2009 13:26:51 +0000 (13:26 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 28 Jul 2009 13:26:51 +0000 (13:26 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@927 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/include/coverage.inc.php
coverage.php
tests/0-login.html
tests/1-create-database.html

index 1883c66a37f157844efb63c0087452ee40f34e84..f2c8e7179bf105fdf28ab3b988bc3a3bba12dde7 100644 (file)
@@ -1,23 +1,16 @@
 <?php
 // coverage is used in tests and removed in compilation
-if (extension_loaded("xdebug") && function_exists('mysql_query') && mysql_query('SELECT 1 FROM adminer_test.coverage LIMIT 0')) {
+if (extension_loaded("xdebug") && file_exists(sys_get_temp_dir() . "/adminer_coverage.ser")) {
        function save_coverage() {
-               $coverage = array();
-               $result = mysql_query("SELECT filename, coverage_serialize FROM adminer_test.coverage");
-               while ($row = mysql_fetch_assoc($result)) {
-                       $coverage[$row["filename"]] = unserialize($row["coverage_serialize"]);
-               }
-               mysql_free_result($result);
+               $coverage_filename = sys_get_temp_dir() . "/adminer_coverage.ser";
+               $coverage = unserialize(file_get_contents($coverage_filename));
                foreach (xdebug_get_code_coverage() as $filename => $lines) {
                        foreach ($lines as $l => $val) {
                                if (!$coverage[$filename][$l] || $val > 0) {
                                        $coverage[$filename][$l] = $val;
                                }
                        }
-                       mysql_query("
-                               REPLACE adminer_test.coverage (filename, coverage_serialize)
-                               VALUES ('" . mysql_real_escape_string($filename) . "', '" . mysql_real_escape_string(serialize($coverage[$filename])) . "')
-                       ");
+                       file_put_contents($coverage_filename, serialize($coverage));
                }
        }
        xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
index 794946dfe0034698a0e6e4a4e5460e46032930a4..ac2b65769558efa0ef8391c7c33e9f0991c1f5ea 100644 (file)
@@ -22,28 +22,23 @@ function xhtml_open_tags($s) {
        return $return;
 }
 
+$coverage_filename = sys_get_temp_dir() . "/adminer_coverage.ser";
 if (!extension_loaded("xdebug")) {
        echo "<p class='error'>Xdebug has to be enabled.</p>\n";
 } elseif ($_GET["coverage"] === "0") {
-       mysql_query("DROP TABLE IF EXISTS adminer_test.coverage");
-       mysql_query("CREATE TABLE adminer_test.coverage (
-               filename varchar(100) NOT NULL,
-               coverage_serialize mediumtext NOT NULL,
-               PRIMARY KEY (filename)
-       )");
+       file_put_contents($coverage_filename, serialize(array()));
        echo "<p class='message'>Coverage started.</p>\n";
 } elseif (preg_match('~^(adminer|editor)/(include/)?[-_.a-z0-9]+$~i', $_GET["coverage"])) {
        // highlight single file
        $filename = $_GET["coverage"];
-       $row = mysql_fetch_row(mysql_query("SELECT coverage_serialize FROM adminer_test.coverage WHERE filename = '" . mysql_real_escape_string(realpath($filename)) . "'"));
-       $cov = ($row ? unserialize($row[0]) : array());
+       $coverage = (file_exists($coverage_filename) ? unserialize(file_get_contents($coverage_filename)) : array());
        $file = explode("<br />", highlight_file($filename, true));
        unset($prev_color);
        $s = "";
        for ($l=0; $l <= count($file); $l++) {
                $line = $file[$l];
                $color = "#C0FFC0"; // tested
-               switch ($cov[$l+1]) {
+               switch ($coverage[realpath($filename)][$l+1]) {
                        case -1: $color = "#FFC0C0"; break; // untested
                        case -2: $color = "Silver"; break; // dead code
                        case null: $color = ""; break; // not executable
@@ -64,21 +59,16 @@ if (!extension_loaded("xdebug")) {
                $s .= "$line<br />\n";
        }
 } else {
-       // display list of files
-       $result = mysql_query("SELECT filename, coverage_serialize FROM adminer_test.coverage");
-       if ($result) {
+       if (file_exists($coverage_filename)) {
+               // display list of files
+               $coverage = unserialize(file_get_contents($coverage_filename));
                echo "<table border='1' cellspacing='0'>\n";
-               $coverage = array();
-               while ($row = mysql_fetch_assoc($result)) {
-                       $coverage[$row["filename"]] = unserialize($row["coverage_serialize"]);
-               }
-               mysql_free_result($result);
                foreach (array_merge(glob("adminer/*.php"), glob("adminer/include/*.php"), glob("editor/*.php"), glob("editor/include/*.php")) as $filename) {
                        $cov = $coverage[realpath($filename)];
                        $ratio = 0;
                        if (is_array($cov)) {
                                $values = array_count_values($cov);
-                               $ratio = round(100 - 100 * $values[-1] / count($cov));
+                               $ratio = round(100 - 100 * $values[-1] / (count($cov) - $values[-2]));
                        }
                        echo "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><td><a href='coverage.php?coverage=$filename'>$filename</a></td></tr>\n";
                }
index 8e741f7386f5a43f7a94aa36c047f640543dc5ec..8cd77a45acb4a97402fccf759264f56f44e17c6b 100644 (file)
 <thead>
 <tr><td rowspan="1" colspan="3">Create database</td></tr>
 </thead><tbody>
+<tr>
+       <td>open</td>
+       <td>/adminer/coverage.php?coverage=0</td>
+       <td></td>
+</tr>
 <tr>
        <td>open</td>
        <td>/adminer/adminer/?lang=en&amp;username=</td>
index f44f78514b44c9a466a4330f615f58a99532b26f..5ff2dc9833c3f4a5ec637410e3578cf09cbfdc57 100644 (file)
        <td>Database has been created.</td>
        <td></td>
 </tr>
-<tr>
-       <td>open</td>
-       <td>/adminer/coverage.php?coverage=0</td>
-       <td></td>
-</tr>
 
 </tbody></table>
 </body>