@@ -26,46 +26,55 @@ jobs:
2626 php-version : " 8.5"
2727 coverage : none
2828 tools : composer
29- - name : Environment
30- run : |
31- php -v
32- php -r 'foreach (["opcache.enable_cli", "opcache.file_cache", "opcache.jit", "disable_functions"] as $k) echo $k, "=", var_export(ini_get($k), true), "\n"; echo "pcntl_fork: ", var_export(function_exists("pcntl_fork"), true), "\n";'
3329 - name : Install and build arms
3430 run : |
3531 set -e
3632 W="$RUNNER_TEMP/w"
3733 (cd bench/project && composer install -q --no-interaction)
3834 (cd bench/tools && composer install -q --no-interaction)
35+ php bench/project/vendor/phpstan/phpstan/phpstan.phar --version
3936 git clone -q --depth 1 https://github.com/nikic/PHP-Parser "$RUNNER_TEMP/php-parser"
40- php bench/setup.php "$W" bench/project/vendor/phpstan/phpstan stock fcv daemon
41- php bench/prepare.php "$W" "$RUNNER_TEMP/php-parser/lib"
37+ php bench/setup.php "$W" bench/project/vendor/phpstan/phpstan stock pr pre
38+ if [ "$RUNNER_OS" = Linux ]; then
39+ git clone -q --depth 1 https://github.com/tempestphp/tempest-framework "$RUNNER_TEMP/tempest"
40+ (cd "$RUNNER_TEMP/tempest" && composer install -q --no-interaction --ignore-platform-reqs --no-scripts)
41+ php bench/prepare.php "$W" "$RUNNER_TEMP/php-parser/lib" "$RUNNER_TEMP/tempest"
42+ else
43+ php bench/prepare.php "$W" "$RUNNER_TEMP/php-parser/lib"
44+ fi
4245 php bench/setup.php "$W" bench/project/vendor/phpstan/phpstan --neon-only
43- cd "$W/projects/tiny" && php "$W/arms/fcv/phpstan.phar" diagnose | grep -E 'Turbo extension|Mechanism|Reason'
44- - name : Start the daemon prototype
45- run : php bench/start-daemon.php "$RUNNER_TEMP/w" "$RUNNER_TEMP/d.sock"
46- - name : Tiny project, stock vs file cache vs daemon
46+ cd "$W/projects/tiny" && php "$W/arms/pr/phpstan.phar" diagnose | grep -E 'Turbo extension|Mechanism|Reason'
47+ - name : Tiny project
4748 env :
48- ARMS : stock,fcv,daemon
49- DAEMON_SOCKET : ${{ runner.temp }}/d.sock
49+ ARMS : stock,pr,pre
5050 run : php bench/suite.php "$RUNNER_TEMP/w" tiny 12
51- - name : php-parser lib (271 files), stock vs file cache vs daemon
51+ - name : php-parser lib (271 files)
5252 env :
53- ARMS : stock,fcv,daemon
54- DAEMON_SOCKET : ${{ runner.temp }}/d.sock
53+ ARMS : stock,pr,pre
5554 run : php bench/suite.php "$RUNNER_TEMP/w" parser 7
56- - name : Daemon request CPU (whole process tree), php-parser lib cold
57- run : |
58- cd "$RUNNER_TEMP/w/projects/parser"
59- for i in 1 2 3; do rm -rf tmp-daemon; DAEMON_CPU=1 php "$GITHUB_WORKSPACE/bench/client.php" "$RUNNER_TEMP/d.sock" analyse -c phpstan-daemon.neon --no-progress --memory-limit=-1 || true; done
60- - name : Daemon output check
55+ - name : php-parser lib, spawned workers
56+ env :
57+ ARMS : stock,pr,pre
58+ run : php bench/suite.php "$RUNNER_TEMP/w" spawn 7
59+ - name : Tempest (full)
60+ if : runner.os == 'Linux'
61+ env :
62+ ARMS : stock,pr,pre
63+ run : php bench/suite.php "$RUNNER_TEMP/w" tempest 3
64+ - name : Same errors as stock
6165 run : |
6266 set +e
63- cd "$RUNNER_TEMP/w/projects/parser"
64- php "$RUNNER_TEMP/w/arms/stock/phpstan.phar" analyse -c phpstan-stock.neon --no-progress --error-format=raw > stock.txt; echo "stock exit $?"
65- : > "$RUNNER_TEMP/w/daemon.log"
66- php "$GITHUB_WORKSPACE/bench/client.php" "$RUNNER_TEMP/d.sock" analyse -c phpstan-daemon.neon --no-progress --error-format=raw; echo "daemon exit $?"
67- grep '/lib/' "$RUNNER_TEMP/w/daemon.log" | sed 's#.*/lib/#lib/#' | sort > daemon.txt
68- sed 's#.*/lib/#lib/#' stock.txt | grep '^lib/' | sort > stock-sorted.txt
69- wc -l daemon.txt stock-sorted.txt
70- diff stock-sorted.txt daemon.txt && echo "daemon errors identical to stock" || { echo "DAEMON OUTPUT DIFFERS"; exit 1; }
71- php "$GITHUB_WORKSPACE/bench/client.php" "$RUNNER_TEMP/d.sock" diagnose; grep -E 'Turbo extension|Mechanism' "$RUNNER_TEMP/w/daemon.log"
67+ for p in parser tempest; do
68+ [ -d "$RUNNER_TEMP/w/projects/$p" ] || continue
69+ cd "$RUNNER_TEMP/w/projects/$p"
70+ rm -rf tmp-stock tmp-pr
71+ php "$RUNNER_TEMP/w/arms/stock/phpstan.phar" analyse -c phpstan-stock.neon --no-progress --error-format=raw --memory-limit=-1 2>/dev/null | sort > stock.txt
72+ php "$RUNNER_TEMP/w/arms/pr/phpstan.phar" analyse -c phpstan-pr.neon --no-progress --error-format=raw --memory-limit=-1 2>/dev/null | sort > pr.txt
73+ echo "$p: $(wc -l < stock.txt) stock lines, $(wc -l < pr.txt) pr lines"
74+ diff -q stock.txt pr.txt && echo "$p: identical"
75+ done
76+ - name : The pull request's cache directory
77+ run : |
78+ D="$(php -r 'echo sys_get_temp_dir();')/phpstan-opcache-$(id -u)"
79+ ls -la "$D"
80+ for k in "$D"/*/; do echo "$k $(find "$k" -name '*.bin' | wc -l) entries $(du -sh "$k" | cut -f1)"; done
0 commit comments