stacker 0.1.11

A stack growth library useful when implementing deeply recursive algorithms that may accidentally blow the stack.
Documentation
name: Test psm

on:
  push:
    paths:
    - 'psm/**'
    - '.github/workflows/psm.yml'
    - '!psm/**.mkd'
    - '!psm/LICENSE-*'
  pull_request:
    types: [opened, repoened, synchronize]

jobs:
  native-test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        rust_toolchain: [nightly, stable, 1.38.0]
        os: [ubuntu-latest, windows-latest, macOS-latest]
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust ${{ matrix.rust_toolchain }}
        uses: actions-rs/toolchain@v1
        with:
            toolchain: ${{ matrix.rust_toolchain }}
            profile: minimal
            default: true
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=psm/Cargo.toml
      - name: Build
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --manifest-path=psm/Cargo.toml
      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --manifest-path=psm/Cargo.toml -- --nocapture
      - name: Test Examples
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --manifest-path=psm/Cargo.toml --examples -- --nocapture
      - name: Test Release
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --manifest-path=psm/Cargo.toml --release -- --nocapture
      - name: Test Release Examples
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --manifest-path=psm/Cargo.toml --examples --release -- --nocapture

  windows-gnu-test:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        rust_toolchain: [nightly, stable]
        rust_target:
          - x86_64-pc-windows-gnu
          # Only 64 bit GCC is preinstalled
          #- i686-pc-windows-gnu
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: ${{ matrix.rust_toolchain }}
            profile: minimal
            target: ${{ matrix.rust_target }}
            default: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml

  cross-linux-test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        rust_target:
          - aarch64-linux-android
          - arm-linux-androideabi
          - armv7-linux-androideabi
          - x86_64-linux-android
          - aarch64-unknown-linux-gnu
          - arm-unknown-linux-gnueabi
          - armv7-unknown-linux-gnueabihf
          - i686-unknown-linux-gnu
          - i686-unknown-linux-musl
          - mips-unknown-linux-gnu
          - mips64-unknown-linux-gnuabi64
          - mips64el-unknown-linux-gnuabi64
          - mipsel-unknown-linux-gnu
          - powerpc-unknown-linux-gnu
          # https://github.com/rust-embedded/cross/pull/440
          # - powerpc64-unknown-linux-gnu
          - x86_64-unknown-linux-musl
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: nightly
            profile: minimal
            target: ${{ matrix.rust_target }}
            default: true
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=psm/Cargo.toml
      - name: Build ${{ matrix.rust_target }}
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: build
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml
      - name: Test
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: test
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml -- --test-threads=1 --nocapture
      - name: Test Examples
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: test
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml --examples -- --test-threads=1 --nocapture
      - name: Test Release
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: test
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml --release -- --test-threads=1 --nocapture
      - name: Test Release Examples
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: test
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml --examples --release -- --test-threads=1 --nocapture

  cross-build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        rust_target:
          # https://github.com/rust-embedded/cross/issues/333
          - powerpc64le-unknown-linux-gnu
          # FIXME: Testing hangs, should be verified once-in-a-while manually.
          # could be made work by using full system emulation
          # https://github.com/rust-embedded/cross/issues/242
          #
          # Currently tested manually with full-system emulation.
          - s390x-unknown-linux-gnu
          # FIXME: tests could be made work by using full system emulation, maybe?
          #
          # Currently tested manually on real hardware.
          # FIXME: https://github.com/rust-embedded/cross/pull/440
          # - sparc64-unknown-linux-gnu
          # BSDs: could be tested with full system emulation
          - x86_64-unknown-netbsd
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: nightly
            profile: minimal
            target: ${{ matrix.rust_target }}
            default: true
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=psm/Cargo.toml
      - name: Build ${{ matrix.rust_target }}
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: build
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml

  bare-cross-build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        rust_target:
          # BSDs: could be tested with full system emulation
          - i686-unknown-freebsd
          - x86_64-unknown-freebsd
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: nightly
            profile: minimal
            target: ${{ matrix.rust_target }}
            default: true
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=psm/Cargo.toml
      - name: Build ${{ matrix.rust_target }}
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target ${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml

  cross-ios-build:
    runs-on: macos-latest
    strategy:
      fail-fast: false
      matrix:
        rust_toolchain: [nightly, stable]
        rust_target:
          - aarch64-apple-ios
          - x86_64-apple-ios
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust ${{ matrix.rust_toolchain }}
        uses: actions-rs/toolchain@v1
        with:
            toolchain: ${{ matrix.rust_toolchain }}
            profile: minimal
            target: ${{ matrix.rust_target }}
            default: true
      - name: Update
        uses: actions-rs/cargo@v1
        with:
          command: update
          args: --manifest-path=psm/Cargo.toml
      - name: Build ${{ matrix.rust_target }}
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target=${{ matrix.rust_target }} --manifest-path=psm/Cargo.toml