run.php 13.3 KB
Newer Older
1 2
<?php

zYne's avatar
zYne committed
3
ini_set('max_execution_time', 900);
4

zYne's avatar
zYne committed
5
function autoload($class) {
zYne's avatar
zYne committed
6
    if(strpos($class, 'TestCase') === false) {
zYne's avatar
zYne committed
7
        return false;
zYne's avatar
zYne committed
8
    }
9

zYne's avatar
zYne committed
10 11
    $e      = explode('_', $class);
    $count  = count($e);
12

zYne's avatar
zYne committed
13 14 15 16 17
    $prefix = array_shift($e);

    if ($prefix !== 'Doctrine') {
        return false;
    }
18

zYne's avatar
zYne committed
19
    $dir    = array_shift($e);
20

zYne's avatar
zYne committed
21
    $file   = $dir . '_' . substr(implode('_', $e), 0, -(strlen('_TestCase'))) . 'TestCase.php';
22

zYne's avatar
zYne committed
23 24 25 26 27
    if($count > 3) {
        $file   = str_replace('_', DIRECTORY_SEPARATOR, $file);
    } else {
        $file   = str_replace('_', '', $file);
    }
zYne's avatar
zYne committed
28

zYne's avatar
zYne committed
29
    // create a test case file if it doesn't exist
30

zYne's avatar
zYne committed
31
    if ( ! file_exists($file)) {
zYne's avatar
zYne committed
32 33
        $contents = file_get_contents('template.tpl');
        $contents = sprintf($contents, $class, $class);
zYne's avatar
zYne committed
34

zYne's avatar
zYne committed
35 36 37
        if( ! file_exists($dir)) {
            mkdir($dir, 0777);
        }
38

zYne's avatar
zYne committed
39 40 41
        file_put_contents($file, $contents);
    }
    require_once($file);
pookey's avatar
pookey committed
42

zYne's avatar
zYne committed
43 44
    return true;
}
45

pookey's avatar
pookey committed
46
// include doctrine, and register it's autoloader
zYne's avatar
zYne committed
47 48
require_once dirname(__FILE__) . '/../lib/Doctrine.php';
spl_autoload_register(array('Doctrine', 'autoload'));
pookey's avatar
pookey committed
49 50

// register the autoloader function above
zYne's avatar
zYne committed
51
spl_autoload_register('autoload');
52

zYne's avatar
zYne committed
53
require_once dirname(__FILE__) . '/../models/location.php';
zYne's avatar
zYne committed
54
require_once dirname(__FILE__) . '/../models/Blog.php';
pookey's avatar
pookey committed
55
require_once dirname(__FILE__) . '/classes.php';
zYne's avatar
zYne committed
56

zYne's avatar
zYne committed
57
require_once dirname(__FILE__) . '/Test.php';
pookey's avatar
pookey committed
58
require_once dirname(__FILE__) . '/UnitTestCase.php';
zYne's avatar
zYne committed
59

60
error_reporting(E_ALL | E_STRICT);
zYne's avatar
zYne committed
61

zYne's avatar
zYne committed
62
$test = new GroupTest('Doctrine Framework Unit Tests');
zYne's avatar
zYne committed
63

zYne's avatar
zYne committed
64 65


zYne's avatar
zYne committed
66
// DATABASE ABSTRACTION tests
67 68

// Temp tests
zYne's avatar
zYne committed
69
/**
zYne's avatar
zYne committed
70

71
$test->addTestCase(new Doctrine_Ticket330_TestCase());
zYne's avatar
zYne committed
72
    */
zYne's avatar
zYne committed
73
/**  */
74

75
$test->addTestCase(new Doctrine_TicketNjero_TestCase());
76 77


zYne's avatar
zYne committed
78
// Connection drivers (not yet fully tested)
zYne's avatar
zYne committed
79 80 81
$test->addTestCase(new Doctrine_Connection_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Connection_Oracle_TestCase());
$test->addTestCase(new Doctrine_Connection_Sqlite_TestCase());
zYne's avatar
zYne committed
82 83 84 85
$test->addTestCase(new Doctrine_Connection_Mssql_TestCase()); 
$test->addTestCase(new Doctrine_Connection_Mysql_TestCase());
$test->addTestCase(new Doctrine_Connection_Firebird_TestCase());
$test->addTestCase(new Doctrine_Connection_Informix_TestCase());
zYne's avatar
zYne committed
86

