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