test_that("configuration file can be loaded", { config::get() %>% expect_type("list") }) test_that("default configuration can be read", { color <- config::get("color") expect_identical(color, "red") shape <- config::get("shape") expect_identical(shape, "square") }) test_that("configuration can be accessed as a list", { conf <- config::get() expect_identical(conf$color, "red") expect_identical(conf$shape, "square") }) test_that("configurations override default", { conf <- config::get(config = "production") expect_identical(conf$color, "green") expect_identical(conf$shape, "circle") }) test_that("configuration can be read from alternate file", { expect_identical(config::get("color", file = "config/conf.yml"), "red") }) test_that("active configuration can be changed via an environment variable", { # restore previous state of environment after test previous_config <- Sys.getenv("R_CONFIG_ACTIVE", unset = NA); on.exit({ if (!is.na(previous_config)) Sys.setenv(R_CONFIG_ACTIVE = previous_config) else Sys.unsetenv("R_CONFIG_ACTIVE") }, add = TRUE) Sys.setenv(R_CONFIG_ACTIVE = "production") expect_identical(config::get("shape"), "circle") }) test_that("R code is executed when reading configurations", { expect_identical(config::get("color", config = "dynamic"), "orange") #expect_error(config::get("color", config = "error")) }) test_that("expressions are evaluated recursively", { expect_identical( config::get("nested", config = "dynamic"), list(shape = "circle", taste = "sweet") ) })