Skip to content

fix(test): fix unset ROOT_DIR causing test-parity to fail on Linux #45

fix(test): fix unset ROOT_DIR causing test-parity to fail on Linux

fix(test): fix unset ROOT_DIR causing test-parity to fail on Linux #45

Workflow file for this run

name: zig-tests
on:
push:
branches: [main]
paths:
- 'zig/**'
- '.github/workflows/zig-tests.yaml'
pull_request:
paths:
- 'zig/**'
- '.github/workflows/zig-tests.yaml'
jobs:
build-native:
name: Build Native (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Cache Zig
uses: actions/cache@v4
with:
path: |
zig/.zig-cache
~/.cache/zig
key: zig-nix-${{ runner.os }}-${{ hashFiles('zig/build.zig', 'zig/build.zig.zon') }}
restore-keys: |
zig-nix-${{ runner.os }}-
- name: Build
working-directory: zig
run: nix run nixpkgs#zig -- build
- name: Size Report
working-directory: zig
run: |
echo "════════════════════════════════════════════════════════════════"
echo " CR-SQLite Artifact Size Report"
echo "════════════════════════════════════════════════════════════════"
echo ""
echo "CR-SQLite Zig Build Artifacts:"
for f in zig-out/lib/*; do
if [ -f "$f" ]; then
SIZE=$(stat -c%s "$f" 2>/dev/null || stat -f%z "$f" 2>/dev/null)
SIZE_MB=$(echo "scale=2; $SIZE / 1024 / 1024" | bc)
echo " $(basename $f): ${SIZE_MB} MB (${SIZE} bytes)"
fi
done
echo ""
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: crsqlite-native-${{ runner.os }}
path: zig/zig-out/lib/
retention-days: 7
build-wasm:
name: Build WASM
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Cache Zig
uses: actions/cache@v4
with:
path: |
zig/.zig-cache
~/.cache/zig
key: zig-wasm-nix-${{ hashFiles('zig/build.zig', 'zig/build.zig.zon') }}
restore-keys: |
zig-wasm-nix-
- name: Build WASM
working-directory: zig
run: nix run nixpkgs#zig -- build wasm
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: crsqlite-wasm
path: zig/zig-out/lib/*.wasm
retention-days: 7
test-unit:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Cache Zig
uses: actions/cache@v4
with:
path: |
zig/.zig-cache
~/.cache/zig
key: zig-nix-${{ runner.os }}-${{ hashFiles('zig/build.zig', 'zig/build.zig.zon') }}
restore-keys: |
zig-nix-${{ runner.os }}-
- name: Run unit tests
working-directory: zig
run: nix run nixpkgs#zig -- build test
test-parity:
name: Parity Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Cache Zig
uses: actions/cache@v4
with:
path: |
zig/.zig-cache
~/.cache/zig
key: zig-nix-${{ runner.os }}-${{ hashFiles('zig/build.zig', 'zig/build.zig.zon') }}
restore-keys: |
zig-nix-${{ runner.os }}-
- name: Build extension
working-directory: zig
run: nix run nixpkgs#zig -- build
- name: Diagnose extension loading
working-directory: zig
run: |
echo "=== Extension file info ==="
ls -la zig-out/lib/
file zig-out/lib/libcrsqlite.so
echo ""
echo "=== SQLite version ==="
nix run nixpkgs#sqlite -- --version
echo ""
echo "=== Test extension load ==="
nix run nixpkgs#sqlite -- :memory: -cmd ".load zig-out/lib/libcrsqlite.so" "SELECT crsql_version();" 2>&1 || true
echo ""
echo "=== Test crsql_db_version ==="
nix run nixpkgs#sqlite -- :memory: -cmd ".load zig-out/lib/libcrsqlite.so" "SELECT crsql_db_version();" 2>&1 || true
echo ""
echo "=== Test crsql_site_id ==="
nix run nixpkgs#sqlite -- :memory: -cmd ".load zig-out/lib/libcrsqlite.so" "SELECT hex(crsql_site_id());" 2>&1 || true
echo ""
echo "=== Test crsql_changes insert (rows_impacted issue) ==="
nix run nixpkgs#sqlite -- :memory: -cmd ".load zig-out/lib/libcrsqlite.so" "
CREATE TABLE foo (a PRIMARY KEY NOT NULL, b);
SELECT crsql_as_crr('foo');
BEGIN;
INSERT INTO crsql_changes VALUES ('foo', X'010901', 'b', 2, 1, 1, NULL, 1, 1);
SELECT crsql_rows_impacted();
" 2>&1 || echo "ERROR: $?"
- name: Run parity tests
working-directory: zig
run: make test-parity
test-browser:
name: Browser Tests
runs-on: ubuntu-latest
needs: build-wasm
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Cache Zig
uses: actions/cache@v4
with:
path: |
zig/.zig-cache
~/.cache/zig
key: zig-wasm-nix-${{ hashFiles('zig/build.zig', 'zig/build.zig.zon') }}
restore-keys: |
zig-wasm-nix-
- name: Build WASM
working-directory: zig
run: nix run nixpkgs#zig -- build wasm
- name: Install dependencies
working-directory: zig/browser-test
run: npm ci
- name: Install Playwright browsers
working-directory: zig/browser-test
run: npx playwright install --with-deps chromium
- name: Run browser tests
working-directory: zig/browser-test
run: npm test
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: zig/browser-test/test-results/
retention-days: 7