
test_that("say_out", {
  px <- asNamespace("processx")$get_tool("px")
  tmp <- tempfile("cli-test-")
  on.exit(unlink(tmp), add = TRUE)
  withr::local_options(
    cli.progress_say_command = px,
    cli.progress_say_args = c("writefile", tmp)
  )
  p <- say_out(" 70%")
  expect_s3_class(p, "process")
  p$wait(3000)
  expect_false(p$is_alive())
  p$kill()
  expect_equal(readLines(tmp, warn = FALSE), " 70%")
})

test_that("say_update", {
  withr::local_options(cli.progress_say_frequency = 1e-9)
  mockery::stub(say_update, "say_out", function(text) text)
  bar <- new.env(parent = emptyenv())
  bar$current <- 10
  bar$total <- NA
  say_update(bar)
  expect_equal(bar$say_proc, 10)

  bar$total <- 50
  say_update(bar)
  expect_equal(bar$say_proc, " 20%")
})
