# test_that("audit_report renders an HTML report", { # skip_if_not_installed("rmarkdown") # pandoc_ok <- tryCatch(rmarkdown::pandoc_available(), error = function(e) FALSE) # if (!isTRUE(pandoc_ok)) { # skip("pandoc not available") # } # # set.seed(3) # df <- data.frame( # subject = rep(1:6, each = 2), # outcome = rep(c(0, 1), 6), # x1 = rnorm(12), # x2 = rnorm(12) # ) # splits <- make_split_plan(df, outcome = "outcome", # mode = "subject_grouped", group = "subject", # v = 3, seed = 1, progress = FALSE) # # custom <- list( # glm = list( # fit = function(x, y, task, weights, ...) { # suppressWarnings(stats::glm(y ~ ., data = as.data.frame(x), # family = stats::binomial(), weights = weights)) # }, # predict = function(object, newdata, task, ...) { # as.numeric(suppressWarnings(stats::predict(object, # newdata = as.data.frame(newdata), # type = "response"))) # } # ) # ) # # fit <- fit_resample( # df, # outcome = "outcome", # splits = splits, # learner = "glm", # custom_learners = custom, # metrics = "auc", # refit = FALSE, # seed = 1 # ) # audit <- audit_leakage(fit, metric = "auc", B = 5, perm_stratify = FALSE) # # out_file <- audit_report(audit, output_dir = tempdir(), # output_file = "bioLeak_audit_report_test.html", # quiet = TRUE, open = FALSE) # expect_true(file.exists(out_file)) # }) test_that("audit_report validates inputs and dependencies", { expect_error(audit_report(list()), "LeakAudit or LeakFit") if (!requireNamespace("rmarkdown", quietly = TRUE)) { df <- make_class_df(10) splits <- make_split_plan_quiet(df, outcome = "outcome", mode = "subject_grouped", group = "subject", v = 2, seed = 1) custom <- make_custom_learners() fit <- fit_resample_quiet(df, outcome = "outcome", splits = splits, learner = "glm", custom_learners = custom, metrics = "auc", refit = FALSE, seed = 1) expect_error(audit_report(fit), "Install 'rmarkdown'") } })