Skip to content

Commit c077fb3

Browse files
committed
Skip tests if Cairo versions do not match
Turns out Cairo influences extents computation as well
1 parent 95fcab6 commit c077fb3

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

R/testthat-ui.R

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
161172
system_freetype_version <- function() {
162173
ver <- sub(".[0-9]+$", "", gdtools::version_freetype())
163174
as_version(ver)

0 commit comments

Comments
 (0)