proc-maps 0.4.0

Helper crate for getting virtual memory maps from processes
Documentation
name: CI
on:
  pull_request:
    branches: [ master ]
  push:
    branches: [ master ]
  schedule:
  - cron: '0 0 * * 0'
  workflow_dispatch:

jobs:
  format:
    name: Check code formatting
    runs-on: ubuntu-22.04
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4
    - name: Install Rust
      uses: dtolnay/rust-toolchain@984d158d699777abbaa79de23de3134e60c187fa # stable branch
    - name: Run cargo fmt
      run: |
        cargo fmt --all -- --check

  build:
    name: Build and test
    env:
      CARGO: cargo
      TARGET_FLAGS: --target ${{ matrix.target }}
      RUST_BACKTRACE: 1
    timeout-minutes: 30
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        build:
        - linux-x86_64
        - macos-12
        - macos-13
        - windows
        include:
        - build: linux-x86_64
          os: ubuntu-22.04
          run-tests: 'true'
          target: x86_64-unknown-linux-gnu
        - build: macos-12
          os: macos-12
          run-tests: 'true'
          target: x86_64-apple-darwin
        - build: macos-13
          os: macos-13
          run-tests: 'true'
          target: x86_64-apple-darwin
        - build: windows
          os: windows-2022
          run-tests: 'true'
          target: x86_64-pc-windows-msvc
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4
    - name: Install Rust
      uses: dtolnay/rust-toolchain@984d158d699777abbaa79de23de3134e60c187fa # stable branch
    - name: Install Rust toolchain target
      run: |
        rustup target add ${{ matrix.target }}
    - name: Cargo Cache
      uses: actions/cache@v3
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
        key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }}
        restore-keys: |
          ${{ runner.os }}-${{ matrix.target }}-cargo-
    - name: Build
      run: ${{ env.CARGO }} build --release --verbose --workspace --all-targets ${{ env.TARGET_FLAGS }}
    - name: Run tests
      timeout-minutes: 5
      run: ${{ env.CARGO }} test --release --verbose  ${{ env.TARGET_FLAGS }}
      if: runner.os != 'macOS' && matrix.run-tests == 'true'
    - name: Run tests
      timeout-minutes: 5
      run: sudo ${{ env.CARGO }} test --release --verbose  ${{ env.TARGET_FLAGS }} -- --skip tests::test_map_from_invoked_binary_present
      if: runner.os == 'macOS' && matrix.run-tests == 'true'

  build-freebsd:
    name: Build and test (freebsd-x86_64)
    runs-on: ubuntu-22.04
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        box:
          - fbsd_14
    steps:
      - uses: actions/checkout@v4
      - name: Display CPU info
        run: lscpu
      - name: Install VM tools
        run: |
          sudo apt-get update -qq
          sudo apt-get install -qq -o=Dpkg::Use-Pty=0 moreutils
          sudo chronic apt-get install -qq -o=Dpkg::Use-Pty=0 vagrant virtualbox qemu libvirt-daemon-system
      - name: Set up VM
        shell: sudo bash {0}
        run: |
          vagrant plugin install vagrant-libvirt

          ln -sf ci/Vagrantfile Vagrantfile

          vagrant status
          vagrant up --no-tty --provider libvirt ${{ matrix.box }}
      - name: Build and test
        shell: sudo bash {0}
        run: vagrant ssh ${{ matrix.box }} -- bash /vagrant/ci/scripts/freebsd-build.sh