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