diff options
author | Dan Peebles <pumpkin@me.com> | 2017-10-03T04·54-0400 |
---|---|---|
committer | Dan Peebles <pumpkin@me.com> | 2017-10-03T04·59-0400 |
commit | 60ecbd793457d0951273ff35df90aaeb950188c0 (patch) | |
tree | 3f026594fc0a5d95071d0f8c0ebe17c95313f78b | |
parent | f3e0d468218994343d0e595a50304cc122ad1406 (diff) |
More elegant test output
I got sick of trying to find the failures in the sea of debug output, so we now: - Hide test output unless it fails - Sprinkle in some simple color - Pad results for a more tabular look If Nix is getting a more friendly user interface, we might as well get a friendlier developer interface, right? :)
-rw-r--r-- | mk/tests.mk | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/mk/tests.mk b/mk/tests.mk index 004a48028616..aa97d6427ccc 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -7,20 +7,38 @@ define run-install-test endef +# Color code from https://unix.stackexchange.com/a/10065 installcheck: - @total=0; failed=0; for i in $(_installcheck-list); do \ + @total=0; failed=0; \ + pad=" "; \ + red=""; \ + green=""; \ + normal=""; \ + if [ -t 1 ]; then \ + ncolors="$$(tput colors)"; \ + if [[ -n "$$ncolors" && $$ncolors -ge 8 ]]; then \ + red="$$(tput setaf 1)"; \ + green="$$(tput setaf 2)"; \ + normal="$$(tput sgr0)"; \ + fi; \ + fi; \ + for i in $(_installcheck-list); do \ total=$$((total + 1)); \ - echo "running test $$i"; \ - if (cd $$(dirname $$i) && $(tests-environment) $$(basename $$i)); then \ - echo "PASS: $$i"; \ + printf "running test $$i... $${pad:$${#i}}"; \ + log="$$(cd $$(dirname $$i) && $(tests-environment) $$(basename $$i) 2>&1)"; \ + if [ $$? == 0 ]; then \ + echo "[$${green}PASS$$normal]"; \ else \ - echo "FAIL: $$i"; \ + echo "[$${red}FAIL$$normal]"; \ + echo "$$log" | sed 's/^/ /'; \ failed=$$((failed + 1)); \ fi; \ done; \ if [ "$$failed" != 0 ]; then \ - echo "$$failed out of $$total tests failed "; \ + echo "$${red}$$failed out of $$total tests failed $$normal"; \ exit 1; \ + else \ + echo "$${green}All tests succeeded"; \ fi .PHONY: check installcheck |