zYne's avatar
zYne committed
87 88 89 90 91 92 93 94 95
// Transaction module (FULLY TESTED)
$test->addTestCase(new Doctrine_Transaction_TestCase());
$test->addTestCase(new Doctrine_Transaction_Firebird_TestCase());
$test->addTestCase(new Doctrine_Transaction_Informix_TestCase());
$test->addTestCase(new Doctrine_Transaction_Mysql_TestCase());
$test->addTestCase(new Doctrine_Transaction_Mssql_TestCase());
$test->addTestCase(new Doctrine_Transaction_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Transaction_Oracle_TestCase());
$test->addTestCase(new Doctrine_Transaction_Sqlite_TestCase());
96

zYne's avatar
zYne committed
97 98 99 100 101 102 103 104 105 106
// DataDict module (FULLY TESTED)
$test->addTestCase(new Doctrine_DataDict_TestCase());
$test->addTestCase(new Doctrine_DataDict_Firebird_TestCase());
$test->addTestCase(new Doctrine_DataDict_Informix_TestCase());
$test->addTestCase(new Doctrine_DataDict_Mysql_TestCase());
$test->addTestCase(new Doctrine_DataDict_Mssql_TestCase());
$test->addTestCase(new Doctrine_DataDict_Pgsql_TestCase());
$test->addTestCase(new Doctrine_DataDict_Oracle_TestCase());
$test->addTestCase(new Doctrine_DataDict_Sqlite_TestCase());

zYne's avatar
zYne committed
107 108
// Sequence module (not yet fully tested)
$test->addTestCase(new Doctrine_Sequence_TestCase());
zYne's avatar
zYne committed
109 110 111 112 113 114 115
$test->addTestCase(new Doctrine_Sequence_Firebird_TestCase());
$test->addTestCase(new Doctrine_Sequence_Informix_TestCase());
$test->addTestCase(new Doctrine_Sequence_Mysql_TestCase());
$test->addTestCase(new Doctrine_Sequence_Mssql_TestCase());
$test->addTestCase(new Doctrine_Sequence_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Sequence_Oracle_TestCase());
$test->addTestCase(new Doctrine_Sequence_Sqlite_TestCase());
zYne's avatar
zYne committed
116

zYne's avatar
zYne committed
117
// Export module (not yet fully tested)
zYne's avatar
zYne committed
118

zYne's avatar
zYne committed
119

zYne's avatar
zYne committed
120
//$test->addTestCase(new Doctrine_Export_Reporter_TestCase());
zYne's avatar
zYne committed
121 122
$test->addTestCase(new Doctrine_Export_Firebird_TestCase());
$test->addTestCase(new Doctrine_Export_Informix_TestCase());
zYne's avatar
zYne committed
123
$test->addTestCase(new Doctrine_Export_TestCase());
zYne's avatar
zYne committed
124 125 126
$test->addTestCase(new Doctrine_Export_Mssql_TestCase());
$test->addTestCase(new Doctrine_Export_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Export_Oracle_TestCase());
zYne's avatar
zYne committed
127
$test->addTestCase(new Doctrine_Export_Record_TestCase());
zYne's avatar
zYne committed
128
$test->addTestCase(new Doctrine_Export_Mysql_TestCase());
zYne's avatar
zYne committed
129

zYne's avatar
zYne committed
130
$test->addTestCase(new Doctrine_Export_Sqlite_TestCase());
zYne's avatar
zYne committed
131

zYne's avatar
zYne committed
132
//$test->addTestCase(new Doctrine_CascadingDelete_TestCase());
zYne's avatar
zYne committed
133

