fix: loosen rusqlite version pin to >=0.31 for downstream compatibility #23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| # ============================================================================= | |
| # Fast Tests - Run first on all PRs and pushes | |
| # ============================================================================= | |
| build-and-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev libcunit1-dev | |
| - name: Build extension | |
| run: make extension | |
| - name: Run unit tests | |
| run: make test-unit | |
| - name: Run functional tests | |
| run: make test-functional | |
| rust-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev | |
| - name: Build extension | |
| run: make extension | |
| - name: Copy extension to Rust libs | |
| run: | | |
| mkdir -p bindings/rust/libs | |
| cp build/graphqlite.so bindings/rust/libs/graphqlite-linux-x86_64.so | |
| - name: Cargo check | |
| working-directory: bindings/rust | |
| run: cargo check | |
| - name: Cargo clippy | |
| working-directory: bindings/rust | |
| run: cargo clippy -- -D warnings | |
| python-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev | |
| - name: Build extension | |
| run: make extension | |
| - name: Install Python package | |
| working-directory: bindings/python | |
| run: pip install -e ".[dev]" | |
| - name: Run Python tests | |
| working-directory: bindings/python | |
| run: pytest tests/ -v | |
| windows-build: | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup MSYS2 | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: >- | |
| mingw-w64-x86_64-gcc | |
| mingw-w64-x86_64-sqlite3 | |
| mingw-w64-x86_64-libsystre | |
| bison | |
| flex | |
| make | |
| - name: Build extension | |
| run: make extension | |
| - name: Run functional tests | |
| run: make test-functional | |
| # ============================================================================= | |
| # Full Tests - Run after fast tests pass | |
| # ============================================================================= | |
| full-build-unix: | |
| needs: [build-and-test, rust-check, python-check, windows-build] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev libcunit1-dev | |
| - name: Install dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install bison flex sqlite cunit | |
| echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH | |
| echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH | |
| echo "HOMEBREW_PREFIX=$(brew --prefix)" >> $GITHUB_ENV | |
| echo "SQLITE_PREFIX=$(brew --prefix sqlite)" >> $GITHUB_ENV | |
| - name: Build extension | |
| run: make extension | |
| - name: Run unit tests (Linux) | |
| if: runner.os == 'Linux' | |
| run: make test-unit | |
| - name: Run unit tests (macOS) | |
| if: runner.os == 'macOS' | |
| run: make test-unit EXTRA_INCLUDES="-I$HOMEBREW_PREFIX/include" EXTRA_LIBS="-L$HOMEBREW_PREFIX/lib" | |
| - name: Run functional tests (Linux) | |
| if: runner.os == 'Linux' | |
| run: make test-functional | |
| - name: Run functional tests (macOS) | |
| if: runner.os == 'macOS' | |
| run: make test-functional EXTRA_INCLUDES="-I$HOMEBREW_PREFIX/include" EXTRA_LIBS="-L$HOMEBREW_PREFIX/lib" SQLITE="$SQLITE_PREFIX/bin/sqlite3" | |
| full-rust-tests: | |
| needs: [build-and-test, rust-check, python-check, windows-build] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| lib_name: graphqlite-linux-x86_64.so | |
| ext_file: graphqlite.so | |
| - os: macos-latest | |
| lib_name: graphqlite-macos-aarch64.dylib | |
| ext_file: graphqlite.dylib | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev | |
| - name: Install dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install bison flex sqlite | |
| echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH | |
| echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH | |
| - name: Build extension | |
| run: make extension | |
| - name: Copy extension to Rust libs | |
| run: | | |
| mkdir -p bindings/rust/libs | |
| cp build/${{ matrix.ext_file }} bindings/rust/libs/${{ matrix.lib_name }} | |
| - name: Run Rust tests | |
| working-directory: bindings/rust | |
| run: cargo test --lib --test integration -- --test-threads=1 | |
| full-python-tests-linux: | |
| needs: [build-and-test, rust-check, python-check, windows-build] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12'] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev | |
| - name: Build extension | |
| run: make extension | |
| - name: Install Python package | |
| working-directory: bindings/python | |
| run: pip install -e ".[dev]" | |
| - name: Run Python tests | |
| working-directory: bindings/python | |
| run: pytest tests/ -v | |
| full-python-tests-macos: | |
| needs: [build-and-test, rust-check, python-check, windows-build] | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| brew install bison flex sqlite python@3.11 | |
| echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH | |
| echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH | |
| echo "$(brew --prefix python@3.11)/libexec/bin" >> $GITHUB_PATH | |
| - name: Build extension | |
| run: make extension | |
| - name: Install Python package | |
| run: python3 -m pip install -e "./bindings/python[dev]" | |
| - name: Run Python tests | |
| working-directory: bindings/python | |
| run: | | |
| SQLITE_PREFIX=$(brew --prefix sqlite) | |
| DYLD_LIBRARY_PATH="$SQLITE_PREFIX/lib:$DYLD_LIBRARY_PATH" python3 -m pytest tests/ -v | |
| full-windows-tests: | |
| needs: [build-and-test, rust-check, python-check, windows-build] | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup MSYS2 | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: >- | |
| mingw-w64-x86_64-gcc | |
| mingw-w64-x86_64-sqlite3 | |
| mingw-w64-x86_64-libsystre | |
| bison | |
| flex | |
| make | |
| - name: Build extension | |
| run: make extension | |
| - name: Run functional tests | |
| run: make test-functional | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install and test Python bindings | |
| shell: bash | |
| run: | | |
| pip install -e "./bindings/python[dev]" | |
| cd bindings/python && pytest tests/ -v | |
| - name: Copy extension to Rust libs | |
| run: | | |
| mkdir -p bindings/rust/libs | |
| cp build/graphqlite.dll bindings/rust/libs/graphqlite-windows-x86_64.dll | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Test Rust bindings | |
| shell: bash | |
| working-directory: bindings/rust | |
| run: cargo test --lib --test integration -- --test-threads=1 | |
| # ============================================================================= | |
| # Performance Tests - Main branch only | |
| # ============================================================================= | |
| performance-tests: | |
| if: github.ref == 'refs/heads/main' | |
| needs: [build-and-test, rust-check, python-check, windows-build] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bison flex libsqlite3-dev bc | |
| - name: Build extension | |
| run: make extension | |
| - name: Run performance tests | |
| run: make performance |