name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
RUSTFLAGS: --deny warnings
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
- name: Clippy (default features)
run: cargo clippy --all-targets
- name: Clippy (all features)
run: cargo clippy --all-targets --all-features
- name: Format
run: cargo fmt --all -- --check
test:
name: Test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Test default features
run: cargo test
- name: Test all features
run: cargo test --all-features
- name: Test library only
run: cargo test --no-default-features --features std
- name: Build CLI
run: cargo build --release --features cli
- name: Test CLI binary (Unix)
if: runner.os != 'Windows'
run: |
echo 'wpkh(02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9)#8zl0zxma' > test.desc
./target/release/descriptor-codec encode "$(cat test.desc)" > encoded.hex
./target/release/descriptor-codec decode "$(cat encoded.hex)" > decoded.desc
diff test.desc decoded.desc