Repository navigation
Closed
Description
Description
The following code:
C:\php-sdk\php-src
+$ nmake test TESTS=ext/mbstring
... ommited ...Resulted in this output:
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
mb_http_input() [C:\php-sdk\php-src\ext\mbstring\tests\mb_http_input.phpt]
mb_http_input() with pass encoding [C:\php-sdk\php-src\ext\mbstring\tests\mb_http_input_pass.phpt]
=====================================================================
NMAKE : fatal error U1077: 'C:\php-sdk\php-src\x64\Debug_TS\php.exe' : リターン コード '0x1'
Stop.
But I expected this output instead:
Test all passed in mbstring.
I got an error when I put --enable-cgi. At least, PHP 8.0 and master is failed.
config.nice.bat script
@echo off
cscript /nologo /e:jscript configure.js "--disable-all" "--enable-cli" "--enable-cgi" "--enable-debug" "--enable-mbstring" "--enable-intl" %*mb_http_input.log
---- EXPECTED OUTPUT
ÆüËܸì0123456789ÆüËܸ쥫¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
ÆüËܸì0123456789ÆüËܸ쥫¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"
bool(false)
bool(false)
array(1) {
[0]=>
string(10) "ISO-8859-1"
}
string(10) "ISO-8859-1"
mb_http_input(): Argument #1 ($type) must be one of "G", "P", "C", "S", "I", or "L"
---- ACTUAL OUTPUT
ÆüËܸì0123456789ÆüËܸ쥫¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
Æ�Eܸ�E123456789Æ�Eܸ�E«¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"
bool(false)
bool(false)
array(1) {
[0]=>
string(10) "ISO-8859-1"
}
string(10) "ISO-8859-1"
mb_http_input(): Argument #1 ($type) must be one of "G", "P", "C", "S", "I", or "L"
---- FAILED
mb_http_input.diff
ÆüËܸì0123456789ÆüËܸ쥫¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
002+ Æ�Eܸ�E123456789Æ�Eܸ�E«¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
002- ÆüËܸì0123456789ÆüËܸ쥫¥¿¥«¥Ê¤Ò¤é¤¬¤Ê
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"
bool(false)
--
mb_http_input_pass.log
---- EXPECTED OUTPUT
���ܸ�0123456789���ܸ쥫�����ʤҤ餬��
���ܸ�0123456789���ܸ쥫�����ʤҤ餬��
string(4) "pass"
string(4) "pass"
bool(false)
bool(false)
array(1) {
[0]=>
string(4) "pass"
}
string(4) "pass"
---- ACTUAL OUTPUT
���ܸ�0123456789���ܸ쥫�����ʤҤ餬��
ƁEܸ�E123456789ƁEܸ�E������ʤҤ餬��
string(4) "pass"
string(4) "pass"
bool(false)
bool(false)
array(1) {
[0]=>
string(4) "pass"
}
string(4) "pass"
---- FAILED
mb_http_input_pass.diff
���ܸ�0123456789���ܸ쥫�����ʤҤ餬��
002+ ƁEܸ�E123456789ƁEܸ�E������ʤҤ餬��
002- ���ܸ�0123456789���ܸ쥫�����ʤҤ餬��
string(4) "pass"
string(4) "pass"
bool(false)
--
My environment is:
- Windows 11
- Probably character code is cp932
Please see below .log file and .diff files.
mb_http_input_test_failes.zip
PHP Version
PHP 8.0 - master
Operating System
Windows
Activity
Fix phpGH-14407 mb_http_input tests failed on Windows
alexdowad commentedon Jun 6, 2024
@youkidearitai I really appreciate your reporting and helping to fix this problem.
It would be really good to figure out why we have a behavior difference between Windows and Linux. On my Linux machine, the tests are passing as is.
Is it possible to get more information about on which commits the tests are failing, and on which they are succeeding? You mentioned "PHP 8.0" and "master". I guess it means you tested those 2 revisions? Is it possible to find the latest revision on which the tests succeed?
youkidearitai commentedon Jun 8, 2024
@alexdowad I investigated this problem. It may not have been successful from the beginning.
This test file was SKIP until PHP 7.4.
bce3d0c#diff-9cbcc3138b63a3155a02106da638c05f8c2c9d0a8b0002a626ad29d0c0e4732b
This test has been re-enabled in PHP 8.0 from 226d9dd .
youkidearitai commentedon Jun 8, 2024
This mojibake, I think "Best fit" feature of encoding conversion on Windows.
alexdowad commentedon Jun 8, 2024
Great investigation!
On
226d9dd, did the test pass on Windows?youkidearitai commentedon Jun 9, 2024
Didn't, On
226d9ddtest is skipped. The test is not pass any (old) version.cmb69 commentedon Jul 9, 2024
FWIW, for me, that test passes locally on Windows (cp850 and cp932), and apparently it passes on CI as well.
youkidearitai commentedon Jul 12, 2024
@cmb69 Thank you for confirm. I restarted
make testin vs16 and vs17. It passed only vs17 (vs16 is not passed).Girgias commentedon Jun 23, 2026
@youkidearitai is this still an issue you experience?
youkidearitai commentedon Jun 23, 2026
@Girgias Yes, Still works and opening #14454 .
Fix phpGH-14407 mb_http_input tests failed on Windows (php#14454)