O motivo set -e
não sai imediatamente se ./run-test.sh
falhar porque as linhas:
for l in sh rb py php java cs; do
(cd $l; ./run-tests.sh)
done
para uma declaração composta. O status dessa declaração composta é o status da última execução de ./run-tests.sh
.
Seu trabalho parece bom para mim.