fix(ci): make DocReader client tests runnable in PR checks

Start the DocReader gRPC server in the DocReader workflow, skip client
integration tests when the server is unavailable, exclude docreader
packages from the App workflow test scope, and trigger DocReader checks
on go.mod/go.sum changes.
This commit is contained in:
wizardchen
2026-07-30 12:28:04 +08:00
committed by lyingbug
parent a52137d450
commit 4efc987abb
3 changed files with 43 additions and 10 deletions
+1 -3
View File
@@ -8,7 +8,6 @@ on:
- "!cli/**"
- "go.mod"
- "go.sum"
- ".golangci.yml"
- "Makefile"
- "config/**"
- "migrations/**"
@@ -22,7 +21,6 @@ on:
- "!cli/**"
- "go.mod"
- "go.sum"
- ".golangci.yml"
- "Makefile"
- "config/**"
- "migrations/**"
@@ -81,7 +79,7 @@ jobs:
run: go vet ./...
- name: Test
run: go test ./...
run: go test $(go list ./... | grep -v '/docreader/')
- name: Build server
run: go build ./cmd/server
+25
View File
@@ -5,6 +5,8 @@ on:
branches: [main]
paths:
- "docreader/**"
- "go.mod"
- "go.sum"
- "testdata/**"
- "packages/**"
- "docker/Dockerfile.docreader"
@@ -13,6 +15,8 @@ on:
pull_request:
paths:
- "docreader/**"
- "go.mod"
- "go.sum"
- "testdata/**"
- "packages/**"
- "docker/Dockerfile.docreader"
@@ -63,5 +67,26 @@ jobs:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: go.sum
- name: Start DocReader gRPC server
run: |
uv run --project docreader --python ${{ env.PYTHON_VERSION }} python -m docreader.main &
echo $! > /tmp/docreader.pid
for i in $(seq 1 30); do
if nc -z 127.0.0.1 50051 2>/dev/null; then
echo "DocReader gRPC server is ready"
exit 0
fi
sleep 1
done
echo "DocReader gRPC server failed to start"
exit 1
- name: Run Go client tests
run: go test ./docreader/client ./docreader/proto
- name: Stop DocReader gRPC server
if: always()
run: |
if [ -f /tmp/docreader.pid ]; then
kill "$(cat /tmp/docreader.pid)" 2>/dev/null || true
fi
+17 -7
View File
@@ -16,12 +16,26 @@ func init() {
log.Println("INFO: Initializing DocReader client tests")
}
func TestReadURL(t *testing.T) {
func requireLiveDocReaderClient(t *testing.T) *Client {
t.Helper()
client, err := NewClient("localhost:50051")
if err != nil {
t.Fatalf("Failed to create client: %v", err)
}
defer client.Close()
t.Cleanup(func() { client.Close() })
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
if _, err := client.ListEngines(ctx, &proto.ListEnginesRequest{}); err != nil {
t.Skipf("DocReader gRPC server not available at localhost:50051: %v", err)
}
return client
}
func TestReadURL(t *testing.T) {
client := requireLiveDocReaderClient(t)
client.SetDebug(true)
startTime := time.Now()
@@ -47,11 +61,7 @@ func TestReadURL(t *testing.T) {
}
func TestReadFile(t *testing.T) {
client, err := NewClient("localhost:50051")
if err != nil {
t.Fatalf("Failed to create client: %v", err)
}
defer client.Close()
client := requireLiveDocReaderClient(t)
client.SetDebug(true)
fileContent, err := os.ReadFile("../testdata/test.md")