test_that("make_bar", {
chars <- withr::with_options(list(cli.unicode = FALSE), progress_chars())
lapply(
seq(0, 1, by = 0.2),
function(p) {
expect_equal(nchar(cli::ansi_strip(make_bar(chars, p, 10))), 10)
}
)
})
test_that("initial state", {
local_cli_config()
# num = 0, nch = 0, cbt = 0
# no downloads are needed, all installed
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"installed", 10000, "foo", NA_character_,
"installed", 10000, "foo2", "miss",
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num = 0, nch = 1, cbt > 0
# no downloads needed, all cached or installed
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "hit",
"installed", 10000, "foo2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num = 0, nch = 1, cbt > 0
# no downloads needed, but cached size known
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "hit",
"cran", 10000, "foo2", "hit",
"installed", 10000, "foo3", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num = 0, nch = 1, cbt = 0
# no downloads needed, cached size unknown
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", NA_integer_, "foo", "hit",
"installed", 10000, "foo2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts > 0, unk = 0, nch = 0, cbt = 0
# nothing is cached, sizes known
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"cran", 20000, "bar", "miss"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts > 0, unk = 0, nch = 1, cbt = 0
# 1 package cached, 2 downloaded, cached size unknown
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"cran", 20000, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", NA_integer_, "bar2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts > 0, unk = 0, nch = 1, cbt > 0
# 1 package cached, 2 downloaded, cached size known
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"cran", 20000, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", 20000, "bar2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts > 0, unk > 0, nch = 0, cbt = 0
# downloads with unknown sizes
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 20000, "foo", "miss",
"cran", NA_integer_, "bar", "miss",
"installed", 10000, "foo2", NA_character_
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts > 0, unk > 0, nch = 1, cbt > 0
# downloads with known & unknown sizes, 1 cached with known size
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"cran", NA_integer_, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", 30000, "bar2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts > 0, unk > 0, nch = 1, cbt = 0
# downloads with known sizes, 1 cached with unknown size
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"cran", NA_integer_, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", NA_integer_, "bar2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts = 0, unk > 0, nch = 0, cbt = 0
# downloads with only unknown sizes, nothing cached
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", NA_integer_, "foo", "miss",
"cran", NA_integer_, "bar", "miss",
"installed", 10000, "foo2", NA_character_
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts = 0, unk > 0, nch = 1, cbt = 0
# downloads with unknown sizes, 1 cached with unknown size
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", NA_integer_, "foo", "miss",
"cran", NA_integer_, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", NA_integer_, "bar2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
# num > 0, bts = 0, unk > 0, nch = 1, cbt > 0
# downloads with unknown sizes, 1 cached
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", NA_integer_, "foo", "miss",
"cran", NA_integer_, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", 30000, "bar2", "hit"
)
expect_snapshot(invisible(
pkgplan__create_progress_bar(what)
))
})
test_that("data updates", {
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"installed", 10000, "foo2", "miss", # no download, installed
"cran", 20000, "bar", "hit", # no download, cached
"cran", 20000, "bar2", "miss"
)
expect_snapshot({
bar <- pkgplan__create_progress_bar(what = what)
pkgplan__update_progress_bar(bar, 1L, "data", list(current = 5000, total = 10000))
pkgplan__update_progress_bar(bar, 4L, "data", list(current = 20000, total = 20000))
pkgplan__done_progress_bar(bar)
bar$what
})
})
test_that("all finish messages for updates", {
do <- function(idx, event = "done", download_status = "Got",
make_tempfile = TRUE) {
bar <- pkgplan__create_progress_bar(what = what)
tmp <- tempfile()
if (make_tempfile) {
writeBin(raw(7), tmp)
on.exit(unlink(tmp), add = TRUE)
}
pkgplan__update_progress_bar(
bar, idx, event,
list(
download_status = download_status,
package = "foo",
platform = "source",
version = "1.0.0",
fulltarget = tmp,
fulltarget_tree = tempfile()
)
)
pkgplan__done_progress_bar(bar)
bar$what
}
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"installed", 10000, "foo2", "miss", # no download, installed
"cran", 20000, "bar", "hit", # no download, cached
"cran", 20000, "bar2", "miss"
)
expect_snapshot(do(1L))
expect_snapshot(do(1L, make_tempfile = FALSE))
expect_snapshot(do(1L, event = "error"))
})
test_that("rate", {
now <- Sys.time()
chunks <- as.environment(list(
"0" = 1000,
"1" = 2000,
"2" = 0,
"3" = 400,
"4" = 100,
"5" = 200
))
r <- calculate_rate(now - 5.5, now, chunks)
expect_equal(r, list(rate = 200, rstr = "0.2 kB/s"))
})
test_that("eta", {
expect_equal(
calculate_eta(100, 50, 0),
list(etas = NA, estr = "??s ")
)
expect_equal(
calculate_eta(100, 50, 10),
list(etas = as.difftime(5, units = "secs"), estr = "~5s ")
)
})
test_that("parts are calculated properly", {
local_cli_config()
what <- tibble::tribble(
~type, ~filesize, ~package, ~cache_status,
"cran", 10000, "foo", "miss",
"cran", 20000, "bar", "miss",
"installed", 10000, "foo2", NA_character_,
"cran", 20000, "bar2", "hit"
)
expect_snapshot(
bar <- pkgplan__create_progress_bar(what)
)
parts <- calculate_progress_parts(bar)
expect_equal(parts$pkg_done, "0")
expect_equal(parts$pkg_total, "2")
expect_equal(parts$percent, " 0%")
expect_match(parts$rate, "^\\s+$")
expect_equal(parts$msg, "Connecting...")
expect_match(cli::ansi_strip(parts$line), "^[(][\\s\u00a0]+[)]$", perl = TRUE)
expect_equal(parts$eta, "??s ")
})
test_that("parts if file size is unknown", {
# TODO
expect_true(TRUE)
})
test_that("status bar is cleaned up on interrupt / error", {
# TODO
expect_true(TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.