Running 'simpleTests.R' [172s]
Running the tests in 'tests/simpleTests.R' failed.
Complete output:
  > 
  > if (Sys.getenv("Run_RPushbullet_Tests")=="yes") {
  +     ## These simple tests rely on the existence of a config file with key and device info
  +     ## Otherwise we would have to hardcode a key and/or device id, and that is not something
  +     ## one should store in a code repository.
  +     ##
  +     ## I put a request in to the authors of Pushbullet to provide a "test id" key, and they
  +     ## are sympathetetic but do not have one implemented yet, and only suggested a woraround
  +     # of a 'throwaway' GMail id which I find unappealing.
  +     stopifnot(file.exists("~/.rpushbullet.json"))
  + 
  +     library(RPushbullet)
  + 
  +     ## As there is a file, check the package global environment 'pb' we create on startup
  +     RPushbullet:::.pkgenv[["pb"]]
  +     RPushbullet:::.pkgenv[["pb"]][["key"]]
  +     RPushbullet:::.pkgenv[["pb"]][["devices"]]
  + 
  +     ## As well as the options we create then too
  +     getOption("rpushbullet.key")
  +     getOption("rpushbullet.devices")
  + 
  +     ## Check the internal helper functions
  +     RPushbullet:::.getKey()
  +     RPushbullet:::.getDevices()
  + 
  +     ## Show the list of devices registered to the key
  +     #require(RJSONIO)
  +     require(jsonlite)
  +     str(pbGetDevices())
  + 
  +     ## Test destinations
  +     devices <- unlist(RPushbullet:::.getNames())
  +     email <- RPushbullet:::.getTestEmail()  ## or res$receiver_email?!?
  +     channel <- RPushbullet:::.getTestChannel()
  + 
  +     hasEmail <- (length(email) > 0L)
  +     hasDevices <- (length(devices) > 0L)
  +     hasChannel <- (length(channel) > 0L)
  + 
  +     ## Function to add incremental counts to titles
  +     count <- local({
  +         counter <- 0L
  +         function(msg=NULL) {
  +             if (identical(msg, FALSE)) return(counter)
  +             counter <<- counter + 1L
  +             if (identical(msg, TRUE)) return(counter)
  +             sprintf("%02d. %s", counter, msg)
  +         }
  +     })
  + 
  +     ## Function to create incremental counted dummy files
  +     testfile <- function(count=1L) {
  +         filename <- sprintf("test_file_for_post_%02d.txt", count)
  +         pathname <- file.path(tempdir(), filename)
  +         cat(filename, file=pathname)
  +         pathname
  +     }
  + 
  +     ## Post a note item
  +     title <- "A Simple Test"
  +     body <- "We think this should work.\nWe really do."
  +     res <- fromJSON(pbPost("note", count(title), body, debug=TRUE, verbose=TRUE)[[1]])
  + 
  +     str(res)
  +     ## storing this test result to allow us to use active user's email for testing below.
  + 
  +     ## Post a URL -- should open browser
  +     str(fromJSON(pbPost(type="link", title=count("Some title"), body="Some URL to click on",
  +                         url="https://cran.r-project.org/package=RPushbullet")[[1]]))
  + 
  +     #### Posting Files with different arguments ####
  + 
  +     ## Post a file with no recipients
  +     file <- testfile(count(TRUE))
  +     str(fromJSON(pbPost(type="file", url=file)[[1]]))
  + 
  +     if (hasDevices) {
  + 
  +         ## Post a file with numeric recipient
  +         file <- testfile(count(TRUE))
  +         str(fromJSON(pbPost(type="file", url=file, recipients = 1)[[1]]))
  + 
  +         ## Post a file with device name of recipient specified
  +         file <- testfile(count(TRUE))
  +         str(fromJSON(pbPost(type="file", url=file, recipients = devices)[[1]]))
  + 
  +         ## Post a file with an email recipient specified:
  +         file <- testfile(count(TRUE))
  +         str(fromJSON(pbPost(type="file", url=file,
  +                            email = res$receiver_email)[[1]]))
  + 
  +         ## Post file with both email and numeric recipient specified:
  +         file <- testfile(count(TRUE))
  +         str(fromJSON(pbPost(type="file", url=file,
  +                            recipients = devices[1],
  +                            email = res$receiver_email)[[1]]))
  +     } # end of if (hasDevices)
  + 
  + 
  +     if (Sys.getenv("Run_RPushbullet_Tests_All")=="yes" &&
  +         hasChannel && hasDevices && hasEmail) {
  +         ## Test hierarchy of arguments with channel specified:
  +         ## 1) All three should send to recipients.
  +         ## 2) Email and channel should send to email.
  +         ## 3) Recipients and channel should send to recipients
  +         ## 4) Only channel should send to channel.
  + 
  +         ## Post a note with recipients, email and channel specified.
  +         result <- fromJSON(pbPost(type="note", title=count(title), body=body,
  +                                   recipients = devices[1],
  +                                   email = email,
  +                                   channel = channel)[[1]])
  +         if (is.null(result$target_device_iden)) {
  +             warning("Test failed on note with recipient/email/channel.")
  +         }
  + 
  +         ## Post a note with email and channel specified.
  +         result <- fromJSON(pbPost(type="note", title=count(title), body=body,
  +                                   email = email,
  +                                   channel = channel)[[1]])
  +         if (is.null(result$receiver_email)) {
  +             warning("Test Failed on note with email/channel.")
  +         }
  + 
  +         ## Post a note with recipients and device and channel specified.
  +         result <- fromJSON(pbPost(type="note", title=count(title), body=body,
  +                                   recipients = devices[1],
  +                                   channel = channel)[[1]])
  +         if (is.null(result$target_device_iden)) {
  +             warning("Test Failed on note with recipient/channel.")
  +         }
  + 
  +         ## Post a note with only the channel specified.
  +         str(fromJSON(pbPost(type="note", title=count(title), body=body,
  +                             channel = channel,
  +                             verbose=TRUE)[[1]]))
  +         ## Returns empty list, but posts successfully.
  +         ## API seems to return empty JSON. (tested curl command)
  + 
  +     } # if ('runAll' && hasChannel && hasDevices && hasEmail)
  + 
  +     if (Sys.getenv("Run_RPushbullet_Tests_All")=="yes") {
  +         ## real channel bad token
  +         if (hasChannel) {
  +             err <- try(pbPost(type="note", title=count(title), body=body,
  +                               channel = channel, apikey = "0123456789",
  +                               verbose=TRUE))
  +             if (inherits(err, "try-error")) warning("Expected failure on fake apikey.")
  +             if (!(grepl("401:",err[1]))) warning("Test Failed. Expected error code 401")
  +         }
  + 
  +         ## fake channel
  +         err <- try(pbPost(type="note", title=count(title), body=body,
  +                           channel = "0123456789-9876543210-{}",
  +                           verbose=TRUE))
  +         if (inherits(err, "try-error")) warning("Expected failure on non-existing channel")
  +         if (!(grepl("400:",err[1]))) warning("Test Failed. Expected error code 400")
  +     }
  + 
  +     ## basic device info
  +     devs <- pbGetDevices()
  +     print(devs)
  +     summary(devs)
  + 
  +     ## basic channel info
  +     res <- pbGetChannelInfo("xkcd", TRUE)
  +     print(res)
  +     summary(res)
  + 
  +     ## basic user info
  +     usr <- pbGetUser()
  +     print(usr)
  +     summary(usr)
  + 
  +     ## basic validity
  +     RPushbullet:::.isValidKey(RPushbullet:::.getKey())
  +     RPushbullet:::.isValidDevice(devs$devices[1, "iden"], RPushbullet:::.getKey())
  +     RPushbullet:::.isValidChannel("xkcd")
  + 
  +     jsonfile <- tempfile(pattern="pb", fileext=".json")
  +     pbSetup(RPushbullet:::.getKey(), jsonfile, 0)
  +     pbValidateConf(jsonfile)
  + 
  +     ## Post closing note
  +     title <- count(sprintf("Test of RPushbullet %s completed", packageVersion("RPushbullet")))
  +     body <- sprintf("In total %d posts were made including this one", count(FALSE))
  +     res <- fromJSON(pbPost("note", title, body)[[1]])
  +     str(res)
  + 
  + 
  +     ## Return code checking -- from an earlier draft of #64 but without imposing new depends
  +     ## Full credit to Thomas Shafer for the test logic.
  +     ## No credit though for insisting on a unit test framework.
  + 
  +     ## Tests for init.checkReturnCode
  +     fakeRes <- function(status_code = 200, message = "") {
  +         res <- list(
  +             status_code = status_code,
  +             content = charToRaw(message)
  +         )
  +         return(res)
  +     }
  +     .checkReturnCode <- RPushbullet:::.checkReturnCode
  + 
  +     ## .checkReturnCode does not warn and returns null for 200 response"
  +     res <- fakeRes()
  +     actual <- suppressWarnings(.checkReturnCode(res))
  +     stopifnot(is.null(actual))
  + 
  + 
  +     ## .checkReturnCode warns and returns null for 400 response"
  +     res <- fakeRes(status_code = 400)
  +     actual <- suppressWarnings(.checkReturnCode(res), "Bad Request - Usually")
  +     stopifnot(is.null(actual))
  + 
  +     ## .checkReturnCode warns and returns null for 400 response with content"
  +     res <- fakeRes(status_code = 400, message = "test content")
  +     actual <- suppressWarnings(.checkReturnCode(res), "test content")
  +     stopifnot(is.null(actual))
  + 
  + }
  > 
  > proc.time()
     user  system elapsed 
     0.20    0.07    0.26