diff --git a/bin/doom b/bin/doom index 2bbfc13c7..e731f621b 100755 --- a/bin/doom +++ b/bin/doom @@ -7,6 +7,7 @@ ":"; [ "$1" = -d ] || [ "$1" = --debug ] && { shift; export DEBUG=1; } ":"; [ "$1" = doc ] || [ "$1" = doctor ] && { cd "$DOOMBASE"; shift; exec $EMACS --script bin/doom-doctor "$@"; exit 0; } ":"; [ "$1" = run ] && { cd "$DOOMBASE"; shift; exec $EMACS -q --no-splash -l bin/doom "$@"; exit 0; } +":"; [ "$1" = test ] && { cd "$DOOMBASE"; shift; exec bin/doom-test "$@"; } ":"; exec $EMACS --script "$0" -- "$@" ":"; exit 0 diff --git a/bin/doom-test b/bin/doom-test new file mode 100755 index 000000000..63c205a43 --- /dev/null +++ b/bin/doom-test @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Set up test config +export DOOMDIR=/tmp/doom/ +export DOOMLOCALDIR=/tmp/doom/.local/ +if [[ ! -d "$DOOMDIR" ]]; then + mkdir -p "$DOOMDIR" + ln -s ~/.emacs.d/init.test.el "$DOOMDIR"/init.el +fi + +# Set up testing library +BUTTERCUPLIB="${DOOMLOCALDIR}buttercup" +EMACSBIN="emacs --batch -l ~/.emacs.d/init.el -L $BUTTERCUPLIB -l buttercup" +if [[ ! -d "$BUTTERCUPLIB" ]]; then + git clone https://github.com/jorgenschaefer/emacs-buttercup "$BUTTERCUPLIB" +fi + +# Run the tests +if [[ ! -f $DOOMLOCALDIR/init || $1 == "-f" ]]; then + doom -y refresh + echo 1 > $DOOMLOCALDIR/init +fi +echo +echo +error= +args=( $@ ) +(( $# == 0 )) && args=( core modules/*/* ) +for base in $args; do + if [[ -d "$base/test" ]]; then + echo Running $base + $EMACSBIN -f doom-run-tests "$base" || error=1 + fi +done + +[[ $error ]] && exit 1