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