                              when (eql (mod i shard-count) shard-index)
                              collect test))
         (or tests (message "Empty shard with index %d" shard-index)))
-      (elisp/ert/log--message "Running %d tests" (length tests))
+      (message "Running %d tests" (length tests))
       (dolist (test tests)
-        (elisp/ert/log--message "Running test %s" (ert-test-name test))
+        (message "Running test %s" (ert-test-name test))
         (let* ((name (ert-test-name test))
                (start-time (current-time))
                (result (ert-run-test test))

      (insert (format "LH:%d\nLF:%d\nend_of_record\n"
                      lines-hit (hash-table-count lines))))))

(defun elisp/ert/log--message (format &rest args)
  "Like ‘(message FORMAT ARGS…)’, but also print a timestamp."
  (cl-check-type format string)
  (message "[%s] %s"
           (format-time-string "%F %T.%3N")
           (apply #'format-message format args)))

(defun elisp/ert/log--error (test message)
  "Log an error for TEST.
TEST should be an ERT test symbol.  MESSAGE is the error message.

                            (status . ,status))
                           ,@report)
                test-reports)))
      (message "Running %d tests finished, %d results unexpected"
               (length tests) unexpected)
      (unless (member report-file '(nil ""))
        (with-temp-buffer
          ;; The expected format of the XML output file isn’t well-documented.