zYne's avatar
zYne committed
134
// Import module (not yet fully tested)
zYne's avatar
zYne committed
135
//$test->addTestCase(new Doctrine_Import_TestCase());
136 137 138 139 140 141 142
$test->addTestCase(new Doctrine_Import_Firebird_TestCase());
$test->addTestCase(new Doctrine_Import_Informix_TestCase());
$test->addTestCase(new Doctrine_Import_Mysql_TestCase());
$test->addTestCase(new Doctrine_Import_Mssql_TestCase());
$test->addTestCase(new Doctrine_Import_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Import_Oracle_TestCase());
$test->addTestCase(new Doctrine_Import_Sqlite_TestCase());
zYne's avatar
zYne committed
143

zYne's avatar
zYne committed
144

zYne's avatar
zYne committed
145
// Expression module (not yet fully tested)
zYne's avatar
zYne committed
146
$test->addTestCase(new Doctrine_Expression_TestCase());
147
$test->addTestCase(new Doctrine_Expression_Driver_TestCase());
zYne's avatar
zYne committed
148 149 150 151 152 153 154
$test->addTestCase(new Doctrine_Expression_Firebird_TestCase());
$test->addTestCase(new Doctrine_Expression_Informix_TestCase());
$test->addTestCase(new Doctrine_Expression_Mysql_TestCase());
$test->addTestCase(new Doctrine_Expression_Mssql_TestCase());
$test->addTestCase(new Doctrine_Expression_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Expression_Oracle_TestCase());
$test->addTestCase(new Doctrine_Expression_Sqlite_TestCase());
zYne's avatar
zYne committed
155

zYne's avatar
zYne committed
156
// Core
zYne's avatar
zYne committed
157

zYne's avatar
zYne committed
158 159
$test->addTestCase(new Doctrine_Access_TestCase());
//$test->addTestCase(new Doctrine_Configurable_TestCase());
zYne's avatar
zYne committed
160

zYne's avatar
zYne committed
161
$test->addTestCase(new Doctrine_Manager_TestCase());
zYne's avatar
zYne committed
162

zYne's avatar
zYne committed
163
$test->addTestCase(new Doctrine_Connection_TestCase());
zYne's avatar
zYne committed
164

zYne's avatar
zYne committed
165
$test->addTestCase(new Doctrine_Table_TestCase());
zYne's avatar
zYne committed
166

zYne's avatar
zYne committed
167

zYne's avatar
zYne committed
168
$test->addTestCase(new Doctrine_UnitOfWork_TestCase());
zYne's avatar
zYne committed
169

zYne's avatar
zYne committed
170
//$test->addTestCase(new Doctrine_Collection_TestCase());
zYne's avatar
zYne committed
171
// Relation handling
zYne's avatar
zYne committed
172 173

$test->addTestCase(new Doctrine_TreeStructure_TestCase());
zYne's avatar
zYne committed
174
$test->addTestCase(new Doctrine_Relation_TestCase());
zYne's avatar
zYne committed
175

zYne's avatar
zYne committed
176 177
//$test->addTestCase(new Doctrine_Relation_Access_TestCase());
//$test->addTestCase(new Doctrine_Relation_ManyToMany_TestCase());
zYne's avatar
zYne committed
178

179 180
$test->addTestCase(new Doctrine_Relation_ManyToMany2_TestCase());

181 182 183

$test->addTestCase(new Doctrine_Relation_OneToMany_TestCase());

184
$test->addTestCase(new Doctrine_Relation_Nest_TestCase());
zYne's avatar
zYne committed
185

zYne's avatar
zYne committed
186
$test->addTestCase(new Doctrine_Relation_OneToOne_TestCase());
zYne's avatar
zYne committed
187 188

$test->addTestCase(new Doctrine_Relation_Parser_TestCase());
zYne's avatar
zYne committed
189

zYne's avatar
zYne committed
190 191
// Datatypes
$test->addTestCase(new Doctrine_Enum_TestCase());
192

zYne's avatar
zYne committed
193
$test->addTestCase(new Doctrine_Boolean_TestCase());
194

zYne's avatar
zYne committed
195
// Utility components
zYne's avatar
zYne committed
196

zYne's avatar
zYne committed
197 198
//$test->addTestCase(new Doctrine_PessimisticLocking_TestCase());

