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