443d4e3a11
Add scripts/ci/test.sh <server|client>: server runs `go test ./...` inside golang:1.25 (mirrors ci.yml's go-server job docker invocation + gomod/gobuild caches + GOPROXY from _env.sh); client runs `flutter test` inside ghcr.io/cirruslabs/flutter:stable (mirrors ci.yml's flutter-client job's pub-cache mount + test dirs). Wired into deploy-server.yml's Test step already added in Task 4. Registers the script in ci.yml's shellcheck file list. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
50 lines
1.8 KiB
Bash
Executable File
50 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# test.sh <server|client> — run the test suite for one side of the repo.
|
|
# Invoked directly on the nas runner (see deploy-server.yml's "Test" step),
|
|
# so this script itself owns the docker invocation — Go/Flutter are not on
|
|
# the host.
|
|
#
|
|
# server: `go test ./...` inside golang:1.25, mirroring the go-server job's
|
|
# docker invocation in .gitea/workflows/ci.yml (mounts + gomod/gobuild
|
|
# caches), plus GOPROXY from _env.sh so it doesn't hit proxy.golang.org.
|
|
# client: `flutter test` inside ghcr.io/cirruslabs/flutter:stable, mirroring
|
|
# the flutter-client job's docker invocation in .gitea/workflows/ci.yml
|
|
# (pub-cache volume, same test dirs); analyze/coverage stay in that job.
|
|
#
|
|
# Run from the repo root (relative paths below assume this).
|
|
set -euo pipefail
|
|
|
|
# shellcheck source=scripts/ci/_env.sh
|
|
. scripts/ci/_env.sh
|
|
|
|
TARGET="${1:-}"
|
|
|
|
case "$TARGET" in
|
|
server)
|
|
mkdir -p "$HOME/.cache/pangolin-ci/gomod" "$HOME/.cache/pangolin-ci/gobuild"
|
|
echo "==> test: go test ./... (golang:1.25 容器)"
|
|
docker run --rm \
|
|
-v "$PWD/server:/app" -w /app \
|
|
-v "$HOME/.cache/pangolin-ci/gomod:/go/pkg/mod" \
|
|
-v "$HOME/.cache/pangolin-ci/gobuild:/root/.cache/go-build" \
|
|
-e GOPROXY="$GOPROXY" \
|
|
golang:1.25 \
|
|
go test ./...
|
|
;;
|
|
client)
|
|
mkdir -p "$HOME/.cache/pangolin-ci/pubcache"
|
|
echo "==> test: flutter test (ghcr.io/cirruslabs/flutter:stable 容器)"
|
|
docker run --rm \
|
|
-v "$PWD/client:/app" -w /app \
|
|
-v "$HOME/.cache/pangolin-ci/pubcache:/root/.pub-cache" \
|
|
ghcr.io/cirruslabs/flutter:stable \
|
|
bash -c "flutter pub get && flutter test test/unit test/widget test/contract"
|
|
;;
|
|
*)
|
|
echo "usage: scripts/ci/test.sh <server|client>" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "==> test: ${TARGET} 通过"
|