Skip to content

Skip database-dependent tests when test database is empty #64

Skip database-dependent tests when test database is empty

Skip database-dependent tests when test database is empty #64

Workflow file for this run

name: CI - Build and Test
on:
push:
branches: [ main, master, develop ]
pull_request:
branches: [ main, master, develop ]
workflow_dispatch:
jobs:
build-and-test:
name: Build and Test treebase-core
runs-on: ubuntu-latest
permissions:
contents: read
checks: write
pull-requests: write
services:
postgres:
image: postgres:12
env:
POSTGRES_DB: treebasedb
POSTGRES_USER: treebase_user
POSTGRES_PASSWORD: treebase_pass
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
cache: 'maven'
- name: Configure database properties for tests
run: |
mkdir -p /tmp/mesquite
cat > treebase-core/src/test/resources/jdbc.properties << EOF
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/treebasedb
jdbc.username=treebase_user
jdbc.password=treebase_pass
mesquite.folder_dir=/tmp/mesquite
EOF
- name: Initialize database schema
run: |
# Install PostgreSQL client if not already available
sudo apt-get update
sudo apt-get install -y postgresql-client
# Initialize the database with schema and data
# The init_db_uptodate.pg script uses \i commands with relative paths,
# so we must run it from the schema directory
cd treebase-core/db/schema
PGPASSWORD=treebase_pass psql -h localhost -U treebase_user -d treebasedb -f init_db_uptodate.pg
- name: Build treebase-core
run: mvn -B clean compile -f treebase-core/pom.xml
- name: Run tests
run: mvn -B test -f treebase-core/pom.xml
- name: Publish Test Report
uses: dorny/test-reporter@v1
if: always()
with:
name: JUnit Test Results
path: treebase-core/target/surefire-reports/*.xml
reporter: java-junit
fail-on-error: true