diff --git a/R/po_update.R b/R/po_update.R index c9a0c9b..53b87cf 100644 --- a/R/po_update.R +++ b/R/po_update.R @@ -32,7 +32,14 @@ po_update <- function(dir = ".", lazy = TRUE, verbose = !is_testing()) { meta <- get_po_metadata(dir) if (lazy) { - meta <- meta[is_outdated(meta$pot, meta$po)] + is_old <- is_outdated(meta$pot, meta$po) + if (verbose) { + for (ii in which(!is_old)) { + row_ii <- meta[ii] + catf("Skipping '%s' %s translation (up-to-date)\n", row_ii$language, row_ii$type) + } + } + meta <- meta[is_old] } for (ii in seq_len(nrow(meta))) { diff --git a/tests/testthat/test-po_update.R b/tests/testthat/test-po_update.R index b897458..5fea810 100644 --- a/tests/testthat/test-po_update.R +++ b/tests/testthat/test-po_update.R @@ -26,3 +26,26 @@ test_that("user is told what's happening", { expect_false(file.exists(file.path(temp, "po/R-fr.po~"))) }) + +test_that("lazy=TRUE, verbose=TRUE skips up-to-date files and messages", { + temp <- local_test_package("R/test.r" = "message('Hello')") + withr::local_dir(temp) + + po_extract() + po_create("ja") + + # run once to make sure it's "up-to-date" + po_update() + + # Ensure mtime is different. + Sys.sleep(1.25) + + expect_silent( + po_update(lazy = TRUE, verbose = FALSE) + ) + expect_output( + po_update(lazy = TRUE, verbose = TRUE), + "Skipping 'ja' R translation (up-to-date)", + fixed = TRUE + ) +})