]> granicus.if.org Git - php/commitdiff
- add test for #48746
authorPierre Joye <pajoye@php.net>
Sat, 5 Sep 2009 18:10:31 +0000 (18:10 +0000)
committerPierre Joye <pajoye@php.net>
Sat, 5 Sep 2009 18:10:31 +0000 (18:10 +0000)
ext/standard/tests/file/windows_links/bug48746.phpt [new file with mode: 0644]
ext/standard/tests/file/windows_links/bug48746_1.phpt [new file with mode: 0644]
ext/standard/tests/file/windows_links/bug48746_2.phpt [new file with mode: 0644]
ext/standard/tests/file/windows_links/bug48746_3.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/file/windows_links/bug48746.phpt b/ext/standard/tests/file/windows_links/bug48746.phpt
new file mode 100644 (file)
index 0000000..4f8f110
--- /dev/null
@@ -0,0 +1,54 @@
+--TEST--\r
+Bug#48746 - Junction not working properly\r
+\r
+--CREDIT--\r
+Venkat Raman Don (don.raman@microsoft.com)\r
+\r
+--SKIPIF--\r
+<?php\r
+$cmd = "mklink.exe /?";\r
+$ret = @exec($cmd, $output, $return_val);\r
+if (count($output) == 0) {\r
+    die("mklink.exe not found in PATH");\r
+}\r
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {\r
+    die('skip windows only test');\r
+}\r
+?>\r
+--FILE--\r
+<?php\r
+$old_dir = __DIR__;\r
+$dirname = __DIR__ . "\\mnt\\test\\directory";\r
+exec("mkdir " . $dirname, $output, $ret_val);\r
+chdir(__DIR__ . "\\mnt\\test");\r
+$drive = substr(__DIR__, 0, 2);\r
+$pathwithoutdrive = substr(__DIR__, 2);\r
+$ret = exec("mountvol " . $drive . " /L", $output, $ret_val);\r
+exec("mklink /j mounted_volume " . $ret, $output, $ret_val);\r
+$fullpath = "mounted_volume" . $pathwithoutdrive;\r
+exec("mklink /j mklink_junction directory", $output, $ret_val);\r
+var_dump(file_exists("directory"));\r
+var_dump(file_exists("mklink_junction"));\r
+var_dump(file_exists("mounted_volume"));\r
+var_dump(file_exists("$fullpath"));\r
+var_dump(is_dir("mklink_junction"));\r
+var_dump(is_dir("$fullpath"));\r
+var_dump(is_readable("mklink_junction"));\r
+var_dump(is_writeable("$fullpath"));\r
+chdir($old_dir);\r
+rmdir(__DIR__ . "\\mnt\\test\\directory");\r
+rmdir(__DIR__ . "\\mnt\\test\\mklink_junction");\r
+rmdir(__DIR__ . "\\mnt\\test\\mounted_volume");\r
+rmdir(__DIR__ . "\\mnt\\test");\r
+rmdir(__DIR__ . "\\mnt");\r
+\r
+?>\r
+--EXPECT--\r
+bool(true)\r
+bool(true)\r
+bool(true)\r
+bool(true)\r
+bool(true)\r
+bool(true)\r
+bool(true)\r
+bool(true)
\ No newline at end of file
diff --git a/ext/standard/tests/file/windows_links/bug48746_1.phpt b/ext/standard/tests/file/windows_links/bug48746_1.phpt
new file mode 100644 (file)
index 0000000..32cb192
--- /dev/null
@@ -0,0 +1,56 @@
+--TEST--\r
+Bug#48746 - Junction not working properly\r
+\r
+--CREDIT--\r
+Venkat Raman Don (don.raman@microsoft.com)\r
+\r
+--SKIPIF--\r
+<?php\r
+$cmd = "mklink.exe /?";\r
+$ret = @exec($cmd, $output, $return_val);\r
+if (count($output) == 0) {\r
+    die("mklink.exe not found in PATH");\r
+}\r
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {\r
+    die('skip windows only test');\r
+}\r
+?>\r
+--FILE--\r
+<?php\r
+$old_dir = __DIR__;\r
+$dirname = __DIR__ . "\\mnt\\test\\directory";\r
+exec("mkdir " . $dirname, $output, $ret_val);\r
+chdir(__DIR__ . "\\mnt\\test");\r
+$drive = substr(__DIR__, 0, 2);\r
+$pathwithoutdrive = substr(__DIR__, 2);\r
+$ret = exec("mountvol " . $drive . " /L", $output, $ret_val);\r
+exec("mklink /j mounted_volume " . $ret, $output, $ret_val);\r
+$fullpath = "mounted_volume" . $pathwithoutdrive;\r
+exec("mklink /j mklink_junction directory", $output, $ret_val);\r
+file_put_contents("mklink_junction\\a.php", "<?php echo \"I am included.\n\" ?>");\r
+include_once "mklink_junction\\a.php";\r
+file_put_contents("$fullpath\\mnt\\test\\directory\\b.php", "<?php echo \"I am included.\n\" ?>");\r
+require "$fullpath\\mnt\\test\\directory\\b.php";\r
+file_put_contents("$fullpath\\mnt\\test\\mklink_junction\\c.php", "<?php echo \"I am included.\n\" ?>");\r
+require_once "$fullpath\\mnt\\test\\mklink_junction\\c.php";\r
+var_dump(is_file("mklink_junction\\a.php"));\r
+var_dump(is_file("$fullpath\\mnt\\test\\directory\\b.php"));\r
+var_dump(is_file("$fullpath\\mnt\\test\\mklink_junction\\c.php"));\r
+unlink("$fullpath\\mnt\\test\\directory\\b.php");\r
+unlink("$fullpath\\mnt\\test\\mklink_junction\\c.php");\r
+unlink("mklink_junction\\a.php");\r
+chdir($old_dir);\r
+rmdir(__DIR__ . "\\mnt\\test\\directory");\r
+rmdir(__DIR__ . "\\mnt\\test\\mklink_junction");\r
+rmdir(__DIR__ . "\\mnt\\test\\mounted_volume");\r
+rmdir(__DIR__ . "\\mnt\\test");\r
+rmdir(__DIR__ . "\\mnt");\r
+\r
+?>\r
+--EXPECT--\r
+I am included.\r
+I am included.\r
+I am included.\r
+bool(true)\r
+bool(true)\r
+bool(true)
\ No newline at end of file
diff --git a/ext/standard/tests/file/windows_links/bug48746_2.phpt b/ext/standard/tests/file/windows_links/bug48746_2.phpt
new file mode 100644 (file)
index 0000000..6c5c4fc
--- /dev/null
@@ -0,0 +1,66 @@
+--TEST--\r
+Bug#48746 - Junction not working properly\r
+\r
+--CREDIT--\r
+Venkat Raman Don (don.raman@microsoft.com)\r
+\r
+--SKIPIF--\r
+<?php\r
+$cmd = "mklink.exe /?";\r
+$ret = @exec($cmd, $output, $return_val);\r
+if (count($output) == 0) {\r
+    die("mklink.exe not found in PATH");\r
+}\r
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {\r
+    die('skip windows only test');\r
+}\r
+?>\r
+--FILE--\r
+<?php\r
+$old_dir = __DIR__;\r
+$dirname = __DIR__ . "\\mnt\\test\\directory";\r
+exec("mkdir " . $dirname, $output, $ret_val);\r
+chdir(__DIR__ . "\\mnt\\test");\r
+$drive = substr(__DIR__, 0, 2);\r
+$pathwithoutdrive = substr(__DIR__, 2);\r
+$ret = exec("mountvol " . $drive . " /L", $output, $ret_val);\r
+exec("mklink /j mounted_volume " . $ret, $output, $ret_val);\r
+$fullpath = "mounted_volume" . $pathwithoutdrive;\r
+exec("mklink /j mklink_junction directory", $output, $ret_val);\r
+file_put_contents("mklink_junction\\a.php", "<?php echo \"I am included.\n\" ?>");\r
+file_put_contents("$fullpath\\mnt\\test\\directory\\b.php", "<?php echo \"I am included.\n\" ?>");\r
+print_r(scandir("mklink_junction"));\r
+print_r(scandir("$fullpath\\mnt\\test\\directory"));\r
+print_r(scandir("$fullpath\\mnt\\test\\mklink_junction"));\r
+unlink("$fullpath\\mnt\\test\\directory\\b.php");\r
+unlink("mklink_junction\\a.php");\r
+chdir($old_dir);\r
+rmdir(__DIR__ . "\\mnt\\test\\directory");\r
+rmdir(__DIR__ . "\\mnt\\test\\mklink_junction");\r
+rmdir(__DIR__ . "\\mnt\\test\\mounted_volume");\r
+rmdir(__DIR__ . "\\mnt\\test");\r
+rmdir(__DIR__ . "\\mnt");\r
+\r
+?>\r
+--EXPECT--\r
+Array\r
+(\r
+    [0] => .\r
+    [1] => ..\r
+    [2] => a.php\r
+    [3] => b.php\r
+)\r
+Array\r
+(\r
+    [0] => .\r
+    [1] => ..\r
+    [2] => a.php\r
+    [3] => b.php\r
+)\r
+Array\r
+(\r
+    [0] => .\r
+    [1] => ..\r
+    [2] => a.php\r
+    [3] => b.php\r
+)
\ No newline at end of file
diff --git a/ext/standard/tests/file/windows_links/bug48746_3.phpt b/ext/standard/tests/file/windows_links/bug48746_3.phpt
new file mode 100644 (file)
index 0000000..ee8caa6
--- /dev/null
@@ -0,0 +1,48 @@
+--TEST--\r
+Bug#48746 - Junction not working properly\r
+\r
+--CREDIT--\r
+Venkat Raman Don (don.raman@microsoft.com)\r
+\r
+--SKIPIF--\r
+<?php\r
+$cmd = "junction.exe /?";\r
+$ret = @exec($cmd, $output, $return_val);\r
+if (count($output) == 0) {\r
+    die("junction.exe not found in PATH");\r
+}\r
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {\r
+    die('skip windows only test');\r
+}\r
+?>\r
+--FILE--\r
+<?php\r
+$old_dir = __DIR__;\r
+$dirname = __DIR__ . "\\mnt\\test\\directory";\r
+exec("mkdir " . $dirname, $output, $ret_val);\r
+chdir(__DIR__ . "\\mnt\\test");\r
+exec("junction junction directory", $output, $ret_val);\r
+file_put_contents("junction\\a.php", "<?php echo \"I am included.\n\" ?>");\r
+file_put_contents("junction\\b.php", "<?php echo \"I am included.\n\" ?>");\r
+include "junction/a.php";\r
+require_once "junction\\b.php";\r
+print_r(scandir("junction"));\r
+unlink("junction\\a.php");\r
+unlink("junction\\b.php");\r
+chdir($old_dir);\r
+rmdir(__DIR__ . "\\mnt\\test\\directory");\r
+rmdir(__DIR__ . "\\mnt\\test\\junction");\r
+rmdir(__DIR__ . "\\mnt\\test");\r
+rmdir(__DIR__ . "\\mnt");\r
+\r
+?>\r
+--EXPECT--\r
+I am included.\r
+I am included.\r
+Array\r
+(\r
+    [0] => .\r
+    [1] => ..\r
+    [2] => a.php\r
+    [3] => b.php\r
+)
\ No newline at end of file