future.tests: Continuous Integration on Travis CI

We can use continuous integration (CI) services such as GitHub Action and Travis CI to automatically validate future backends via the future.tests test suite.

Here's an example .travis.yaml file that configures Travis CI to check the multisession and the future.callr::callr backends via the future.tests test suite.

language: r
cache: packages
warnings_are_errors: false
r_check_args: --as-cran
latex: false

jobs:
  include:
    - os: linux
      r: release
      script:
        - R CMD build --no-build-vignettes --no-manual .
        - R CMD INSTALL --no-docs --no-html --no-help --no-demo *.tar.gz
        - Rscript -e future.tests::check --args --test-plan="${BACKEND}"
      env: BACKEND='sequential'
    - os: linux
      r: release
      script:
        - R CMD build --no-build-vignettes --no-manual .
        - R CMD INSTALL --no-docs --no-html --no-help --no-demo *.tar.gz
        - Rscript -e future.tests::check --args --test-plan="${BACKEND}"
      env: BACKEND='multicore'
    - os: linux
      r: release
      script:
        - R CMD build --no-build-vignettes --no-manual .
        - R CMD INSTALL --no-docs --no-html --no-help --no-demo *.tar.gz
        - Rscript -e future.tests::check --args --test-plan="${BACKEND}"
      env: BACKEND='multisession'
    - os: linux
      r: release
      script:
        - R CMD build --no-build-vignettes --no-manual .
        - R CMD INSTALL --no-docs --no-html --no-help --no-demo *.tar.gz
        - Rscript -e future.tests::check --args --test-plan="${BACKEND}"
      env: BACKEND='cluster'
    - os: linux
      r: release
      r_packages:
        - future.callr
      script:
        - R CMD build --no-build-vignettes --no-manual .
        - R CMD INSTALL --no-docs --no-html --no-help --no-demo *.tar.gz
        - Rscript -e future.tests::check --args --test-plan="${BACKEND}"
      env: BACKEND='future.callr::callr'
    - os: linux
      r: release
      r_packages:
        - future.batchtools
      script:
        - R CMD build --no-build-vignettes --no-manual .
        - R CMD INSTALL --no-docs --no-html --no-help --no-demo *.tar.gz
        - Rscript -e future.tests::check --args --test-plan="${BACKEND}"
      env: BACKEND='future.batchtools::batchtools_local'
    - os: linux
      r: release
      script:
        - R CMD build --no-build-vignettes --no-manual .
      r_packages:
        - covr
      after_success:
        - Rscript -e 'covr::codecov(quiet=FALSE)'
      env: NB='covr' ## Just a label

before_install:
  - Rscript -e 'c(physical = parallel::detectCores(logical = FALSE), logical = parallel::detectCores())'

notifications:
  email:
    on_success: change
    on_failure: change