test_task.bat 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. @echo off
  2. set NO_INTERACTION=1
  3. set REPORT_EXIT_STATUS=1
  4. set SKIP_IO_CAPTURE_TESTS=1
  5. if /i "%APPVEYOR_REPO_BRANCH:~0,4%" equ "php-" (
  6. set BRANCH=%APPVEYOR_REPO_BRANCH:~4,3%
  7. set STABILITY=stable
  8. ) else (
  9. set BRANCH=master
  10. set STABILITY=staging
  11. )
  12. set DEPS_DIR=%PHP_BUILD_CACHE_BASE_DIR%\deps-%BRANCH%-%PHP_SDK_VS%-%PHP_SDK_ARCH%
  13. if not exist "%DEPS_DIR%" (
  14. echo "%DEPS_DIR%" doesn't exist
  15. exit /b 3
  16. )
  17. rem setup MySQL related exts
  18. set MYSQL_PWD=Password12!
  19. set MYSQL_TEST_PASSWD=%MYSQL_PWD%
  20. set MYSQL_TEST_USER=root
  21. set MYSQL_TEST_HOST=127.0.0.1
  22. set MYSQL_TEST_PORT=3306
  23. set PDO_MYSQL_TEST_USER=%MYSQL_TEST_USER%
  24. set PDO_MYSQL_TEST_PASS=%MYSQL_PWD%
  25. set PDO_MYSQL_TEST_HOST=%MYSQL_TEST_HOST%
  26. set PDO_MYSQL_TEST_PORT=%MYSQL_TEST_PORT%
  27. set PDO_MYSQL_TEST_DSN=mysql:host=%PDO_MYSQL_TEST_HOST%;port=%PDO_MYSQL_TEST_PORT%;dbname=test
  28. "C:\Program Files\MySql\MySQL Server 5.7\bin\mysql.exe" --user=%MYSQL_TEST_USER% -e "CREATE DATABASE IF NOT EXISTS test"
  29. if %errorlevel% neq 0 exit /b 3
  30. rem setup PostgreSQL related exts
  31. set PGUSER=postgres
  32. set PGPASSWORD=Password12!
  33. rem set PGSQL_TEST_CONNSTR=host=127.0.0.1 dbname=test port=5432 user=postgres password=Password12!
  34. echo ^<?php $conn_str = "host=127.0.0.1 dbname=test port=5432 user=%PGUSER% password=%PGPASSWORD%"; ?^> >> "./ext/pgsql/tests/config.inc"
  35. set PDO_PGSQL_TEST_DSN=pgsql:host=127.0.0.1 port=5432 dbname=test user=%PGUSER% password=%PGPASSWORD%
  36. "C:\Program Files\PostgreSQL\10\bin\createdb.exe" test
  37. if %errorlevel% neq 0 exit /b 3
  38. rem setup ODBC related exts
  39. set ODBC_TEST_USER=sa
  40. set ODBC_TEST_PASS=Password12!
  41. set ODBC_TEST_DSN=Driver={ODBC Driver 13 for SQL Server};Server=(local)\SQL2017;Database=master;uid=%ODBC_TEST_USER%;pwd=%ODBC_TEST_PASS%
  42. set PDOTEST_DSN=odbc:%ODBC_TEST_DSN%
  43. rem prepare for ext/openssl
  44. if "%APPVEYOR%" equ "True" rmdir /s /q C:\OpenSSL-Win32 >NUL 2>NUL
  45. if "%APPVEYOR%" equ "True" rmdir /s /q C:\OpenSSL-Win64 >NUL 2>NUL
  46. if "%PLATFORM%" == "x64" (
  47. set OPENSSLDIR="C:\Program Files\Common Files\SSL"
  48. ) else (
  49. set OPENSSLDIR="C:\Program Files (x86)\Common Files\SSL"
  50. )
  51. mkdir %OPENSSLDIR%
  52. if %errorlevel% neq 0 exit /b 3
  53. copy %DEPS_DIR%\template\ssl\openssl.cnf %OPENSSLDIR%
  54. if %errorlevel% neq 0 exit /b 3
  55. rem set OPENSSL_CONF=%OPENSSLDIR%\openssl.cnf
  56. set OPENSSL_CONF=
  57. rem set SSLEAY_CONF=
  58. rem prepare for OPcache
  59. if "%OPCACHE%" equ "1" set OPCACHE_OPTS=-d opcache.enable=1 -d opcache.enable_cli=1 -d opcache.protect_memory=1 -d opcache.jit_buffer_size=16M
  60. rem work-around for failing to dl(mysqli) with OPcache (https://github.com/php/php-src/issues/8508)
  61. if "%OPCACHE%" equ "1" set OPCACHE_OPTS=%OPCACHE_OPTS% -d extension=mysqli
  62. rem prepare for enchant
  63. mkdir C:\usr\local\lib\enchant-2
  64. if %errorlevel% neq 0 exit /b 3
  65. copy %DEPS_DIR%\bin\libenchant2_hunspell.dll C:\usr\local\lib\enchant-2
  66. if %errorlevel% neq 0 exit /b 3
  67. reg add HKEY_CURRENT_USER\SOFTWARE\Enchant\Config /v Module_Dir /t REG_SZ /d c:\enchant_plugins
  68. if %errorlevel% neq 0 exit /b 3
  69. set PHP_BUILD_CACHE_ENCHANT_DICT_DIR=%PHP_BUILD_CACHE_BASE_DIR%\enchant_dict
  70. if not exist "%PHP_BUILD_CACHE_ENCHANT_DICT_DIR%" (
  71. echo Creating %PHP_BUILD_CACHE_ENCHANT_DICT_DIR%
  72. mkdir "%PHP_BUILD_CACHE_ENCHANT_DICT_DIR%"
  73. )
  74. if not exist "%PHP_BUILD_CACHE_ENCHANT_DICT_DIR%\en_US.aff" (
  75. echo Fetching enchant dicts
  76. pushd %PHP_BUILD_CACHE_ENCHANT_DICT_DIR%
  77. del /q *
  78. powershell -Command wget http://windows.php.net/downloads/qa/appveyor/ext/enchant/dict.zip -OutFile dict.zip
  79. unzip dict.zip
  80. del /q dict.zip
  81. popd
  82. )
  83. mkdir %LOCALAPPDATA%\enchant\hunspell
  84. copy %PHP_BUILD_CACHE_ENCHANT_DICT_DIR%\* %LOCALAPPDATA%\enchant\hunspell
  85. set PHP_BUILD_DIR=%PHP_BUILD_OBJ_DIR%\Release
  86. if "%THREAD_SAFE%" equ "1" set PHP_BUILD_DIR=%PHP_BUILD_DIR%_TS
  87. mkdir %PHP_BUILD_DIR%\test_file_cache
  88. rem generate php.ini
  89. echo extension_dir=%PHP_BUILD_DIR% > %PHP_BUILD_DIR%\php.ini
  90. echo opcache.file_cache=%PHP_BUILD_DIR%\test_file_cache >> %PHP_BUILD_DIR%\php.ini
  91. if "%OPCACHE%" equ "1" echo zend_extension=php_opcache.dll >> %PHP_BUILD_DIR%\php.ini
  92. rem work-around for some spawned PHP processes requiring OpenSSL
  93. echo extension=php_openssl.dll >> %PHP_BUILD_DIR%\php.ini
  94. rem remove ext dlls for which tests are not supported
  95. for %%i in (imap ldap oci8_12c pdo_firebird pdo_oci snmp) do (
  96. del %PHP_BUILD_DIR%\php_%%i.dll
  97. )
  98. set TEST_PHPDBG_EXECUTABLE=%PHP_BUILD_DIR%\phpdbg.exe
  99. mkdir c:\tests_tmp
  100. set TEST_PHP_JUNIT=c:\junit.out.xml
  101. cd "%APPVEYOR_BUILD_FOLDER%"
  102. nmake test TESTS="%OPCACHE_OPTS% -q --offline --show-diff --show-slow 1000 --set-timeout 120 --temp-source c:\tests_tmp --temp-target c:\tests_tmp --bless %PARALLEL%"
  103. set EXIT_CODE=%errorlevel%
  104. appveyor PushArtifact %TEST_PHP_JUNIT%
  105. if %EXIT_CODE% GEQ 1 (
  106. git checkout ext\pgsql\tests\config.inc
  107. git diff > bless_tests.patch
  108. appveyor PushArtifact bless_tests.patch
  109. )
  110. exit /b %EXIT_CODE%