test_that("configuration key value pairs work as expected", { # setting nothing or empty list should work drv <- duckdb() duckdb_shutdown(drv) drv <- duckdb(config = list()) duckdb_shutdown(drv) # but we should throw an error on non-existent options expect_error(duckdb(config = list(a = "a"))) # but setting a legal option is fine drv <- duckdb(config = list("default_order" = "DESC")) # the option actually does something con <- dbConnect(drv) dbExecute(con, "create table a (i integer)") dbExecute(con, "insert into a values (44), (42)") res <- dbGetQuery(con, "select i from a order by i") dbDisconnect(con) expect_equal(res$i, c(44, 42)) duckdb_shutdown(drv) # setting a configuration option to a non-string is an error expect_error(duckdb(config = list("default_order" = 42))) expect_error(duckdb(config = list("default_order" = c("a", "b")))) # setting a configuration option to an unrecognized value expect_error(duckdb(config = list("default_order" = "asdf"))) })