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