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