From 8f9d493d8de0f671e0d2ca68e541238c484f770b Mon Sep 17 00:00:00 2001 From: Colin Gillespie Date: Fri, 4 Aug 2023 23:06:17 +0100 Subject: [PATCH 1/2] fix: More robust verison handling --- R/posit_versions.R | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/R/posit_versions.R b/R/posit_versions.R index 30b2997..9677cf3 100644 --- a/R/posit_versions.R +++ b/R/posit_versions.R @@ -29,7 +29,9 @@ audit_posit_version = function(posit_version, type = c("connect", "workbench", " versions = get_posit_versions(type = type) row_number = lookup_version(posit_version, type = type) - if (is.na(row_number) || row_number > 1L) { + if (is.na(row_number)) { + cli::cli_alert_info("The version {posit_version}, of Posit {type} isn't in the database") + } else if (row_number > 1L) { newer_versions = versions[seq_len(row_number - 1), ] no_of_versions = length(unique(newer_versions$version)) #nolint no_of_cves = sum(!is.na(newer_versions$cve)) #nolint @@ -37,7 +39,7 @@ audit_posit_version = function(posit_version, type = c("connect", "workbench", " cli::cli_alert_info("There are {cli::col_red(no_of_versions)} newer versions that fix \\ {cli::col_red(no_of_cves)} CVEs") } else { - cli::cli_alert_info("Post {type} is up to date") + cli::cli_alert_info("Posit {type} is up to date") } return(invisible(NULL)) } @@ -54,6 +56,8 @@ lookup_version = function(server_version, type) { } else { # Return matching version; multiple CVEs, so just pick 1 # Rtns an NA when not in the DB + # Some versions add on additional info, .e.g. 2023.06.0.pro1 - delete + server_version = stringr::str_extract(version, "^(202[0-9])\\.([01][0-9])\\.[0-9]") row_number = which(versions$version == server_version)[1] } return(row_number) From b2138445505993b4a2cd945beb63df8c7dba5a2c Mon Sep 17 00:00:00 2001 From: Colin Gillespie Date: Fri, 4 Aug 2023 23:41:19 +0100 Subject: [PATCH 2/2] fix: Update --- NEWS.md | 2 +- R/posit_versions.R | 8 ++++---- tests/testthat/test-posit_versions.R | 12 ++++++++---- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/NEWS.md b/NEWS.md index aa239a0..9f4e96b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# audit.base 0.6.4 _2023-07-08_ +# audit.base 0.6.4 _2023-08-04_ - feat: Further unit tests - fix: Software versions out with DB now handled diff --git a/R/posit_versions.R b/R/posit_versions.R index 9677cf3..a24cdaf 100644 --- a/R/posit_versions.R +++ b/R/posit_versions.R @@ -44,9 +44,9 @@ audit_posit_version = function(posit_version, type = c("connect", "workbench", " return(invisible(NULL)) } -lookup_version = function(server_version, type) { +lookup_version = function(posit_version, type) { versions = get_posit_versions(type = type) - version_as_date = version_to_date(server_version) + version_as_date = version_to_date(posit_version) if (is.na(version_as_date) || version_as_date < min(versions$date)) { # Older than DB row_number = NA_integer_ @@ -57,8 +57,8 @@ lookup_version = function(server_version, type) { # Return matching version; multiple CVEs, so just pick 1 # Rtns an NA when not in the DB # Some versions add on additional info, .e.g. 2023.06.0.pro1 - delete - server_version = stringr::str_extract(version, "^(202[0-9])\\.([01][0-9])\\.[0-9]") - row_number = which(versions$version == server_version)[1] + posit_version = stringr::str_extract(posit_version, "^(202[0-9])\\.([01][0-9])\\.[0-9]") + row_number = which(versions$version == posit_version)[1] } return(row_number) } diff --git a/tests/testthat/test-posit_versions.R b/tests/testthat/test-posit_versions.R index aa6526e..1e4c794 100644 --- a/tests/testthat/test-posit_versions.R +++ b/tests/testthat/test-posit_versions.R @@ -14,17 +14,21 @@ test_that("Testing check server", { expect_message(audit_posit_version(latest_version, type), regexp = "up to date") + expect_message(audit_posit_version(paste0(latest_version, ".pro1"), type), + regexp = "up to date") + + # Version not in DB - expect_equal(lookup_version(server_version = "2029.01.01", type), 1) + expect_equal(lookup_version(posit_version = "2029.01.01", type), 1) # Really old version not in the DB - expect_equal(lookup_version(server_version = "2010.01.01", type), + expect_equal(lookup_version(posit_version = "2010.01.01", type), NA_integer_) - expect_equal(lookup_version(server_version = "Not in DB", type), + expect_equal(lookup_version(posit_version = "Not in DB", type), NA_integer_) # No version in DB - v = lookup_version(server_version = "2022.10.31", type) + v = lookup_version(posit_version = "2022.10.31", type) expect_true(is.na(v)) expect_message(audit_posit_version("2022.10.0", type),