zYne's avatar
zYne committed
199

zYne's avatar
zYne committed
200

zYne's avatar
zYne committed
201
$test->addTestCase(new Doctrine_View_TestCase());
zYne's avatar
zYne committed
202

zYne's avatar
zYne committed
203
$test->addTestCase(new Doctrine_Validator_TestCase());
204

zYne's avatar
zYne committed
205
$test->addTestCase(new Doctrine_Hook_TestCase());
206

zYne's avatar
zYne committed
207
// Db component
zYne's avatar
zYne committed
208
$test->addTestCase(new Doctrine_Db_TestCase());
209
$test->addTestCase(new Doctrine_Connection_Profiler_TestCase());
210

211

zYne's avatar
zYne committed
212 213 214 215
// Eventlisteners
$test->addTestCase(new Doctrine_EventListener_TestCase());
$test->addTestCase(new Doctrine_EventListener_Chain_TestCase());

zYne's avatar
zYne committed
216

zYne's avatar
zYne committed
217 218

$test->addTestCase(new Doctrine_Record_Filter_TestCase());
zYne's avatar
zYne committed
219

zYne's avatar
zYne committed
220
$test->addTestCase(new Doctrine_SchemaTestCase());
zYne's avatar
zYne committed
221

zYne's avatar
zYne committed
222 223
$test->addTestCase(new Doctrine_Query_Condition_TestCase());

zYne's avatar
zYne committed
224
$test->addTestCase(new Doctrine_CustomPrimaryKey_TestCase());
225

zYne's avatar
zYne committed
226
$test->addTestCase(new Doctrine_CustomResultSetOrder_TestCase());
zYne's avatar
zYne committed
227

zYne's avatar
zYne committed
228
// Query tests
zYne's avatar
zYne committed
229

230
$test->addTestCase(new Doctrine_Query_MultiJoin_TestCase());
zYne's avatar
zYne committed
231

romanb's avatar
romanb committed
232 233
$test->addTestCase(new Doctrine_Query_MultiJoin2_TestCase());

234
$test->addTestCase(new Doctrine_Query_ReferenceModel_TestCase());
zYne's avatar
zYne committed
235

236
$test->addTestCase(new Doctrine_Query_ComponentAlias_TestCase());
zYne's avatar
zYne committed
237

zYne's avatar
zYne committed
238

zYne's avatar
zYne committed
239

zYne's avatar
zYne committed
240
$test->addTestCase(new Doctrine_Query_ShortAliases_TestCase());
zYne's avatar
zYne committed
241

zYne's avatar
zYne committed
242
$test->addTestCase(new Doctrine_Query_Expression_TestCase());
zYne's avatar
zYne committed
243

244
$test->addTestCase(new Doctrine_ColumnAggregationInheritance_TestCase());
zYne's avatar
zYne committed
245

zYne's avatar
zYne committed
246
$test->addTestCase(new Doctrine_ColumnAlias_TestCase());
zYne's avatar
zYne committed
247

248
$test->addTestCase(new Doctrine_Query_OneToOneFetching_TestCase());
zYne's avatar
zYne committed
249

zYne's avatar
zYne committed
250

zYne's avatar
zYne committed
251

zYne's avatar
zYne committed
252
$test->addTestCase(new Doctrine_Query_Check_TestCase());
zYne's avatar
zYne committed
253

zYne's avatar
zYne committed
254 255 256
$test->addTestCase(new Doctrine_Query_Limit_TestCase());


257

zYne's avatar
zYne committed
258
//$test->addTestCase(new Doctrine_Query_IdentifierQuoting_TestCase());
zYne's avatar
zYne committed
259 260 261 262 263
$test->addTestCase(new Doctrine_Query_Update_TestCase());
$test->addTestCase(new Doctrine_Query_Delete_TestCase());

$test->addTestCase(new Doctrine_Query_Join_TestCase());

264 265
$test->addTestCase(new Doctrine_Record_TestCase());

zYne's avatar
zYne committed
266 267 268 269 270
$test->addTestCase(new Doctrine_Query_Having_TestCase());

