mirror of
				https://github.com/alchemy-fr/Phraseanet.git
				synced 2025-10-26 11:23:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| class PhraseanetPHPUnitListener implements PHPUnit_Framework_TestListener
 | |
| {
 | |
|     private static $logEcho = true;
 | |
|     private static $logSQL = false;
 | |
|     private static $data = [];
 | |
|     private static $conn;
 | |
|     private static $booted = false;
 | |
| 
 | |
|     public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
 | |
|     {
 | |
|         static::$data[self::generateName($test)]['status'] = 'error';
 | |
|     }
 | |
| 
 | |
|     public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
 | |
|     {
 | |
|         static::$data[self::generateName($test)]['status'] = 'fail';
 | |
|     }
 | |
| 
 | |
|     public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
 | |
|     {
 | |
|         static::$data[self::generateName($test)]['status'] = 'incomplete';
 | |
|     }
 | |
| 
 | |
|     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
 | |
|     {
 | |
|         static::$data[self::generateName($test)]['status'] = 'skipped';
 | |
|     }
 | |
| 
 | |
|     public static function getCsv()
 | |
|     {
 | |
|         return static::$data;
 | |
|     }
 | |
| 
 | |
|     public static function getDurationByTest()
 | |
|     {
 | |
|         return static::$durationByTest;
 | |
|     }
 | |
| 
 | |
|     public function startTest(PHPUnit_Framework_Test $test)
 | |
|     {
 | |
|         static::$data[self::generateName($test)] = [
 | |
|             'duration' => microtime(true),
 | |
|             'test'     => get_class($test),
 | |
|             'name'     => $test->getName(),
 | |
|             'status'   => 'ok'
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     public function endTest(PHPUnit_Framework_Test $test, $time)
 | |
|     {
 | |
|         $name = self::generateName($test);
 | |
|         static::$data[$name]['duration'] = microtime(true) - static::$data[$name]['duration'];
 | |
| 
 | |
|         if (self::$logSQL) {
 | |
|             self::$conn->insert('tests', static::$data[self::generateName($test)]);
 | |
|         }
 | |
|         if (self::$logEcho) {
 | |
|             echo "$name (".round(static::$data[$name]['duration'], 2)."s)\n";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
 | |
|     {
 | |
|         if (!class_exists($suite->getName())) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         if (!self::$booted && self::$logSQL) {
 | |
|             self::$booted = true;
 | |
|             $app = new \Alchemy\Phrasea\Application(\Alchemy\Phrasea\Application::ENV_TEST);
 | |
|             self::$conn = $app['dbal.provider']($app['db.info']($app['db.appbox.info']));
 | |
|             unset($app);
 | |
|             self::$conn->connect();
 | |
|             $schema = self::$conn->getSchemaManager();
 | |
| 
 | |
|             $tableTest = new \Doctrine\DBAL\Schema\Table("tests");
 | |
|             /* Add some columns to the table */
 | |
|             $tableTest->addColumn("id", "integer", array("unsigned" => true, "autoincrement" => true));
 | |
|             $tableTest->addColumn("test", "string", array("length" => 256));
 | |
|             $tableTest->addColumn("name", "string", array("length" => 256));
 | |
|             $tableTest->addColumn("status", "string", array("length" => 16));
 | |
|             $tableTest->addColumn("duration", "float");
 | |
|             /* Add a primary key */
 | |
|             $tableTest->setPrimaryKey(array("id"));
 | |
|             $schema->dropAndCreateTable($tableTest);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
 | |
|     {
 | |
|         if (!class_exists($suite->getName())) {
 | |
|             return;
 | |
|         }
 | |
|      }
 | |
| 
 | |
|     private static function generateName(PHPUnit_Framework_Test $test)
 | |
|     {
 | |
|         $reflect = new \ReflectionClass($test);
 | |
| 
 | |
|         return $reflect->getShortName() . '::' . $test->getName();
 | |
|     }
 | |
| }
 | 
