diff --git a/dev/setup/phpunit/PHPUNIT.BAT b/dev/setup/phpunit/PHPUNIT.BAT index 1df767c6c7e..b931a081528 100644 --- a/dev/setup/phpunit/PHPUNIT.BAT +++ b/dev/setup/phpunit/PHPUNIT.BAT @@ -1,6 +1,76 @@ +@ECHO OFF REM SAMPLE WINDOWS SCRIPT TO START TESTS REM REM CURRENTLY THIS SCRIPT MUST BE LOCATED AT THE ROOT OF THE PROJECT. REM A copy of phpunit-9.5.phar is required + + SET OPEN_BASEDIR=%~dp0 -c:\wamp64\bin\php\php7.4.33\php -dopen_basedir=%OPEN_BASEDIR% .\phpunit-9.5.phar -d memory_limit=-1 -c test\phpunit\phpunittest.xml test\phpunit\AllTests.php +SET DD_TRACE_CLI_ENABLED=1 +SET DD_TRACE_CLI_LOG_FILE=%~dp0/trace.log +SET PHP=c:\wamp64\bin\php\php7.4.33\php + +REM c:\wamp64\bin\php\php7.4.33\php -dopen_basedir=%OPEN_BASEDIR% .\phpunit-9.5.phar -d memory_limit=-1 -c test\phpunit\phpunittest.xml test\phpunit\AllTests.php --filter FilesLibTest --migrate-configuration +REM Example: phpunit.bat test/phpunit/FilesLibTest.php --filter FilesLibTest::testDolDirMove +REM + +REM The DOMAIN/Port value should be the same as in htdocs/conf/conf.php +REM (This is only needed if did not set up another server locally +REM for your test installation database). +SET PHPSERVER_DOMAIN_PORT=127.0.0.1:80 +SET PHPSERVER_LOG=%~dp0/php_serv.log +GOTO :START + +REM The error handler +:ERROR_HANDLER +echo An error occurred. Stop php server +taskkill /F /PID %php_pid% +exit /b 1 + +:START + +start /B php -S %PHPSERVER_DOMAIN_PORT% -t htdocs > %PHPSERVER_LOG% 2>&1 +for /F "tokens=2 delims=," %%i in ('tasklist /FI "IMAGENAME eq php.exe" /FO CSV /NH') do ( + set "php_pid=%%~i" + goto :FOUND_PID +) + +:FOUND_PID +echo "Server PID: %php_pid%" +curl "http://%PHPSERVER_DOMAIN_PORT%" + + +SET MEMOPT=-d memory-limit=-1 +SET CONFOPT=-c test\phpunit\phpunittest.xml +SET TESTS=test\phpunit\AllTests.php + +setlocal enabledelayedexpansion + +for %%i in (%*) do ( + set "f=%%i" + if "!f:~0,12!"=="memory-limit" ( + SET MEMOPT="" + goto :continue + ) + if "%%i"=="-c" ( + SET CONFOPT="" + goto :continue + ) + if "!f:~-4!"==".php" ( + set TESTS="" + goto :continue + ) + :continue + REM NEEDED FOR CONTINUE + +) + +%PHP% -d display_errors=on -dopen_basedir=%OPEN_BASEDIR% .\phpunit-9.5.phar %MEMOPT% %CONFOPT% %TESTS% %* + +REM c:\wamp64\bin\php\php7.4.33\php -dopen_basedir=%OPEN_BASEDIR% .\phpunit-9.5.phar -d memory_limit=-1 -c test\phpunit\phpunittest.xml test\phpunit\SecurityTest.php + +REM c:\wamp64\bin\php\php7.4.33\php -dopen_basedir=%OPEN_BASEDIR% .\phpunit-9.5.phar -d memory_limit=-1 -c test\phpunit\phpunittest.xml +REM c:\wamp64\bin\php\php7.4.33\php -dopen_basedir=%OPEN_BASEDIR% .\phpunit-9.5.phar -d memory_limit=-1 test\phpunit\AllTests.php --filter FilesLibTest + + +taskkill /F /PID %php_pid% diff --git a/dev/setup/phpunit/setup_conf.sh b/dev/setup/phpunit/setup_conf.sh index 7a23baab5db..9c11bb5f332 100755 --- a/dev/setup/phpunit/setup_conf.sh +++ b/dev/setup/phpunit/setup_conf.sh @@ -4,10 +4,12 @@ TRAVIS_BUILD_DIR=${TRAVIS_BUILD_DIR:=$(realpath "$(dirname "$0")/../../..")} MYSQL=${MYSQL:=mysql} +MYSQLDUMP=${MYSQLDUMP:="${MYSQL}dump"} DB=${DB:=mariadb} DB_ROOT=${DB_ROOT:=root} DB_PASS=${DB_PASS:=} +DB_CACHE_FILE="${TRAVIS_BUILD_DIR}/db_init.sql" TRAVIS_DOC_ROOT_PHP="${TRAVIS_DOC_ROOT_PHP:=$TRAVIS_BUILD_DIR/htdocs}" TRAVIS_DATA_ROOT_PHP="${TRAVIS_DATA_ROOT_PHP:=$TRAVIS_BUILD_DIR/documents}" @@ -23,6 +25,18 @@ else fi CONF_FILE=${CONF_FILE:=${TRAVIS_BUILD_DIR}/htdocs/conf/conf.php} +function save_db_cache() ( + set -x + rm "${DB_CACHE_FILE}".md5 2>/dev/null + echo "Saving DB to cache file '${DB_CACHE_FILE}'" + ${SUDO} "${MYSQLDUMP}" -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT travis \ + --hex-blob --lock-tables=false --skip-add-locks \ + | sed -e 's/DEFINER=[^ ]* / /' > ${DB_CACHE_FILE} + echo "${sum}" > "${DB_CACHE_FILE}".md5 + set +x +) + + if [ -r "${CONF_FILE}" ] ; then echo "'${CONF_FILE} exists, not overwriting!" @@ -55,6 +69,7 @@ else echo fi +load_cache=0 echo "Setting up database '$DB'" if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ] || [ "$DB" = 'postgresql' ]; then echo "MySQL stop" @@ -71,6 +86,7 @@ if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ] || [ "$DB" = 'postgresql' ]; the PASS_OPT="'-password=${DB_PASS}'" fi echo "MySQL set root password" + if [ 1 = 1 ] ; then CMDS=( \ "" @@ -110,8 +126,20 @@ if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ] || [ "$DB" = 'postgresql' ]; the echo "MySQL flush" ${SUDO} "${MYSQL}" -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -e 'FLUSH PRIVILEGES;' - echo "MySQL load sql" - ${SUDO} "${MYSQL}" --force -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -D travis < ${TRAVIS_BUILD_DIR}/dev/initdemo/mysqldump_dolibarr_3.5.0.sql | tee $TRAVIS_BUILD_DIR/initial_350.log + sum=$(find "${TRAVIS_BUILD_DIR}/htdocs/install" -type f -exec md5sum {} + | LC_ALL=C sort | md5sum) + load_cache=0 + if [ -r "$DB_CACHE_FILE".md5 ] && [ -r "$DB_CACHE_FILE" ] && [ -x "$(which "${MYSQLDUMP}")" ] ; then + cache_sum="$(<"$DB_CACHE_FILE".md5)" + [ "$sum" = "$cache_sum" ] && load_cache=1 + fi + + if [ "$load_cache" = "1" ] ; then + echo "MySQL load cached sql" + ${SUDO} "${MYSQL}" --force -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -D travis < ${DB_CACHE_FILE} | tee $TRAVIS_BUILD_DIR/db_from_cacheinit.log + else + echo "MySQL load initial sql" + ${SUDO} "${MYSQL}" --force -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -D travis < ${TRAVIS_BUILD_DIR}/dev/initdemo/mysqldump_dolibarr_3.5.0.sql | tee $TRAVIS_BUILD_DIR/initial_350.log + fi elif [ "$DB" = 'postgresql' ]; then echo Install pgsql if run is for pgsql @@ -158,32 +186,33 @@ set +e echo '$'force_install_prefix=\'llx_\'';' } > "$INSTALL_FORCED_FILE" -( - cd "${TRAVIS_BUILD_DIR}/htdocs/install" || exit 1 +if [ "$load_cache" != "1" ] ; then + ( + cd "${TRAVIS_BUILD_DIR}/htdocs/install" || exit 1 - VERSIONS=("3.5.0" "3.6.0" "3.7.0" "3.8.0" "3.9.0") - VERSIONS+=("4.0.0") - VERSIONS+=("5.0.0" "6.0.0" "7.0.0" "8.0.0" "9.0.0") - VERSIONS+=("10.0.0" "11.0.0" "12.0.0" "13.0.0" "14.0.0") - VERSIONS+=("15.0.0" "16.0.0" "18.0.0" "19.0.0" "20.0.0") - pVer=${VERSIONS[0]} - for v in "${VERSIONS[@]:1}" ; do - LOGNAME="${TRAVIS_BUILD_DIR}/upgrade${pVer//./}${v//./}" - php upgrade.php "$pVer" "$v" ignoredbversion > "${LOGNAME}.log" - php upgrade2.php "$pVer" "$v" ignoredbversion > "${LOGNAME}-2.log" - php step5.php "$pVer" "$v" ignoredbversion > "${LOGNAME}-3.log" - pVer="$v" - done + VERSIONS=("3.5.0" "3.6.0" "3.7.0" "3.8.0" "3.9.0") + VERSIONS+=("4.0.0") + VERSIONS+=("5.0.0" "6.0.0" "7.0.0" "8.0.0" "9.0.0") + VERSIONS+=("10.0.0" "11.0.0" "12.0.0" "13.0.0" "14.0.0") + VERSIONS+=("15.0.0" "16.0.0" "18.0.0" "19.0.0" "20.0.0") + pVer=${VERSIONS[0]} + for v in "${VERSIONS[@]:1}" ; do + LOGNAME="${TRAVIS_BUILD_DIR}/upgrade${pVer//./}${v//./}" + php upgrade.php "$pVer" "$v" ignoredbversion > "${LOGNAME}.log" + php upgrade2.php "$pVer" "$v" ignoredbversion > "${LOGNAME}-2.log" + php step5.php "$pVer" "$v" ignoredbversion > "${LOGNAME}-3.log" + pVer="$v" + done - ${SUDO} "${MYSQL}" --force -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -D travis < "${TRAVIS_BUILD_DIR}/htdocs/install/mysql/migration/repair.sql" + ${SUDO} "${MYSQL}" --force -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -D travis < "${TRAVIS_BUILD_DIR}/htdocs/install/mysql/migration/repair.sql" - { - php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_API,MAIN_MODULE_ProductBatch,MAIN_MODULE_SupplierProposal,MAIN_MODULE_STRIPE,MAIN_MODULE_ExpenseReport - php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKET,MAIN_MODULE_ACCOUNTING,MAIN_MODULE_MRP - php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_RECEPTION,MAIN_MODULE_RECRUITMENT - php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_KnowledgeManagement,MAIN_MODULE_EventOrganization,MAIN_MODULE_PARTNERSHIP - php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_EmailCollector - } > $TRAVIS_BUILD_DIR/enablemodule.log - -) + { + php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_API,MAIN_MODULE_ProductBatch,MAIN_MODULE_SupplierProposal,MAIN_MODULE_STRIPE,MAIN_MODULE_ExpenseReport + php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKET,MAIN_MODULE_ACCOUNTING,MAIN_MODULE_MRP + php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_RECEPTION,MAIN_MODULE_RECRUITMENT + php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_KnowledgeManagement,MAIN_MODULE_EventOrganization,MAIN_MODULE_PARTNERSHIP + php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_EmailCollector + } > $TRAVIS_BUILD_DIR/enablemodule.log + ) && save_db_cache +fi diff --git a/dev/tools/codespell/codespell-lines-ignore.txt b/dev/tools/codespell/codespell-lines-ignore.txt index 77b603de8a9..aeacfdccaa0 100644 --- a/dev/tools/codespell/codespell-lines-ignore.txt +++ b/dev/tools/codespell/codespell-lines-ignore.txt @@ -316,6 +316,7 @@ $usercanread = (($user->hasRight('stock', 'mouvement', 'lire'))); * The hook contaxt thirdpartycard has been renamed thirdpartycontact * The private array ->status_short, ->statuts and ->status_long are now array ->labelStatusShort and ->labelStatus everywhere. - New: Add proposals into referer page of thirdparty. +for /F "tokens=2 delims=," %%i in ('tasklist /FI "IMAGENAME eq php.exe" /FO CSV /NH') do ( foreach ($TWeek as $week_number) { function checkES($IentOfi, $InumCta) function getFirstDayOfEachWeek($TWeek, $year)