Nothing
# Tests that inst/include/ headers are in sync with src/ headers
# This catches ABI-breaking changes (e.g. GGML_MAX_DIMS) that would
# cause segfaults in downstream packages (sd2R etc.)
.ggmlr_src_dir <- function() {
# tests/testthat/ -> tests/ -> package root -> src/
pkg_root <- normalizePath(file.path(
getSrcDirectory(function() {}), "..", ".."
), mustWork = FALSE)
file.path(pkg_root, "src")
}
test_that("inst/include headers match src headers", {
pkg_src <- .ggmlr_src_dir()
pkg_include <- system.file("include", package = "ggmlR")
skip_if(!dir.exists(pkg_src), "src/ directory not found")
skip_if(!dir.exists(pkg_include), "inst/include/ directory not found")
headers <- c(
"ggml.h", "ggml-alloc.h", "ggml-backend.h", "ggml-backend-impl.h",
"ggml-common.h", "ggml-cpp.h", "ggml-cpu.h", "ggml-impl.h",
"ggml-opt.h", "ggml-quants.h", "ggml-threading.h",
"ggml-vulkan.h", "gguf.h", "r_ggml_compat.h"
)
for (h in headers) {
src_path <- file.path(pkg_src, h)
inc_path <- file.path(pkg_include, h)
if (!file.exists(src_path)) next
expect_true(file.exists(inc_path),
label = paste0("inst/include/", h, " exists"))
expect_identical(readLines(src_path), readLines(inc_path),
label = paste0(h, " is in sync"))
}
})
test_that("GGML_MAX_DIMS is consistent between src and installed headers", {
pkg_src <- file.path(.ggmlr_src_dir(), "ggml.h")
pkg_include <- system.file("include/ggml.h", package = "ggmlR")
skip_if(!file.exists(pkg_src), "src/ggml.h not found")
skip_if(!nzchar(pkg_include), "installed ggml.h not found")
extract_max_dims <- function(path) {
lines <- readLines(path)
hits <- grep("^#define GGML_MAX_DIMS", lines, value = TRUE)
m <- regmatches(hits, regexpr("\\d+$", hits))
as.integer(m[1])
}
src_val <- extract_max_dims(pkg_src)
inc_val <- extract_max_dims(pkg_include)
expect_false(is.na(src_val), label = "GGML_MAX_DIMS found in src/ggml.h")
expect_false(is.na(inc_val), label = "GGML_MAX_DIMS found in installed ggml.h")
expect_equal(src_val, inc_val,
label = "GGML_MAX_DIMS matches between src and installed headers")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.