From 29ec7255f317194490838ceb7eda1c9531b02479 Mon Sep 17 00:00:00 2001 From: wlandau Date: Fri, 10 Jan 2025 14:36:08 -0500 Subject: [PATCH] fix tests --- R/class_store_repository_cas.R | 2 +- R/class_store_repository_cas_methods.R | 8 ++++++-- R/tar_repository_cas.R | 3 +++ tests/testthat/test-tar_repository_cas.R | 13 ++++++------- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/R/class_store_repository_cas.R b/R/class_store_repository_cas.R index a38aaecc..bf6541ff 100644 --- a/R/class_store_repository_cas.R +++ b/R/class_store_repository_cas.R @@ -117,7 +117,7 @@ tar_repository_cas_lookup <- function(store) { return(lookup) } list_method <- .subset2(methods, "list") - if (all(list_method == "NULL")) { + if (!any(nzchar(list_method))) { return(lookup_new()) } keys_meta <- as.character(lookup) diff --git a/R/class_store_repository_cas_methods.R b/R/class_store_repository_cas_methods.R index cb01f902..5587c964 100644 --- a/R/class_store_repository_cas_methods.R +++ b/R/class_store_repository_cas_methods.R @@ -54,11 +54,15 @@ store_repository_cas_methods_validate <- function(methods) { tar_assert_scalar(methods$repository) tar_assert_nzchar(methods$repository) tar_assert_correct_fields(methods, store_repository_cas_methods_new) - for (field in c("upload", "download", "exists", "list")) { + for (field in c("upload", "download")) { tar_assert_chr(methods[[field]]) tar_assert_scalar(methods[[field]]) tar_assert_nzchar(methods[[field]]) } + for (field in c("exists", "list")) { + tar_assert_chr(methods[[field]]) + tar_assert_scalar(methods[[field]]) + } tar_assert_scalar(methods[["consistent"]]) tar_assert_lgl(methods[["consistent"]]) tar_assert_none_na(methods[["consistent"]]) @@ -66,7 +70,7 @@ store_repository_cas_methods_validate <- function(methods) { store_repository_cas_field <- function(repository, pattern, prefix = "") { text <- base64url::base64_urldecode(keyvalue_field(repository, pattern)) - if (text != "NULL") { + if (nzchar(text)) { text <- paste0(prefix, text) } text diff --git a/R/tar_repository_cas.R b/R/tar_repository_cas.R index c7e9a5a5..e4eabcf6 100644 --- a/R/tar_repository_cas.R +++ b/R/tar_repository_cas.R @@ -316,6 +316,9 @@ tar_repository_cas <- function( } tar_repository_cas_field <- function(key, value) { + if (is.null(value)) { + return(paste0(key, "=")) + } if (is.function(value)) { value <- body(value) } diff --git a/tests/testthat/test-tar_repository_cas.R b/tests/testthat/test-tar_repository_cas.R index 525179a8..01f92e84 100644 --- a/tests/testthat/test-tar_repository_cas.R +++ b/tests/testthat/test-tar_repository_cas.R @@ -19,7 +19,7 @@ tar_test("tar_repository_cas() generates an encoded string", { expect_equal(out[1], "repository_cas") expect_true(any(grepl("^upload=+.", out))) expect_true(any(grepl("^download=+.", out))) - expect_true(any(grepl("^exists=+.", out))) + expect_true(any(grepl("^exists=*.", out))) expect_true(any(grepl("^list=+.", out))) expect_true(any(grepl("^consistent=+.", out))) }) @@ -41,10 +41,7 @@ tar_test("tar_repository_cas() keeps 'exists' at the right times", { consistent = TRUE ) out <- unlist(strsplit(out, split = "&", fixed = TRUE)) - exists <- base64url::base64_urldecode( - gsub("^exists=", "", out[grepl("^exists=+.", out)]) - ) - expect_equal(exists, "NULL") + expect_true(any(out == "exists=")) out <- tar_repository_cas( upload = function(key, path) { file.copy(path, file.path("cas", key)) @@ -64,7 +61,8 @@ tar_test("tar_repository_cas() keeps 'exists' at the right times", { exists <- base64url::base64_urldecode( gsub("^exists=", "", out[grepl("^exists=+.", out)]) ) - expect_false(exists == "NULL") + expect_true(nzchar(exists)) + expect_false(any(out == "exists=")) for (consistent in c(TRUE, FALSE)) { out <- tar_repository_cas( upload = function(key, path) { @@ -82,7 +80,8 @@ tar_test("tar_repository_cas() keeps 'exists' at the right times", { exists <- base64url::base64_urldecode( gsub("^exists=", "", out[grepl("^exists=+.", out)]) ) - expect_false(exists == "NULL") + expect_true(nzchar(exists)) + expect_false(any(out == "exists=")) } })