Использование covr в R дает другой результат от package_coverage и file_coverage.

Я использую новый пакет. Некоторые функции, кажется, пропускаютсяpackage_coverage(), но когда я бегуfile_coverage(), я получаю более высокий результат покрытия. Почему это так?

Вотcovrкод:

      r$> covr::package_coverage()
rOPTRAM Coverage: 86.86%
R/utilities.R: 67.14%
R/optram_calculate_str.R: 90.91%
R/optram_ndvi_str.R: 92.68%
R/optram_wetdry_coefficients.R: 94.17%
R/optram_soilmoisture.R: 94.74%

тогда как при непосредственном выполнении функций:

      r$> covr::file_coverage("R/utilities.R", "tests/testthat/test-utilities.R")
Test passed 
Test passed 
Test passed 
.... # More lines with expect errors, etc
Test passed 
Coverage: 80.00%
R/utilities.R: 80.00%

80% охват против 67%?? Когда я ввожу функцию вutilities.Rзвонок вin_covr(), он действительно возвращает FALSE. Почему эта функция может быть пропущена?

Это тест:

      test_that("SCIHUB available", {
    expect_true(check_scihub_access())
     }
)

И вот функция, которая пропускается:

      check_scihub_access <- function() {
    # Avoid "no visible binding for global variable" NOTE
    is_online <- site <- NULL 
    # First check for internet connection
    site <- "http://scihub.copernicus.eu"
    #message("In covr 1:", covr::in_covr())  # prints "FALSE"
    is_online <- tryCatch({
        readLines(site, n=1)
        TRUE},
        error = {function(e) {
            message("No internet connection to SCIHUB.", "\n",
        "Downloading data is not currently possible")
            FALSE}
    })
    
    if (is_online) {
        #message("In covr 2:", covr::in_covr())  # prints "FALSE
        # Is sen2r installed?
        if (system.file(package='sen2r') == "") {
            message("This function requires the `sen2r` package.", "\n",
            "Please install that package first before running function")
            return(FALSE)
        }
        # Check sen2r version
        sen2r_version <- utils::packageVersion("sen2r")
        version_ok <- package_version(sen2r_version) > '1.5.0'
        if (!version_ok) {
            message("Version of sen2r pacakge: ", sen2r_version, " is too old. \n",
            "Please update to version > 1.5")
            return(FALSE)
        }
    return(TRUE)
    } else {
        return(FALSE)
    }
}

Спасибо

0 ответов

Другие вопросы по тегам