
fixtures <- list(

  "resolution-simple.rds" = function() {
    r <- pkg_plan$new("pkgconfig", lib = tempfile())
    r$resolve()
  },

  "resolution-progress.rds" = function() {
    r <- pkg_plan$new("progress", lib = tempfile())
    r$resolve()
  },

  "resolution-installed.rds" = function() {
    dir.create(tmp <- tempfile())
    on.exit(unlink(tmp, recursive = TRUE), add = TRUE)
    install.packages("pkgconfig", lib = tmp)
    r <- pkg_plan$new("pkgconfig", library = tmp)
    r$resolve()
  },

  "resolution-gh-vs-cran.rds" = function() {
    dir.create(tmp <- tempfile())
    on.exit(unlink(tmp, recursive = TRUE), add = TRUE)
    r <- pkg_plan$new(
      c("cran::pkgconfig", "github::r-lib/pkgconfig"),
      lib = tmp)
    r$resolve()
  },

  "solution-crayon.rds" = function() {
    dir.create(tmp <- tempfile())
    on.exit(unlink(tmp, recursive = TRUE), add = TRUE)
    r <- pkg_plan$new("crayon", lib = tempfile())
    r$resolve()
    r$solve()
  },

  "solution-igraph.rds" = function() {
    dir.create(tmp <- tempfile())
    on.exit(unlink(tmp, recursive = TRUE), add = TRUE)
    r <- pkg_plan$new("igraph", lib = tempfile())
    r$resolve()
    r$solve()
  }
)

fixture_dir <- function() {
  testthat::test_path("fixtures")
}

get_fixture <- function(file) {
  file.path(fixture_dir(), file)
}

read_fixture <- function(file) {
  readRDS(get_fixture(file))
}

update_fixtures <- function(files = NULL) {
  if (is.null(files)) files <- names(fixtures)
  fdir <- fixture_dir()
  for (f in files) {
    output <- file.path(fdir, f)
    cat(output, sep = "\n")
    saveRDS(fixtures[[f]](), file = output, version = 2)
  }
}
