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