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