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