less can't handle coloring which spans newlines because of performance reasons. Thus, color each line of the check report by its own.
--- For reference, git had a similar problem and I talked to the less maintainer about the problem. Here is the resulting fix in git: http://repo.or.cz/w/git.git/commit/374664478f204ab45bbd494ab21492f331d8b1f0 --- lib/am/check.am | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/am/check.am b/lib/am/check.am index 97ecb68..63451b7 100644 --- a/lib/am/check.am +++ b/lib/am/check.am @@ -401,14 +401,15 @@ check-TESTS: $(TESTS) fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ + col="$$grn"; \ else \ - echo "$$red$$dashes"; \ + col="$$red"; \ fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi -- 1.7.5.517.g10515