chrono 0.4.22

Date and time library for Rust
Documentation
name: All Tests and Builds

on:
  push:
    branches: [main]
  pull_request:
    paths:
      - "**.rs"
      - .github/**
      - .ci/**
      - Cargo.toml

jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-20.04, ubuntu-latest, macos-latest, windows-latest]
        rust_version: [stable]
        exhaustive_tz: [onetz]
        check_combinatoric: [no_combinatoric]
        include:
          # check all tzs on most-recent OS's
          - os: ubuntu-latest
            rust_version: stable
            exhaustive_tz: all_tzs
          - os: windows-latest
            rust_version: stable
            exhaustive_tz: all_tzs
          - os: macos-latest
            rust_version: stable
            exhaustive_tz: all_tzs
          # compilation check
          - os: ubuntu-latest
            rust_version: stable
            check_combinatoric: "combinatoric"
          # test other rust versions
          - os: ubuntu-latest
            rust_version: beta
          - os: ubuntu-latest
            rust_version: nightly
          - os: ubuntu-20.04
            rust_version: 1.38.0
          - os: macos-latest
            rust_version: 1.38.0
          - os: windows-latest
            rust_version: 1.38.0

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust_version }}
          override: true

      - uses: Swatinem/rust-cache@v1
      - name: Build and Test
        run: bash ci/github.sh
        env:
          RUST_VERSION: ${{ matrix.rust_version }}
          EXHAUSTIVE_TZ: ${{ matrix.exhaustive_tz }}
          CHECK_COMBINATORIC: ${{ matrix.check_combinatoric }}

  no_std:
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust with no_std toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: thumbv6m-none-eabi
          override: true
      - uses: Swatinem/rust-cache@v1

      - name: Build no_std lib
        run: cargo build --target thumbv6m-none-eabi --color=always
        working-directory: ./ci/core-test

  intel_sgx:
    strategy:
      matrix:
        os: [ubuntu-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust with fortanix sgx toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          target: x86_64-fortanix-unknown-sgx
          override: true
      - uses: Swatinem/rust-cache@v1

      - name: Build sgx lib
        run: cargo build --target x86_64-fortanix-unknown-sgx --color=always
        working-directory: ./ci/core-test

  wasm:
    strategy:
      matrix:
        os: [macos-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: wasm32-unknown-unknown
          override: true
      - uses: Swatinem/rust-cache@v1

      - name: Install node
        uses: actions/setup-node@v1
        with:
          node-version: "12"

      - name: Install wasm-pack
        run: |
          export RUST_BACKTRACE=1
          curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
          wasm-pack --version

      - name: Build and Test
        run: bash ci/github.sh
        env:
          RUST_VERSION: stable
          WASM: wasm_simple

  wasm_emscripten:
    strategy:
      matrix:
        os: [macos-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: wasm32-unknown-emscripten
          override: true

      - name: Install node
        uses: actions/setup-node@v1
        with:
          node-version: "12"

      - name: Build and Test
        run: bash ci/github.sh
        env:
          RUST_VERSION: stable
          WASM: wasm_emscripten

  wasm_unknown:
    strategy:
      matrix:
        os: [ubuntu-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: wasm32-unknown-unknown
          override: true
          default: true

      - name: Build and Test
        run: bash ci/github.sh
        env:
          RUST_VERSION: stable
          WASM: wasm_unknown

  wasm_unknown_no_wasmbind:
    strategy:
      matrix:
        os: [ubuntu-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: wasm32-unknown-unknown
          override: true
          default: true

      - name: Build and Test
        run: bash ci/github.sh
        env:
          RUST_VERSION: stable
          WASM: wasm_unknown_no_wasmbind

  wasm_wasi:
    strategy:
      matrix:
        os: [ubuntu-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: wasm32-wasi
          override: true
          default: true

      - name: Build and Test
        run: bash ci/github.sh
        env:
          RUST_VERSION: stable
          WASM: wasm_wasi

  cross-targets:
    strategy:
      matrix:
        target:
          - x86_64-sun-solaris

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Install cross
        run: cargo install cross

      - uses: Swatinem/rust-cache@v1

      - name: Build static library
        run: cross check --target ${{ matrix.target }}

  check-docs:
    runs-on: ubuntu-latest
    name: Check doc links
    steps:
      - uses: actions/checkout@v2
      - name: Install rust nightly
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          override: true
      - name: Check docs build without warnings
        env:
          RUSTDOCFLAGS: "-D warnings"
        run: cargo +nightly doc