@@ -111,53 +111,64 @@ compare_figs <- function(case) {
111111 maybe_collect_case(case )
112112 push_log(case )
113113
114- cases_ver <- cases_freetype_version()
114+ check_versions_match(" FreeType" , system_freetype_version(), strip = TRUE )
115+ check_versions_match(" Cairo" , gdtools :: version_cairo(), strip = FALSE )
116+
117+ msg <- paste0(" Figures don't match: " , case $ name , " .svg\n " )
118+ mismatch_exp(msg , case )
119+ }
120+
121+ check_versions_match <- function (dep , version , strip = FALSE ) {
122+ cases_ver <- cases_pkg_version(dep , strip = strip )
115123 system_ver <- system_freetype_version()
116124
117125 if (is_null(cases_ver )) {
118126 msg <- glue(
119127 " Failed doppelganger but vdiffr can't check its FreeType version.
120128 Please revalidate cases with a more recent vdiffr"
121129 )
122- return ( skipped_mismatch_exp(msg , case ))
130+ return_from(caller_env(), skipped_mismatch_exp(msg , case ))
123131 }
124132
125133 if (cases_ver < system_ver ) {
126134 msg <- glue(
127- " Failed doppelganger was generated with an older FreeType version.
135+ " Failed doppelganger was generated with an older { dep } version.
128136 Please revalidate cases with vdiffr::validate_cases() or vdiffr::manage_cases()"
129137 )
130- return ( skipped_mismatch_exp(msg , case ))
138+ return_from(caller_env(), skipped_mismatch_exp(msg , case ))
131139 }
132140
133141 if (cases_ver > system_ver ) {
134142 msg <- glue(
135143 " Failed doppelganger was generated with a newer FreeType version.
136144 Please install FreeType {cases_ver} on your system"
137145 )
138- return ( skipped_mismatch_exp(msg , case ))
146+ return_from(caller_env(), skipped_mismatch_exp(msg , case ))
139147 }
140-
141- msg <- paste0(" Figures don't match: " , case $ name , " .svg\n " )
142- mismatch_exp(msg , case )
143148}
144149
145150# Go back up one level by default as we should be in the `testthat`
146151# folder
147- cases_freetype_version <- function (path = " .." ) {
152+ cases_pkg_version <- function (pkg , path = " .." , strip = FALSE ) {
148153 deps <- readLines(file.path(path , " figs" , " deps.txt" ))
149- ver <- purrr :: detect(deps , function (dep ) grepl(" ^FreeType: " , dep ))
154+ ver <- purrr :: detect(deps , function (dep ) grepl(sprintf( " ^%s: " , pkg ) , dep ))
150155
151156 if (is_null(ver )) {
152157 return (NULL )
153158 }
154159
155160 # Strip "FreeType: " prefix and minor version
156- ver <- substr(ver , 11 , nchar(ver ))
157- ver <- sub(" .[0-9]+$" , " " , ver )
161+ if (strip ) {
162+ ver <- substr(ver , 11 , nchar(ver ))
163+ ver <- sub(" .[0-9]+$" , " " , ver )
164+ }
158165
159166 as_version(ver )
160167}
168+ cases_freetype_version <- function (path = " .." ) {
169+ cases_pkg_version(" FreeType" , path , strip = TRUE )
170+ }
171+
161172system_freetype_version <- function () {
162173 ver <- sub(" .[0-9]+$" , " " , gdtools :: version_freetype())
163174 as_version(ver )
0 commit comments