r-lib / vdiffr

Visual regression testing and graphical diffing with testthat
https://vdiffr.r-lib.org
Other
180 stars 31 forks source link

Error in get(".context", envir = testthat::get_reporter()): use of NULL environment is defunct #100

Closed pat-s closed 3 years ago

pat-s commented 3 years ago

I am trying to conditionally use {vdiffr} on CRAN given some complains by Prof Ripley.

However I am running into issues lately when using {vdiffr} locally. Everything was fine during my latest submission on 2020-11-11 which should have used vdiffr v0.3.3 already, given this version was released 2020-10-06.

The arrange() warnings origin from {plotly} and can probably be ignored here.

Any help is appreciated.

library(mlr3verse)
#> Loading required package: mlr3
#> Loading required package: mlr3filters
#> Loading required package: mlr3learners
#> Loading required package: mlr3pipelines
#> Loading required package: mlr3tuning
#> Loading required package: mlr3viz
#> Loading required package: paradox
library(mlr3spatiotempcv)
library(vdiffr)

task <- tsk("cookfarm")
rsp <- rsmp("repeated_sptcv_cstf", folds = 4, repeats = 2, time_var = "Date")
rsp$instantiate(task)

p1 <- autoplot(rsp, task = task, crs = 4326)
expect_doppelganger("title", p1)
#> Warning: `arrange_()` is deprecated as of dplyr 0.7.0.
#> Please use `arrange()` instead.
#> See vignette('programming') for more help
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_warnings()` to see where this warning was generated.
#> Error in get(".context", envir = testthat::get_reporter()): use of NULL environment is defunct

Created on 2020-12-24 by the reprex package (v0.3.0)

Session info ``` r devtools::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.0.3 Patched (2020-12-10 r79607) #> os macOS Big Sur 10.16 #> system x86_64, darwin17.0 #> ui X11 #> language (EN) #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz Europe/Berlin #> date 2020-12-24 #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date lib #> assertthat 0.2.1 2019-03-21 [1] #> backports 1.2.1 2020-12-09 [1] #> bbotk 0.2.2.9000 2020-12-24 [1] #> callr 3.5.1 2020-10-13 [1] #> checkmate 2.0.0 2020-02-06 [1] #> class 7.3-17 2020-04-26 [2] #> classInt 0.4-3 2020-04-07 [1] #> cli 2.2.0 2020-11-20 [1] #> colorspace 2.0-0 2020-11-11 [1] #> crayon 1.3.4 2017-09-16 [1] #> crosstalk 1.1.0.1 2020-03-13 [1] #> data.table 1.13.4 2020-12-08 [1] #> DBI 1.1.0 2019-12-15 [1] #> desc 1.2.0 2018-05-01 [1] #> devtools 2.3.2 2020-09-18 [1] #> digest 0.6.27 2020-10-24 [1] #> dplyr 1.0.2 2020-08-18 [1] #> e1071 1.7-4 2020-10-14 [1] #> ellipsis 0.3.1 2020-05-15 [1] #> evaluate 0.14 2019-05-28 [1] #> fansi 0.4.1 2020-01-08 [1] #> farver 2.0.3 2020-01-16 [1] #> fontBitstreamVera 0.1.1 2017-02-01 [1] #> fontLiberation 0.1.0 2016-10-15 [1] #> fontquiver 0.2.1 2017-02-01 [1] #> freetypeharfbuzz 0.2.5 2018-10-30 [1] #> fs 1.5.0 2020-07-31 [1] #> gdtools 0.2.2 2020-04-03 [1] #> generics 0.1.0 2020-10-31 [1] #> ggplot2 3.3.2 2020-06-19 [1] #> ggsci 2.9 2018-05-14 [1] #> ggtext 0.1.1 2020-12-17 [1] #> glue 1.4.2 2020-08-27 [1] #> gridtext 0.1.4 2020-12-10 [1] #> gtable 0.3.0 2019-03-25 [1] #> highr 0.8 2019-03-20 [1] #> htmltools 0.5.0 2020-06-16 [1] #> htmlwidgets 1.5.3 2020-12-10 [1] #> httr 1.4.2 2020-07-20 [1] #> jsonlite 1.7.2 2020-12-09 [1] #> KernSmooth 2.23-18 2020-10-29 [2] #> knitr 1.30 2020-09-22 [1] #> lazyeval 0.2.2 2019-03-15 [1] #> lgr 0.4.1 2020-10-20 [1] #> lifecycle 0.2.0 2020-03-06 [1] #> magrittr 2.0.1 2020-11-17 [1] #> memoise 1.1.0 2017-04-21 [1] #> mlr3 * 0.9.0-9000 2020-12-20 [1] #> mlr3filters * 0.4.0 2020-11-10 [1] #> mlr3learners * 0.4.3 2020-12-08 [1] #> mlr3misc 0.6.0 2020-11-17 [1] #> mlr3pipelines * 0.3.2 2020-12-17 [1] #> mlr3spatiotempcv * 0.1.0.9000 2020-12-13 [1] #> mlr3tuning * 0.5.0 2020-12-07 [1] #> mlr3verse * 0.1.3 2020-07-06 [1] #> mlr3viz * 0.5.0 2020-11-02 [1] #> munsell 0.5.0 2018-06-12 [1] #> paradox * 0.6.0-9000 2020-12-20 [1] #> patchwork 1.1.1 2020-12-17 [1] #> pillar 1.4.7 2020-11-20 [1] #> pkgbuild 1.2.0 2020-12-15 [1] #> pkgconfig 2.0.3 2019-09-22 [1] #> pkgload 1.1.0 2020-05-29 [1] #> plotly 4.9.2.2 2020-12-19 [1] #> prettyunits 1.1.1 2020-01-24 [1] #> processx 3.4.5 2020-11-30 [1] #> ps 1.5.0 2020-12-05 [1] #> purrr 0.3.4 2020-04-17 [1] #> R6 2.5.0 2020-10-28 [1] #> Rcpp 1.0.5 2020-07-06 [1] #> remotes 2.2.0 2020-07-21 [1] #> rlang 0.4.9 2020-11-26 [1] #> rmarkdown 2.6 2020-12-14 [1] #> rprojroot 2.0.2 2020-11-15 [1] #> scales 1.1.1 2020-05-11 [1] #> sessioninfo 1.1.1 2018-11-05 [1] #> sf 0.9-6 2020-09-13 [1] #> stringi 1.5.3 2020-09-09 [1] #> stringr 1.4.0 2019-02-10 [1] #> systemfonts 0.3.2 2020-09-29 [1] #> testthat 3.0.1 2020-12-20 [1] #> tibble 3.0.4 2020-10-12 [1] #> tidyr 1.1.2 2020-08-27 [1] #> tidyselect 1.1.0 2020-05-11 [1] #> units 0.6-7 2020-06-13 [1] #> usethis 2.0.0.9000 2020-12-24 [1] #> uuid 0.1-4 2020-02-26 [1] #> vctrs 0.3.6 2020-12-17 [1] #> vdiffr * 0.3.3 2020-10-06 [1] #> viridisLite 0.3.0 2018-02-01 [1] #> withr 2.3.0 2020-09-22 [1] #> xfun 0.19 2020-10-30 [1] #> xml2 1.3.2 2020-04-23 [1] #> yaml 2.2.1 2020-02-01 [1] #> source #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> Github (mlr-org/bbotk@0da27b0) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.2) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> Github (mlr-org/mlr3@f9ac360) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> Github (mlr-org/mlr3spatiotempcv@5e3a339) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> Github (mlr-org/paradox@99cfc0f) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.2) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> Github (r-lib/testthat@e99155a) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> Github (r-lib/usethis@b01ab07) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> CRAN (R 4.0.3) #> #> [1] /Users/pjs/Library/R/4.0/library #> [2] /Library/Frameworks/R.framework/Versions/4.0/Resources/library ```

When wrapping expect_doppelganger() for conditional use as suggested by @lionel- in a reply mail to Prof Ripley, it gets even more troublesome

expect_doppelganger = function(title, fig, path = NULL, ...) {
  testthat::skip_if_not_installed("vdiffr")
  expect_doppelganger(title = title, fig = fig, path = path, ...)
}

expect_doppelganger("title", p1)
Error: C stack usage  7969360 is too close to the limit
lionel- commented 3 years ago

As you have written it, expect_doppelganger() is a recursive function that calls itself in that snippet:

expect_doppelganger = function(title, fig, path = NULL, ...) {
  testthat::skip_if_not_installed("vdiffr")
  expect_doppelganger(title = title, fig = fig, path = path, ...)
}

The solution is to call the vdiffr expectation by specifying the namespace:

expect_doppelganger = function(title, fig, path = NULL, ...) {
  testthat::skip_if_not_installed("vdiffr")
  vdiffr::expect_doppelganger(title = title, fig = fig, path = path, ...)
}