context("codecov")
ci_vars <- c(
"APPVEYOR" = NA,
"APPVEYOR_ACCOUNT_NAME" = NA,
"APPVEYOR_PROJECT_SLUG" = NA,
"APPVEYOR_BUILD_VERSION" = NA,
"APPVEYOR_JOB_ID" = NA,
"APPVEYOR_REPO_BRANCH" = NA,
"APPVEYOR_REPO_COMMIT" = NA,
"APPVEYOR_REPO_NAME" = NA,
"BRANCH_NAME" = NA,
"BUILD_NUMBER" = NA,
"BUILD_URL" = NA,
"CI" = NA,
"CIRCLECI" = NA,
"CIRCLE_BRANCH" = NA,
"CIRCLE_BUILD_NUM" = NA,
"CIRCLE_PROJECT_REPONAME" = NA,
"CIRCLE_PROJECT_USERNAME" = NA,
"CIRCLE_SHA1" = NA,
"CI_BRANCH" = NA,
"CI_BUILD_NUMBER" = NA,
"CI_BUILD_URL" = NA,
"CI_COMMIT_ID" = NA,
"CI_NAME" = NA,
"CODECOV_TOKEN" = NA,
"DRONE" = NA,
"DRONE_BRANCH" = NA,
"DRONE_BUILD_NUMBER" = NA,
"DRONE_BUILD_URL" = NA,
"DRONE_COMMIT" = NA,
"GIT_BRANCH" = NA,
"GIT_COMMIT" = NA,
"GITHUB_ACTION" = NA,
"GITHUB_REPOSTIORY" = NA,
"JENKINS_URL" = NA,
"REVISION" = NA,
"SEMAPHORE" = NA,
"SEMAPHORE_BUILD_NUMBER" = NA,
"SEMAPHORE_REPO_SLUG" = NA,
"TRAVIS" = NA,
"TRAVIS_BRANCH" = NA,
"TRAVIS_COMMIT" = NA,
"TRAVIS_JOB_ID" = NA,
"TRAVIS_JOB_NUMBER" = NA,
"TRAVIS_PULL_REQUEST" = NA,
"TRAVIS_REPO_SLUG" = NA,
"WERCKER_GIT_BRANCH" = NA,
"WERCKER_GIT_COMMIT" = NA,
"WERCKER_GIT_OWNER" = NA,
"WERCKER_GIT_REPOSITORY" = NA,
"WERCKER_MAIN_PIPELINE_STARTED" = NA)
cov <- package_coverage(test_path("TestS4"))
test_that("it generates a properly formatted json file", {
withr::with_envvar(ci_vars,
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
`covr:::local_branch` = function() "master",
`covr:::current_commit` = function() "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
res <- codecov(coverage = cov),
json <- jsonlite::fromJSON(res$body),
expect_match(json$files$name, "R/TestS4.R"),
expect_equal(json$files$coverage[[1]],
c(NA, NA, NA, NA, NA, NA, NA, 5, 2, NA, 3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 1, NA)
),
expect_equal(json$uploader, "R")
))
})
test_that("it adds a flags argument to the query if specified", {
withr::with_envvar(ci_vars,
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
`covr:::local_branch` = function() "master",
`covr:::current_commit` = function() "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
res <- codecov(coverage = cov, flags = "R"),
expect_equal(res$query$flags, "R")
)
)
})
test_that("it works with local repos", {
withr::with_envvar(ci_vars, {
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
`covr:::local_branch` = function() "master",
`covr:::current_commit` = function() "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
res <- codecov(coverage = cov),
expect_match(res$url, "2"), # nolint
expect_match(res$query$branch, "master"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
})
})
test_that("it works with local repos and explicit branch and commit", {
withr::with_envvar(ci_vars, {
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov, branch = "master", commit = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"),
expect_match(res$url, "/upload/v2"), # nolint
expect_match(res$query$branch, "master"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
})
})
test_that("it adds the token to the query if available", {
withr::with_envvar(c(
ci_vars,
"CODECOV_TOKEN" = "codecov_test"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
`covr:::local_branch` = function() "master",
`covr:::current_commit` = function() "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
res <- codecov(coverage = cov),
expect_match(res$url, "/upload/v2"), # nolint
expect_match(res$query$branch, "master"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"),
expect_match(res$query$token, "codecov_test")
)
)
})
test_that("it looks for token in a .yml file", {
withr::with_envvar(c(ci_vars),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
`covr:::local_branch` = function() "master",
`covr:::current_commit` = function() "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
res <- codecov(coverage = cov),
expect_match(res$url, "/upload/v2"), # nolint
expect_match(res$query$branch, "master"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"),
expect_match(res$query$token, "codecov_token_from_yaml")
)
)
})
test_that("it works with jenkins", {
withr::with_envvar(c(
ci_vars,
"JENKINS_URL" = "jenkins.com",
"GIT_BRANCH" = "test",
"GIT_COMMIT" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
"BUILD_NUMBER" = "1",
"BUILD_URL" = "http://test.com/tester/test"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "jenkins"),
expect_match(res$query$branch, "test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"),
expect_match(res$query$build, "1"),
expect_match(res$query$build_url, "http://test.com/tester/test")
)
)
})
test_that("it works with travis normal builds", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"TRAVIS" = "true",
"TRAVIS_PULL_REQUEST" = "false",
"TRAVIS_REPO_SLUG" = "tester/test",
"TRAVIS_BRANCH" = "master",
"TRAVIS_JOB_NUMBER" = "100",
"TRAVIS_JOB_ID" = "10",
"TRAVIS_COMMIT" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "travis"),
expect_match(res$query$branch, "master"),
expect_match(res$query$job, "10"),
expect_match(res$query$pr, ""),
expect_match(res$query$slug, "tester/test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"),
expect_match(res$query$build, "100")
)
)
})
test_that("it works with travis pull requests", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"TRAVIS" = "true",
"TRAVIS_PULL_REQUEST" = "5",
"TRAVIS_REPO_SLUG" = "tester/test",
"TRAVIS_BRANCH" = "master",
"TRAVIS_JOB_NUMBER" = "100",
"TRAVIS_JOB_ID" = "10",
"TRAVIS_COMMIT" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "travis"),
expect_match(res$query$branch, "master"),
expect_match(res$query$job, "10"),
expect_match(res$query$pr, "5"),
expect_match(res$query$slug, "tester/test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"),
expect_match(res$query$build, "100")
)
)
})
test_that("it works with codeship", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"CI_NAME" = "codeship",
"CI_BRANCH" = "master",
"CI_BUILD_NUMBER" = "5",
"CI_BUILD_URL" = "http://test.com/tester/test",
"CI_COMMIT_ID" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "codeship"),
expect_match(res$query$branch, "master"),
expect_match(res$query$build, "5"),
expect_match(res$query$build_url, "http://test.com/tester/test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
test_that("it works with circleci", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"CIRCLECI" = "true",
"CIRCLE_BRANCH" = "master",
"CIRCLE_BUILD_NUM" = "5",
"CIRCLE_PROJECT_USERNAME" = "tester",
"CIRCLE_PROJECT_REPONAME" = "test",
"CIRCLE_SHA1" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "circleci"),
expect_match(res$query$branch, "master"),
expect_match(res$query$build, "5"),
expect_match(res$query$owner, "tester"),
expect_match(res$query$repo, "test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
test_that("it works with semaphore", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"SEMAPHORE" = "true",
"BRANCH_NAME" = "master",
"SEMAPHORE_BUILD_NUMBER" = "5",
"SEMAPHORE_REPO_SLUG" = "tester/test",
"REVISION" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "semaphore"),
expect_match(res$query$branch, "master"),
expect_match(res$query$build, "5"),
expect_match(res$query$owner, "tester"),
expect_match(res$query$repo, "test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
test_that("it works with drone", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"DRONE" = "true",
"DRONE_BRANCH" = "master",
"DRONE_BUILD_NUMBER" = "5",
"DRONE_BUILD_URL" = "http://test.com/tester/test",
"DRONE_COMMIT" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "drone.io"),
expect_match(res$query$branch, "master"),
expect_match(res$query$build, "5"),
expect_match(res$query$build_url, "http://test.com/tester/test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
test_that("it works with AppVeyor", {
withr::with_envvar(c(
ci_vars,
"CI" = "True",
"APPVEYOR" = "True",
"APPVEYOR_REPO_NAME" = "testspace/test",
"APPVEYOR_REPO_BRANCH" = "master",
"APPVEYOR_ACCOUNT_NAME" = "testuser", # not necessarily the same as testspace above
"APPVEYOR_PROJECT_SLUG" = "test",
"APPVEYOR_BUILD_VERSION" = "1.0.5",
"APPVEYOR_JOB_ID" = "225apqggpmlkn5pr",
"APPVEYOR_REPO_COMMIT" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "appveyor"),
expect_match(res$query$branch, "master"),
expect_match(res$query$job, "testuser/test/1.0.5"),
expect_match(res$query$build, "225apqggpmlkn5pr"),
expect_match(res$query$slug, "testspace/test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
test_that("it works with Wercker", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"WERCKER_GIT_BRANCH" = "master",
"WERCKER_MAIN_PIPELINE_STARTED" = "5",
"WERCKER_GIT_OWNER" = "tester",
"WERCKER_GIT_REPOSITORY" = "test",
"WERCKER_GIT_COMMIT" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "wercker"),
expect_match(res$query$branch, "master"),
expect_match(res$query$build, "5"),
expect_match(res$query$owner, "tester"),
expect_match(res$query$repo, "test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
test_that("it works with GitLab", {
withr::with_envvar(c(
ci_vars,
"CI" = "true",
"CI_SERVER_NAME" = "GitLab CI",
"CI_BUILD_ID" = "5",
"CI_BUILD_REPO" = "https://gitlab.com/tester/test.git",
"CI_BUILD_REF_NAME" = "master",
"CI_BUILD_REF" = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
),
with_mock(
`httr::RETRY` = function(...) list(...),
`httr::content` = identity,
res <- codecov(coverage = cov),
expect_match(res$query$service, "gitlab"),
expect_match(res$query$branch, "master"),
expect_match(res$query$build, "5"),
expect_match(res$query$slug, "tester/test"),
expect_match(res$query$commit, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.