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