Nothing
test_that("rhub_doctor", {
withr::local_options(cli.ansi = FALSE)
# we do this here, so the web server process starts witg the same
# working directory as the tests
http$url()
# we need to do this because we are wrapping text and also using
# `transform` in `export_snapshot()`.
withr::local_options(cli.width = Inf)
# Do everything in a temporary package
tmp <- tempfile()
on.exit(unlink(tmp, recursive = TRUE), add = TRUE)
dir.create(tmp)
file.copy(test_path("fixtures/pkg"), tmp, recursive = TRUE)
pkg <- file.path(tmp, "pkg")
withr::local_dir(pkg)
# must be a git repo as well
dir.create(".git")
withr::local_envvar(RHUB_WORKFLOW_URL = http$url("/rhub.yaml"))
expect_snapshot({
rhub_setup()
}, transform = redact_abs_path)
mockery::stub(rhub_doctor, "doctor_find_gh_url", "https://github.com/r-lib/ps")
mockery::stub(rhub_doctor, "doctor_find_pat", "secret")
mockery::stub(rhub_doctor, "doctor_async_gql", list())
mockery::stub(rhub_doctor, "doctor_async_rest", list())
mockery::stub(rhub_doctor, "doctor_check_github", NULL)
mockery::stub(rhub_doctor, "doctor_check_pat_scopes", NULL)
mockery::stub(rhub_doctor, "doctor_check_workflow", NULL)
expect_snapshot({
rhub_doctor()
}, transform = redact_abs_path)
})
test_that("doctor_find_gh_url", {
# error
mockery::stub(
doctor_find_gh_url,
"gert::git_info",
list(remote = NA_character_)
)
expect_snapshot(error = TRUE, {
doctor_find_gh_url(".")
})
# success
mockery::stub(
doctor_find_gh_url,
"gert::git_info",
list(remote = "origin")
)
mockery::stub(
doctor_find_gh_url,
"gert::git_remote_info",
list(url = "https://github.com/blahblah")
)
expect_equal(doctor_find_gh_url("."), "https://github.com/blahblah")
})
test_that("doctor_find_pat", {
withr::local_options(cli.ansi = FALSE)
# no git
mockery::stub(
doctor_find_pat,
"gitcreds::gitcreds_get",
function(...) {
throw(pkg_error("oops", .class = "gitcreds_nogit_error"))
}
)
expect_snapshot(error = TRUE, {
doctor_find_pat("https://github.com")
})
# no credentials
mockery::stub(
doctor_find_pat,
"gitcreds::gitcreds_get",
function(...) {
throw(pkg_error("oops", .class = "gitcreds_no_credentials"))
}
)
expect_snapshot(error = TRUE, {
doctor_find_pat("https://github.com")
})
# other error
mockery::stub(
doctor_find_pat,
"gitcreds::gitcreds_get",
function(...) {
throw(pkg_error("oops"))
}
)
expect_snapshot(error = TRUE, {
doctor_find_pat("https://github.com")
})
# ok
mockery::stub(
doctor_find_pat,
"gitcreds::gitcreds_get",
list(password = "secret")
)
expect_snapshot({
doctor_find_pat("https://github.com")
})
})
test_that("doctor_check_github", {
withr::local_options(cli.ansi = FALSE)
# ok
resp <- list(headers = list("x-ratelimit-limit" = 10000))
expect_snapshot({
doctor_check_github("https://github.com/r-lib/ps", resp)
})
# not ok
resp2 <- list(headers = list())
expect_snapshot(error = TRUE, {
doctor_check_github("https://github.com/r-lib/ps", resp2)
})
})
test_that("doctor_check_pat_scopes", {
withr::local_options(cli.ansi = FALSE)
# no pat?
resp <- list(headers = list())
expect_snapshot(error = TRUE, {
doctor_check_pat_scopes(resp)
})
# bad scopes
resp2 <- list(headers = list("x-oauth-scopes" = "foo, bar"))
expect_snapshot(error = TRUE, {
doctor_check_pat_scopes(resp2)
})
# ok
resp3 <- list(headers = list("x-oauth-scopes" = "foo, repo, bar"))
expect_snapshot({
doctor_check_pat_scopes(resp3)
})
})
test_that("doctor_check_workflow", {
withr::local_options(cli.ansi = FALSE)
url <- "https://github.com/r-lib/ps"
# no workflow
expect_snapshot(error = TRUE, {
doctor_check_workflow(url, list(), list())
})
# no workflow, forked
expect_snapshot(error = TRUE, {
doctor_check_workflow(url, list(is_forked = TRUE), list())
})
# not active
expect_snapshot(error = TRUE, {
doctor_check_workflow(
url,
list(workflow = "ok"),
list(workflow = list(state = "bad"))
)
})
# ok
expect_snapshot({
doctor_check_workflow(
url,
list(workflow = "ok"),
list(workflow = list(state = "active"))
)
})
})
test_that("doctor_async_gql", {
resp <- readRDS(test_path("fixtures/gh-response-doctor-gql.rds"))
mockery::stub(
doctor_async_gql,
"async_gh_gql_get",
function(...) async_constant(resp)
)
expect_snapshot({
synchronise(doctor_async_gql("https://github.com/r-lib/ps", "secret"))
})
})
test_that("doctor_async_rest", {
resp <- readRDS(test_path("fixtures/gh-response-doctor-rest.rds"))
mockery::stub(
doctor_async_rest,
"async_gh_rest_get",
function(...) async_constant(resp)
)
expect_snapshot({
synchronise(doctor_async_rest("https://github.com/r-lib/ps", "secret"))
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.