From 96360650f2d5b94a3dce8f30d3ad60f2366a82a1 Mon Sep 17 00:00:00 2001 From: Cedric Batailler Date: Tue, 27 Feb 2024 20:39:36 +0100 Subject: [PATCH] Improve package behavior when Suggestions are not installed (#48) * Make some tests conditionnal * Make some tests conditionnal * Make some part of vignettes conditionnal --- .github/workflows/check-no-suggests.yaml | 58 ++++++++++++++++++++++++ NEWS.md | 4 +- R/check_assumptions.R | 5 +- R/plot_assumptions.R | 5 +- man/check_assumptions.Rd | 6 ++- man/plot_assumptions.Rd | 6 ++- tests/testthat/test-check_assumptions.R | 2 + tests/testthat/test-plot_assumptions.R | 2 + vignettes/jsmediation.Rmd | 6 +-- 9 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/check-no-suggests.yaml diff --git a/.github/workflows/check-no-suggests.yaml b/.github/workflows/check-no-suggests.yaml new file mode 100644 index 0000000..caed081 --- /dev/null +++ b/.github/workflows/check-no-suggests.yaml @@ -0,0 +1,58 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +# +# NOTE: This workflow only directly installs "hard" dependencies, i.e. Depends, +# Imports, and LinkingTo dependencies. Notably, Suggests dependencies are never +# installed, with the exception of testthat, knitr, and rmarkdown. The cache is +# never used to avoid accidentally restoring a cache containing a suggested +# dependency. +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +name: R-CMD-check-hard + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: ubuntu-latest, r: 'release'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + dependencies: '"hard"' + cache: false + extra-packages: | + any::rcmdcheck + any::testthat + any::knitr + any::rmarkdown + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' diff --git a/NEWS.md b/NEWS.md index 624353f..53d182f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,8 +2,10 @@ ## Minor improvements and bug fixes +* Some tests, examples, and parts of the vignettes are now conditionnal * Fix issues related to assumption check functions -* Small maintenance task +* Fix some typos in documentation +* Small maintenance tasks # JSmediation (0.2.1) diff --git a/R/check_assumptions.R b/R/check_assumptions.R index 9ac4a27..342a54c 100644 --- a/R/check_assumptions.R +++ b/R/check_assumptions.R @@ -18,11 +18,14 @@ #' #' @return Invisibly returns an object of class \code{mediation_model}. #' -#' @examples +#' @examplesIf rlang::is_installed("performance") +#' #' data(ho_et_al) +#' #' ho_et_al$condition_c <- build_contrast(ho_et_al$condition, #' "Low discrimination", #' "High discrimination") +#' #' my_model <- #' mdt_simple(data = ho_et_al, #' IV = condition_c, diff --git a/R/plot_assumptions.R b/R/plot_assumptions.R index 8a73463..fa7784b 100644 --- a/R/plot_assumptions.R +++ b/R/plot_assumptions.R @@ -15,11 +15,14 @@ #' #' @return Invisibly returns an object of class \code{mediation_model}. #' -#' @examples +#' @examplesIf rlang::is_installed("see") +#' #' data(ho_et_al) +#' #' ho_et_al$condition_c <- build_contrast(ho_et_al$condition, #' "Low discrimination", #' "High discrimination") +#' #' my_model <- #' mdt_simple(data = ho_et_al, #' IV = condition_c, diff --git a/man/check_assumptions.Rd b/man/check_assumptions.Rd index fdb1b0a..db22c1b 100644 --- a/man/check_assumptions.Rd +++ b/man/check_assumptions.Rd @@ -32,10 +32,14 @@ The assumptions test are performed using Note that \code{check_assumptions} returns a \code{mediation_model} object. } \examples{ +\dontshow{if (rlang::is_installed("performance")) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} + data(ho_et_al) + ho_et_al$condition_c <- build_contrast(ho_et_al$condition, "Low discrimination", "High discrimination") + my_model <- mdt_simple(data = ho_et_al, IV = condition_c, @@ -43,7 +47,7 @@ my_model <- M = linkedfate) check_assumptions(my_model) - +\dontshow{\}) # examplesIf} } \seealso{ Other assumption checks: diff --git a/man/plot_assumptions.Rd b/man/plot_assumptions.Rd index e011b90..5047b75 100644 --- a/man/plot_assumptions.Rd +++ b/man/plot_assumptions.Rd @@ -29,10 +29,14 @@ plots. This function is best used in an interactive context. } \examples{ +\dontshow{if (rlang::is_installed("see")) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} + data(ho_et_al) + ho_et_al$condition_c <- build_contrast(ho_et_al$condition, "Low discrimination", "High discrimination") + my_model <- mdt_simple(data = ho_et_al, IV = condition_c, @@ -40,7 +44,7 @@ my_model <- M = linkedfate) plot_assumptions(my_model) - +\dontshow{\}) # examplesIf} } \seealso{ Other assumption checks: diff --git a/tests/testthat/test-check_assumptions.R b/tests/testthat/test-check_assumptions.R index 72873d4..42de823 100644 --- a/tests/testthat/test-check_assumptions.R +++ b/tests/testthat/test-check_assumptions.R @@ -1,3 +1,5 @@ +skip_if_not_installed("performance") + test_that("check_assumptions run without error", { ho_et_al$condition_c <- build_contrast(ho_et_al$condition, "Low discrimination", diff --git a/tests/testthat/test-plot_assumptions.R b/tests/testthat/test-plot_assumptions.R index 49f539f..d9f0234 100644 --- a/tests/testthat/test-plot_assumptions.R +++ b/tests/testthat/test-plot_assumptions.R @@ -1,3 +1,5 @@ +skip_if_not_installed("see") + test_that("check_assumptions_plot", { # it seems that check models produce some error which are not relevent for # the test. diff --git a/vignettes/jsmediation.Rmd b/vignettes/jsmediation.Rmd index 77e13a4..62f227b 100644 --- a/vignettes/jsmediation.Rmd +++ b/vignettes/jsmediation.Rmd @@ -162,19 +162,19 @@ regard. This function uses a mediation model as a first argument, and the model name (or model index) as a second argument. It then returns a linear model object (i.e., an `lm` object). -```{r fig.height=8, fig.width=7, out.width="100%"} +```{r eval=rlang::is_installed("performance"), fig.height=8, fig.width=7, out.width="100%"} first_model <- extract_model(mediation_fit, step = "X -> M") performance::check_model(first_model) ``` We will do the same thing for the two other models mdt_simple has fitted. -```{r fig.height=8, fig.width=7, out.width="100%"} +```{r eval=rlang::is_installed("performance"), fig.height=8, fig.width=7, out.width="100%"} second_model <- extract_model(mediation_fit, step = 2) performance::check_model(second_model) ``` -```{r fig.height=8, fig.width=7, out.width="100%"} +```{r eval=rlang::is_installed("performance"), fig.height=8, fig.width=7, out.width="100%"} third_model <- extract_model(mediation_fit, step = 3) performance::check_model(third_model) ```