| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * This file contains the following classes: {@link SimpleCollector}, 4 * {@link SimplePatternCollector}. 5 * 6 * @author Travis Swicegood <development@domain51.com> 7 * @package SimpleTest 8 * @subpackage UnitTester 9 * @version $Id: collector.php 5999 2007-06-18 13:13:08Z pachanga $ 10 */ 11 12 /** 13 * The basic collector for {@link GroupTest} 14 * 15 * @see collect(), GroupTest::collect() 16 * @package SimpleTest 17 * @subpackage UnitTester 18 */ 19 class SimpleCollector { 20 21 /** 22 * Strips off any kind of slash at the end so as to normalise the path. 23 * @param string $path Path to normalise. 24 * @return string Path without trailing slash. 25 */ 26 function _removeTrailingSlash($path) { 27 if (substr($path, -1) == DIRECTORY_SEPARATOR) { 28 return substr($path, 0, -1); 29 } elseif (substr($path, -1) == '/') { 30 return substr($path, 0, -1); 31 } else { 32 return $path; 33 } 34 } 35 36 /** 37 * Scans the directory and adds what it can. 38 * @param object $test Group test with {@link GroupTest::addTestFile()} method. 39 * @param string $path Directory to scan. 40 * @see _attemptToAdd() 41 */ 42 function collect(&$test, $path) { 43 $path = $this->_removeTrailingSlash($path); 44 if ($handle = opendir($path)) { 45 while (($entry = readdir($handle)) !== false) { 46 if ($this->_isHidden($entry)) { 47 continue; 48 } 49 $this->_handle($test, $path . DIRECTORY_SEPARATOR . $entry); 50 } 51 closedir($handle); 52 } 53 } 54 55 /** 56 * This method determines what should be done with a given file and adds 57 * it via {@link GroupTest::addTestFile()} if necessary. 58 * 59 * This method should be overriden to provide custom matching criteria, 60 * such as pattern matching, recursive matching, etc. For an example, see 61 * {@link SimplePatternCollector::_handle()}. 62 * 63 * @param object $test Group test with {@link GroupTest::addTestFile()} method. 64 * @param string $filename A filename as generated by {@link collect()} 65 * @see collect() 66 * @access protected 67 */ 68 function _handle(&$test, $file) { 69 if (is_dir($file)) { 70 return; 71 } 72 $test->addTestFile($file); 73 } 74 75 /** 76 * Tests for hidden files so as to skip them. Currently 77 * only tests for Unix hidden files. 78 * @param string $filename Plain filename. 79 * @return boolean True if hidden file. 80 * @access private 81 */ 82 function _isHidden($filename) { 83 return strncmp($filename, '.', 1) == 0; 84 } 85 } 86 87 /** 88 * An extension to {@link SimpleCollector} that only adds files matching a 89 * given pattern. 90 * 91 * @package SimpleTest 92 * @subpackage UnitTester 93 * @see SimpleCollector 94 */ 95 class SimplePatternCollector extends SimpleCollector { 96 var $_pattern; 97 98 /** 99 * 100 * @param string $pattern Perl compatible regex to test name against 101 * See {@link http://us4.php.net/manual/en/reference.pcre.pattern.syntax.php PHP's PCRE} 102 * for full documentation of valid pattern.s 103 */ 104 function SimplePatternCollector($pattern = '/php$/i') { 105 $this->_pattern = $pattern; 106 } 107 108 /** 109 * Attempts to add files that match a given pattern. 110 * 111 * @see SimpleCollector::_handle() 112 * @param object $test Group test with {@link GroupTest::addTestFile()} method. 113 * @param string $path Directory to scan. 114 * @access protected 115 */ 116 function _handle(&$test, $filename) { 117 if (preg_match($this->_pattern, $filename)) { 118 parent::_handle($test, $filename); 119 } 120 } 121 } 122 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Aug 29 04:49:26 2008 | Cross-referenced by PHPXref 0.7 |