From 0d73256947c7c79890a5f94622f0948645ea4da7 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Thu, 5 Mar 2026 14:32:30 +0100 Subject: Make test robust against unavailable services Test logs are without internet. --- R/chent.R | 6 +++--- log/test.log | 23 +++++++++++++++++------ tests/testthat/setup.R | 4 ++++ tests/testthat/test_chent.R | 17 +++++++++++------ tests/testthat/test_pai.R | 9 +++++---- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/R/chent.R b/R/chent.R index 05066b8..038fe7b 100644 --- a/R/chent.R +++ b/R/chent.R @@ -219,10 +219,10 @@ chent <- R6Class("chent", #' @description #' Get chemical information from RDKit if available get_rdkit = function(template = NULL) { - + if (!rdkit_available) stop("RDKit is not available") if (is.null(self$smiles)) stop("RDKit would need a SMILES code") - + available_smiles <- names(self$smiles) smiles_preference <- c("user", "PubChem", "PubChem_Connectivity") smiles_preferred_i <- min(match(available_smiles, smiles_preference)) @@ -492,7 +492,7 @@ chent <- R6Class("chent", #' @param N The Freundlich exponent #' @param perc_clay The percentage of clay in the soil #' @param CEC The cation exchange capacity - add_soil_sorption = function(soils, + add_soil_sorption = function(soils, Kf, Kfoc, N, type = NA, pH_orig = NA, pH_medium = NA, pH_H2O = NA, diff --git a/log/test.log b/log/test.log index 0e8fc46..daa7c22 100644 --- a/log/test.log +++ b/log/test.log @@ -7,18 +7,29 @@ The following object is masked from ‘package:devtools’: test_file +Error in curl::curl_fetch_memory(url, handle = handle): Could not resolve hostname [pesticidecompendium.bcpc.org]: +Could not resolve host: pesticidecompendium.bcpc.org +Request failed [ERROR]. Retrying in 1.5 seconds... +Error in curl::curl_fetch_memory(url, handle = handle): Could not resolve hostname [pesticidecompendium.bcpc.org]: +Could not resolve host: pesticidecompendium.bcpc.org +Request failed [ERROR]. Retrying in 1.5 seconds... +Error in curl::curl_fetch_memory(url, handle = handle) : + Could not resolve hostname [pesticidecompendium.bcpc.org]: +Could not resolve host: pesticidecompendium.bcpc.org ✔ | F W S OK | Context ⠏ | 0 | chent ⠸ | 4 | chent -⠧ | 8 | chent -✔ | 10 | chent [4.4s] +✔ | 1 4 | chent [9.8s] ⠏ | 0 | pai -⠋ | 1 | pai -✔ | 9 | pai [6.1s] +✔ | 1 0 | pai ══ Results ═════════════════════════════════════════════════════════════════════ -Duration: 10.6 s +Duration: 9.8 s -[ FAIL 0 | WARN 0 | SKIP 0 | PASS 19 ] +── Skipped tests (2) ─────────────────────────────────────────────────────────── +• bcpc_up & pc_up is not TRUE (1): 'test_pai.R:3:3' +• pc_up is not TRUE (1): 'test_chent.R:20:3' + +[ FAIL 0 | WARN 0 | SKIP 2 | PASS 4 ] diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index fb55272..4232120 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -2,3 +2,7 @@ skip_if_no_rdkit <- function() { if (!chents:::rdkit_available) skip("RDKit is not available via reticulate") } + +# Check availability of BCPC and PubChem +bcpc_up <- webchem::ping_service("bcpc") +pc_up <- webchem::ping_service("pc") diff --git a/tests/testthat/test_chent.R b/tests/testthat/test_chent.R index 76af7aa..4017042 100644 --- a/tests/testthat/test_chent.R +++ b/tests/testthat/test_chent.R @@ -3,15 +3,20 @@ test_that("We can initialise an object and add information", { expect_equal(oct$identifier, c(X1.octanol = "1-octanol")) # The name of the identifier is generated using make.names() expect_equal(oct$inchikey, structure(NA, source = "user")) expect_equal(oct$smiles, c(user = "CCCCCCCCO")) - oct$try_pubchem() |> - expect_message("Querying PubChem for name 1-octanol") |> - expect_warning("Overwriting uninitialized InChIKey") - expect_equal(oct$inchikey, structure("KBPLFHHGFOOTCA-UHFFFAOYSA-N", source = "pubchem")) - expect_equal(oct$smiles[["PubChem"]], "CCCCCCCCO") + + if (webchem::ping_service("pc")) { + oct$try_pubchem() |> + expect_message("Querying PubChem for name 1-octanol") |> + expect_warning("Overwriting uninitialized InChIKey") + expect_equal(oct$inchikey, structure("KBPLFHHGFOOTCA-UHFFFAOYSA-N", source = "pubchem")) + expect_equal(oct$smiles[["PubChem"]], "CCCCCCCCO") + expect_equal(round(oct$mw, 2), structure(130.23, source = "pubchem")) + } skip_if_no_rdkit() oct$get_rdkit() |> expect_message("Get chemical information from RDKit using user SMILES") - expect_equal(round(oct$mw, 2), structure(130.23, source = "pubchem")) + + skip_if_not(pc_up) expect_snapshot(print(oct)) }) diff --git a/tests/testthat/test_pai.R b/tests/testthat/test_pai.R index 9d73b58..7d9c566 100644 --- a/tests/testthat/test_pai.R +++ b/tests/testthat/test_pai.R @@ -1,14 +1,15 @@ test_that("a pai object is correctly generated", { - {glyphosate <- pai$new("glyphosate", rdkit = FALSE)} |> - expect_message("Querying BCPC for glyphosate") |> + skip_if_not(bcpc_up & pc_up) + {glyphosate <- pai$new("glyphosate", rdkit = FALSE)} |> + expect_message("Querying BCPC for glyphosate") |> expect_message("Querying PubChem for inchikey ") - + # Check BCPC results expect_equal(glyphosate$bcpc$cas, "1071-83-6") expect_equal(glyphosate$bcpc$formula, "C3H8NO5P") expect_equal(glyphosate$bcpc$iupac_name, "N-(phosphonomethyl)glycine") - + expect_equal(names(glyphosate$identifier), "glyphosate") # Check PubChem results -- cgit v1.2.3