xref: /dokuwiki/_test/core/TestUtils.php (revision 9c6354e5be3db406fa7f0966d65063e1d3b4d242)
1f8369d7dSTobias Sarnowski<?php
2f8369d7dSTobias Sarnowski
3f8369d7dSTobias Sarnowski/**
4f8369d7dSTobias Sarnowski * Helper class with some filesystem utilities.
5f8369d7dSTobias Sarnowski */
6f8369d7dSTobias Sarnowskiclass TestUtils {
7f8369d7dSTobias Sarnowski
8f8369d7dSTobias Sarnowski    /**
9f8369d7dSTobias Sarnowski     * helper for recursive copy()
10f8369d7dSTobias Sarnowski     *
11f8369d7dSTobias Sarnowski     * @static
12f8369d7dSTobias Sarnowski     * @param $destdir string
13f8369d7dSTobias Sarnowski     * @param $source string
14f8369d7dSTobias Sarnowski     */
15f8369d7dSTobias Sarnowski    public static function rcopy($destdir, $source) {
16f8369d7dSTobias Sarnowski        if (!is_dir($source)) {
17f8369d7dSTobias Sarnowski            copy($source, $destdir.'/'.basename($source));
18f8369d7dSTobias Sarnowski        } else {
19f8369d7dSTobias Sarnowski            $newdestdir = $destdir.'/'.basename($source);
20*9c6354e5STobias Sarnowski            if (!is_dir($newdestdir)) {
21f8369d7dSTobias Sarnowski                mkdir($newdestdir);
22*9c6354e5STobias Sarnowski            }
23f8369d7dSTobias Sarnowski
24f8369d7dSTobias Sarnowski            $dh = dir($source);
25f8369d7dSTobias Sarnowski            while (false !== ($entry = $dh->read())) {
26f8369d7dSTobias Sarnowski                if ($entry == '.' || $entry == '..') {
27f8369d7dSTobias Sarnowski                    continue;
28f8369d7dSTobias Sarnowski                }
29f8369d7dSTobias Sarnowski                TestUtils::rcopy($newdestdir, $source.'/'.$entry);
30f8369d7dSTobias Sarnowski            }
31f8369d7dSTobias Sarnowski            $dh->close();
32f8369d7dSTobias Sarnowski        }
33f8369d7dSTobias Sarnowski    }
34f8369d7dSTobias Sarnowski
35f8369d7dSTobias Sarnowski    /**
36f8369d7dSTobias Sarnowski     * helper for recursive rmdir()/unlink()
37f8369d7dSTobias Sarnowski     *
38f8369d7dSTobias Sarnowski     * @static
39f8369d7dSTobias Sarnowski     * @param $target string
40f8369d7dSTobias Sarnowski     */
41f8369d7dSTobias Sarnowski    public static function rdelete($target) {
42f8369d7dSTobias Sarnowski        if (!is_dir($target)) {
43f8369d7dSTobias Sarnowski            unlink($target);
44f8369d7dSTobias Sarnowski        } else {
45f8369d7dSTobias Sarnowski            $dh = dir($target);
46f8369d7dSTobias Sarnowski            while (false !== ($entry = $dh->read())) {
47f8369d7dSTobias Sarnowski                if ($entry == '.' || $entry == '..') {
48f8369d7dSTobias Sarnowski                    continue;
49f8369d7dSTobias Sarnowski                }
50f8369d7dSTobias Sarnowski                TestUtils::rdelete("$target/$entry");
51f8369d7dSTobias Sarnowski            }
52f8369d7dSTobias Sarnowski            $dh->close();
53f8369d7dSTobias Sarnowski            rmdir($target);
54f8369d7dSTobias Sarnowski        }
55f8369d7dSTobias Sarnowski    }
56f8369d7dSTobias Sarnowski
57f8369d7dSTobias Sarnowski    /**
58f8369d7dSTobias Sarnowski     * helper to append text to a file
59f8369d7dSTobias Sarnowski     *
60f8369d7dSTobias Sarnowski     * @static
61f8369d7dSTobias Sarnowski     * @param $file string
62f8369d7dSTobias Sarnowski     * @param $text string
63f8369d7dSTobias Sarnowski     */
64f8369d7dSTobias Sarnowski    public static function fappend($file, $text) {
65f8369d7dSTobias Sarnowski        $fh = fopen($file, 'a');
66f8369d7dSTobias Sarnowski        fwrite($fh, $text);
67f8369d7dSTobias Sarnowski        fclose($fh);
68f8369d7dSTobias Sarnowski    }
69f8369d7dSTobias Sarnowski
70f8369d7dSTobias Sarnowski}
71