xref: /dokuwiki/_test/tests/inc/init_fullpath.test.php (revision d4059ee791f33aa71e3fde699e6922080850a6e5)
1<?php
2
3class init_fullpath_test extends DokuWikiTest {
4
5    function test_unix_paths(){
6        $base = $_SERVER['SCRIPT_FILENAME'];
7        $_SERVER['SCRIPT_FILENAME'] = '/absolute/path/self.php';
8        $GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS'] = false;
9
10        // paths to check
11        $tests = array(
12                        '/foo/bar/baz' => '/foo/bar/baz',
13                        '/foo//bar/baz' => '/foo/bar/baz',
14                        '/foo/../bar/baz' => '/bar/baz',
15                        '/foo/./bar/baz' => '/foo/bar/baz',
16                        '/foo/bar/..' => '/foo',
17                        '/foo/bar/../../../baz' => '/baz',
18                        '/foo/bar//baz' => '/foo/bar/baz',
19
20                        'foo/bar/baz' => '/absolute/path/foo/bar/baz',
21                        'foo//bar/baz' => '/absolute/path/foo/bar/baz',
22                        'foo/../bar/baz' => '/absolute/path/bar/baz',
23                        'foo/./bar/baz' => '/absolute/path/foo/bar/baz',
24                        'foo/bar/..' => '/absolute/path/foo',
25                        'foo/bar/../../../baz' => '/absolute/baz',
26                      );
27
28        foreach($tests as $from => $to){
29            $info = "Testing '$from' resulted in '".fullpath($from)."'";
30
31            $this->assertEquals(fullpath($from), $to, $info);
32        }
33
34
35        $_SERVER['SCRIPT_FILENAME'] = $base;
36        unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']);
37    }
38
39    function test_windows_paths(){
40        $base = $_SERVER['SCRIPT_FILENAME'];
41        $_SERVER['SCRIPT_FILENAME'] = '/absolute/path/self.php';
42        $GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS'] = true;
43
44        // paths to check
45        $tests = array(
46                        'c:foo/bar/baz' => 'c:/foo/bar/baz',
47                        'c:foo//bar/baz' => 'c:/foo/bar/baz',
48                        'c:foo/../bar/baz' => 'c:/bar/baz',
49                        'c:foo/./bar/baz' => 'c:/foo/bar/baz',
50                        'c:foo/bar/..' => 'c:/foo',
51                        'c:foo/bar/../../../baz' => 'c:/baz',
52                        'c:foo/bar//baz' => 'c:/foo/bar/baz',
53
54                        'c:/foo/bar/baz' => 'c:/foo/bar/baz',
55                        'c:/foo//bar/baz' => 'c:/foo/bar/baz',
56                        'c:/foo/../bar/baz' => 'c:/bar/baz',
57                        'c:/foo/./bar/baz' => 'c:/foo/bar/baz',
58                        'c:/foo/bar/..' => 'c:/foo',
59                        'c:/foo/bar/../../../baz' => 'c:/baz',
60
61                        'c:\\foo\\bar\\baz' => 'c:/foo/bar/baz',
62                        'c:\\foo\\\\bar\\baz' => 'c:/foo/bar/baz',
63                        'c:\\foo\\..\\bar\\baz' => 'c:/bar/baz',
64                        'c:\\foo\\.\\bar\\baz' => 'c:/foo/bar/baz',
65                        'c:\\foo\\bar\\..' => 'c:/foo',
66                        'c:\\foo\\bar\\..\\..\\..\\baz' => 'c:/baz',
67                        'c:\\foo\\bar\\\\baz' => 'c:/foo/bar/baz',
68
69                        '\\\\server\\share/foo/bar/baz' => '\\\\server\\share/foo/bar/baz',
70                        '\\\\server\\share/foo//bar/baz' => '\\\\server\\share/foo/bar/baz',
71                        '\\\\server\\share/foo/../bar/baz' => '\\\\server\\share/bar/baz',
72                        '\\\\server\\share/foo/./bar/baz' => '\\\\server\\share/foo/bar/baz',
73                        '\\\\server\\share/foo/bar/..' => '\\\\server\\share/foo',
74                        '\\\\server\\share/foo/bar/../../../baz' => '\\\\server\\share/baz',
75                      );
76
77        foreach($tests as $from => $to){
78            $info = "Testing '$from' resulted in '".fullpath($from)."'";
79
80            $this->assertEquals(fullpath($from), $to, $info);
81        }
82
83
84        $_SERVER['SCRIPT_FILENAME'] = $base;
85        unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']);
86    }
87
88}
89//Setup VIM: ex: et ts=4 :
90