From a7733c0bcb1e4e7540e9f47633ce7d96cd9a5e00 Mon Sep 17 00:00:00 2001 From: Dirk Eddelbuettel Date: Thu, 1 Sep 2022 15:25:25 -0500 Subject: [PATCH 1/2] Refactor test for remaining group elements after partial removal --- inst/tinytest/test_group.R | 43 ++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/inst/tinytest/test_group.R b/inst/tinytest/test_group.R index a080bb463f..06c0a5391e 100644 --- a/inst/tinytest/test_group.R +++ b/inst/tinytest/test_group.R @@ -128,21 +128,28 @@ grp <- tiledb_group_close(grp) grp <- tiledb_group_open(grp, "READ") expect_equal(tiledb_group_member_count(grp), 2) -## remainder fragile on Fedora -if (isFALSE(tiledb:::.isFedora())) { - obj <- tiledb_group_member(grp, 0) - expect_equal(length(obj), 3) - expect_true(is.character(obj[1])) - expect_equal(obj[1], "ARRAY") - expect_true(is.character(obj[2])) - expect_equal(obj[2], file.path(tiledb_group_uri(grp), "chloe")) - expect_true(is.character(obj[3])) - expect_equal(obj[3], "name_is_chloe") - - obj <- tiledb_group_member(grp, 1) # group member with no name - expect_equal(obj[3], "") - - txt <- tiledb_group_member_dump(grp, TRUE) - dat <- read.csv(text=txt, sep=' ', header=FALSE) - expect_equal(nrow(dat), 1+2) # one for header 'filename GROUP' -} +obj <- tiledb_group_member(grp, 0) +expect_equal(length(obj), 3) +expect_true(is.character(obj[1])) +expect_equal(obj[1], "ARRAY") +expect_true(is.character(obj[2])) +## there appears to be non-determinism here that between remaining +## group members 0 and 1, we do not always get the same order: +## often chloe first then anny; but sometimes anny first, then chloe +## this is likely due to us writing several small objects 'in bulk' +## so they end up with identical timestamps, so an added sleep may +## help but as only two elements remain testing _both_ with a proper +## 'or' clause is an alternative +expect_true(obj[2] %in% c(file.path(tiledb_group_uri(grp), "chloe"), + file.path(tiledb_group_uri(grp), "anny"))) +expect_true(is.character(obj[3])) +expect_true(obj[3] %in% c("name_is_chloe", "")) + +obj <- tiledb_group_member(grp, 1) # group member with no name +expect_true(obj[2] %in% c(file.path(tiledb_group_uri(grp), "chloe"), + file.path(tiledb_group_uri(grp), "anny"))) +expect_true(obj[3] %in% c("name_is_chloe", "")) + +txt <- tiledb_group_member_dump(grp, TRUE) +dat <- read.csv(text=txt, sep=' ', header=FALSE) +expect_equal(nrow(dat), 1+2) # one for header 'filename GROUP' From 2f7f45b489482c5b89e89947ef169bd75b26d60d Mon Sep 17 00:00:00 2001 From: Dirk Eddelbuettel Date: Thu, 1 Sep 2022 15:42:06 -0500 Subject: [PATCH 2/2] Update NEWS.md [ci skip] --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index 5c5c871466..7727c98637 100644 --- a/NEWS.md +++ b/NEWS.md @@ -22,6 +22,8 @@ * Test setup was tweaked to not trigger a spurious valgrind report from libcrypto (#461) +* Test setup was tweaked to make a group comparison more resilient to ordering (#462) + # tiledb 0.15.0