tests/testthat/test-basic.R

# tests/testthat/test-basic.R

library(Capsule)


test_that("capture_session works", {
  skip_on_cran()

  # Capture session without saving
  session_info <- capture_session()

  expect_type(session_info, "list")
  expect_true("timestamp" %in% names(session_info))
  expect_true("r_version" %in% names(session_info))
  expect_true("platform" %in% names(session_info))
})

test_that("set_seed tracks seeds", {
  skip_on_cran()

  temp_dir <- tempdir()
  registry_file <- file.path(temp_dir, "seed_registry.json")

  # Set and track seed
  returned_seed <- set_seed(
    seed = 12345,
    analysis_name = "test_analysis",
    registry_file = registry_file
  )

  expect_equal(returned_seed, 12345)
  expect_true(file.exists(registry_file))

  # Clean up
  unlink(registry_file)
})

test_that("track_params stores parameters", {
  skip_on_cran()

  temp_dir <- tempdir()
  registry_file <- file.path(temp_dir, "param_registry.json")

  params <- list(
    alpha = 0.05,
    beta = 0.1,
    method = "test"
  )

  result <- track_params(
    params = params,
    analysis_name = "test_params",
    registry_file = registry_file
  )

  expect_type(result, "list")
  expect_true(file.exists(registry_file))

  # Clean up
  unlink(registry_file)
})

test_that("track_data creates checksums", {
  skip_on_cran()

  temp_dir <- tempdir()
  test_file <- file.path(temp_dir, "test_data.csv")
  registry_file <- file.path(temp_dir, "data_registry.json")

  # Create test file
  write.csv(data.frame(x = 1:10, y = 11:20), test_file, row.names = FALSE)

  # Track it
  result <- track_data(
    data_path = test_file,
    source = "generated",
    registry_file = registry_file
  )

  expect_type(result, "list")
  # Updated to check for new field name
  expect_true("checksum" %in% names(result))
  expect_true("checksum_algorithm" %in% names(result))
  expect_true(file.exists(registry_file))

  # Clean up
  unlink(test_file)
  unlink(registry_file)
})

test_that("verify_data detects changes", {
  skip_on_cran()

  temp_dir <- tempdir()
  test_file <- file.path(temp_dir, "test_verify.csv")
  registry_file <- file.path(temp_dir, "verify_registry.json")

  # Create and track file
  write.csv(data.frame(x = 1:10), test_file, row.names = FALSE)
  track_data(test_file, source = "generated", registry_file = registry_file)

  # Verify unchanged
  result1 <- verify_data(test_file, registry_file = registry_file)
  expect_true(result1)

  # Modify file
  write.csv(data.frame(x = 1:20), test_file, row.names = FALSE)

  # Verify should fail
  result2 <- verify_data(test_file, registry_file = registry_file)
  expect_false(result2)

  # Clean up
  unlink(test_file)
  unlink(registry_file)
})

Try the Capsule package in your browser

Any scripts or data that you put into this service are public.

Capsule documentation built on Nov. 11, 2025, 5:14 p.m.