diff options
Diffstat (limited to 'ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt')
-rw-r--r-- | ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt b/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt new file mode 100644 index 0000000000..1c890ed53a --- /dev/null +++ b/ext/standard/tests/file/windows_mb_path/bug75063_cp1251.phpt @@ -0,0 +1,80 @@ +--TEST-- +Bug #75063 Many filesystem-related functions do not work with multibyte file names, cp1251 +--SKIPIF-- +<?php +include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc"; + +skip_if_not_win(); +if (getenv("SKIP_SLOW_TESTS")) die("skip slow test"); +skip_if_no_required_exts(); + +?> +--INI-- +default_charset=cp1251 +--FILE-- +<?php + +/* This file is in cp1251. */ + +include dirname(__FILE__) . DIRECTORY_SEPARATOR . "util.inc"; + +$dir_basename = "тест"; +$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-cp1251"; +$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename; + +mkdir($prefix); +create_verify_dir($prefix, $dir_basename, 1251); + +var_dump(get_basename_with_cp($d0, 1251, false)); + +$old_cwd = getcwd(); +var_dump(chdir($d0)); + +$code = <<<CODE +<?php + +foreach(["test", "таст"] as \$fn) { + file_put_contents("\$fn.txt", ""); +} + +var_dump(getcwd()); +if (\$dh = opendir(getcwd())) { + while ((\$file = readdir(\$dh)) !== false) { + if ("." == \$file || ".." == \$file) continue; + var_dump(\$file); + } + closedir(\$dh); +} +CODE; +$code_fn = "code.php"; +file_put_contents($code_fn, $code); + +print(shell_exec(getenv('TEST_PHP_EXECUTABLE') . " -n -d default_charset=cp1251 -f code.php")); + +chdir($old_cwd); + +/* --CLEAN-- section were the right place, but it won't accept default_charset ATM, it seems. */ +$dir_basename = "тест"; +$prefix = dirname(__FILE__) . DIRECTORY_SEPARATOR . "bug75063-cp1251"; +$d0 = $prefix . DIRECTORY_SEPARATOR . $dir_basename; + +$obj = scandir($d0); +foreach ($obj as $file) { + if ("." == $file || ".." == $file) continue; + unlink($d0 . DIRECTORY_SEPARATOR . $file); +} + +rmdir($d0); +rmdir($prefix); +?> +===DONE=== + +--EXPECTF-- +string(4) "тест" +bool(true) +string(%d) "%sbug75063-cp1251%eтест" +string(8) "code.php" +string(8) "test.txt" +string(8) "таст.txt" +===DONE=== + |