From: Anatol Belski Date: Sun, 26 Jul 2015 18:31:32 +0000 (+0200) Subject: exclude the platform diff case from the test X-Git-Tag: php-7.0.0beta3~5^2~97^2~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27c973a954375a3706d4a1685334444713e14af8;p=php exclude the platform diff case from the test Say the string is \377\000, basename will use mbrlen() to check whether it's a start of a multibyte sequence. While on Linux it'll return -1 for any char in the extended ASCII, on Windows it's returning 1. From what I see the reason is that Windows doesn't implement UTF-8 in the CRT lib, it's rather 16-bit Unicode or DBCS. Since extended ASCII is convertable to Unicode directly - thus the behavior. On Linux however, it's a true UTF-8 locale and implementation, for it \377\000 is invalid. Maybe mbrlen needs an independent implementation for Windows supporting UTF-8. For now I just split out this case so the most of the big basename test doesn't fail on this one case. --- diff --git a/ext/standard/tests/strings/basename_invalid_path.phpt b/ext/standard/tests/strings/basename_invalid_path.phpt new file mode 100644 index 0000000000..b632efa845 --- /dev/null +++ b/ext/standard/tests/strings/basename_invalid_path.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test basename() function : usage variations with invalid paths +--SKIPIF-- + +--FILE-- + +--FILE-- +