insightsengineering / verdepcheck

An R package that tests your R package against the min/max versions of specified dependencies
https://insightsengineering.github.io/verdepcheck/
Other
6 stars 0 forks source link

Training #24

Closed pawelru closed 1 year ago

pawelru commented 1 year ago
github-actions[bot] commented 1 year ago

badge

Code Coverage Summary

Filename                          Stmts    Miss  Cover    Missing
------------------------------  -------  ------  -------  ---------
R/check.R                           121     121  0.00%    26-330
R/deps_installation_proposal.R      182     182  0.00%    58-347
R/get_ref.R                         165     165  0.00%    13-365
R/utils.R                            12      12  0.00%    3-32
TOTAL                               480     480  0.00%

Diff against main

Filename                          Stmts    Miss  Cover
------------------------------  -------  ------  --------
R/check.R                           +48     +48  +100.00%
R/deps_installation_proposal.R      +98     +98  +100.00%
R/get_ref.R                         +58     +58  +100.00%
R/utils.R                           +12     +12  +100.00%
TOTAL                              +216    +216  +100.00%

Results for commit: 29e268b316e32e504a7395f4b00143f4ea0a9d1f

Minimum allowed coverage is 80%

:recycle: This comment has been updated with latest results

github-actions[bot] commented 1 year ago

Unit Tests Summary

  1 files    4 suites   1s :stopwatch: 41 tests 13 :heavy_check_mark: 28 :zzz: 0 :x: 94 runs  65 :heavy_check_mark: 29 :zzz: 0 :x:

Results for commit 1fd58994.

:recycle: This comment has been updated with latest results.

pawelru commented 1 year ago

Hi @gmbecker I have pushed a new version that renames "min" into "min_direct" (to emphasise that only direct deps are searched for min version and indirect are installed as usual) plus also add two more strategies:

Both of them should be "stable" over time - unless it has a "@*release" dynamic pointer in any of tested package dependencies.

I believe is that the "min_cohort" strategy is what you had in your mind. When testing it, I discovered a relatively big limitation - when there are many interdependent packages developed in parallel and if one of them needs a recent (e.g. development) version of another then the rest of dependency specification of that package is basically disregarded and the newest versions are used. Therefore we are not testing against min versions specified in DESC but rather against env determined by the most recent dependency out of all your dependencies. Since it's a common use-case for us, I was thinking how to overcome this and I came up with some middle ground strategy called "min_cohorts" - a similar algorithm but repeated for each dependency separately (and then combine step at the very end that takes maximum for duplicates). I believe that this is much closer to what we want but still theoretically it might happen that your direct dependent package won't work correctly with the newer version of indirect dependent package that came with another directly dependent package.

I am happy to hear your thoughts about that. We can even meet and discuss - that would be faster. Please ping me if you are ready.

UPDATE: I am still thinking how to name all of it as I am aware that it might be a little confusing that there are three different min strategies. I probably need to take a break and came with a fresh head.

pawelru commented 1 year ago

