Closes #43 test: add gh-mocked coverage for snapshot helpers#48
Closes #43 test: add gh-mocked coverage for snapshot helpers#48Zelos Zhu (zdz2101) wants to merge 4 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
{qcthat} Report: User AcceptanceNo issues are awaiting UAT. This report was generated by this GitHub Actions run. Last updated: 2026-05-15 18:03:07 UTC Session Info─ Session info ───────────────────────────────────────────────────────────────setting value version R version 4.6.0 (2026-04-24) os Ubuntu 24.04.4 LTS system x86_64, linux-gnu ui X11 language (EN) collate C.UTF-8 ctype C.UTF-8 tz UTC date 2026-05-15 pandoc 3.1.3 @ /usr/bin/pandoc quarto 1.9.37 @ /usr/local/bin/quarto ─ Packages ─────────────────────────────────────────────────────────────────── package * version date (UTC) lib source askpass 1.2.1 2024-10-04 [1] RSPM astgrepr 0.1.1 2025-06-07 [1] RSPM backports 1.5.1 2026-04-03 [1] RSPM base * 4.6.0 2026-04-24 [3] local base64enc 0.1-6 2026-02-02 [1] RSPM blob 1.3.0 2026-01-14 [1] RSPM boot 1.3-32 2025-08-29 [3] CRAN (R 4.6.0) brio 1.1.5 2024-04-24 [1] RSPM bslib 0.10.0 2026-01-26 [1] RSPM cachem 1.1.0 2024-05-16 [1] RSPM callr 3.7.6 2024-03-25 [1] RSPM checkmate 2.3.4 2026-02-03 [1] RSPM class 7.3-23 2025-01-01 [3] CRAN (R 4.6.0) cli 3.6.6 2026-04-09 [1] RSPM clipr 0.8.0 2022-02-22 [1] RSPM cluster 2.1.8.2 2026-02-05 [3] CRAN (R 4.6.0) codetools 0.2-20 2024-03-31 [3] CRAN (R 4.6.0) commonmark 2.0.0 2025-07-07 [1] RSPM compiler 4.6.0 2026-04-24 [3] local covr 3.6.5 2025-11-09 [1] RSPM crayon 1.5.3 2024-06-20 [1] RSPM credentials 2.0.3 2025-09-12 [1] RSPM curl 7.1.0 2026-04-22 [1] RSPM datasets * 4.6.0 2026-04-24 [3] local DBI 1.3.0 2026-02-25 [1] RSPM dbplyr 2.5.2 2026-02-13 [1] RSPM desc 1.4.3 2023-12-10 [1] RSPM diffobj 0.3.6 2025-04-21 [1] RSPM digest 0.6.39 2025-11-19 [1] RSPM dplyr 1.2.1 2026-04-03 [1] RSPM duckdb 1.5.2 2026-04-13 [1] RSPM emoji 16.0.0 2024-10-28 [1] RSPM evaluate 1.0.5 2025-08-27 [1] RSPM fastmap 1.2.0 2024-05-15 [1] RSPM fontawesome 0.5.3 2024-11-16 [1] RSPM foreign 0.8-91 2026-01-29 [3] CRAN (R 4.6.0) fs 2.1.0 2026-04-18 [1] RSPM generics 0.1.4 2025-05-09 [1] RSPM gert 2.3.1 2026-01-11 [1] RSPM gh 1.5.0 2025-05-26 [1] RSPM git2r 0.36.2 2025-03-29 [1] RSPM gitcreds 0.1.2 2022-09-08 [1] RSPM glue 1.8.1 2026-04-17 [1] RSPM graphics * 4.6.0 2026-04-24 [3] local grDevices * 4.6.0 2026-04-24 [3] local grid 4.6.0 2026-04-24 [3] local highr 0.12 2026-03-06 [1] RSPM htmltools 0.5.9 2025-12-04 [1] RSPM httpuv 1.6.17 2026-03-18 [1] RSPM httr 1.4.8 2026-02-13 [1] RSPM httr2 1.2.2 2025-12-08 [1] RSPM ini 0.3.1 2018-05-20 [1] RSPM jquerylib 0.1.4 2021-04-26 [1] RSPM jsonlite 2.0.0 2025-03-27 [1] RSPM KernSmooth 2.23-26 2025-01-01 [3] CRAN (R 4.6.0) knitr 1.51 2025-12-20 [1] RSPM later 1.4.8 2026-03-05 [1] RSPM lattice 0.22-9 2026-02-09 [3] CRAN (R 4.6.0) lifecycle 1.0.5 2026-01-08 [1] RSPM magrittr 2.0.5 2026-04-04 [1] RSPM MASS 7.3-65 2025-02-28 [3] CRAN (R 4.6.0) Matrix 1.7-5 2026-03-21 [3] CRAN (R 4.6.0) memoise 2.0.1 2021-11-26 [1] RSPM methods * 4.6.0 2026-04-24 [3] local mgcv 1.9-4 2025-11-07 [3] CRAN (R 4.6.0) mime 0.13 2025-03-17 [1] RSPM nlme 3.1-169 2026-03-27 [3] CRAN (R 4.6.0) nnet 7.3-20 2025-01-01 [3] CRAN (R 4.6.0) openssl 2.4.1 2026-05-14 [1] RSPM otel 0.2.0 2025-08-29 [1] RSPM pak 0.9.5 2026-04-27 [2] local parallel 4.6.0 2026-04-24 [3] local pillar 1.11.1 2025-09-17 [1] RSPM pkgbuild 1.4.8 2025-05-26 [1] RSPM pkgconfig 2.0.3 2019-09-22 [1] RSPM pkgload 1.5.2 2026-04-22 [1] RSPM praise 1.0.0 2015-08-11 [1] RSPM processx 3.9.0 2026-04-22 [1] RSPM promises 1.5.0 2025-11-01 [1] RSPM ps 1.9.3 2026-04-20 [1] RSPM purrr 1.2.2 2026-04-10 [1] RSPM qcthat 1.1.2 2026-05-14 [1] Github (Gilead-BioStats/qcthat@d0958dc) R6 2.6.1 2025-02-15 [1] RSPM rappdirs 0.3.4 2026-01-17 [1] RSPM Rcpp 1.1.1-1.1 2026-04-24 [1] RSPM rex 1.2.2 2026-03-28 [1] RSPM rlang 1.2.0 2026-04-06 [1] RSPM rmarkdown 2.31 2026-03-26 [1] RSPM rpart 4.1.27 2026-03-27 [3] CRAN (R 4.6.0) rprojroot 2.1.1 2025-08-26 [1] RSPM rrapply 1.2.8 2025-11-25 [1] RSPM rstudioapi 0.18.0 2026-01-16 [1] RSPM sass 0.4.10 2025-04-11 [1] RSPM sessioninfo 1.2.3 2025-02-05 [1] any (@1.2.3) shiny 1.13.0 2026-02-20 [1] RSPM sourcetools 0.1.7-2 2026-03-28 [1] RSPM spatial 7.3-18 2025-01-01 [3] CRAN (R 4.6.0) splines 4.6.0 2026-04-24 [3] local stats * 4.6.0 2026-04-24 [3] local stats4 4.6.0 2026-04-24 [3] local stringi 1.8.7 2025-03-27 [1] RSPM stringr 1.6.0 2025-11-04 [1] RSPM survival 3.8-6 2026-01-16 [3] CRAN (R 4.6.0) sys 3.4.3 2024-10-04 [1] RSPM tcltk 4.6.0 2026-04-24 [3] local testthat 3.3.2 2026-01-11 [1] RSPM tibble 3.3.1 2026-01-11 [1] RSPM tidyr 1.3.2 2025-12-19 [1] RSPM tidyselect 1.2.1 2024-03-11 [1] RSPM tinytex 0.59 2026-03-28 [1] RSPM tools 4.6.0 2026-04-24 [3] local usethis 3.2.1 2025-09-06 [1] RSPM utf8 1.2.6 2025-06-08 [1] RSPM utils * 4.6.0 2026-04-24 [3] local vctrs 0.7.3 2026-04-11 [1] RSPM waldo 0.6.2 2025-07-11 [1] RSPM whisker 0.4.1 2022-12-05 [1] RSPM withr 3.0.2 2024-10-28 [1] RSPM xfun 0.57 2026-03-20 [1] RSPM xtable 1.8-8 2026-02-22 [1] RSPM yaml 2.3.12 2025-12-10 [1] RSPM zip 2.3.3 2025-05-13 [1] RSPM [1] /home/runner/work/_temp/Library [2] /opt/R/4.6.0/lib/R/site-library [3] /opt/R/4.6.0/lib/R/library
────────────────────────────────────────────────────────────────────────────── |
{qcthat} ReportsPR-Associated Issues█ A qcthat issue test matrix with 1 milestone, 1 issue, and 0 testsCompleted Issues🚫 A qcthat issue test matrix with 1 milestone, 5 issues, and 78 tests🟢 All issues have at least one test 🙈 7 issues with label "qcthat-nocov" were ignored This report was generated by this GitHub Actions run. Last updated: 2026-05-15 18:03:09 UTC Session Info─ Session info ───────────────────────────────────────────────────────────────setting value version R version 4.6.0 (2026-04-24) os Ubuntu 24.04.4 LTS system x86_64, linux-gnu ui X11 language (EN) collate C.UTF-8 ctype C.UTF-8 tz UTC date 2026-05-15 pandoc 3.1.3 @ /usr/bin/pandoc quarto 1.9.37 @ /usr/local/bin/quarto ─ Packages ─────────────────────────────────────────────────────────────────── package * version date (UTC) lib source askpass 1.2.1 2024-10-04 [1] RSPM astgrepr 0.1.1 2025-06-07 [1] RSPM backports 1.5.1 2026-04-03 [1] RSPM base * 4.6.0 2026-04-24 [3] local base64enc 0.1-6 2026-02-02 [1] RSPM blob 1.3.0 2026-01-14 [1] RSPM boot 1.3-32 2025-08-29 [3] CRAN (R 4.6.0) brio 1.1.5 2024-04-24 [1] RSPM bslib 0.10.0 2026-01-26 [1] RSPM cachem 1.1.0 2024-05-16 [1] RSPM callr 3.7.6 2024-03-25 [1] RSPM checkmate 2.3.4 2026-02-03 [1] RSPM class 7.3-23 2025-01-01 [3] CRAN (R 4.6.0) cli 3.6.6 2026-04-09 [1] RSPM clipr 0.8.0 2022-02-22 [1] RSPM cluster 2.1.8.2 2026-02-05 [3] CRAN (R 4.6.0) codetools 0.2-20 2024-03-31 [3] CRAN (R 4.6.0) commonmark 2.0.0 2025-07-07 [1] RSPM compiler 4.6.0 2026-04-24 [3] local covr 3.6.5 2025-11-09 [1] RSPM crayon 1.5.3 2024-06-20 [1] RSPM credentials 2.0.3 2025-09-12 [1] RSPM curl 7.1.0 2026-04-22 [1] RSPM datasets * 4.6.0 2026-04-24 [3] local DBI 1.3.0 2026-02-25 [1] RSPM dbplyr 2.5.2 2026-02-13 [1] RSPM desc 1.4.3 2023-12-10 [1] RSPM diffobj 0.3.6 2025-04-21 [1] RSPM digest 0.6.39 2025-11-19 [1] RSPM dplyr 1.2.1 2026-04-03 [1] RSPM duckdb 1.5.2 2026-04-13 [1] RSPM emoji 16.0.0 2024-10-28 [1] RSPM evaluate 1.0.5 2025-08-27 [1] RSPM fastmap 1.2.0 2024-05-15 [1] RSPM fontawesome 0.5.3 2024-11-16 [1] RSPM foreign 0.8-91 2026-01-29 [3] CRAN (R 4.6.0) fs 2.1.0 2026-04-18 [1] RSPM generics 0.1.4 2025-05-09 [1] RSPM gert 2.3.1 2026-01-11 [1] RSPM gh 1.5.0 2025-05-26 [1] RSPM git2r 0.36.2 2025-03-29 [1] RSPM gitcreds 0.1.2 2022-09-08 [1] RSPM glue 1.8.1 2026-04-17 [1] RSPM graphics * 4.6.0 2026-04-24 [3] local grDevices * 4.6.0 2026-04-24 [3] local grid 4.6.0 2026-04-24 [3] local highr 0.12 2026-03-06 [1] RSPM htmltools 0.5.9 2025-12-04 [1] RSPM httpuv 1.6.17 2026-03-18 [1] RSPM httr 1.4.8 2026-02-13 [1] RSPM httr2 1.2.2 2025-12-08 [1] RSPM ini 0.3.1 2018-05-20 [1] RSPM jquerylib 0.1.4 2021-04-26 [1] RSPM jsonlite 2.0.0 2025-03-27 [1] RSPM KernSmooth 2.23-26 2025-01-01 [3] CRAN (R 4.6.0) knitr 1.51 2025-12-20 [1] RSPM later 1.4.8 2026-03-05 [1] RSPM lattice 0.22-9 2026-02-09 [3] CRAN (R 4.6.0) lifecycle 1.0.5 2026-01-08 [1] RSPM magrittr 2.0.5 2026-04-04 [1] RSPM MASS 7.3-65 2025-02-28 [3] CRAN (R 4.6.0) Matrix 1.7-5 2026-03-21 [3] CRAN (R 4.6.0) memoise 2.0.1 2021-11-26 [1] RSPM methods * 4.6.0 2026-04-24 [3] local mgcv 1.9-4 2025-11-07 [3] CRAN (R 4.6.0) mime 0.13 2025-03-17 [1] RSPM nlme 3.1-169 2026-03-27 [3] CRAN (R 4.6.0) nnet 7.3-20 2025-01-01 [3] CRAN (R 4.6.0) openssl 2.4.1 2026-05-14 [1] RSPM otel 0.2.0 2025-08-29 [1] RSPM pak 0.9.5 2026-04-27 [2] local parallel 4.6.0 2026-04-24 [3] local pillar 1.11.1 2025-09-17 [1] RSPM pkgbuild 1.4.8 2025-05-26 [1] RSPM pkgconfig 2.0.3 2019-09-22 [1] RSPM pkgload 1.5.2 2026-04-22 [1] RSPM praise 1.0.0 2015-08-11 [1] RSPM processx 3.9.0 2026-04-22 [1] RSPM promises 1.5.0 2025-11-01 [1] RSPM ps 1.9.3 2026-04-20 [1] RSPM purrr 1.2.2 2026-04-10 [1] RSPM qcthat 1.1.2 2026-05-14 [1] Github (Gilead-BioStats/qcthat@d0958dc) R6 2.6.1 2025-02-15 [1] RSPM rappdirs 0.3.4 2026-01-17 [1] RSPM Rcpp 1.1.1-1.1 2026-04-24 [1] RSPM rex 1.2.2 2026-03-28 [1] RSPM rlang 1.2.0 2026-04-06 [1] RSPM rmarkdown 2.31 2026-03-26 [1] RSPM rpart 4.1.27 2026-03-27 [3] CRAN (R 4.6.0) rprojroot 2.1.1 2025-08-26 [1] RSPM rrapply 1.2.8 2025-11-25 [1] RSPM rstudioapi 0.18.0 2026-01-16 [1] RSPM sass 0.4.10 2025-04-11 [1] RSPM sessioninfo 1.2.3 2025-02-05 [1] any (@1.2.3) shiny 1.13.0 2026-02-20 [1] RSPM sourcetools 0.1.7-2 2026-03-28 [1] RSPM spatial 7.3-18 2025-01-01 [3] CRAN (R 4.6.0) splines 4.6.0 2026-04-24 [3] local stats * 4.6.0 2026-04-24 [3] local stats4 4.6.0 2026-04-24 [3] local stringi 1.8.7 2025-03-27 [1] RSPM stringr 1.6.0 2025-11-04 [1] RSPM survival 3.8-6 2026-01-16 [3] CRAN (R 4.6.0) sys 3.4.3 2024-10-04 [1] RSPM tcltk 4.6.0 2026-04-24 [3] local testthat 3.3.2 2026-01-11 [1] RSPM tibble 3.3.1 2026-01-11 [1] RSPM tidyr 1.3.2 2025-12-19 [1] RSPM tidyselect 1.2.1 2024-03-11 [1] RSPM tinytex 0.59 2026-03-28 [1] RSPM tools 4.6.0 2026-04-24 [3] local usethis 3.2.1 2025-09-06 [1] RSPM utf8 1.2.6 2025-06-08 [1] RSPM utils * 4.6.0 2026-04-24 [3] local vctrs 0.7.3 2026-04-11 [1] RSPM waldo 0.6.2 2025-07-11 [1] RSPM whisker 0.4.1 2022-12-05 [1] RSPM withr 3.0.2 2024-10-28 [1] RSPM xfun 0.57 2026-03-20 [1] RSPM xtable 1.8-8 2026-02-22 [1] RSPM yaml 2.3.12 2025-12-10 [1] RSPM zip 2.3.3 2025-05-13 [1] RSPM [1] /home/runner/work/_temp/Library [2] /opt/R/4.6.0/lib/R/site-library [3] /opt/R/4.6.0/lib/R/library
────────────────────────────────────────────────────────────────────────────── |
There was a problem hiding this comment.
Pull request overview
This PR introduces a mockable gh_api() wrapper around gh api calls and adds testthat unit coverage for snapshot helper functions by mocking GitHub CLI responses, addressing the need for defensible testing without hitting the live GitHub API (Closes #43).
Changes:
- Added internal
gh_api()seam and routed GitHub CLI calls in snapshot helper utilities through it. - Added mocked
testthatcoverage forresolve_package(),gh_list_contents(), andpull_workflows()key paths (explicit ref, date fallback, malformed commit lookup, directory parsing, skip/dispatch behavior).
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
R/utils-github.R |
Introduces gh_api() wrapper and reroutes ref/sha/version GitHub lookups through it for mockability. |
R/utils-workflows.R |
Reroutes workflow content listing and file pulls through gh_api() to enable deterministic tests. |
tests/testthat/test-snapshot-gh-mocks.R |
Adds mocked unit tests covering snapshot helper behaviors without live gh calls. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
R/utils-workflows.R:61
gh_list_contents()combinesnames/types/pathsviamapply()without verifying that the threegh_api(... --jq ...)calls returned the same number of rows (or thattypes/pathsaren’t error strings like "Not Found"). If one jq call fails or returns a different length,mapply()will recycle values and produce incorrect entry mappings. Add an explicit check thatlength(names) == length(types) && length(types) == length(paths)(and that none contain "Not Found") before constructing entries; otherwise returnNULLor raise a clear error.
if (length(names) == 0) return(NULL)
mapply(function(n, t, p) list(name = n, type = t, path = p),
trimws(names), trimws(types), trimws(paths),
SIMPLIFY = FALSE, USE.NAMES = FALSE)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merge branch 'dev' into fix-43
✅ All workflows are up to dateGenerated by this GitHub Action. Updated: 2026-05-15T18:01:38Z |
|
📊 Test coverage: 45.32% Per-file coverage
Generated by this GitHub Action. Updated: 2026-05-15T18:03:19Z |
|
🌐 PR pkgdown deployed: https://Gilead-BioStats.github.io/workr/pr/48/dev Generated by this GitHub Action. Updated: 2026-05-15T18:03:34Z |
Overview
gh_api()seam and routes snapshot helper gh calls through it in:R/utils-github.RR/utils-workflows.Rtestthatcoverage for snapshot helpers with mocked gh responses in:tests/testthat/test-snapshot-gh-mocks.Rresolve_package()explicit ref resolutionresolve_package()date-based fallback resolutiongh_list_contents()parsing behaviorpull_workflows()skip and dispatch behaviorTest Notes/Sample Code
pak::local_install('.', dependencies = FALSE, upgrade = FALSE, ask = FALSE)testthat::test_file('tests/testthat/test-manifest-terminology.R')testthat::test_file('tests/testthat/test-snapshot-gh-mocks.R')Connected Issues