新增 export_multi 接口与多考试选择弹窗: - 第一行显示考试名称,前两列固定为学号/姓名,默认按学号排序 - 每场考试成绩可选「最新成绩」或「最高成绩」(latest 跳过 temp_save 草稿,highest 取跨全部尝试最高分) - 学生取并集(任一考试有提交即纳入),未考的考试单元格留空 - 纯逻辑抽离到 lib/multi_export.php,新增 26 项回归测试(tests/test-multi-export.php)
47 lines
2.0 KiB
Bash
47 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
||
# 一键跑完所有回归测试(PHP 单元自测 + Node e2e)。
|
||
# 用法:bash tests/run-all.sh
|
||
set -e
|
||
cd "$(dirname "$0")/.."
|
||
|
||
# 运行期路径:优先用环境变量,其次用本机工作区路径,最后退回 PATH 里的 php / node
|
||
# (工作区 node 的版本目录会随升级变化,写死路径会直接 No such file or directory)
|
||
pick() {
|
||
local cand="$1" fallback="$2"
|
||
if [ -n "$cand" ] && [ -x "$cand" ]; then echo "$cand"; return; fi
|
||
command -v "$fallback" 2>/dev/null || echo "$fallback"
|
||
}
|
||
PHP="$(pick "${PHP_BIN:-C:/Users/Zhang/.workbuddy/binaries/php/php.exe}" php)"
|
||
NODE="$(pick "${NODE_BIN:-}" node)"
|
||
INI="-d extension_dir=C:/Users/Zhang/.workbuddy/binaries/php/ext -d extension=pdo_sqlite"
|
||
echo "PHP = $PHP"
|
||
echo "NODE = $NODE"
|
||
|
||
echo "================ PHP 自测 ================"
|
||
for f in tests/test-aggregate.php tests/test-new-features.php tests/test-config-persist.php tools/test-xlsxwriter.php tests/test-multi-export.php; do
|
||
echo ""
|
||
echo ">>> $f"
|
||
"$PHP" $INI "$f"
|
||
done
|
||
|
||
echo ""
|
||
echo "================ Node e2e(需 mock-server + PHP 内置服务器) ================"
|
||
# e2e 会把 mock 连接配置写进数据目录;用 NY_DATA 把这两个会改写配置的测试整体指向临时目录,
|
||
# 彻底避免污染生产 data/ny.db(曾因此把登录页连接信息写成 127.0.0.1)。
|
||
NY_DATA_TMP="$(pwd)/.ny-test-data"
|
||
mkdir -p "$NY_DATA_TMP"
|
||
# 说明:test-login-loop.js 会清空数据目录里的账密来复现"未配置账号"现场,
|
||
# 即使不传 NY_DATA 它也会自己建临时目录,绝不回退到项目 data/。
|
||
for f in tools/test-config-save.js tools/test-upload-guard.js tools/test-whitelist.js tools/test-login-loop.js; do
|
||
echo ""
|
||
echo ">>> $f (NY_DATA=$NY_DATA_TMP)"
|
||
NY_DATA="$NY_DATA_TMP" "$NODE" "$f"
|
||
done
|
||
# test-draw-alloc.js 不读写连接配置,沿用项目 data/ 即可
|
||
echo ""
|
||
echo ">>> tools/test-draw-alloc.js"
|
||
"$NODE" "tools/test-draw-alloc.js"
|
||
|
||
echo ""
|
||
echo "全部测试完成。"
|