예제 #1
0
  function test_walk_dir()
  {
  	$this->_create_file_system();
  	
  	$mock =& new special_dir_walker($this);
  	
  	$mock->expectCallCount('walk', 9+2);
	
	if(sys :: os_type() == 'win32')
	{  	
		$mock->expectArgumentsAt(0, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'test1_1', array('test', 'separator' => dir :: separator()), array(0)));
		$mock->expectArgumentsAt(1, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'test1_2', array('test', 'separator' => dir :: separator()), array(0, 1)));
		$mock->expectArgumentsAt(2, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'test1_3', array('test', 'separator' => dir :: separator()), array(0, 1, 2)));
		$mock->expectArgumentsAt(3, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'wow', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3)));
		$mock->expectArgumentsAt(4, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'hey', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4)));
		$mock->expectArgumentsAt(5, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow/hey'), 'test3_1', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5)));
		$mock->expectArgumentsAt(6, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow/hey'), 'test3_2', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6)));
		$mock->expectArgumentsAt(7, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow/hey'), 'test3_3', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7)));
		$mock->expectArgumentsAt(8, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'test2_1', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7, 8)));
		$mock->expectArgumentsAt(9, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'test2_2', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)));
		$mock->expectArgumentsAt(10, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'test2_3', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)));
	}
	elseif(sys :: os_type() == 'unix')
	{
		$mock->expectArgumentsAt(0, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'wow', array('test', 'separator' => dir :: separator()), array(0)));
		$mock->expectArgumentsAt(1, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'hey', array('test', 'separator' => dir :: separator()), array(0, 1)));
		$mock->expectArgumentsAt(2, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow/hey'), 'test3_1', array('test', 'separator' => dir :: separator()), array(0, 1, 2)));
		$mock->expectArgumentsAt(3, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow/hey'), 'test3_2', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3)));
		$mock->expectArgumentsAt(4, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow/hey'), 'test3_3', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4)));
		$mock->expectArgumentsAt(5, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'test2_1', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5)));
		$mock->expectArgumentsAt(6, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'test2_2', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6)));
		$mock->expectArgumentsAt(7, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp/wow'), 'test2_3', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7)));
		$mock->expectArgumentsAt(8, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'test1_1', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7, 8)));
		$mock->expectArgumentsAt(9, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'test1_2', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)));
		$mock->expectArgumentsAt(10, 'walk', array(dir :: clean_path(TEST_DIR_ABSOLUTE_PATH . '/tmp'), 'test1_3', array('test', 'separator' => dir :: separator()), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)));
		
	}
  	
  	$this->assertEqual(
  		dir :: walk_dir(TEST_DIR_ABSOLUTE_PATH . '/tmp/', array(&$mock, 'walk'), array('test')),
  		array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  	);
  	
  	$mock->tally();
  	
  	$this->_remove_file_system();
  }
예제 #2
0
 function walk_dir($dir, $function_def, $params = array())
 {
     static $separator = '';
     if (!$separator) {
         $separator = dir::separator();
     }
     if (is_dir($dir)) {
         $handle = opendir($dir);
         while (($file = readdir($handle)) !== false) {
             if ($file != '.' && $file != '..') {
                 if (is_dir($dir . $separator . $file)) {
                     dir::walk_dir($dir . $separator . $file . $separator, $function_def, $params);
                 }
                 call_user_func_array($function_def, array('dir' => $dir, 'file' => $file, 'params' => $params));
             }
         }
         closedir($handle);
     }
 }
예제 #3
0
 function find_subitems($dir, $types = 'dfl', $exclude_regex = '', $add_path = true, $include_hidden = false)
 {
     $dir = dir::clean_path($dir);
     $dir = dir::chop($dir);
     $items = array();
     $separator = dir::separator();
     if ($handle = opendir($dir)) {
         while (($element = readdir($handle)) !== false) {
             if ($element == '.' || $element == '..') {
                 continue;
             }
             if (!$include_hidden && $element[0] == '.') {
                 continue;
             }
             if ($exclude_regex && preg_match($exclude_regex, $element)) {
                 continue;
             }
             if (is_dir($dir . $separator . $element) && strpos($types, 'd') === false) {
                 continue;
             }
             if (is_link($dir . $separator . $element) && strpos($types, 'l') === false) {
                 continue;
             }
             if (is_file($dir . $separator . $element) && strpos($types, 'f') === false) {
                 continue;
             }
             if ($add_path) {
                 if (is_string($add_path)) {
                     $items[] = $add_path . $separator . $element;
                 } else {
                     $items[] = $dir . $separator . $element;
                 }
             } else {
                 $items[] = $element;
             }
         }
         closedir($handle);
     }
     return $items;
 }
예제 #4
0
 function walk_dir($dir, $function, $args = array())
 {
     if (is_dir($dir)) {
         $handle = opendir($dir);
         $separator = dir::separator();
         while (($file = readdir($handle)) !== false) {
             if ($file != "." && $file != "..") {
                 if (is_dir($file)) {
                     dir::walk_dir($dir . $separator . $file . $separator, $function);
                 }
                 if (function_exists($function)) {
                     call_user_func($function, $dir, $file, $args);
                 }
             }
         }
         closedir($handle);
     }
 }