From cc6a9f5c9545bbf3e81f586388cfd261f69b63af Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 12:16:03 +0200 Subject: [PATCH 01/14] replaces qc files with dv.templates ones --- .github/workflows/test.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 10e227a..7cb3125 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,6 +33,33 @@ jobs: inst/validation path: templates + - name: Overwrite quality control scripts with dv.templates ones ๐Ÿงน + run: | + # Paths to the directories + TEMPLATE_DIR="templates/inst/validation" + REPO_DIR="inst/validation" + + # Run the diff command and capture the output + DIFF_OUTPUT=$(diff -qr "$TEMPLATE_DIR" "$REPO_DIR") + + echo "# Quality control files" | tee -a $GITHUB_STEP_SUMMARY + + # Check if the diff command found any differences + if [ -n "$DIFF_OUTPUT" ]; then + echo "Warning: The contents of the directories are different!" | tee -a $GITHUB_STEP_SUMMARY + echo "Modified files:" | tee -a $GITHUB_STEP_SUMMARY + echo "$DIFF_OUTPUT" | tee -a $GITHUB_STEP_SUMMARY + else + echo "The directories are identical." | tee -a $GITHUB_STEP_SUMMARY + fi + + # Always overwrite + + rm -rf "$REPO_DIR"/* + + # Move contents of REPO_DIR to TEMPLATE_DIR + mv "$TEMPLATE_DIR"/* "$REPO_DIR" + - name: Install package dependencies ๐Ÿ“„ uses: boehringer-ingelheim/dv.templates/.github/actions/dependencies@main From dda6d414f618064a109867805ebb0e750f8f8799 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 12:36:48 +0200 Subject: [PATCH 02/14] add pkgdown examples to qc documentation --- .../pkgdown_examples/vignettes/_pkgdown.yml | 18 +++++++++++ .../pkgdown_examples/vignettes/qc.Rmd | 32 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 inst/validation/pkgdown_examples/vignettes/_pkgdown.yml create mode 100644 inst/validation/pkgdown_examples/vignettes/qc.Rmd diff --git a/inst/validation/pkgdown_examples/vignettes/_pkgdown.yml b/inst/validation/pkgdown_examples/vignettes/_pkgdown.yml new file mode 100644 index 0000000..bb1ae5e --- /dev/null +++ b/inst/validation/pkgdown_examples/vignettes/_pkgdown.yml @@ -0,0 +1,18 @@ +template: + bootstrap: 5 + +navbar: + type: inverted + structure: + left: [intro, reference, articles, tutorials, news, qc] + components: + qc: + text: Quality Control + href: articles/qc.html + +articles: + +- title: Quality Control + desc: Quality Control + contents: + - qc diff --git a/inst/validation/pkgdown_examples/vignettes/qc.Rmd b/inst/validation/pkgdown_examples/vignettes/qc.Rmd new file mode 100644 index 0000000..87bb735 --- /dev/null +++ b/inst/validation/pkgdown_examples/vignettes/qc.Rmd @@ -0,0 +1,32 @@ +--- +title: "Quality Control" +output: + rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Quality Control} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + echo = FALSE +) +``` + +```{r, params, echo = FALSE, include = FALSE} +val_param_rds <- "../inst/validation/results/val_param.rds" +val_param_rds_exists <- file.exists(val_param_rds) +if (file.exists(val_param_rds)) params <- readRDS(val_param_rds) +``` + +```{r, results = "asis", echo = FALSE} +if (val_param_rds_exists) { + res <- knitr::knit_child("../inst/validation/val_report_child.Rmd", quiet = TRUE, envir = environment()) + cat(res, sep = "\n") +} else { + "No quality control results found" +} +``` From dd2f97976fef4659d893ae7c8f27143d9797d8e1 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 13:52:41 +0200 Subject: [PATCH 03/14] add example setup.R --- inst/validation/pkgdown_examples/setup.R | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 inst/validation/pkgdown_examples/setup.R diff --git a/inst/validation/pkgdown_examples/setup.R b/inst/validation/pkgdown_examples/setup.R new file mode 100644 index 0000000..da85709 --- /dev/null +++ b/inst/validation/pkgdown_examples/setup.R @@ -0,0 +1,8 @@ +package_name <- %%REPLACE_WITH_YOUR_PACKAGE_NAME%% +# validation (S) +vdoc <- source( + system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), + local = TRUE +)[["value"]] +specs <- vdoc[["specs"]] +# validation (F) From d5f5cdeb0e89c7b31f730b49150feac781b5fdeb Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 18:08:11 +0200 Subject: [PATCH 04/14] avoids error when diffing. Checks for qc skipping By default bash is run with -e in GH Actions. --- .github/workflows/test.yml | 42 +++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7cb3125..ccda0f9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,31 +34,41 @@ jobs: path: templates - name: Overwrite quality control scripts with dv.templates ones ๐Ÿงน + shell: bash run: | - # Paths to the directories TEMPLATE_DIR="templates/inst/validation" REPO_DIR="inst/validation" + + if test ! -d "${REPO_DIR}"; then + echo "### Quality Control documentation is not present" + echo "### Include quality control documentation or skip it by creating following file 'inst/validation/skip_qc'" + exit 1 + fi + + if test -f "${REPO_DIR}/skip_qc"; then + echo "skip_qc file found skipping qc documentation" + exit 0 + fi - # Run the diff command and capture the output - DIFF_OUTPUT=$(diff -qr "$TEMPLATE_DIR" "$REPO_DIR") + # Conserve specs.R file + cp "${REPO_DIR}/specs.R" "${TEMPLATE_DIR}/specs.R" - echo "# Quality control files" | tee -a $GITHUB_STEP_SUMMARY + set +e # Disable immediate exit in conflicting parts on error for diff command + DIFF_OUTPUT=$(diff -qr "${TEMPLATE_DIR}" "${REPO_DIR}") + set -e # Enable immediate exit on error after diff command + + echo "# Quality control files" | tee -a "${GITHUB_STEP_SUMMARY}" - # Check if the diff command found any differences - if [ -n "$DIFF_OUTPUT" ]; then - echo "Warning: The contents of the directories are different!" | tee -a $GITHUB_STEP_SUMMARY - echo "Modified files:" | tee -a $GITHUB_STEP_SUMMARY - echo "$DIFF_OUTPUT" | tee -a $GITHUB_STEP_SUMMARY + if [ -n "${DIFF_OUTPUT}" ]; then + echo "Warning: The contents of the directories are different!" | tee -a "${GITHUB_STEP_SUMMARY}" + echo "Modified files:" | tee -a "${GITHUB_STEP_SUMMARY}" + echo "$DIFF_OUTPUT" | tee -a "${GITHUB_STEP_SUMMARY}" else - echo "The directories are identical." | tee -a $GITHUB_STEP_SUMMARY + echo "The directories are identical." | tee -a "${GITHUB_STEP_SUMMARY}" fi - # Always overwrite - - rm -rf "$REPO_DIR"/* - - # Move contents of REPO_DIR to TEMPLATE_DIR - mv "$TEMPLATE_DIR"/* "$REPO_DIR" + rm -rf "${REPO_DIR}" + mv "${TEMPLATE_DIR}" "${REPO_DIR}" - name: Install package dependencies ๐Ÿ“„ uses: boehringer-ingelheim/dv.templates/.github/actions/dependencies@main From 804cea85e08d06deefc57075d8208b4564e41277 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 18:08:49 +0200 Subject: [PATCH 05/14] automatically finds package name. Reorders templates --- inst/validation/pkgdown_examples/setup.R | 8 -------- inst/validation/run_validation.R | 4 ++++ inst/validation/val_report_child.Rmd | 11 +++++++++-- .../_pkgdown.yml | 0 .../validation_templates/tests/testthat/setup.R | 17 +++++++++++++++++ .../vignettes/qc.Rmd | 0 6 files changed, 30 insertions(+), 10 deletions(-) delete mode 100644 inst/validation/pkgdown_examples/setup.R rename inst/{validation/pkgdown_examples/vignettes => validation_templates}/_pkgdown.yml (100%) create mode 100644 inst/validation_templates/tests/testthat/setup.R rename inst/{validation/pkgdown_examples => validation_templates}/vignettes/qc.Rmd (100%) diff --git a/inst/validation/pkgdown_examples/setup.R b/inst/validation/pkgdown_examples/setup.R deleted file mode 100644 index da85709..0000000 --- a/inst/validation/pkgdown_examples/setup.R +++ /dev/null @@ -1,8 +0,0 @@ -package_name <- %%REPLACE_WITH_YOUR_PACKAGE_NAME%% -# validation (S) -vdoc <- source( - system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), - local = TRUE -)[["value"]] -specs <- vdoc[["specs"]] -# validation (F) diff --git a/inst/validation/run_validation.R b/inst/validation/run_validation.R index e66e4c0..465c65c 100644 --- a/inst/validation/run_validation.R +++ b/inst/validation/run_validation.R @@ -1,3 +1,7 @@ +pkg_name <- read.dcf("DESCRIPTION")[, "Package"] +pkg_version <- read.dcf("DESCRIPTION")[, "Version"] +test_results <- tibble::as_tibble(devtools::test()) + local({ # This is evaluated inside a local because, otherwise, all the variables created in the chunks of the rendered # document leak into the environment diff --git a/inst/validation/val_report_child.Rmd b/inst/validation/val_report_child.Rmd index 38e631f..e743960 100644 --- a/inst/validation/val_report_child.Rmd +++ b/inst/validation/val_report_child.Rmd @@ -14,11 +14,18 @@ ```{r setup, message = FALSE} # Import vdoc functions ---- -vdoc <- source( - system.file("validation", "utils-validation.R", package = params[["package"]], mustWork = TRUE), +vdoc <- local({ + # ########## + # package_name is used # INSIDE # the sourced file below + # ########## + package_name <- params[["package"]] + source( + system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), local = TRUE )[["value"]] +}) + # Set required packages ---- suppressPackageStartupMessages(stopifnot(requireNamespace("DT"))) suppressPackageStartupMessages(stopifnot(requireNamespace("devtools"))) diff --git a/inst/validation/pkgdown_examples/vignettes/_pkgdown.yml b/inst/validation_templates/_pkgdown.yml similarity index 100% rename from inst/validation/pkgdown_examples/vignettes/_pkgdown.yml rename to inst/validation_templates/_pkgdown.yml diff --git a/inst/validation_templates/tests/testthat/setup.R b/inst/validation_templates/tests/testthat/setup.R new file mode 100644 index 0000000..9340b83 --- /dev/null +++ b/inst/validation_templates/tests/testthat/setup.R @@ -0,0 +1,17 @@ + + +# validation (S) +vdoc <- local({ + # ########## + # package_name is used # INSIDE # the sourced file below + # ########## + package_name <- read.dcf("../../DESCRIPTION")[, "Package"] + + source( + system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), + local = TRUE +)[["value"]] + +}) +specs <- vdoc[["specs"]] +# validation (F) diff --git a/inst/validation/pkgdown_examples/vignettes/qc.Rmd b/inst/validation_templates/vignettes/qc.Rmd similarity index 100% rename from inst/validation/pkgdown_examples/vignettes/qc.Rmd rename to inst/validation_templates/vignettes/qc.Rmd From 8e312877a4233f329f8f37251f68f7044d14ade3 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 18:19:16 +0200 Subject: [PATCH 06/14] fix setup.R --- tests/testthat/setup.R | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index 92d0bdb..4e1c4b4 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -1,8 +1,16 @@ -package_name <- "dv.templates" # validation (S) -vdoc <- source( +vdoc <- local({ + # ########## + # package_name is used # INSIDE # the sourced file below + # ########## + package_name <- read.dcf("../../DESCRIPTION")[, "Package"] + + source( system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), local = TRUE )[["value"]] + +}) specs <- vdoc[["specs"]] # validation (F) + From c790faa5be2d197e251ec67a9bd29f0be1aabc4e Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 18:37:26 +0200 Subject: [PATCH 07/14] fixes utils package name finding --- inst/validation/utils-validation.R | 2 +- inst/validation/val_report_child.Rmd | 7 ++----- inst/validation_templates/tests/testthat/setup.R | 12 +++--------- tests/testthat/setup.R | 11 +++-------- 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/inst/validation/utils-validation.R b/inst/validation/utils-validation.R index 5dc7360..eaf8e06 100644 --- a/inst/validation/utils-validation.R +++ b/inst/validation/utils-validation.R @@ -4,7 +4,7 @@ #' 2. Copy that variable and the contents of if block to tests/testthat/setup.R #' (If you are using the template this may already be in place for you) -package_name <- "dv.templates" +if(!exists("package_name")) stop("package name must be in the environment when this script is sourced") if (FALSE) { # validation (S) diff --git a/inst/validation/val_report_child.Rmd b/inst/validation/val_report_child.Rmd index e743960..01c703d 100644 --- a/inst/validation/val_report_child.Rmd +++ b/inst/validation/val_report_child.Rmd @@ -19,11 +19,8 @@ vdoc <- local({ # package_name is used # INSIDE # the sourced file below # ########## package_name <- params[["package"]] - source( - system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), - local = TRUE -)[["value"]] - + utils_file_path <- system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE) + source(utils_file_path, local = TRUE)[["value"]] }) # Set required packages ---- diff --git a/inst/validation_templates/tests/testthat/setup.R b/inst/validation_templates/tests/testthat/setup.R index 9340b83..2c6e9ab 100644 --- a/inst/validation_templates/tests/testthat/setup.R +++ b/inst/validation_templates/tests/testthat/setup.R @@ -1,17 +1,11 @@ - - # validation (S) vdoc <- local({ # ########## # package_name is used # INSIDE # the sourced file below # ########## package_name <- read.dcf("../../DESCRIPTION")[, "Package"] - - source( - system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), - local = TRUE -)[["value"]] - + utils_file_path <- system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE) + source(utils_file_path, local = TRUE)[["value"]] }) specs <- vdoc[["specs"]] -# validation (F) +# validation (F) \ No newline at end of file diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index 4e1c4b4..2c6e9ab 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -4,13 +4,8 @@ vdoc <- local({ # package_name is used # INSIDE # the sourced file below # ########## package_name <- read.dcf("../../DESCRIPTION")[, "Package"] - - source( - system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), - local = TRUE -)[["value"]] - + utils_file_path <- system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE) + source(utils_file_path, local = TRUE)[["value"]] }) specs <- vdoc[["specs"]] -# validation (F) - +# validation (F) \ No newline at end of file From aee652f9e50a37ab4b4edb8258a4ad12ad20a677 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 21:55:54 +0200 Subject: [PATCH 08/14] fix summary symbols --- scripts/test_qc_pkg.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/test_qc_pkg.R b/scripts/test_qc_pkg.R index 517785c..e49ad25 100644 --- a/scripts/test_qc_pkg.R +++ b/scripts/test_qc_pkg.R @@ -127,9 +127,9 @@ summary <- c( summary, purrr::imap_chr(success, ~{ symbol <- "\U02753" - symbol <- if (isTRUE(.x)) "\U02705" - symbol <- if (isFALSE(.x)) "\U0274C" - symbol <- if (is.na(.x)) "\U02757" + if (isTRUE(.x)) symbol <- "\U02705" + if (isFALSE(.x)) symbol <- "\U0274C" + if (is.na(.x)) symbol <- "\U02757" paste(" - ", symbol, .y) }) ) From c95b3d863ba0bbf846c2ae29b33fc2fa98a0ad36 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 21:59:51 +0200 Subject: [PATCH 09/14] lint & style --- inst/validation/utils-validation.R | 2 +- inst/validation_templates/tests/testthat/setup.R | 2 +- tests/testthat/setup.R | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/inst/validation/utils-validation.R b/inst/validation/utils-validation.R index eaf8e06..185c8dc 100644 --- a/inst/validation/utils-validation.R +++ b/inst/validation/utils-validation.R @@ -4,7 +4,7 @@ #' 2. Copy that variable and the contents of if block to tests/testthat/setup.R #' (If you are using the template this may already be in place for you) -if(!exists("package_name")) stop("package name must be in the environment when this script is sourced") +if (!exists("package_name")) stop("package name must be in the environment when this script is sourced") if (FALSE) { # validation (S) diff --git a/inst/validation_templates/tests/testthat/setup.R b/inst/validation_templates/tests/testthat/setup.R index 2c6e9ab..01b056d 100644 --- a/inst/validation_templates/tests/testthat/setup.R +++ b/inst/validation_templates/tests/testthat/setup.R @@ -8,4 +8,4 @@ vdoc <- local({ source(utils_file_path, local = TRUE)[["value"]] }) specs <- vdoc[["specs"]] -# validation (F) \ No newline at end of file +# validation (F) diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index 2c6e9ab..fb131cf 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -2,10 +2,10 @@ vdoc <- local({ # ########## # package_name is used # INSIDE # the sourced file below - # ########## + # ########## package_name <- read.dcf("../../DESCRIPTION")[, "Package"] utils_file_path <- system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE) source(utils_file_path, local = TRUE)[["value"]] }) specs <- vdoc[["specs"]] -# validation (F) \ No newline at end of file +# validation (F) From 5ec4e06c0a548375e0238f3136989436ff34b75a Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 22:13:55 +0200 Subject: [PATCH 10/14] update news --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 855de90..28cf50c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,4 @@ # dv.templates 0.1.0 - add release checks +- qc check is done with centralized scripts from dv.templates From 91fb2395e441996bcf218f4063358906ca1b1727 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 22:25:23 +0200 Subject: [PATCH 11/14] include an empty file in results when qc is skipped otherwise it would upload an empty artifact and the ci will fail in the pkgdown step --- scripts/test_qc_pkg.R | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/test_qc_pkg.R b/scripts/test_qc_pkg.R index e49ad25..d6b5f41 100644 --- a/scripts/test_qc_pkg.R +++ b/scripts/test_qc_pkg.R @@ -71,6 +71,7 @@ if (!dir.exists(validation_root)) { } if (file.exists(validation_skip)) { + writeLines("", file.path(validation_results, "skipped_qc")) success[["valdoc"]] <- NA } else { From c7530272b786dca4821d5daafd6b19c7f3eb00cb Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Wed, 5 Jun 2024 22:27:37 +0200 Subject: [PATCH 12/14] allows passing with no qc documentation --- scripts/test_qc_pkg.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test_qc_pkg.R b/scripts/test_qc_pkg.R index d6b5f41..b4b582d 100644 --- a/scripts/test_qc_pkg.R +++ b/scripts/test_qc_pkg.R @@ -139,7 +139,7 @@ CON <- file(github_summary_file, "a") on.exit(close(CON)) writeLines(summary, CON) -stopifnot(isTRUE(all(success))) +stopifnot(all(success | is.na(sucess))) message("##############################") message("###### BUILD RESULT (F) ######") From d2d7df380137d24eff1abd8b91fdf109337fc3a7 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Thu, 6 Jun 2024 11:34:00 +0200 Subject: [PATCH 13/14] clarify utils doc --- inst/validation/utils-validation.R | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/inst/validation/utils-validation.R b/inst/validation/utils-validation.R index 185c8dc..72a1808 100644 --- a/inst/validation/utils-validation.R +++ b/inst/validation/utils-validation.R @@ -1,32 +1,18 @@ #' Setting up the validation -#' -#' 1. Add package_name -#' 2. Copy that variable and the contents of if block to tests/testthat/setup.R -#' (If you are using the template this may already be in place for you) if (!exists("package_name")) stop("package name must be in the environment when this script is sourced") -if (FALSE) { - # validation (S) - vdoc <- source( - system.file("validation", "utils-validation.R", package = package_name, mustWork = TRUE), - local = TRUE - )[["value"]] - specs <- vdoc[["specs"]] - # validation (F) -} - -#' 2. For those tests that cover an specific spec +#' How to link tests and specs if (FALSE) { test_that( - vdoc[["add_spec"]]("my test description", specs[["a_spec"]]), + vdoc[["add_spec"]]("my test description", specs$a_spec), { expect_true(TRUE) } ) } -#' The specs variable on the call references the one declared in point 1 +#' The specs variable on the call references the one declared in specs.R #' 3. For those tests covering more than one spec. #' NOTE: It must be c() and not list() @@ -47,7 +33,11 @@ if (FALSE) { if (FALSE) { my_spec <- specs$my$hier$spec - test_that(vdoc$parse_spec(my_spec, "my test_description"), { + test_that(vdoc[["add_spec"]]("my test_description", my_spec), { + ... + }) + + test_that(vdoc[["add_spec"]]("my test_description", specs[["my"]][["hier"]][["spec"]]), { ... }) } From 85d359bb9afc52df43e8ada9b2c1e8861191ac59 Mon Sep 17 00:00:00 2001 From: Luis Moris Fernandez Date: Thu, 6 Jun 2024 11:34:10 +0200 Subject: [PATCH 14/14] include date in qc report --- inst/validation/val_report_child.Rmd | 1 + 1 file changed, 1 insertion(+) diff --git a/inst/validation/val_report_child.Rmd b/inst/validation/val_report_child.Rmd index 01c703d..95cb47c 100644 --- a/inst/validation/val_report_child.Rmd +++ b/inst/validation/val_report_child.Rmd @@ -86,6 +86,7 @@ title <- paste(result_symbol, params[["package"]], params[["version"]]) ``` ## `r title` +Date: `r format(Sys.time(), "%Y-%b-%d %H:%M:%S")` The following document generates a report for R packages, to satisfy the criteria of a "Released" status under the **Non-GxP** project. The QC report contains the following information: