[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/tests_runner/src/ -> lmbTestTreeDirNode.class.php (source)

   1  <?php
   2  /*

   3   * Limb PHP Framework

   4   *

   5   * @link http://limb-project.com

   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)

   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html

   8   */
   9  require_once(dirname(__FILE__) . '/lmbTestTreeShallowDirNode.class.php');
  10  require_once(dirname(__FILE__) . '/lmbTestTreeFileNode.class.php');
  11  require_once(dirname(__FILE__) . '/lmbDetachedFixture.class.php');
  12  require_once(dirname(__FILE__) . '/lmbTestFileFilter.class.php');
  13  
  14  /**

  15   * class lmbTestTreeDirNode.

  16   *

  17   * @package tests_runner

  18   * @version $Id: lmbTestTreeDirNode.class.php 6022 2007-06-28 13:35:51Z pachanga $

  19   */
  20  class lmbTestTreeDirNode extends lmbTestTreeShallowDirNode
  21  {
  22    protected static $file_filter = '*Test.class.php;*.test.php;*_test.php';
  23    protected $loaded;
  24  
  25    function createTestCase()
  26    {
  27      $this->_loadChildren();
  28      return parent :: createTestCase();
  29    }
  30  
  31    static function getFileFilter()
  32    {
  33      if(is_object(self :: $file_filter))
  34        return self :: $file_filter;
  35      elseif(is_array(self :: $file_filter))
  36        return new lmbTestFileFilter(self :: $file_filter);
  37      else
  38        return new lmbTestFileFilter(explode(';', self :: $file_filter));
  39    }
  40  
  41    static function setFileFilter($filter)
  42    {
  43      $prev = self :: getFileFilter();
  44      self :: $file_filter = $filter;
  45      return $prev;
  46    }
  47  
  48    function _loadChildren()
  49    {
  50      if(!is_null($this->loaded) && $this->loaded)
  51        return;
  52  
  53      $dir_items = $this->getDirItems();
  54  
  55      foreach($dir_items as $item)
  56      {
  57        if(is_dir($item))
  58          $this->addChild(new lmbTestTreeDirNode($item));
  59        else
  60          $this->addChild(new lmbTestTreeFileNode($item));
  61      }
  62      $this->loaded = true;
  63    }
  64  
  65    function getDirItems()
  66    {
  67      $clean_and_sorted = array();
  68      $dir_items = scandir($this->dir);
  69  
  70      foreach($dir_items as $item)
  71      {
  72        if($item{0} == '.' || (!is_dir($this->dir . '/' . $item) && !$this->_isFileAllowed($item)))
  73          continue;
  74        $clean_and_sorted[$item] = $this->dir . '/' . $item;
  75      }
  76  
  77      uasort($clean_and_sorted, array($this, '_dirSorter'));
  78      return $clean_and_sorted;
  79    }
  80  
  81    protected function _isFileAllowed($file)
  82    {
  83      $filter = self :: getFileFilter();
  84  
  85      if($filter && !$filter->match($file))
  86        return false;
  87      return true;
  88    }
  89  
  90    protected function _dirSorter($a, $b)
  91    {
  92      if(is_dir($a) && !is_dir($b))
  93        return -1;
  94      elseif(!is_dir($a) && is_dir($b))
  95        return 1;
  96      return strcmp($a, $b);
  97    }
  98  }
  99  
 100  ?>


Generated: Tue Dec 2 03:54:09 2008 Cross-referenced by PHPXref 0.7