getObjectSource('bootstrap.php');
if($oSourceBootstrap->exist()==false){
$oSourceBootstrap->setPattern(null,null);
$oSourceBootstrap->save();
}
/*SOURCE*/
}
private function getViewFull($sView){
$oTpl= $this->getView($sView);
$oTpl->tModelFile=$this->getListModel();
$oTpl->tModuleFile=$this->getListModule();
$oTpl->msg=$this->msg;
$oTpl->detail=$this->detail;
$oTpl->tError=$this->tError;
return $oTpl;
}
public function _index(){
$sAction=_root::getParam('saction');
if(in_array($sAction,array('model','module','launch'))){
$oTpl=$this->$sAction();
}else{
$oTpl= $this->getViewFull('index');
}
return $oTpl;
}
public function model(){
$this->processModel();
$sFilename=_root::getParam('file');
$sClass=substr($sFilename,0,-4);
require_once(_root::getConfigVar('path.generation')._root::getParam('id').'/model/'.$sFilename);
$tBlackListMethod=get_class_methods('abstract_model');
$tBlackListMethod[]='getInstance';
$tMethod=array();
$tMethod0=get_class_methods($sClass);
foreach($tMethod0 as $sMethod){
if(!in_array($sMethod,$tBlackListMethod)){
$tMethod[]=$sMethod;
}
}
$oTpl= $this->getViewFull('model');
$oTpl->tMethod=$tMethod;
return $oTpl;
}
private function processModel(){
if(_root::getRequest()->isPost()==false){
return null;
}
$this->installBootstrap();
$sFilename=_root::getParam('file');
$sClass=substr($sFilename,0,-4);
$sRow=str_replace('model_', 'row_', $sClass);
$this->msg=tr('testUnitGeneres');
$tDetail=array();
$tDetail[]=trR('CreationDuFichierVAR',array('#FICHIER#'=>'tests/bootstrap.php'));
$tDetail[]=trR('CreationDuFichierVAR',array('#FICHIER#'=>'tests/'.$sClass.'Test.php'));
$tMethod=array();
if(_root::getParam('tMethod')){
$tMethod=_root::getParam('tMethod');
}
/*SOURCE*/$oSourceModel=$this->getObjectSource('model.php');
/*SOURCE*/$oSourceModel->setPattern('#model_exampleTest#',$sClass.'Test');
$sCode=null;
foreach($tMethod as $sMethod){
$sCode.=$oSourceModel->getSnippet(
'testMethod',
array(
'#testMethod#'=>'test'.ucfirst($sMethod),
'#method#'=>$sMethod,
'#model_example#'=>$sClass,
'#row_example#'=>$sRow,
) );
}
/*SOURCE*/$oSourceModel->setPattern('#code#',$sCode);
/*SOURCE*/$oSourceModel->save();
$this->detail=implode('
',$tDetail);
}
public function module(){
$this->processModule();
$sModuleFilename=_root::getParam('file');
$sModuleName=$sModuleFilename;
include module_builder::getTools()->getRootWebsite().'module/'.$sModuleFilename.'/main.php';
$tMethods=get_class_methods('module_'.$sModuleName);
foreach($tMethods as $i => $sMethod){
if($sMethod[0]!='_' or substr($sMethod,0,2)=='__'){
unset($tMethods[$i]);
}
}
//models
$tModelMethod=array();
$tFileModel=$this->getListModel();
foreach($tFileModel as $sFile){
$tModelMethod0=$this->getListMethodModel($sFile);
$sClass=substr(basename($sFile),0,-4);
foreach($tModelMethod0 as $sModelMethod){
$tModelMethod[$sClass][]=$sModelMethod;
}
}
$oTpl= $this->getViewFull('module');
$oTpl->tMethod=$tMethods;
$oTpl->tModelMethod=$tModelMethod;
$oTpl->bStillExist=false;
if(_root::getParam('file') and _root::getParam('saction')){
if(file_exists( module_builder::getTools()->getRootWebsite().'tests/module_'._root::getParam('file').'Test.php')){
$oTpl->bStillExist=true;
$oTpl->sPathStillExist='tests/module_'._root::getParam('file').'Test.php';
}
}
return $oTpl;
}
private function processModule(){
if(_root::getRequest()->isPost()==false){
return null;
}
$this->installBootstrap();
$this->msg=tr('testUnitGeneres');
$tDetail=array();
$tDetail[]=trR('CreationDuFichierVAR',array('#FICHIER#'=>'tests/bootstrap.php'));
$sModuleFilename=_root::getParam('file');
$sModuleName=$sModuleFilename;
$tMethod=_root::getParam('tMethod');
$tOption=_root::getParam('tOption');
$sClass='module_'.$sModuleName;
$tDetail[]=trR('CreationDuFichierVAR',array('#FICHIER#'=>'tests/'.$sClass.'Test.php'));
/*SOURCE*/$oSourceModule=$this->getObjectSource('module.php');
/*SOURCE*/$oSourceModule->setPattern('#module_defaultTest#',$sClass.'Test');
/*SOURCE*/$oSourceModule->setPattern('#module_exampleTest#',$sClass.'Test');
$sCode=null;
foreach($tMethod as $i => $sMethod){
if($tOption[$i]==self::FORM){
/*SOURCE*/$sCode.=$oSourceModule->getSnippet(
'testMethodForm',
array(
'#testMethod#'=>'test'.ucfirst($sMethod),
'#method#'=>$sMethod,
'#module_example#'=>$sClass,
'#oModuleExample#'=>'oModule'.ucfirst($sModuleName),
'#getLink#'=>$sModuleName.'::'.substr($sMethod,1)
) );
}else if($tOption[$i]==self::DISPLAYFROMBDD){
/*SOURCE*/$sCode.=$oSourceModule->getSnippet(
'testMethodDisplayFromBdd',
array(
'#testMethod#'=>'test'.ucfirst($sMethod),
'#method#'=>$sMethod,
'#module_example#'=>$sClass,
'#oModuleExample#'=>'oModule'.ucfirst($sModuleName),
) );
}else if($tOption[$i]==self::DISPLAY){
/*SOURCE*/$sCode.=$oSourceModule->getSnippet(
'testMethodDisplay',
array(
'#testMethod#'=>'test'.ucfirst($sMethod),
'#method#'=>$sMethod,
'#module_example#'=>$sClass,
'#oModuleExample#'=>'oModule'.ucfirst($sModuleName),
) );
}
}
/*SOURCE*/$oSourceModule->setPattern('#code#',$sCode);
/*SOURCE*/$oSourceModule->save();
$this->detail=implode('
',$tDetail);
}
public function launch(){
module_builder::setLayout('templateProjetLight');
$sPhpUnit='phpunit';
$tFile=scandir(module_builder::getTools()->getRootWebsite());
if($tFile){
foreach($tFile as $sFile){
if(preg_match('/phpunit/i',$sFile)){
$sPhpUnit=$sFile;
}
}
}
$this->processLaunch();
$oView=$this->getViewFull('launch');
$oView->phpunit=$sPhpUnit;
return $oView;
}
private function processLaunch(){
if(_root::getRequest()->isPost()==false){
return null;
}
$cmd=null;
if(_root::getParam('directory')=='local'){
$cmd=module_builder::getTools()->getRootWebsite().'/';
}
$cmd.=_root::getParam('launcher');
$cmd.=' '.module_builder::getTools()->getRootWebsite().'tests/ 2>&1';
$sRetourRaw= shell_exec($cmd);
$tRetour=explode("\n",$sRetourRaw);
$sStatus=null;
$bStartColorResult=false;
$sRetour=null;
foreach($tRetour as $i => $line){
if($i == 2){
$line=str_replace(array('F','.'),array('F ','# '),$line);
}
if(preg_match('/Expected/',$line)){
$bStartColorResult=true;
}
if($bStartColorResult){
if(substr($line,0,3)=='---'){
$line='--- Attendu';
}else if(substr($line,0,3)=='+++'){
$line=''.$line.'';
}
if(substr($line,0,1)=='-'){
$line=''.$line.'';
}else if(substr($line,0,1)=='+'){
$line=''.$line.'';
}
}
if(preg_match('/OK/',$line)){
$line=str_replace('OK','OK',$line);
$sStatus='OK';
}
if(preg_match('/FAILURES/',$line)){
$line=str_replace('FAILURES','FAILURES',$line);
$sStatus='KO';
}
$sRetour.=$line."
\n";
}
if($sStatus=='OK'){
$sRetour.='