Как использовать 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"

Однако ошибка остается. Я что-то здесь упускаю. К сожалению, информация, которую я нашел до сих пор по этой теме, не указывала ни на какое конкретное направление.

0 ответов

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