stages:
  - lint
  - test

variables:
  FEATURES: ""
  RUST_BACKTRACE: "full"

.stable:
  image: rust:latest

.nightly:
  image: rustlang/rust:nightly
  allow_failure: true  # It's not often, but it happens nightly breaks, surprisingly.

.test:
  stage: test
  script:
    - cargo test --verbose

rustfmt:
  stage: lint
  script:
    - rustup component add rustfmt
    - find -type f -iname '*.rs' -not -path './target/*' | xargs rustfmt --check --edition 2018
  extends:
    - .stable

stable-test:
  extends:
    - .test
    - .stable

nightly-test:
  extends:
    - .test
    - .nightly