read-process-memory 0.2.0

Read memory from another process.
Documentation
name: Build

on: [push, pull_request]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-24.04, windows-2025, macos-26]
    steps:
    - uses: actions/checkout@v7
    - name: Build
      run: cargo build --verbose --all-targets
    - name: Run tests
      run: cargo test --verbose
      if: runner.os != 'macOS'
    - name: Run tests (macos)
      run: sudo "PATH=$PATH" cargo test --verbose
      if: runner.os == 'macOS'

  build-freebsd:
    name: build (FreeBSD)
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout repository
        uses: actions/checkout@v7

      - name: Install Rust
        uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 # stable branch

      - name: Install cross
        run: |
          if [ ! -f "$HOME/.cargo/bin/cross" ]; then
            cargo install cross --git https://github.com/cross-rs/cross --rev 51f46f296253d8122c927c5bb933e3c4f27cc317
          fi
          cross --version

          cross build --release --target x86_64-unknown-freebsd
          cross test --release --no-run --target x86_64-unknown-freebsd

      - name: Launch Firecracker VM
        uses: acj/freebsd-firecracker-action@v0.10.4
        with:
          verbose: false
          pre-run: |
            rm -rf .cargo
            ln -s $HOME/.cargo .cargo

            include_path="$(mktemp)"
            cat <<EOF > $include_path
            target
            target/x86_64-unknown-freebsd
            target/x86_64-unknown-freebsd/release
            target/x86_64-unknown-freebsd/release/deps
            target/x86_64-unknown-freebsd/release/deps/read_process_memory-*
            target/x86_64-unknown-freebsd/release/test
            EOF
            
            rsync -r -e "ssh" \
              --relative \
              --copy-links \
              --include-from "$include_path" \
              --exclude "*" \
              . firecracker:
            rm -f "$exclude_path"
          run-in-vm: |
            mkdir -p /home/runner
            ln -s $(pwd)/.cargo /home/runner/.cargo

            failed=0
            for testbin in $(find target/x86_64-unknown-freebsd/release/deps -type f -perm -u+x ! -name "*.d" -print); do
              if ! $testbin; then
                failed=1
              fi
            done

            if [ $failed -ne 0 ]; then
              exit 1
            fi
          post-run: ""