about summary refs log tree commit diff
path: root/mk
diff options
context:
space:
mode:
authorDan Peebles <pumpkin@me.com>2017-10-03T04·54-0400
committerDan Peebles <pumpkin@me.com>2017-10-03T04·59-0400
commit60ecbd793457d0951273ff35df90aaeb950188c0 (patch)
tree3f026594fc0a5d95071d0f8c0ebe17c95313f78b /mk
parentf3e0d468218994343d0e595a50304cc122ad1406 (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? :)
Diffstat (limited to 'mk')
-rw-r--r--mk/tests.mk30
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