1f8369d7dSTobias Sarnowski<?php 2f8369d7dSTobias Sarnowski 3f8369d7dSTobias Sarnowski/** 4f8369d7dSTobias Sarnowski * Helper class with some filesystem utilities. 5f8369d7dSTobias Sarnowski */ 6f8369d7dSTobias Sarnowskiclass TestUtils { 7f8369d7dSTobias Sarnowski 8f8369d7dSTobias Sarnowski /** 9*1d7c1f1bSYurii K * converts path to unix-like on windows OS 10*1d7c1f1bSYurii K * @param string $path UNIX-like path to be converted 11*1d7c1f1bSYurii K * @return string 12*1d7c1f1bSYurii K */ 13*1d7c1f1bSYurii K public static function w2u($path) { 14*1d7c1f1bSYurii K return isWindows() ? str_replace('\\', '/', $path) : $path; 15*1d7c1f1bSYurii K } 16*1d7c1f1bSYurii K 17*1d7c1f1bSYurii K /** 18f8369d7dSTobias Sarnowski * helper for recursive copy() 19f8369d7dSTobias Sarnowski * 20f8369d7dSTobias Sarnowski * @static 21f8369d7dSTobias Sarnowski * @param $destdir string 22f8369d7dSTobias Sarnowski * @param $source string 23f8369d7dSTobias Sarnowski */ 24f8369d7dSTobias Sarnowski public static function rcopy($destdir, $source) { 25f8369d7dSTobias Sarnowski if (!is_dir($source)) { 26f8369d7dSTobias Sarnowski copy($source, $destdir.'/'.basename($source)); 27f8369d7dSTobias Sarnowski } else { 28f8369d7dSTobias Sarnowski $newdestdir = $destdir.'/'.basename($source); 299c6354e5STobias Sarnowski if (!is_dir($newdestdir)) { 30f8369d7dSTobias Sarnowski mkdir($newdestdir); 319c6354e5STobias Sarnowski } 32f8369d7dSTobias Sarnowski 33f8369d7dSTobias Sarnowski $dh = dir($source); 34f8369d7dSTobias Sarnowski while (false !== ($entry = $dh->read())) { 35f8369d7dSTobias Sarnowski if ($entry == '.' || $entry == '..') { 36f8369d7dSTobias Sarnowski continue; 37f8369d7dSTobias Sarnowski } 38f8369d7dSTobias Sarnowski TestUtils::rcopy($newdestdir, $source.'/'.$entry); 39f8369d7dSTobias Sarnowski } 40f8369d7dSTobias Sarnowski $dh->close(); 41f8369d7dSTobias Sarnowski } 42f8369d7dSTobias Sarnowski } 43f8369d7dSTobias Sarnowski 44f8369d7dSTobias Sarnowski /** 45f8369d7dSTobias Sarnowski * helper for recursive rmdir()/unlink() 46f8369d7dSTobias Sarnowski * 47f8369d7dSTobias Sarnowski * @static 48f8369d7dSTobias Sarnowski * @param $target string 49f8369d7dSTobias Sarnowski */ 50f8369d7dSTobias Sarnowski public static function rdelete($target) { 51f8369d7dSTobias Sarnowski if (!is_dir($target)) { 52f8369d7dSTobias Sarnowski unlink($target); 53f8369d7dSTobias Sarnowski } else { 54f8369d7dSTobias Sarnowski $dh = dir($target); 55f8369d7dSTobias Sarnowski while (false !== ($entry = $dh->read())) { 56f8369d7dSTobias Sarnowski if ($entry == '.' || $entry == '..') { 57f8369d7dSTobias Sarnowski continue; 58f8369d7dSTobias Sarnowski } 59f8369d7dSTobias Sarnowski TestUtils::rdelete("$target/$entry"); 60f8369d7dSTobias Sarnowski } 61f8369d7dSTobias Sarnowski $dh->close(); 62f8369d7dSTobias Sarnowski rmdir($target); 63f8369d7dSTobias Sarnowski } 64f8369d7dSTobias Sarnowski } 65f8369d7dSTobias Sarnowski 66f8369d7dSTobias Sarnowski /** 67f8369d7dSTobias Sarnowski * helper to append text to a file 68f8369d7dSTobias Sarnowski * 69f8369d7dSTobias Sarnowski * @static 70f8369d7dSTobias Sarnowski * @param $file string 71f8369d7dSTobias Sarnowski * @param $text string 72f8369d7dSTobias Sarnowski */ 73f8369d7dSTobias Sarnowski public static function fappend($file, $text) { 74f8369d7dSTobias Sarnowski $fh = fopen($file, 'a'); 75f8369d7dSTobias Sarnowski fwrite($fh, $text); 76f8369d7dSTobias Sarnowski fclose($fh); 77f8369d7dSTobias Sarnowski } 78f8369d7dSTobias Sarnowski 79f8369d7dSTobias Sarnowski} 80