Как использовать testthat и travis ci для авторизованных вызовов API?
Я работаю над пакетом R, который обращается к некоторому API.
access_api <- function(t,k) {
if (missing(k)) {
k <- Sys.getenv("KEY")
if (identical(k, "")) {
stop(".Renviron doesnt have that variable", call. = FALSE)
}
c <- paste0("www.someapi.com","k",k,"t",t)
} else {
c <- paste0("www.someapi.com","k",k",t",t)
}
return (c)
}
В каталоге testthat у меня есть тест, который проверяет, работают ли мои ожидания относительно структуры возвращаемых данных.
context("Check data structure")
test_api_call <- access_api(t)
test_that("Check data structure", {
skip_on_cran() # test should only run on travis
testthat::expect_true(row.names(test_api_call)[1] == "that")
testthat::expect_true(row.names(test_api_call)[2] == "this")
testthat::expect_true(row.names(test_api_call)[3] == "thatthis")
})
Локально все отлично работает. На travis, однако, я получаю сообщение об ошибке, предустановленное на access_api()
".Renviron не имеет этой переменной"
Затем я следовал документации travis и создал зашифрованный токен, соответствующий "KEY", который я импортировал через Sys.getenv("KEY")
в access_api()
:
travis encrypt KEY="somekeyIhave" --add
Результат этого был добавлен к .travis.yml
:
language: R
sudo: false # required
cache: packages
env:
matrix:
- warnings_are_errors: true
global:
secure: "OutputOfTraviencrypt"
Однако ошибка остается. Я что-то здесь упускаю. К сожалению, информация, которую я нашел до сих пор по этой теме, не указывала ни на какое конкретное направление.