Skip to content

CI: add automated API checks #99

CI: add automated API checks

CI: add automated API checks #99

Workflow file for this run

name: Tests

Check failure on line 1 in .github/workflows/tests.yaml

View workflow run for this annotation

GitHub Actions / .github/workflows/tests.yaml

Invalid workflow file

No steps defined in `steps` and no workflow called in `uses` for the following jobs: ci-end
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
lints:
name: Linting
runs-on: "ubuntu-latest"
steps:
- 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 stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: versions
run: |
set -x
rustup show
cargo --version
cargo +nightly --version
cargo clippy --version
- name: cargo fmt
run: cargo +nightly fmt --all -- --check
- name: clippy all
run: cargo clippy --all --all-features -- -D warnings
- name: clippy driver
run: cargo clippy -p neo4j -- -D warnings
- name: check exported dependencies
run: |
set -x
pushd neo4j
cargo install --locked cargo-check-external-types
cargo +nightly-2024-02-07 check-external-types
popd
- name: API stability check
run: cargo test --workspace --features _internal_public_api public_api
tests:
name: 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 ${{ 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: cargo check
env:
RUSTFLAGS: -D warnings
run: cargo check
- name: docs build
run: RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps
- 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
testkit:
name: TestKit
needs: [ tests, lints ]
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) || ''}}
ci-end:
name: CI End
needs: [ tests, lints, testkit ]
runs-on: ubuntu-latest