papyrus 0.17.2

A rust repl and script runner
name: Rust Tests

on:
  push:
    branches: [ master ]
  pull_request:

jobs:
  run-tests:
    strategy:
      matrix:
        name: [default-features, no-features, format, racer-completion, runnable]
        os: [ubuntu-latest, windows-latest, macos-latest]
        rust: [nightly, stable, 1.42.0]
        include:
          - name: default-features
            rust: nightly
            rust-components: rustfmt
            cmd: cargo test
          - name: no-features
            cmd: cargo test --no-default-features
          - name: format
            rust-components: rustfmt
            cmd: cargo test --no-default-features --features="format" -- --test-threads=1
          - name: racer-completion
            rust: nightly
            cmd: cargo test --no-default-features --features="racer-completion"
          - name: runnable
            cmd: cargo test --no-default-features --features="runnable"
        exclude:
          - name: default-features
            rust: stable
          - name: default-features
            rust: 1.42.0
          - name: racer-completion
            rust: stable
          - name: racer-completion
            rust: 1.42.0
               
    name: ${{ matrix.name }} with ${{ matrix.rust }} on ${{ matrix.os }}
    
    runs-on: ${{ matrix.os }}
    
    steps:
    - name: Checkout
      uses: actions/checkout@v1
      
    - name: Install Rust
      uses: actions-rs/toolchain@v1
      with:
        profile: minimal
        toolchain: ${{ matrix.rust }}
        override: true
        components: ${{ matrix.rust-components }}
      
    - name: Cache cargo registry
      uses: actions/cache@v1
      with:
        path: ~/.cargo/registry
        key: ${{ runner.os }}-${{ matrix.rust }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
        
    - name: Cache cargo index
      uses: actions/cache@v1
      with:
        path: ~/.cargo/git
        key: ${{ runner.os }}-${{ matrix.rust }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
      
    - name: Cache cargo build
      uses: actions/cache@v1
      with:
        path: target
        key: ${{ runner.os }}-${{ matrix.rust }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
     
    - name: Build external crate test dependency
      run: |
        cd test-resources/external_crate
        cargo build
        cd ../..
        
    - name: Build external kserd test dependency
      run: |
        cd test-resources/external_kserd
        cargo build
        cd ../..
        
    - name: Run tests
      run: ${{ matrix.cmd }}