run-tests.sh raw
1 #!/bin/bash
2 # Run Neo4j integration tests with Docker
3 # Usage: ./run-tests.sh
4
5 set -e
6
7 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8 cd "$SCRIPT_DIR"
9
10 echo "Starting Neo4j test database..."
11 docker compose up -d
12
13 echo "Waiting for Neo4j to be ready..."
14 for i in {1..30}; do
15 if docker compose exec -T neo4j-test cypher-shell -u neo4j -p testpassword "RETURN 1" > /dev/null 2>&1; then
16 echo "Neo4j is ready!"
17 break
18 fi
19 if [ $i -eq 30 ]; then
20 echo "Timeout waiting for Neo4j"
21 docker compose logs
22 docker compose down
23 exit 1
24 fi
25 echo "Waiting... ($i/30)"
26 sleep 2
27 done
28
29 echo ""
30 echo "Running tests..."
31 echo "================="
32
33 # Set environment variables for tests
34 export NEO4J_TEST_URI="bolt://localhost:7687"
35 export NEO4J_TEST_USER="neo4j"
36 export NEO4J_TEST_PASSWORD="testpassword"
37
38 # Run tests with verbose output
39 cd ../..
40 CGO_ENABLED=0 go test -v ./pkg/neo4j/... -count=1
41 TEST_EXIT_CODE=$?
42
43 cd "$SCRIPT_DIR"
44
45 echo ""
46 echo "================="
47 echo "Stopping Neo4j test database..."
48 docker compose down
49
50 exit $TEST_EXIT_CODE
51