fix(ci): do not print a missing timing as "NAs" (#210)
All checks were successful
ci/crow/manual/reindex/17 Pipeline was successful
ci/crow/manual/reindex/7 Pipeline was successful
ci/crow/cron/process-updates/10 Pipeline was successful
ci/crow/cron/process-updates/13 Pipeline was successful
ci/crow/cron/process-updates/3 Pipeline was successful
ci/crow/cron/process-updates/4 Pipeline was successful
ci/crow/cron/process-updates/14 Pipeline was successful
ci/crow/cron/process-updates/15 Pipeline was successful
ci/crow/manual/repair-unsafe-flat-objects/8 Pipeline was successful
ci/crow/manual/reindex/8 Pipeline was successful
ci/crow/cron/process-updates/16 Pipeline was successful
ci/crow/cron/process-updates/11 Pipeline was successful
ci/crow/cron/process-updates/18 Pipeline was successful

## Why

A `MISSING_FROM_INDEX` row has no install to time, and `sprintf("%.1fs", NA_real_)` renders it as the literal `NAs`:

```
ROW  arch  amd64  alpine323  4.5  Rcpp  MISSING_FROM_INDEX  |NAs
```

Read quickly, `NAs` looks like a unit rather than a missing measurement.

## What changed

Rows without a timing print the `built` field alone. Every other row is unchanged.

## Where it showed up

Pipeline 12492, the deliberate failure-path check against a slot known to have gaps. That run is otherwise a good result: it caught `Rcpp` missing from the alpine323 4.5 and 4.6 indexes on both contractual URL forms, and it caught the reverse-direction ABI break on the flat slot (objects built under R 4.5.3 failing `dyn.load()` under 4.4), which no previous reprex had surfaced.

Reviewed-on: #210
This commit is contained in:
Patrick Schratz 2026-09-09 15:01:29 +00:00 • committed by Patrick Schratz
commit 03e007069a

View file

@ -96,7 +96,10 @@ emit <- function(package, status, built = "", secs = NA_real_) {
r_minor,
package,
status,
sprintf("%s|%.1fs", built, secs)
# `%.1f` renders NA as the literal "NAs", which reads as a unit rather
# than as a missing measurement. A package that was never in the index
# has no timing at all.
if (is.na(secs)) built else sprintf("%s|%.1fs", built, secs)
)
)
}