Skip to content

fix: widen _queryresult.error to servererror, tolerate null-as-missin… #7

fix: widen _queryresult.error to servererror, tolerate null-as-missin…

fix: widen _queryresult.error to servererror, tolerate null-as-missin… #7

Workflow file for this run

name: Test
on: [push, pull_request]
jobs:
# Unit-only run: server-dependent and embedded testsets self-skip when
# their prerequisites aren't available. Matrix across the compat range
# (1.9 LTS) and current stable to catch version-skew regressions.
test-unit:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
julia-version: ['1.9', '1']
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.julia-version }}
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-runtest@v1
- uses: julia-actions/julia-processcoverage@v1
if: matrix.julia-version == '1'
- uses: codecov/codecov-action@v4
if: matrix.julia-version == '1'
with:
files: lcov.info
fail_ci_if_error: false
# Matrix across SurrealDB server versions to catch version-skew bugs.
# `latest` floats; the pinned tags lock in v2.x and v3.x lineages.
test-remote:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
surreal-image:
- surrealdb/surrealdb:v2-latest
- surrealdb/surrealdb:latest
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: '1'
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- name: Start SurrealDB (${{ matrix.surreal-image }})
run: |
docker run -d -p 8000:8000 \
--name surrealdb \
${{ matrix.surreal-image }} \
start --user root --pass root memory
- name: Wait for SurrealDB
run: |
for i in $(seq 1 30); do
curl -s -X POST http://localhost:8000/rpc \
-H "Content-Type: application/json" \
-d '{"id":1,"method":"version","params":[]}' && break
sleep 1
done
- name: Run remote tests
run: julia --project=. test/runtests.jl
env:
SURREALDB_URL: ws://localhost:8000
- name: Docker logs (on failure)
if: failure()
run: docker logs surrealdb
# Embedded matrix: linux x86_64 (glibc) and macos arm64 (libSystem).
# The s2 audit hit an ARM64-only `sr_object_keys` FFI bug — having
# macos-latest in the matrix catches that bug class on every PR.
test-embedded:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: '1'
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo build
uses: actions/cache@v4
with:
path: |
/tmp/surrealdb.c/target
~/.cargo/registry
~/.cargo/git
key: cargo-libsurreal-${{ runner.os }}
- name: Build libsurreal
run: |
if [ ! -d /tmp/surrealdb.c ]; then
git clone https://github.com/surrealdb/surrealdb.c.git --depth 1 /tmp/surrealdb.c
fi
cd /tmp/surrealdb.c
cargo build --release
# Each platform produces a different filename; copy whichever exists.
cp target/release/libsurrealdb_c.so ${RUNNER_TEMP}/libsurreal.lib 2>/dev/null || \
cp target/release/libsurrealdb_c.dylib ${RUNNER_TEMP}/libsurreal.lib 2>/dev/null || \
cp target/release/surrealdb_c.dll ${RUNNER_TEMP}/libsurreal.lib
env:
CARGO_PROFILE_RELEASE_DEBUG: 0
- name: Run full suite (embedded loaded via SURREALDB_LIB)
run: julia --project=. test/runtests.jl
env:
SURREALDB_LIB: ${{ runner.temp }}/libsurreal.lib