stacker 0.1.11

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

on:
  push:
    paths-ignore:
    - '**.md'
    - '**.mkd'
    - '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: Build
        uses: actions-rs/cargo@v1
        with:
          command: build
      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
      - name: Test Release
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --release

  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 }}
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --target ${{ matrix.rust_target }}

  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
          # - 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: Build
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: build
          args: --target ${{ matrix.rust_target }}
      - name: Test
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: test
          args: --target ${{ matrix.rust_target }} -- --test-threads=1
      - name: Test Release
        uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: test
          args: --target ${{ matrix.rust_target }} --release -- --test-threads=1

  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.
          # - sparc64-unknown-linux-gnu
          # BSDs: could be tested with full system emulation
          - i686-unknown-freebsd
          - x86_64-unknown-freebsd
          - 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
      - uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: build
          args: --target ${{ matrix.rust_target }}

  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
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target=${{ matrix.rust_target }}

  wasm-test:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v1
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
            toolchain: nightly
            default: true
      - run: rustup target add wasm32-wasi
      - run: |
          curl -Lf https://github.com/bytecodealliance/wasmtime/releases/download/v0.19.0/wasmtime-v0.19.0-x86_64-linux.tar.xz | tar xJf - -C ${{ runner.tool_cache }}
          echo ::add-path::${{ runner.tool_cache }}/wasmtime-v0.19.0-x86_64-linux
          echo ::set-env name=CARGO_BUILD_TARGET::wasm32-wasi
          echo ::set-env name=CARGO_TARGET_WASM32_WASI_RUNNER::wasmtime run --
      - run: cargo test --target wasm32-wasi --all -- --nocapture