diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 0000000..f73c664 --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,50 @@ +name: linting + +on: + push: + branches: + - 'main' + paths: + - 'src/**/*' + - 'tests/**/*' + - '**/Cargo.toml' + - '**/Cargo.lock' + - '.rustfmt.toml' + - '.github/workflows/linting.yml' + pull_request: + branches: + - 'main' + paths: + - 'src/**/*' + - 'tests/**/*' + - '**/Cargo.toml' + - '**/Cargo.lock' + - '.rustfmt.toml' + - '.github/workflows/linting.yml' + +env: + CARGO_TERM_COLOR: always + +jobs: + fmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + - name: Enforce formatting + run: cargo fmt --check + + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + - uses: Swatinem/rust-cache@v2 + - name: Linting + run: cargo clippy -- -D warnings diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml new file mode 100644 index 0000000..71b4adc --- /dev/null +++ b/.github/workflows/testing.yml @@ -0,0 +1,55 @@ +name: testing + +on: + push: + branches: + - "main" + paths: + - "src/**/*" + - "tests/**/*" + - "**/Cargo.toml" + - "**/Cargo.lock" + - ".github/workflows/testing.yml" + pull_request: + branches: + - "main" + paths: + - "src/**/*" + - "tests/**/*" + - "**/Cargo.toml" + - "**/Cargo.lock" + - ".github/workflows/testing.yml" + +env: + CARGO_TERM_COLOR: always + +jobs: + test: + name: Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - name: Run tests + env: + NSS_WRAPPER_PASSWD: tests/fixtures/passwd + NSS_WRAPPER_GROUP: tests/fixtures/group + run: | + sudo apt update && sudo apt install -y libnss-wrapper + cargo test + LD_PRELOAD=libnss_wrapper.so cargo test --features test-integration mocked_ + LD_PRELOAD=libnss_wrapper.so cargo test --features test-integration --test '*' + + coverage: + name: Code coverage + runs-on: ubuntu-latest + container: + image: xd009642/tarpaulin + options: --security-opt seccomp=unconfined + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Generate code coverage + run: | + cargo tarpaulin --verbose --workspace