Completed
Push — master ( 410005...efdb94 )
by Bernhard
04:50
created

TestUtil::makeTempDir()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 21
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3.072

Importance

Changes 2
Bugs 1 Features 1
Metric Value
c 2
b 1
f 1
dl 0
loc 21
ccs 8
cts 10
cp 0.8
rs 9.3143
cc 3
eloc 9
nc 4
nop 2
crap 3.072
1
<?php
2
3
/*
4
 * This file is part of the webmozart/glob package.
5
 *
6
 * (c) Bernhard Schussek <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Webmozart\Glob\Test;
13
14
use Webmozart\PathUtil\Path;
15
16
/**
17
 * Contains utility methods for testing.
18
 *
19
 * @since  3.1
20
 *
21
 * @author Bernhard Schussek <[email protected]>
22
 */
23
final class TestUtil
24
{
25
    /**
26
     * Creates a temporary directory.
27
     *
28
     * @param string $namespace The directory path in the system's temporary
29
     *                          directory.
30
     * @param string $className The name of the test class.
31
     *
32
     * @return string The path to the created directory.
33
     */
34 160
    public static function makeTempDir($namespace, $className)
35
    {
36 160
        if (false !== ($pos = strrpos($className, '\\'))) {
37 160
            $shortClass = substr($className, $pos + 1);
38 160
        } else {
39
            $shortClass = $className;
40
        }
41
42
        // Usage of realpath() is important if the temporary directory is a
43
        // symlink to another directory (e.g. /var => /private/var on some Macs)
44
        // We want to know the real path to avoid comparison failures with
45
        // code that uses real paths only
46 160
        $systemTempDir = Path::normalize(realpath(sys_get_temp_dir()));
47 160
        $basePath = $systemTempDir.'/'.$namespace.'/'.$shortClass;
48
49 160
        while (false === @mkdir($tempDir = $basePath.rand(10000, 99999), 0777, true)) {
0 ignored issues
show
Unused Code introduced by
This while loop is empty and can be removed.

This check looks for while loops that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

Consider removing the loop.

Loading history...
50
            // Run until we are able to create a directory
51
        }
52
53 160
        return $tempDir;
54
    }
55
56
    private function __construct()
57
    {
58
    }
59
}
60