xref: /dokuwiki/_test/tests/inc/init_fullpath.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
1<?php
2require_once DOKU_INC.'inc/init.php';
3
4class init_fullpath_test extends DokuWikiTest {
5
6    function test_unix_paths(){
7        $base = $_SERVER['SCRIPT_FILENAME'];
8        $_SERVER['SCRIPT_FILENAME'] = '/absolute/path/self.php';
9        $GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS'] = false;
10
11        // paths to check
12        $tests = array(
13                        '/foo/bar/baz' => '/foo/bar/baz',
14                        '/foo//bar/baz' => '/foo/bar/baz',
15                        '/foo/../bar/baz' => '/bar/baz',
16                        '/foo/./bar/baz' => '/foo/bar/baz',
17                        '/foo/bar/..' => '/foo',
18                        '/foo/bar/../../../baz' => '/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
53                        'c:/foo/bar/baz' => 'c:/foo/bar/baz',
54                        'c:/foo//bar/baz' => 'c:/foo/bar/baz',
55                        'c:/foo/../bar/baz' => 'c:/bar/baz',
56                        'c:/foo/./bar/baz' => 'c:/foo/bar/baz',
57                        'c:/foo/bar/..' => 'c:/foo',
58                        'c:/foo/bar/../../../baz' => 'c:/baz',
59
60                        'c:\\foo\\bar\\baz' => 'c:/foo/bar/baz',
61                        'c:\\foo\\\\bar\\baz' => 'c:/foo/bar/baz',
62                        'c:\\foo\\..\\bar\\baz' => 'c:/bar/baz',
63                        'c:\\foo\\.\\bar\\baz' => 'c:/foo/bar/baz',
64                        'c:\\foo\\bar\\..' => 'c:/foo',
65                        'c:\\foo\\bar\\..\\..\\..\\baz' => 'c:/baz',
66
67                        '\\\\server\\share/foo/bar/baz' => '\\\\server\\share/foo/bar/baz',
68                        '\\\\server\\share/foo//bar/baz' => '\\\\server\\share/foo/bar/baz',
69                        '\\\\server\\share/foo/../bar/baz' => '\\\\server\\share/bar/baz',
70                        '\\\\server\\share/foo/./bar/baz' => '\\\\server\\share/foo/bar/baz',
71                        '\\\\server\\share/foo/bar/..' => '\\\\server\\share/foo',
72                        '\\\\server\\share/foo/bar/../../../baz' => '\\\\server\\share/baz',
73                      );
74
75        foreach($tests as $from => $to){
76            $info = "Testing '$from' resulted in '".fullpath($from)."'";
77
78            $this->assertEquals(fullpath($from), $to, $info);
79        }
80
81
82        $_SERVER['SCRIPT_FILENAME'] = $base;
83        unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']);
84    }
85
86}
87//Setup VIM: ex: et ts=4 :
88