Nothing
## Multiline match is just completely f***** up
## so, I've written a version that works.
multiline_match <- function(x, regex, fun = testthat::expect_match) {
lapply(seq_along(x), function(i) fun(x[[i]], regex = regex[[i]]))
}
base_regex <- "\\[\\s*%s\\-test\\-\\d{2}(:\\d{2}){2}\\] - %s"
regexps <- list(
info = info_regex <- sprintf(base_regex, "info", "%s"),
warning = warning_regex <- sprintf(base_regex, "warning", "%s"),
error = error_regex <- sprintf(base_regex, "error", "%s"),
verbose = verbose_regex <- sprintf(base_regex, "verbose", "%s"),
debug = debug_regex <- sprintf(base_regex, "debug", "%s"),
internal = internal_regex <- sprintf(base_regex, "INTERNAL", "%s")
)
test_that("Testing get_logger failproof", {
err_base <- "The 'name' (first) parameter for get_logger must be"
testthat::expect_error(
get_logger(1),
regex = paste(err_base, "a character, not a numeric."),
fixed = TRUE
)
testthat::expect_error(
get_logger(NULL),
regex = paste(err_base, "a character, not a NULL"),
fixed = TRUE
)
testthat::expect_error(
get_logger(NA),
regex = paste(err_base, "a character, not a logical"),
fixed = TRUE
)
testthat::expect_error(
get_logger(data.frame()),
regex = paste(err_base, "a character, not a data.frame."),
fixed = TRUE
)
testthat::expect_error(
get_logger(character(0)),
regex = paste(err_base, "1 element long, not 0."),
fixed = TRUE
)
testthat::expect_error(
get_logger(c("black", "lives", "matter")),
regex = paste(err_base, "1 element long, not 3."),
fixed = TRUE
)
})
test_that("Testing simple get_logger()", {
testthat::expect_warning(get_logger("test"), regex = NA)
testthat::expect_error(get_logger("test"), regex = NA)
})
test_that("Testing logger$set_* failproof", {
logger <- get_logger("test")
err_base <- paste(
"The 'value' (second) parameter for",
"W4MLogger$set_info must be"
)
testthat::expect_error(
logger$set_info("blahaj! UwU"),
regex = paste(err_base, "a logical, not a character."),
fixed = TRUE
)
testthat::expect_error(
## The flag is important to test Unicode!!
## Do not remove or everything will crash!!
## - your local IT trans engineer
logger$set_info(c("support", "trans", "rights 🏳️⚧️")),
regex = paste(err_base, "a logical, not a character."),
fixed = TRUE
)
testthat::expect_error(
logger$set_info(c(TRUE, FALSE, !NA)),
regex = paste(err_base, "1 element long, not 3."),
fixed = TRUE
)
})
test_that("Testing W4MLogger base", {
logger <- get_logger("test")
msg <- paste(
"Les belettes sont des petits animaux nocturnes de la",
"famille des zbeulideae..."
)
testthat::expect_message(
logger$info(msg),
regex = sprintf(info_regex, msg)
)
testthat::expect_message(
logger$info(),
regex = sprintf(info_regex, "")
)
testthat::expect_message(
logger$warning(msg),
regex = sprintf(warning_regex, msg)
)
testthat::expect_message(
logger$error(msg),
regex = sprintf(error_regex, msg)
)
testthat::expect_message(logger$debug(msg), regex = NA)
testthat::expect_message(logger$verbose(msg), regex = NA)
})
test_that("Testing W4MLogger zero logger", {
logger <- get_logger("test")
logger$set_verbose(FALSE)
logger$set_info(FALSE)
logger$set_debug(FALSE)
logger$set_warning(FALSE)
logger$set_error(FALSE)
for (kind in c("info", "warning", "error", "debug", "verbose")) {
testthat::expect_message(logger$field(kind)("ACAB"), regex = NA)
}
})
test_that("Testing W4MLogger all kind of loggers", {
logger <- get_logger("test")
setters <- list(
verbose = logger$set_verbose,
info = logger$set_info,
debug = logger$set_debug,
warning = logger$set_warning,
error = logger$set_error
)
for (kind in names(setters)) {
setters[[kind]](FALSE)
}
for (kind in names(setters)) {
setters[[kind]](TRUE)
testthat::expect_message(
logger$field(kind)("ACAB"),
regex = sprintf(regexps[[kind]], "ACAB")
)
setters[[kind]](FALSE)
}
})
test_that("Testing W4MLogger logger outputs", {
regex <- c(
sprintf(info_regex, "Starting the processing of:"),
sprintf(info_regex, "List of 3"),
" \\$ a: int \\[1:5\\] 1 2 3 4 5",
" \\$ b: int \\[1:6\\] 5 6 7 8 9 10",
" \\$ c: int \\[1:7\\] 8 7 6 5 4 3 2"
)
result <- strsplit(
capture.output(get_logger("test")$set_info()$info(
"Starting the processing of:", list(a = 1:5, b = 5:10, c = 8:2)
), type = "message"),
"\n"
)[[1]]
multiline_match(result, regex)
})
test_that("Testing W4MLogger logger no coloring outputs", {
regex <- c(
sprintf(info_regex, "Starting the processing of:"),
sprintf(info_regex, "List of 3"),
" \\$ a: int \\[1:5\\] 1 2 3 4 5",
" \\$ b: int \\[1:6\\] 5 6 7 8 9 10",
" \\$ c: int \\[1:7\\] 8 7 6 5 4 3 2"
)
result <- strsplit(
capture.output(
W4MLogger("test", do_coloring = FALSE)
$set_info()
$info(
"Starting the processing of:",
list(a = 1:5, b = 5:10, c = 8:2)
),
type = "message"
),
"\n"
)[[1]]
multiline_match(result, regex)
})
test_that("Testing W4MLogger output file", {
regex <- c(
sprintf(info_regex, "Starting the processing of:"),
sprintf(info_regex, "List of 3"),
" \\$ a: int \\[1:5\\] 1 2 3 4 5",
" \\$ b: int \\[1:6\\] 5 6 7 8 9 10",
" \\$ c: int \\[1:7\\] 8 7 6 5 4 3 2"
)
paths <- file.path(tempdir(), c("test1", "test2"))
capture.output(
W4MLogger("test", out_path = paths)
$set_info()
$info(
"Starting the processing of:",
list(a = 1:5, b = 5:10, c = 8:2)
),
type = "message"
)
results <- lapply(paths, readLines)
multiline_match(results[[1]], regex)
multiline_match(results[[2]], regex)
})
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.