$test->addTestCase(new Doctrine_RawSql_TestCase());

$test->addTestCase(new Doctrine_Query_Orderby_TestCase());
271

zYne's avatar
zYne committed
272 273
$test->addTestCase(new Doctrine_Query_Subquery_TestCase());

zYne's avatar
zYne committed
274 275 276 277
$test->addTestCase(new Doctrine_Query_Driver_TestCase());

$test->addTestCase(new Doctrine_Record_Hook_TestCase());

zYne's avatar
zYne committed
278 279
$test->addTestCase(new Doctrine_Query_AggregateValue_TestCase());

zYne's avatar
zYne committed
280

zYne's avatar
zYne committed
281 282


zYne's avatar
zYne committed
283 284
$test->addTestCase(new Doctrine_NewCore_TestCase());

meus's avatar
meus committed
285
//$test->addTestCase(new Doctrine_Ticket337_TestCase());
286

zYne's avatar
zYne committed
287
// Record
288

zYne's avatar
zYne committed
289
$test->addTestCase(new Doctrine_Record_State_TestCase());
290
$test->addTestCase(new Doctrine_Record_SerializeUnserialize_TestCase());
zYne's avatar
zYne committed
291

292 293
// This test used to segfault php because of infinite recursion in Connection/UnitOfWork
$test->addTestCase(new Doctrine_Record_Lock_TestCase());
zYne's avatar
zYne committed
294 295

$test->addTestCase(new Doctrine_Tokenizer_TestCase());
zYne's avatar
zYne committed
296

zYne's avatar
zYne committed
297 298 299 300

$test->addTestCase(new Doctrine_Collection_Snapshot_TestCase());

$test->addTestCase(new Doctrine_Hydrate_FetchMode_TestCase());
zYne's avatar
zYne committed
301

zYne's avatar
zYne committed
302 303 304 305 306
$test->addTestCase(new Doctrine_Query_Where_TestCase());

$test->addTestCase(new Doctrine_Query_From_TestCase());

$test->addTestCase(new Doctrine_Query_Select_TestCase());
307

308 309
$test->addTestCase(new Doctrine_Query_JoinCondition_TestCase());

310
$test->addTestCase(new Doctrine_Query_MultipleAggregateValue_TestCase());
zYne's avatar
zYne committed
311 312

$test->addTestCase(new Doctrine_Query_TestCase());
zYne's avatar
zYne committed
313

314 315 316 317
$test->addTestCase(new Doctrine_Ticket364_TestCase());

$test->addTestCase(new Doctrine_Query_MysqlSubquery_TestCase());

zYne's avatar
zYne committed
318 319
$test->addTestCase(new Doctrine_Query_PgsqlSubquery_TestCase());

Jonathan.Wage's avatar
Jonathan.Wage committed
320
$test->addTestCase(new Doctrine_Query_MysqlSubqueryHaving_TestCase());
Jonathan.Wage's avatar
Jonathan.Wage committed
321 322

$test->addTestCase(new Doctrine_Record_ZeroValues_TestCase());
zYne's avatar
zYne committed
323 324 325 326

$test->addTestCase(new Doctrine_Query_Cache_TestCase());

$test->addTestCase(new Doctrine_Cache_Apc_TestCase());
327 328

$test->addTestCase(new Doctrine_Query_SelectExpression_TestCase());
zYne's avatar
zYne committed
329
                                                        /**
zYne's avatar
zYne committed
330
$test->addTestCase(new Doctrine_Cache_Memcache_TestCase());
Jonathan.Wage's avatar
Jonathan.Wage committed
331

zYne's avatar
zYne committed
332
$test->addTestCase(new Doctrine_Cache_Sqlite_TestCase());
Jonathan.Wage's avatar
Jonathan.Wage committed
333 334 335

$test->addTestCase(new Doctrine_Record_SaveBlankRecord_TestCase());

zYne's avatar
zYne committed
336
$test->addTestCase(new Doctrine_Template_TestCase());
zYne's avatar
zYne committed
337

338 339 340
$test->addTestCase(new Doctrine_Import_Builder_TestCase());

$test->addTestCase(new Doctrine_Search_TestCase());
zYne's avatar
zYne committed
341
*/
zYne's avatar
zYne committed
342
//$test->addTestCase(new Doctrine_IntegrityAction_TestCase());
zYne's avatar
zYne committed
343