Please also find intermediate result created for teal repo with a few modifications to pkg deps (doesn't really matter here). Please have a look at the dependencies versions.

min_cohort ``` r$> x$draw() deps::/var/folders/m1/hrz0h_ls7gz57rc80tnj41t80000gp/T//RtmpvamTQG/file11dbc75078157 0.13.0. ├─shiny 1.7.4 ✨ │ ├─httpuv 1.6.11 ✨ │ │ ├─Rcpp 1.0.10 ✨ │ │ ├─R6 2.5.1 ✨ │ │ ├─promises 1.2.0.1 ✨ │ │ │ ├─R6 │ │ │ ├─Rcpp │ │ │ ├─later 1.3.1 ✨ │ │ │ │ ├─Rcpp │ │ │ │ └─rlang 1.1.1 ✨ │ │ │ ├─rlang │ │ │ └─magrittr 2.0.3 ✨ │ │ └─later │ ├─mime 0.12 ✨ │ ├─jsonlite 1.8.5 ✨ │ ├─xtable 1.8-4 ✨ │ ├─fontawesome 0.5.1 ✨ │ │ ├─rlang │ │ └─htmltools 0.5.5 ✨ │ │ ├─digest 0.6.31 ✨ │ │ ├─base64enc 0.1-3 ✨ │ │ ├─rlang │ │ ├─fastmap 1.1.1 ✨ │ │ └─ellipsis 0.3.2 ✨ │ │ └─rlang │ ├─htmltools │ ├─R6 │ ├─sourcetools 0.1.7-1 ✨ │ ├─later │ ├─promises │ ├─crayon 1.5.2 ✨ │ ├─rlang │ ├─fastmap │ ├─withr 2.5.0 ✨ │ ├─commonmark 1.9.0 ✨ │ ├─glue 1.6.2 ✨ │ ├─bslib 0.5.0 ✨ │ │ ├─base64enc │ │ ├─cachem 1.0.8 ✨ │ │ │ ├─rlang │ │ │ └─fastmap │ │ ├─htmltools │ │ ├─jquerylib 0.1.4 ✨ │ │ │ └─htmltools │ │ ├─jsonlite │ │ ├─memoise 2.0.1 ✨ │ │ │ ├─rlang │ │ │ └─cachem │ │ ├─mime │ │ ├─rlang │ │ └─sass 0.4.6 ✨ │ │ ├─fs 1.6.2 ✨ │ │ ├─rlang │ │ ├─htmltools │ │ ├─R6 │ │ └─rappdirs 0.3.3 ✨ │ ├─cachem │ ├─ellipsis │ └─lifecycle 1.0.3 ✨ │ ├─cli 3.6.1 ✨ │ ├─glue │ └─rlang ├─teal.data=insightsengineering/teal.data@v0.1.2 0.1.2 ✨👷🏻‍♂️🔧 │ ├─shiny │ ├─checkmate 2.2.0 ✨ │ │ └─backports 1.4.1 ✨ │ ├─digest │ ├─formatters 0.5.0 ✨ │ │ ├─checkmate │ │ └─htmltools │ ├─lifecycle │ ├─logger 0.2.2 ✨ │ ├─R6 │ ├─rlang │ ├─shinyjs 2.1.0 ✨ │ │ ├─digest │ │ ├─jsonlite │ │ └─shiny │ ├─teal.logger=insightsengineering/teal.logger@v0.1.1 0.1.1 ✨👷🏻‍♂️🔧 │ │ ├─glue │ │ ├─lifecycle │ │ ├─logger │ │ ├─shiny │ │ └─withr │ └─yaml 2.3.7 ✨ ├─teal.transform=insightsengineering/teal.transform@v0.2.0 0.2.0 ✨👷🏻‍♂️🔧 │ ├─magrittr │ ├─checkmate │ ├─dplyr 1.1.2 ✨ │ │ ├─cli │ │ ├─generics 0.1.3 ✨ │ │ ├─glue │ │ ├─lifecycle │ │ ├─magrittr │ │ ├─pillar 1.9.0 ✨ │ │ │ ├─cli │ │ │ ├─fansi 1.0.4 ✨ │ │ │ ├─glue │ │ │ ├─lifecycle │ │ │ ├─rlang │ │ │ ├─utf8 1.2.3 ✨ │ │ │ └─vctrs 0.6.3 ✨ │ │ │ ├─cli │ │ │ ├─glue │ │ │ ├─lifecycle │ │ │ └─rlang │ │ ├─R6 │ │ ├─rlang │ │ ├─tibble 3.2.1 ✨ │ │ │ ├─fansi │ │ │ ├─lifecycle │ │ │ ├─magrittr │ │ │ ├─pillar │ │ │ ├─pkgconfig 2.0.3 ✨ │ │ │ ├─rlang │ │ │ └─vctrs │ │ ├─tidyselect 1.2.0 ✨ │ │ │ ├─cli │ │ │ ├─glue │ │ │ ├─lifecycle │ │ │ ├─rlang │ │ │ ├─vctrs │ │ │ └─withr │ │ └─vctrs │ ├─formatters │ ├─lifecycle │ ├─logger │ ├─rlang │ ├─shiny │ ├─shinyjs │ ├─teal.code=insightsengineering/teal.code@v0.2.0 0.2.0 ✨👷🏻‍♂️🔧 │ │ ├─checkmate │ │ ├─crayon │ │ ├─lifecycle │ │ ├─R6 │ │ ├─shiny │ │ ├─styler 1.10.1 ✨ │ │ │ ├─cli │ │ │ ├─magrittr │ │ │ ├─purrr 1.0.1 ✨ │ │ │ │ ├─cli │ │ │ │ ├─lifecycle │ │ │ │ ├─magrittr │ │ │ │ ├─rlang │ │ │ │ └─vctrs │ │ │ ├─R.cache 0.16.0 ✨ │ │ │ │ ├─R.methodsS3 1.8.2 ✨ │ │ │ │ ├─R.oo 1.25.0 ✨ │ │ │ │ │ └─R.methodsS3 │ │ │ │ ├─R.utils 2.12.2 ✨ │ │ │ │ │ ├─R.oo │ │ │ │ │ └─R.methodsS3 │ │ │ │ └─digest │ │ │ ├─rlang │ │ │ ├─rprojroot 2.0.3 ✨ │ │ │ ├─vctrs │ │ │ └─withr │ │ └─teal.widgets=insightsengineering/teal.widgets@v0.2.0 0.2.0 ✨👷🏻‍♂️🔧 │ │ ├─bslib │ │ ├─checkmate │ │ ├─ggplot2 3.4.2 ✨ │ │ │ ├─cli │ │ │ ├─glue │ │ │ ├─gtable 0.3.3 ✨ │ │ │ │ ├─cli │ │ │ │ ├─glue │ │ │ │ ├─lifecycle │ │ │ │ └─rlang │ │ │ ├─isoband 0.2.7 ✨ │ │ │ ├─lifecycle │ │ │ ├─MASS 7.3-60 │ │ │ ├─mgcv 1.8-42 │ │ │ │ ├─nlme 3.1-162 │ │ │ │ │ └─lattice 0.21-8 │ │ │ │ └─Matrix 1.5-4.1 │ │ │ │ └─lattice │ │ │ ├─rlang │ │ │ ├─scales 1.2.1 ✨ │ │ │ │ ├─farver 2.1.1 ✨ │ │ │ │ ├─labeling 0.4.2 ✨ │ │ │ │ ├─lifecycle │ │ │ │ ├─munsell 0.5.0 ✨ │ │ │ │ │ └─colorspace 2.1-0 ✨ │ │ │ │ ├─R6 │ │ │ │ ├─RColorBrewer 1.1-3 ✨ │ │ │ │ ├─rlang │ │ │ │ └─viridisLite 0.4.2 ✨ │ │ │ ├─tibble │ │ │ ├─vctrs │ │ │ └─withr │ │ ├─htmltools │ │ ├─lifecycle │ │ ├─rtables 0.6.1 ✨ │ │ │ ├─formatters │ │ │ ├─magrittr │ │ │ └─htmltools │ │ ├─shiny │ │ ├─shinyjs │ │ ├─shinyWidgets 0.7.6 ✨ │ │ │ ├─anytime 0.3.9 ✨ │ │ │ │ └─Rcpp │ │ │ ├─bslib │ │ │ ├─sass │ │ │ ├─shiny │ │ │ ├─htmltools │ │ │ ├─jsonlite │ │ │ └─rlang │ │ └─styler │ ├─teal.data=insightsengineering/teal.data@v0.1.2 │ ├─teal.logger=insightsengineering/teal.logger@v0.1.1 │ ├─teal.slice=insightsengineering/teal.slice@v0.2.0 0.2.0 ✨👷🏻‍♂️🔧 │ │ ├─shiny │ │ ├─checkmate │ │ ├─digest │ │ ├─dplyr │ │ ├─ggplot2 │ │ ├─lifecycle │ │ ├─logger │ │ ├─R6 │ │ ├─shinyjs │ │ ├─shinyWidgets │ │ ├─teal.data=insightsengineering/teal.data@v0.1.2 │ │ ├─teal.logger=insightsengineering/teal.logger@v0.1.1 │ │ └─teal.widgets=insightsengineering/teal.widgets@v0.2.0 │ ├─teal.widgets=insightsengineering/teal.widgets@v0.2.0 │ ├─tidyr 1.3.0 ✨ │ │ ├─cli │ │ ├─dplyr │ │ ├─glue │ │ ├─lifecycle │ │ ├─magrittr │ │ ├─purrr │ │ ├─rlang │ │ ├─stringr 1.5.0 ✨ │ │ │ ├─cli │ │ │ ├─glue │ │ │ ├─lifecycle │ │ │ ├─magrittr │ │ │ ├─rlang │ │ │ ├─stringi 1.7.12 ✨ │ │ │ └─vctrs │ │ ├─tibble │ │ ├─tidyselect │ │ └─vctrs │ └─tidyselect ├─checkmate ├─lifecycle ├─logger ├─magrittr ├─rlang ├─shinyjs ├─styler ├─teal.code=insightsengineering/teal.code@v0.2.0 ├─teal.logger=insightsengineering/teal.logger@v0.1.1 ├─teal.reporter=insightsengineering/teal.reporter@v0.1.1 0.1.1 ✨👷🏻‍♂️🔧 │ ├─bslib │ ├─checkmate │ ├─knitr 1.43 ✨ │ │ ├─evaluate 0.21 ✨ │ │ ├─highr 0.10 ✨ │ │ │ └─xfun 0.39 ✨ │ │ ├─xfun │ │ └─yaml │ ├─lifecycle │ ├─R6 │ ├─rmarkdown 2.22 ✨ │ │ ├─bslib │ │ ├─evaluate │ │ ├─fontawesome │ │ ├─htmltools │ │ ├─jquerylib │ │ ├─jsonlite │ │ ├─knitr │ │ ├─stringr │ │ ├─tinytex 0.45 ✨ │ │ │ └─xfun │ │ ├─xfun │ │ └─yaml │ ├─shiny │ ├─shinyWidgets │ ├─yaml │ └─zip 2.3.0 ✨ ├─teal.slice=insightsengineering/teal.slice@v0.2.0 ├─teal.widgets=insightsengineering/teal.widgets@v0.2.0 ├─bslib ├─covr 3.6.2 ✨ │ ├─digest │ ├─jsonlite │ ├─rex 1.2.1 ✨ │ │ └─lazyeval 0.2.2 ✨ │ ├─httr 1.4.6 ✨ │ │ ├─curl 5.0.1 ✨ │ │ ├─jsonlite │ │ ├─mime │ │ ├─openssl 2.0.6 ✨ │ │ │ └─askpass 1.1 ✨ │ │ │ └─sys 3.4.2 ✨ │ │ └─R6 │ ├─crayon │ ├─withr │ └─yaml ├─dplyr ├─knitr ├─MultiAssayExperiment 1.24.0 ✨ │ ├─SummarizedExperiment 1.28.0 ✨ │ │ ├─MatrixGenerics 1.10.0 ✨ │ │ │ └─matrixStats 1.0.0 ✨ │ │ ├─GenomicRanges 1.50.2 ✨ │ │ │ ├─BiocGenerics 0.44.0 ✨ │ │ │ ├─S4Vectors 0.36.2 ✨ │ │ │ │ └─BiocGenerics │ │ │ ├─IRanges 2.32.0 ✨ │ │ │ │ ├─BiocGenerics │ │ │ │ └─S4Vectors │ │ │ ├─GenomeInfoDb 1.34.9 ✨ │ │ │ │ ├─BiocGenerics │ │ │ │ ├─S4Vectors │ │ │ │ ├─IRanges │ │ │ │ ├─RCurl 1.98-1.12 ✨ │ │ │ │ │ └─bitops 1.0-7 ✨ │ │ │ │ └─GenomeInfoDbData 1.2.9 ✨👷🏻‍♂️ │ │ │ └─XVector 0.38.0 ✨ │ │ │ ├─BiocGenerics │ │ │ ├─S4Vectors │ │ │ ├─IRanges │ │ │ └─zlibbioc 1.44.0 ✨ │ │ ├─Biobase 2.58.0 ✨ │ │ │ └─BiocGenerics │ │ ├─Matrix │ │ ├─BiocGenerics │ │ ├─S4Vectors │ │ ├─IRanges │ │ ├─GenomeInfoDb │ │ └─DelayedArray 0.24.0 ✨ │ │ ├─Matrix │ │ ├─BiocGenerics │ │ ├─MatrixGenerics │ │ ├─S4Vectors │ │ └─IRanges │ ├─GenomicRanges │ ├─BiocBaseUtils 1.0.0 ✨ │ ├─BiocGenerics │ ├─DelayedArray │ ├─S4Vectors │ ├─IRanges │ ├─Biobase │ └─tidyr ├─R6 ├─scda=insightsengineering/scda@v0.1.5 0.1.5 ✨👷🏻‍♂️🔧 ├─scda.2022=insightsengineering/scda.2022@v0.1.3 0.1.3 ✨👷🏻‍♂️🔧 ├─shinyvalidate 0.1.2 ✨ │ ├─shiny │ ├─htmltools │ ├─rlang │ └─glue ├─testthat 3.1.9 ✨ │ ├─brio 1.1.3 ✨ │ ├─callr 3.7.3 ✨ │ │ ├─processx 3.8.1 ✨ │ │ │ ├─ps 1.7.5 ✨ │ │ │ └─R6 │ │ └─R6 │ ├─cli │ ├─desc 1.4.2 ✨ │ │ ├─cli │ │ ├─R6 │ │ └─rprojroot │ ├─digest │ ├─ellipsis │ ├─evaluate │ ├─jsonlite │ ├─lifecycle │ ├─magrittr │ ├─pkgload 1.3.2 ✨ │ │ ├─cli │ │ ├─crayon │ │ ├─desc │ │ ├─fs │ │ ├─glue │ │ ├─rlang │ │ ├─rprojroot │ │ └─withr │ ├─praise 1.0.0 ✨ │ ├─processx │ ├─ps │ ├─R6 │ ├─rlang │ ├─waldo 0.5.1 ✨ │ │ ├─cli │ │ ├─diffobj 0.3.5 ✨ │ │ │ └─crayon │ │ ├─fansi │ │ ├─glue │ │ ├─rematch2 2.1.2 ✨ │ │ │ └─tibble │ │ ├─rlang │ │ └─tibble │ └─withr ├─withr └─yaml ```
min_cohorts ``` r$> x$draw() deps::/var/folders/m1/hrz0h_ls7gz57rc80tnj41t80000gp/T//RtmpxF0P7B/file120042b154b29 0.13.0. ├─shiny 1.6.0 ✨👷🏾 │ ├─httpuv 1.6.6 ✨👷🏾🔧 │ │ ├─Rcpp 1.0.9 ✨👷🏾🔧 │ │ ├─R6 2.5.0 ✨👷🏾 │ │ ├─promises 1.2.0.1 ✨👷🏾🔧 ⬇ (3.12 MB) │ │ │ ├─R6 │ │ │ ├─Rcpp │ │ │ ├─later 1.2.0 ✨👷🏾🔧 │ │ │ │ ├─Rcpp │ │ │ │ └─rlang 1.1.1 ✨👷🏾🔧 ⬇ (762.53 kB) │ │ │ ├─rlang │ │ │ └─magrittr 2.0.1 ✨👷🏾🔧 │ │ └─later │ ├─mime 0.5 ✨👷🏾🔧 │ ├─jsonlite 1.7.2 ✨👷🏾🔧 │ ├─xtable 1.8-2 ✨👷🏾 │ ├─digest 0.6.27 ✨👷🏾🔧 │ ├─htmltools 0.5.1.1 ✨👷🏾🔧 │ │ ├─digest │ │ ├─base64enc 0.1-3 ✨👷🏾🔧 ⬇ (7.83 kB) │ │ └─rlang │ ├─R6 │ ├─sourcetools 0.1.6 ✨👷🏾🔧 │ ├─later │ ├─promises │ ├─crayon 1.3.4 ✨👷🏾 │ ├─rlang │ ├─fastmap 1.1.0 ✨👷🏾🔧 │ ├─withr 2.5.0 ✨👷🏾 ⬇ (102.09 kB) │ ├─commonmark 1.7 ✨👷🏾🔧 │ ├─glue 1.6.2 ✨👷🏾🔧 ⬇ (106.51 kB) │ ├─bslib 0.2.5.1 ✨👷🏾 │ │ ├─htmltools │ │ ├─jsonlite │ │ ├─sass 0.4.0 ✨👷🏾🔧 │ │ │ ├─fs 1.5.0 ✨👷🏾🔧 │ │ │ ├─rlang │ │ │ ├─htmltools │ │ │ ├─R6 │ │ │ └─rappdirs 0.3.1 ✨👷🏾🔧 │ │ ├─jquerylib 0.1.3 ✨👷🏾 │ │ │ └─htmltools │ │ ├─rlang │ │ └─magrittr │ ├─cachem 1.0.5 ✨👷🏾🔧 │ │ ├─rlang │ │ └─fastmap │ ├─ellipsis 0.3.1 ✨👷🏾🔧 │ │ └─rlang │ └─lifecycle 1.0.3 ✨👷🏾 ⬇ (106.85 kB) │ ├─cli 3.4.1 ✨👷🏾🔧 │ ├─glue │ └─rlang ├─teal.data=insightsengineering/teal.data@v0.1.2 0.1.2 ✨👷🏾🔧 │ ├─shiny │ ├─checkmate 2.1.0 ✨👷🏾🔧 │ │ └─backports 1.1.5 ✨👷🏾🔧 │ ├─digest │ ├─formatters 0.3.2 ✨👷🏾 │ │ └─htmltools │ ├─lifecycle │ ├─logger 0.2.0 ✨👷🏾 │ ├─R6 │ ├─rlang │ ├─shinyjs 2.1.0 ✨👷🏾 ⬇ (1.02 MB) │ │ ├─digest │ │ ├─jsonlite │ │ └─shiny │ ├─teal.logger=insightsengineering/teal.logger@v0.1.1 0.1.1 ✨👷🏾🔧 │ │ ├─glue │ │ ├─lifecycle │ │ ├─logger │ │ ├─shiny │ │ └─withr │ └─yaml 2.3.7 ✨👷🏾🔧 ⬇ (94.33 kB) ├─teal.transform=insightsengineering/teal.transform@v0.2.0 0.2.0 ✨👷🏾🔧 │ ├─magrittr │ ├─checkmate │ ├─dplyr 1.0.0 ✨👷🏾🔧 │ │ ├─ellipsis │ │ ├─generics 0.0.2 ✨👷🏾 │ │ ├─glue │ │ ├─lifecycle │ │ ├─magrittr │ │ ├─R6 │ │ ├─rlang │ │ ├─tibble 3.0.1 ✨👷🏾🔧 │ │ │ ├─cli │ │ │ ├─crayon │ │ │ ├─ellipsis │ │ │ ├─fansi 0.4.1 ✨👷🏾🔧 │ │ │ ├─lifecycle │ │ │ ├─magrittr │ │ │ ├─pillar 1.4.4 ✨👷🏾 │ │ │ │ ├─cli │ │ │ │ ├─crayon │ │ │ │ ├─fansi │ │ │ │ ├─rlang │ │ │ │ ├─utf8 1.1.4 ✨👷🏾🔧 │ │ │ │ └─vctrs 0.6.3 ✨👷🏾🔧 ⬇ (967.34 kB) │ │ │ │ ├─cli │ │ │ │ ├─glue │ │ │ │ ├─lifecycle │ │ │ │ └─rlang │ │ │ ├─pkgconfig 2.0.3 ✨👷🏾 ⬇ (6.08 kB) │ │ │ ├─rlang │ │ │ └─vctrs │ │ ├─tidyselect 1.2.0 ✨👷🏾 ⬇ (101.50 kB) │ │ │ ├─cli │ │ │ ├─glue │ │ │ ├─lifecycle │ │ │ ├─rlang │ │ │ ├─vctrs │ │ │ └─withr │ │ └─vctrs │ ├─formatters │ ├─lifecycle │ ├─logger │ ├─rlang │ ├─shiny │ ├─shinyjs │ ├─teal.code=insightsengineering/teal.code@v0.2.0 0.2.0 ✨👷🏾🔧 │ │ ├─checkmate │ │ ├─crayon │ │ ├─lifecycle │ │ ├─R6 │ │ ├─shiny │ │ ├─styler 1.0.0 ✨👷🏾 │ │ │ ├─backports │ │ │ ├─cli │ │ │ ├─enc 0.1 ✨👷🏾🔧 │ │ │ ├─magrittr │ │ │ ├─purrr 1.0.1 ✨👷🏾🔧 ⬇ (220.63 kB) │ │ │ │ ├─cli │ │ │ │ ├─lifecycle │ │ │ │ ├─magrittr │ │ │ │ ├─rlang │ │ │ │ └─vctrs │ │ │ ├─rematch2 2.0.1 ✨👷🏾 │ │ │ │ └─tibble │ │ │ ├─rlang │ │ │ ├─rprojroot 1.2 ✨👷🏾 │ │ │ │ └─backports │ │ │ ├─tibble │ │ │ └─withr │ │ └─teal.widgets=insightsengineering/teal.widgets@v0.2.0 0.2.0 ✨👷🏾🔧 │ │ ├─bslib │ │ ├─checkmate │ │ ├─ggplot2 3.3.6 ✨👷🏾 │ │ │ ├─digest │ │ │ ├─glue │ │ │ ├─gtable 0.3.1 ✨👷🏾 │ │ │ ├─isoband 0.2.6 ✨👷🏾🔧 │ │ │ ├─MASS 7.3-60 │ │ │ ├─mgcv 1.8-42 │ │ │ │ ├─nlme 3.1-162 │ │ │ │ │ └─lattice 0.21-8 │ │ │ │ └─Matrix 1.5-4.1 │ │ │ │ └─lattice │ │ │ ├─rlang │ │ │ ├─scales 1.2.1 ✨👷🏾 ⬇ (270.61 kB) │ │ │ │ ├─farver 2.1.1 ✨👷🏾🔧 ⬇ (1.27 MB) │ │ │ │ ├─labeling 0.4.2 ✨👷🏾 ⬇ (10.16 kB) │ │ │ │ ├─lifecycle │ │ │ │ ├─munsell 0.5.0 ✨👷🏾 ⬇ (182.65 kB) │ │ │ │ │ └─colorspace 2.0-3 ✨👷🏾🔧 │ │ │ │ ├─R6 │ │ │ │ ├─RColorBrewer 1.1-3 ✨👷🏾 ⬇ (11.64 kB) │ │ │ │ ├─rlang │ │ │ │ └─viridisLite 0.4.1 ✨👷🏾 │ │ │ ├─tibble │ │ │ └─withr │ │ ├─htmltools │ │ ├─lifecycle │ │ ├─rtables 0.5.1 ✨👷🏾 │ │ │ ├─magrittr │ │ │ ├─formatters │ │ │ └─htmltools │ │ ├─shiny │ │ ├─shinyjs │ │ ├─shinyWidgets 0.7.4 ✨👷🏾 │ │ │ ├─anytime 0.3.9 ✨👷🏾🔧 ⬇ (348.90 kB) │ │ │ │ ├─Rcpp │ │ │ │ └─BH 1.78.0-0 ✨👷🏾 │ │ │ ├─bslib │ │ │ ├─sass │ │ │ ├─shiny │ │ │ ├─htmltools │ │ │ ├─jsonlite │ │ │ └─rlang │ │ └─styler │ ├─teal.data=insightsengineering/teal.data@v0.1.2 │ ├─teal.logger=insightsengineering/teal.logger@v0.1.1 │ ├─teal.slice=insightsengineering/teal.slice@v0.2.0 0.2.0 ✨👷🏾🔧 │ │ ├─shiny │ │ ├─checkmate │ │ ├─digest │ │ ├─dplyr │ │ ├─ggplot2 │ │ ├─lifecycle │ │ ├─logger │ │ ├─R6 │ │ ├─shinyjs │ │ ├─shinyWidgets │ │ ├─teal.data=insightsengineering/teal.data@v0.1.2 │ │ ├─teal.logger=insightsengineering/teal.logger@v0.1.1 │ │ └─teal.widgets=insightsengineering/teal.widgets@v0.2.0 │ ├─teal.widgets=insightsengineering/teal.widgets@v0.2.0 │ ├─tidyr 1.2.1 ✨👷🏾🔧 │ │ ├─dplyr │ │ ├─ellipsis │ │ ├─glue │ │ ├─lifecycle │ │ ├─magrittr │ │ ├─purrr │ │ ├─rlang │ │ ├─tibble │ │ ├─tidyselect │ │ ├─vctrs │ │ └─cpp11 0.4.3 ✨👷🏾 ⬇ (304.53 kB) │ └─tidyselect ├─checkmate ├─lifecycle ├─logger ├─magrittr ├─rlang ├─shinyjs ├─styler ├─teal.code=insightsengineering/teal.code@v0.2.0 ├─teal.logger=insightsengineering/teal.logger@v0.1.1 ├─teal.reporter=insightsengineering/teal.reporter@v0.1.1 0.1.1 ✨👷🏾🔧 │ ├─bslib │ ├─checkmate │ ├─knitr 1.40 ✨👷🏾 │ │ ├─evaluate 0.20 ✨👷🏾 │ │ ├─highr 0.10 ✨👷🏾 ⬇ (15.08 kB) │ │ │ └─xfun 0.36 ✨👷🏾🔧 │ │ ├─stringr 1.4.1 ✨👷🏾 │ │ │ ├─glue │ │ │ ├─magrittr │ │ │ └─stringi 1.7.12 ✨👷🏾🔧 ⬇ (7.60 MB) │ │ ├─yaml │ │ └─xfun │ ├─lifecycle │ ├─R6 │ ├─rmarkdown 2.17 ✨👷🏾 │ │ ├─bslib │ │ ├─evaluate │ │ ├─htmltools │ │ ├─jquerylib │ │ ├─jsonlite │ │ ├─knitr │ │ ├─stringr │ │ ├─tinytex 0.42 ✨👷🏾 │ │ │ └─xfun │ │ ├─xfun │ │ └─yaml │ ├─shiny │ ├─shinyWidgets │ ├─yaml │ └─zip 2.2.1 ✨👷🏾🔧 ├─teal.slice=insightsengineering/teal.slice@v0.2.0 ├─teal.widgets=insightsengineering/teal.widgets@v0.2.0 ├─bslib ├─covr 3.0.0 ✨👷🏾🔧 │ ├─jsonlite │ ├─rex 1.1.1 ✨👷🏾 │ │ ├─magrittr │ │ └─lazyeval 0.2.0 ✨👷🏾🔧 │ ├─httr 1.3.1 ✨👷🏾 │ │ ├─jsonlite │ │ ├─mime │ │ ├─curl 3.0 ✨👷🏾🔧 │ │ ├─openssl 0.9.7 ✨👷🏾🔧 │ │ └─R6 │ ├─crayon │ └─withr ├─dplyr ├─knitr ├─MultiAssayExperiment 1.24.0 ✨ │ ├─SummarizedExperiment 1.28.0 ✨ │ │ ├─MatrixGenerics 1.10.0 ✨ │ │ │ └─matrixStats 1.0.0 ✨👷🏾🔧 ⬇ (210.65 kB) │ │ ├─GenomicRanges 1.50.2 ✨ │ │ │ ├─BiocGenerics 0.44.0 ✨ │ │ │ ├─S4Vectors 0.36.2 ✨ │ │ │ │ └─BiocGenerics │ │ │ ├─IRanges 2.32.0 ✨ │ │ │ │ ├─BiocGenerics │ │ │ │ └─S4Vectors │ │ │ ├─GenomeInfoDb 1.34.9 ✨ │ │ │ │ ├─BiocGenerics │ │ │ │ ├─S4Vectors │ │ │ │ ├─IRanges │ │ │ │ ├─RCurl 1.98-1.12 ✨👷🏾🔧 ⬇ (731.48 kB) │ │ │ │ │ └─bitops 1.0-7 ✨👷🏾🔧 ⬇ (10.81 kB) │ │ │ │ └─GenomeInfoDbData 1.2.9 ✨👷🏾 │ │ │ └─XVector 0.38.0 ✨ │ │ │ ├─BiocGenerics │ │ │ ├─S4Vectors │ │ │ ├─IRanges │ │ │ └─zlibbioc 1.44.0 ✨ │ │ ├─Biobase 2.58.0 ✨ │ │ │ └─BiocGenerics │ │ ├─Matrix │ │ ├─BiocGenerics │ │ ├─S4Vectors │ │ ├─IRanges │ │ ├─GenomeInfoDb │ │ └─DelayedArray 0.24.0 ✨ │ │ ├─Matrix │ │ ├─BiocGenerics │ │ ├─MatrixGenerics │ │ ├─S4Vectors │ │ └─IRanges │ ├─GenomicRanges │ ├─BiocBaseUtils 1.0.0 ✨ │ ├─BiocGenerics │ ├─DelayedArray │ ├─S4Vectors │ ├─IRanges │ ├─Biobase │ └─tidyr ├─R6 ├─scda=insightsengineering/scda@v0.1.5 0.1.5 ✨👷🏾🔧 ├─scda.2022=insightsengineering/scda.2022@v0.1.3 0.1.3 ✨👷🏾🔧 ├─shinyvalidate 0.1.0 ✨👷🏾 │ ├─shiny │ ├─htmltools │ ├─rlang │ └─glue ├─testthat 3.1.5 ✨👷🏾🔧 │ ├─brio 1.1.3 ✨👷🏾🔧 ⬇ (12.63 kB) │ ├─callr 3.7.2 ✨👷🏾 │ │ ├─processx 3.7.0 ✨👷🏾🔧 │ │ │ ├─ps 1.7.1 ✨👷🏾🔧 │ │ │ └─R6 │ │ └─R6 │ ├─cli │ ├─desc 1.4.2 ✨👷🏾 ⬇ (79.25 kB) │ │ ├─cli │ │ ├─R6 │ │ └─rprojroot │ ├─digest │ ├─ellipsis │ ├─evaluate │ ├─jsonlite │ ├─lifecycle │ ├─magrittr │ ├─pkgload 1.3.0 ✨👷🏾 │ │ ├─cli │ │ ├─crayon │ │ ├─desc │ │ ├─fs │ │ ├─glue │ │ ├─rlang │ │ ├─rprojroot │ │ └─withr │ ├─praise 1.0.0 ✨👷🏾 ⬇ (6.10 kB) │ ├─processx │ ├─ps │ ├─R6 │ ├─rlang │ ├─waldo 0.4.0 ✨👷🏾 │ │ ├─cli │ │ ├─diffobj 0.3.5 ✨👷🏾🔧 ⬇ (479.28 kB) │ │ │ └─crayon │ │ ├─fansi │ │ ├─glue │ │ ├─rematch2 │ │ ├─rlang │ │ └─tibble │ └─withr ├─withr └─yaml ```
pawelru commented 1 year ago

I have pushed a new commit that does the following:

So the current state is as follows

Both min strategies relies on CRAN PPM snapshots so as to limit the versions of indirect dependencies. The most "correct" strategy is the "min_cohort" where there is only one snapshot used determined by the most recently released direct dependent package. We take all the packages from the whole dependency tree (incl. indirect deps) using the greatest version as of certain date. The biggest advantage is also its biggest limitation. It's very common that packages are developed in parallel and bumping up dep version to the development version of a package would basically mean to take the rest of dependencies using the greatest version. That makes little value in the context of minimal dependency tests. Moreover, this assumption (that all packages are updated as of given time point) is often not fulfilled and every dependency issues we encountered so far were due to outdated but still completely valid package version. Because of the above, we have another strategy "min_isolated" where we resolve dependency tree separately (!) for each dependency using above described logic and then combine resolution and solve it once again (using the greatest version if duplicated). This makes it possible to have more messy environment with direct dependent packages from different dates while ~keeping~ trying to keep indirect deps to be not newer than its parent direct dep. The latter is actually potential point of failure as technically it is possible that indirect dep will be newer than direct dep. That's true when there is an indirect dependency present in more than one directly dependent package dependency tree. Example: let's say a package imports A (last released on 2021/01/01) and B (last released on 2022/01/01). Both A and B imports package C (released on a monthly basis). Isolated resolve of dependency sub-trees results in A and C as of 2021/01/01 plus another subtree with B and C as of 2022/01/01. Combining those two subtrees results in A as of 2021/01/01 that imports C as of 2022/01/01. This is not guaranteed to be fully compatible. CRAN includes such check (i.e. reverse dependency checks) but only against the most recent versions - so it's not guaranteed that it's covered. Plus also we have non-cran dependencies.

PPM-based strategies makes dependency tree to be always resolvable and there is no need to break encapsulation and collapse the whole dependency tree into the tested package dependency specification. That was probably the biggest drawback of the "min_direct" strategy.

Having said that, I think we need to acknowledge these limitations and move forward with what we have now. Of course we can improve as we go.

github-actions[bot] commented 1 year ago

badge

Code Coverage Summary

Filename                          Stmts    Miss  Cover    Missing
------------------------------  -------  ------  -------  ------------------------
R/check.R                            37      37  0.00%    26-170
R/deps_installation_proposal.R      137     137  0.00%    58-267
R/desc_utils.R                       70      42  40.00%   15-32, 108, 117-167, 185
R/get_ref.R                         208     207  0.48%    13-419, 435-454
R/solve.R                            81      81  0.00%    9-165
R/utils.R                            70      55  21.43%   3-20, 36-111
TOTAL                               603     559  7.30%

Diff against main

Filename                          Stmts    Miss  Cover
------------------------------  -------  ------  --------
R/check.R                           -36     -36  +100.00%
R/deps_installation_proposal.R      +53     +53  +100.00%
R/desc_utils.R                      +70     +42  +40.00%
R/get_ref.R                        +101    +100  +0.48%
R/solve.R                           +81     +81  +100.00%
R/utils.R                           +70     +55  +21.43%
TOTAL                              +339    +295  +7.30%

Results for commit: 2f6ceb5969280be83fb255e3339dc16a7b16a0a6

Minimum allowed coverage is 80%

:recycle: This comment has been updated with latest results