-
Notifications
You must be signed in to change notification settings - Fork 0
/
LintYiiUnitTest.php
103 lines (89 loc) · 3.4 KB
/
LintYiiUnitTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
class LintYiiUnitTest extends CTestCase
{
public $matchStringNoErrors = 'No syntax errors detected';
public $outputErrorMsgPrefix = 'Syntax Errors Found In ';
public function setup()
{
$declaredClasses = get_declared_classes();
parent::setup();
}
public function testControllersForErrors()
{
$controllers = $this->getClassList('controller');
foreach($controllers as $controller)
{
$results = $this->checkClassForErrors($controller);
$this->assertTrue(strpos($results[0], $this->matchStringNoErrors) !== false, $this->outputErrorMsgPrefix . basename($controller . ".php") . ":\n" . implode("\n", $results) );
}
}
public function testModelsForErrors()
{
$models = $this->getClassList('model');
foreach($models as $model)
{
$results = $this->checkClassForErrors($model);
$this->assertTrue(strpos($results[0], $this->matchStringNoErrors) !== false, $this->outputErrorMsgPrefix . basename($model . ".php") . ":\n" . implode("\n", $results) );
}
}
public function testComponentsForErrors()
{
$components = $this->getClassList('component');
foreach (glob(Yii::getPathOfAlias("application.components") . "/*" . ".php") as $component)
{
$results = $this->checkClassForErrors($component);
$this->assertTrue(strpos($results[0], $this->matchStringNoErrors) !== false, $this->outputErrorMsgPrefix . basename($component . ".php") . ":\n" . implode("\n", $results) );
}
}
/*
public function testBehaviorsForErrors()
{
$behaviors = $this->getClassList('behavior');
foreach($behaviors as $behavior)
{
$results = $this->checkClassForErrors($behavior);
$this->assertTrue(strpos($results[0], $this->matchStringNoErrors) !== false, $this->outputErrorMsgPrefix . basename($behavior . ".php") . ":\n" . implode("\n", $results) );
}
}
*/
public function testCommandsForErrors()
{
$commands = $this->getClassList('command');
foreach($commands as $command)
{
$results = $this->checkClassForErrors($command);
$this->assertTrue(strpos($results[0], $this->matchStringNoErrors) !== false, $this->outputErrorMsgPrefix . basename($command . ".php") . ":\n" . implode("\n", $results) );
}
}
public function testViewsForErrors()
{
exec('pwd', $path);
$path = explode('protected/', $path[0]);
$viewsPath = $path[0] . 'protected/views';
exec("ls $viewsPath", $viewFolders);
foreach($viewFolders as $viewFolder)
{
exec("ls $viewsPath/$viewFolder/ | grep php", $views);
foreach($views as $view)
{
$results = $this->checkClassForErrors("$viewsPath/$viewFolder/$view");
$this->assertTrue(strpos($results[0], $this->matchStringNoErrors) !== false, $this->outputErrorMsgPrefix . "$viewsPath/$viewFolder/$view" . ":\n" . implode("\n", $results) );
}
unset($views);
}
}
public function checkClassForErrors($classPath)
{
exec("php -l $classPath", $results);
return $results;
}
public function getClassList($type)
{
$classList = array();
foreach (glob(Yii::getPathOfAlias("application.$type" . 's') . "/*" . ucfirst($type) . ".php") as $class)
{
$classList[] = $class;
}
return $classList;
}
}