test_that("we can hash packages containing multiple packages in LinkingTo", {
  skip_on_cran()

  path <- system.file("DESCRIPTION", package = "Rclusterpp")
  if (file.exists(path)) {
    hash(path)
  }
})

test_that("hash function is available and has expected arguments", {
  skip_on_cran()

  # This test is a canary that you may be breaking compatibility with Connect,
  # which expects this non-exported function to be present. That's not to say
  # the function signature can't be changed, only that the relevant call in
  # Connect's packrat_restore.R should be studied to avoid any breakage.


  expect_identical(
    formals(hash),
    pairlist(
      path = quote(expr =), # nolint: infix_spaces_linter. r-lib/lintr#1889
      descLookup = as.name("installedDescLookup")
      )
  )

})

test_that("hash treats some RemoteType values as CRAN", {
  # DESCRIPTION as created by install.packages
  simpleDescription <- tempfile()
  on.exit(unlink(simpleDescription), add = TRUE)
  writeLines(c(
    "Package: dummy",
    "Version: 1.0.0"
  ), simpleDescription)
  simpleHash <- hash(simpleDescription)

  cranDescription <- tempfile()
  on.exit(unlink(cranDescription), add = TRUE)
  writeLines(c(
    "Package: dummy",
    "Version: 1.0.0",
    "RemoteType: cran"
  ), cranDescription)
  cranHash <- hash(cranDescription)
  expect_equal(cranHash, simpleHash)

  standardDescription <- tempfile()
  on.exit(unlink(standardDescription), add = TRUE)
  writeLines(c(
    "Package: dummy",
    "Version: 1.0.0",
    "RemoteType: standard"
  ), standardDescription)
  standardHash <- hash(standardDescription)
  expect_equal(standardHash, simpleHash)

  urlDescription <- tempfile()
  on.exit(unlink(urlDescription), add = TRUE)
  writeLines(c(
    "Package: dummy",
    "Version: 1.0.0",
    "RemoteType: url",
    "RemoteUrl: https://cran.rstudio.com//src/contrib/Archive/dummy/dummy_1.1.0.tar.gz"
  ), urlDescription)
  urlHash <- hash(urlDescription)
  expect_equal(urlHash, simpleHash)
})
