diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-07-10 10:10:30 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-07-10 10:10:30 +0200 |
commit | bdcda50304a2a0f3ae65b256507a8540594b69d7 (patch) | |
tree | 2ddd26d7983cf4ac3996037044ea45f2db59f22a | |
parent | bc68f10b7624f76707188e56371bcbdd43f8b8bc (diff) | |
parent | 68293b19d4c07890ef43d59cd24755c5f182ed48 (diff) | |
download | php-git-bdcda50304a2a0f3ae65b256507a8540594b69d7.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
Enable symlink_link_linkinfo_is_link_* tests on Windows
13 files changed, 74 insertions, 68 deletions
diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic1.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic1.phpt index 630310ec02..d33f7d321d 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic1.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic1.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions: basic functionality - link to files --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- @@ -45,7 +46,8 @@ foreach($files as $file) { // create soft link var_dump( symlink($file, $sym_linkname) ); // checking information of link with linkinfo() - var_dump( linkinfo($sym_linkname) ); + $linkinfo = linkinfo($sym_linkname); + var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // checking if given file is soft link var_dump( is_link($sym_linkname) ); // clear the cache @@ -56,7 +58,8 @@ foreach($files as $file) { // creating hard link var_dump( link($file, $linkname) ); // checking information of link with linkinfo() - var_dump( linkinfo($linkname) ); + $linkinfo = linkinfo($sym_linkname); + var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // checking if given link is soft link; expected: false var_dump( is_link($linkname) ); // clear the cache @@ -82,20 +85,20 @@ rmdir($dirname); -- Iteration 1 -- -- Testing on soft links -- bool(true) -int(%d) +bool(true) bool(true) -- Testing on hard links -- bool(true) -int(%d) +bool(true) bool(false) -- Iteration 2 -- -- Testing on soft links -- bool(true) -int(%d) +bool(true) bool(true) -- Testing on hard links -- bool(true) -int(%d) +bool(true) bool(false) Done diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic2.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic2.phpt index fce709d23d..c53831075d 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic2.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_basic2.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions: basic functionality - link to dirs --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- @@ -31,7 +32,8 @@ echo "\n-- Testing on soft links --\n"; // creating soft link to $dirname var_dump( symlink("$file_path/$dirname", $sym_linkname) ); // this works, expected true // gets information about soft link created to directory; expected: true -var_dump( linkinfo($sym_linkname) ); +$linkinfo = linkinfo($sym_linkname); +var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // checks if link created is soft link; expected: true var_dump( is_link($sym_linkname) ); // clear the cache @@ -47,7 +49,11 @@ var_dump( is_link($linkname) ); // link doesn't exists as not created, expected clearstatcache(); // deleting the links -unlink($sym_linkname); +if (PHP_OS_FAMILY === 'Windows') { + rmdir($sym_linkname); +} else { + unlink($sym_linkname); +} echo "Done\n"; ?> @@ -63,7 +69,7 @@ rmdir($dirname); -- Testing on soft links -- bool(true) -int(%d) +bool(true) bool(true) -- Testing on hard links -- diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt index 52c37b768c..72737d1a8e 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt @@ -2,9 +2,6 @@ Test symlink(), linkinfo(), link() and is_link() functions : error conditions - symlink & linkinfo --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); -} if (substr(PHP_OS, 0, 3) == 'SUN') { die('skip Not valid for Sun Solaris'); } diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt index 3d38458bed..c5b21c0d21 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt @@ -2,8 +2,8 @@ Test symlink(), linkinfo(), link() and is_link() functions : error conditions - link & is_link --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows' && PHP_ZTS) { + die('xfail different handling of space as filename with ZTS/NTS on Windows'); } ?> --FILE-- diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation1.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation1.phpt index c31efdab16..6cbd374113 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation1.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation1.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - link name stored in an array/object --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- @@ -34,7 +35,8 @@ echo "\n-- Working with soft links --\n"; // creating soft link var_dump( symlink($filename, $obj->linkname) ); // check if the link exists -var_dump( linkinfo($obj->linkname) ); +$linkinfo = linkinfo($obj->linkname); +var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // check if link is soft link var_dump( is_link($obj->linkname) ); // delete the link created @@ -47,7 +49,8 @@ echo "\n-- Working with hard links --\n"; // creating hard link var_dump( link($filename, $obj->linkname) ); // check if the link exists -var_dump( linkinfo($obj->linkname) ); +$linkinfo = linkinfo($obj->linkname); +var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // check if link is soft link; expected: false as the link is a hardlink var_dump( is_link($obj->linkname) ); // delete the link created @@ -64,7 +67,8 @@ echo "\n-- Working with soft links --\n"; // creating soft link var_dump( symlink($filename, $link_arr[0]) ); // check if the link exist -var_dump( linkinfo($link_arr[0]) ); +$linkinfo = linkinfo($link_arr[0]); +var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // check if link is soft link var_dump( is_link($link_arr[0]) ); // delete the link created @@ -77,7 +81,8 @@ echo "\n-- Working with hard links --\n"; // creating hard link var_dump( link($filename, $link_arr[0]) ); // check if the link exist -var_dump( linkinfo($link_arr[0]) ); +$linkinfo = linkinfo($link_arr[0]); +var_dump( is_int($linkinfo) && $linkinfo !== -1 ); // check if link is soft link; expected: false as this is a hardlink var_dump( is_link($link_arr[0]) ); // delete the links created @@ -101,23 +106,23 @@ rmdir($dirname); -- Working with soft links -- bool(true) -int(%d) +bool(true) bool(true) -- Working with hard links -- bool(true) -int(%d) +bool(true) bool(false) *** Testing symlink(), link(), linkinfo() and is_link() with linknames stored as members of an array *** -- Working with soft links -- bool(true) -int(%d) +bool(true) bool(true) -- Working with hard links -- bool(true) -int(%d) +bool(true) bool(false) Done diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation2.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation2.phpt index cde6783e15..69715be008 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation2.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation2.phpt @@ -1,11 +1,5 @@ --TEST-- Test symlink(), linkinfo(), link() and is_link() functions : usage variations - hardlink to non-existent file ---SKIPIF-- -<?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); -} -?> --FILE-- <?php /* Variation 2 : Create hard link to non-existent file */ diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation3.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation3.phpt index d5a34db335..ccf2f53792 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation3.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation3.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - access/update file through softlink --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation4.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation4.phpt index 1bb3b76eaa..ff2a3f0f4a 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation4.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation4.phpt @@ -1,11 +1,5 @@ --TEST-- Test symlink(), linkinfo(), link() and is_link() functions : usage variations - access/update file through hard link ---SKIPIF-- -<?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); -} -?> --FILE-- <?php /* Variation 4 : Create file and a hard link to the file diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation5.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation5.phpt index 855d005e23..e725ea96e5 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation5.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation5.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - work on deleted link --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation6.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation6.phpt index 7dc11a751d..50296920c5 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation6.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation6.phpt @@ -2,9 +2,6 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - link & dir perms. --SKIPIF-- <?php -if ( substr(PHP_OS, 0, 3) == 'WIN' ) { - die('skip no symlinks on Windows'); -} require __DIR__ . '/../skipif_root.inc'; ?> --FILE-- diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation7.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation7.phpt index 222322f316..d46092f074 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation7.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation7.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - try link to self --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- @@ -38,7 +39,11 @@ var_dump( symlink($dirname, $linkname) ); // create another link to $dirname var_dump( symlink($linkname, $linkname) ); // delete link -unlink($linkname); +if (PHP_OS_FAMILY === 'Windows') { + rmdir($linkname); +} else { + unlink($linkname); +} echo "\n*** Create hard link to file and then to itself ***\n"; // create hard link to $filename diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation8.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation8.phpt index f284095d24..ef9352bf00 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation8.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation8.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - try link with same name in diff. dir --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- @@ -64,7 +65,7 @@ bool(true) *** Create soft link in different directory with same filename *** -Warning: symlink(): File exists in %s on line %d +Warning: symlink(): %rFile exists|Permission denied%r in %s on line %d bool(false) bool(true) Done diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation9.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation9.phpt index 0fd0b4838e..baf8a402cd 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation9.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_variation9.phpt @@ -2,8 +2,9 @@ Test symlink(), linkinfo(), link() and is_link() functions : usage variations - link & lstat[dev] value --SKIPIF-- <?php -if (substr(PHP_OS, 0, 3) == 'WIN') { - die('skip no symlinks on Windows'); +if (PHP_OS_FAMILY === 'Windows') { + require_once __DIR__ . '/windows_links/common.inc'; + skipIfSeCreateSymbolicLinkPrivilegeIsDisabled(__FILE__); } ?> --FILE-- @@ -32,8 +33,8 @@ var_dump( symlink($filename, $soft_link) ); // confirming that linkinfo() = lstat['dev'] , this should always match $linkinfo = linkinfo($soft_link); $s1 = lstat($soft_link); -echo "linkinfo() returns : $linkinfo\n"; -echo "lstat() returns lstat['dev'] as $s1[0]\n"; +echo "linkinfo() returns integer !== -1: "; +var_dump(is_int($linkinfo) && $linkinfo !== -1); if( $s1[0] == $linkinfo ) echo "\nlinkinfo() value matches lstat['dev']\n"; else @@ -47,8 +48,8 @@ var_dump( link($filename, $hard_link) ); // confirming that linkinfo() = lstat['dev'] , this should always match $linkinfo = linkinfo($hard_link); $s1 = lstat($hard_link); -echo "linkinfo() returns : $linkinfo\n"; -echo "lstat() returns lstat['dev'] as $s1[0]\n"; +echo "linkinfo() returns integer !== -1: "; +var_dump(is_int($linkinfo) && $linkinfo !== -1); if( $s1[0] == $linkinfo ) echo "\nlinkinfo() value matches lstat['dev']\n"; else @@ -64,15 +65,19 @@ var_dump( symlink($dirname, $soft_link) ); // confirming that linkinfo() = lstat['dev'], this should always match $linkinfo = linkinfo($soft_link); $s1 = lstat($soft_link); -echo "linkinfo() returns : $linkinfo\n"; -echo "lstat() returns lstat['dev'] as $s1[0]\n"; +echo "linkinfo() returns integer !== -1: "; +var_dump(is_int($linkinfo) && $linkinfo !== -1); if( $s1[0] == $linkinfo ) echo "\nlinkinfo() value matches lstat['dev']\n"; else echo "\nWarning: linkinfo() value doesn't match lstat['dev']\n"; // delete link -unlink($soft_link); +if (PHP_OS_FAMILY === 'Windows') { + rmdir($soft_link); +} else { + unlink($soft_link); +} echo "Done\n"; ?> @@ -87,22 +92,19 @@ rmdir($dirname); --EXPECTF-- *** Checking lstat() on soft link *** bool(true) -linkinfo() returns : %d -lstat() returns lstat['dev'] as %d +linkinfo() returns integer !== -1: bool(true) linkinfo() value matches lstat['dev'] *** Checking lstat() on hard link *** bool(true) -linkinfo() returns : %d -lstat() returns lstat['dev'] as %d +linkinfo() returns integer !== -1: bool(true) linkinfo() value matches lstat['dev'] *** Checking lstat() on a soft link to directory *** bool(true) -linkinfo() returns : %d -lstat() returns lstat['dev'] as %d +linkinfo() returns integer !== -1: bool(true) linkinfo() value matches lstat['dev'] Done |