Add test for escapeshellcmd and restore previous behaviour with stripping % on Windows.

This commit is contained in:
Scott MacVicar 2008-07-22 16:18:37 +00:00
parent ea85e2924f
commit 9f26bea98f
2 changed files with 51 additions and 2 deletions

View File

@ -284,6 +284,11 @@ PHPAPI char *php_escape_shell_cmd(char *str)
}
cmd[y++] = str[x];
break;
#else
/* This is Windows specific for enviromental variables */
case '%':
cmd[y++] = '';
break;
#endif
case '#': /* This is character-set independent */
case '&':
@ -307,8 +312,6 @@ PHPAPI char *php_escape_shell_cmd(char *str)
case '\x0A': /* excluding these two */
case '\xFF':
#ifdef PHP_WIN32
/* This is Windows specific for enviromental variables */
case '%':
cmd[y++] = '^';
#else
cmd[y++] = '\\';

View File

@ -0,0 +1,46 @@
--TEST--
Test escapeshellcmd() functionality on Windows
--SKIPIF--
<?php
if( substr(PHP_OS, 0, 3) != 'WIN' ) {
die('skip...Valid for Windows only');
}
?>
--FILE--
<?php
echo "*** Testing escapeshellcmd() basic operations ***\n";
$data = array(
'"abc',
"'abc",
'?<>',
'()[]{}$',
'%^',
'#&;`|*?',
'~<>\\'
);
$count = 1;
foreach ($data AS $value) {
echo "-- Test " . $count++ . " --\n";
var_dump(escapeshellcmd($value));
}
echo "Done\n";
?>
--EXPECTF--
*** Testing escapeshellcmd() basic operations ***
-- Test 1 --
string(5) "^"abc"
-- Test 2 --
string(5) "^'abc"
-- Test 3 --
string(6) "^?^<^>"
-- Test 4 --
string(14) "^(^)^[^]^{^}^$"
-- Test 5 --
string(2) "^^"
-- Test 6 --
string(14) "^#^&^;^`^|^*^?"
-- Test 7 --
string(8) "^~^<^>^\"
Done