xref: /dokuwiki/_test/core/TestUtils.php (revision 1d7c1f1bfdde1a689e622b5c475614fed4b553e1)
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