zYne's avatar
zYne committed
344 345
//$test->addTestCase(new Doctrine_AuditLog_TestCase());

346
$test->addTestCase(new Doctrine_NestedSet_SingleRoot_TestCase());
romanb's avatar
romanb committed
347

zYne's avatar
zYne committed
348
// Cache tests
349
//$test->addTestCase(new Doctrine_Cache_Query_SqliteTestCase());
350 351
//$test->addTestCase(new Doctrine_Cache_FileTestCase());
//$test->addTestCase(new Doctrine_Cache_SqliteTestCase());
zYne's avatar
zYne committed
352 353 354 355
//$test->addTestCase(new Doctrine_Collection_Offset_TestCase());
//$test->addTestCase(new Doctrine_BatchIterator_TestCase());
//$test->addTestCase(new Doctrine_Hydrate_TestCase());
//$test->addTestCase(new Doctrine_Cache_TestCase());
zYne's avatar
zYne committed
356

357

meus's avatar
meus committed
358 359 360 361 362 363
class CliReporter extends HtmlReporter{
    public function paintHeader(){
        echo "Doctrine UnitTests\n";
        echo "====================\n";
    }
    public function paintFooter(){
meus's avatar
meus committed
364
        echo "\n";
meus's avatar
meus committed
365 366 367 368 369 370 371 372 373 374
 	    foreach ($this->_test->getMessages() as $message) {
    	   print $message . "\n";
    	}
        echo "====================\n";
        print "Tested: " . $this->_test->getTestCaseCount() . ' test cases' ."\n";
        print "Successes: " . $this->_test->getPassCount() . " passes. \n";
        print "Failures: " . $this->_test->getFailCount() . " fails. \n";
    }
}

375
class MyReporter extends HtmlReporter {
meus's avatar
meus committed
376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392
    public function paintHeader() {
    ?>
<html>
<head>
  <title>Doctrine Unit Tests</title>
  <style>
.fail { color: red; } pre { background-color: lightgray; }
  </style>
</head>

<body>

<h1>Doctrine Unit Tests</h1>
<?php

    }

393 394
    public function paintFooter()
    {
meus's avatar
meus committed
395

zYne's avatar
zYne committed
396 397 398 399 400 401
    	print "<pre>";
    	foreach ($this->_test->getMessages() as $message) {
    	   print $message . "\n";
    	}
    	print "</pre>";
        $colour = ($this->_test->getFailCount() > 0 ? "red" : "green");
402 403 404
        print "<div style=\"";
        print "padding: 8px; margin-top: 1em; background-color: $colour; color: white;";
        print "\">";
zYne's avatar
zYne committed
405
        print $this->_test->getTestCaseCount() . ' test cases';
406
        print " test cases complete:\n";
zYne's avatar
zYne committed
407 408
        print "<strong>" . $this->_test->getPassCount() . "</strong> passes, ";
        print "<strong>" . $this->_test->getFailCount() . "</strong> fails and ";
409 410 411 412 413 414
        print "</div>\n";
    }
}


?>
zYne's avatar
zYne committed
415
<?php
meus's avatar
meus committed
416 417 418 419 420
if(PHP_SAPI === "cli"){
    $reporter = new CliReporter();
}else{
   $reporter = new MyReporter();
}
zYne's avatar
zYne committed
421

422 423 424 425 426 427 428 429 430 431 432 433
$argv = $_SERVER["argv"];
if(isset($argv[1]) && $argv[1] == "coverage"){
    xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
    $test->run($reporter);
    $result["path"] = Doctrine::getPath() . DIRECTORY_SEPARATOR;
    $result["coverage"] = xdebug_get_code_coverage();
    xdebug_stop_code_coverage();
    file_put_contents("coverage.txt", serialize($result));
}else{
    $test->run($reporter);
}