CI: add automated API checks #90
Workflow file for this run
This file contains 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: Tests | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
tests: | |
name: Linting and Testing | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
rust-version: [ "1.70", "stable" ] | |
steps: | |
- name: Pull Neo4j Docker Image | |
run: docker pull neo4j:5.6-enterprise | |
- name: Start Neo4j | |
run: docker run | |
-d --rm --name neo4j | |
-p 7474:7474 -p 7687:7687 | |
-e NEO4J_AUTH=neo4j/pass | |
-e NEO4J_ACCEPT_LICENSE_AGREEMENT=yes | |
-e NEO4J_dbms_security_auth__minimum__password__length=1 | |
neo4j:5.6-enterprise & | |
- uses: actions/checkout@v4 | |
- name: install nightly toolchain for cargo-check-external-types | |
uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: nightly-2024-02-07 | |
- name: install latest nightly toolchain for rustfmt | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- name: install ${{ matrix.rust-version }} toolchain to test against | |
uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust-version }} | |
components: clippy | |
- name: versions | |
run: | | |
rustup show | |
cargo --version | |
cargo clippy --version | |
- name: versions nightly | |
run: cargo +nightly --version && cargo +nightly fmt --version | |
- name: cargo check | |
env: | |
RUSTFLAGS: -D warnings | |
run: cargo check | |
- name: cargo fmt | |
run: cargo +nightly fmt --all -- --check | |
- name: clippy all | |
if: matrix.rust-version != 'stable' | |
run: cargo clippy --all --features _internal_testkit_backend -- -D warnings | |
- name: clippy all | |
if: matrix.rust-version == 'stable' | |
run: cargo clippy --all --all-features -- -D warnings | |
- name: clippy driver | |
run: cargo clippy -p neo4j -- -D warnings | |
- name: docs build | |
run: RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps | |
- name: check exported dependencies | |
run: | | |
pushd neo4j | |
cargo install --locked cargo-check-external-types | |
cargo +nightly-2024-02-07 check-external-types | |
popd | |
- name: tests | |
env: | |
TEST_NEO4J_SCHEME: neo4j | |
TEST_NEO4J_HOST: localhost | |
TEST_NEO4J_PORT: 7687 | |
TEST_NEO4J_USER: neo4j | |
TEST_NEO4J_PASS: pass | |
TEST_NEO4J_EDITION: enterprise | |
TEST_NEO4J_VERSION: 5.6 | |
run: cargo test --workspace --all-targets | |
- name: doc tests | |
env: | |
TEST_NEO4J_SCHEME: neo4j | |
TEST_NEO4J_HOST: localhost | |
TEST_NEO4J_PORT: 7687 | |
TEST_NEO4J_USER: neo4j | |
TEST_NEO4J_PASS: pass | |
TEST_NEO4J_EDITION: enterprise | |
TEST_NEO4J_VERSION: 5.6 | |
run: cargo test --workspace --doc | |
- name: API stability check | |
if: matrix.rust-version == 'stable' | |
run: cargo test --workspace --features _internal_public_api public_api | |
testkit: | |
name: TestKit | |
needs: [ tests ] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
tests: [ TESTKIT_TESTS ] | |
config: | |
- 4.4-community-bolt | |
- 4.4-community-neo4j | |
- 4.4-enterprise-bolt | |
- 4.4-enterprise-neo4j | |
- 4.4-enterprise-cluster-neo4j | |
- 5.1-enterprise-cluster-neo4j | |
- 5.5-enterprise-cluster-neo4j | |
- 5.7-enterprise-cluster-neo4j | |
- 5.9-enterprise-cluster-neo4j | |
include: | |
- tests: STUB_TESTS | |
config: "" | |
- tests: TLS_TESTS | |
config: "" | |
steps: | |
- name: Checkout driver | |
uses: actions/checkout@v4 | |
with: | |
path: driver | |
# - name: Read required TestKit version from driver repo | |
# id: testkit_vars | |
# run: echo ::set-output name=testkit_version_ref::$(cat driver/.testkit_version | xargs) | |
- name: Checkout TestKit | |
uses: actions/checkout@v4 | |
with: | |
repository: robsdedude/testkit | |
path: testkit | |
ref: rust | |
# ref: ${{ steps.testkit_vars.outputs.testkit_version_ref }} | |
- name: Run TestKit | |
env: | |
TEST_DRIVER_NAME: rust | |
TEST_DRIVER_REPO: ${{ github.workspace }}/driver | |
TEST_RUN_ALL_TESTS: "true" | |
run: | | |
cd testkit | |
python3 main.py --tests ${{ matrix.tests }} \ | |
${{ matrix.config && format('--config {0}', matrix.config) || ''}} |