Skip to content

Fixed Description

Fixed Description #76

Workflow file for this run

name: "Unit tests: macOS"
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
jobs:
test:
name: tests on macOS with R ${{ matrix.R }}
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
R: ['4.1.0']
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup R
uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.R }}
Ncpus: 2
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Query dependencies
run: |
install.packages('remotes')
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
shell: Rscript {0}
- name: cache R installed packages
uses: actions/cache@v2
id: cache
with:
path: |
${{ env.R_LIBS_USER }}
key: ${{ runner.os }}-R${{ matrix.R }}-2-${{ hashFiles('.github/depends.Rds') }}
restore-keys: ${{ runner.os }}-R${{ matrix.R }}-2-
- name: Install packages
run: |
install.packages(c("devtools"))
remotes::install_deps(dependencies = TRUE)
remotes::install_cran("rcmdcheck")
shell: Rscript {0}
- name: setup r-reticulate venv
shell: Rscript {0}
run: |
library(reticulate)
reticulate::py_run_string("
import sys
import subprocess
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'pip'])
")
# Install required packages
reticulate::py_run_string("
import sys
import subprocess
# Install basic packages
packages = ['numpy', 'pandas', 'matplotlib']
for package in packages:
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', package])
# Install pyEpiabm from GitHub
subprocess.check_call([
sys.executable, '-m', 'pip', 'install', '--upgrade',
'git+https://github.com/SABS-R3-Epidemiology/epiabm.git@main#egg=pyEpiabm&subdirectory=pyEpiabm'
])
")
env_name <- "r-py-env"
python_version = "3.9"
tryCatch({
# Check if virtualenv package is available
if (!reticulate::virtualenv_exists(env_name)) {
message(sprintf("Creating new Python virtual environment: %s", env_name))
# Create virtual environment with system site packages to help with SSL
reticulate::virtualenv_create(
envname = env_name,
version = python_version,
packages = "pip",
system_site_packages = TRUE
)
}
# Activate the environment
reticulate::use_virtualenv(env_name, required = TRUE)
return(TRUE)
}, error = function(e) {
warning(sprintf("Failed to create/activate Python environment: %s", e$message))
return(FALSE)
})
- name: Check
env:
_R_CHECK_CRAN_INCOMING_REMOTE_: false
run: |
options(crayon.enabled = TRUE)
rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "error", check_dir = "check")
shell: Rscript {0}
- name: Show testthat output
if: always()
run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true
shell: bash