diff --git a/modules/lang/go/autoload.el b/modules/lang/go/autoload.el new file mode 100644 index 000000000..3826ff7f5 --- /dev/null +++ b/modules/lang/go/autoload.el @@ -0,0 +1,35 @@ +;;; lang/go/autoload.el + +(defvar +go-test-last nil + "The last test run.") + +(defun +go--run-tests (args) + (save-selected-window + (async-shell-command (concat "go test " args)))) + +;;;###autoload +(defun +go/test-rerun () + (interactive) + (if +go-test-last + (funcall +go-test-last) + (+go/run-all-tests))) + +;;;###autoload +(defun +go/test-all () + (interactive) + (+go--run-tests "")) + +;;;###autoload +(defun +go/test-nested () + (interactive) + (+go--run-tests "./...")) + +;;;###autoload +(defun +go/test-single () + (interactive) + (if (string-match "_test\\.go" buffer-file-name) + (save-excursion + (re-search-backward "^func[ ]+\\(([[:alnum:]]*?[ ]?[*]?[[:alnum:]]+)[ ]+\\)?\\(Test[[:alnum:]_]+\\)(.*)") + (+go--run-tests (concat "-run" "='" (match-string-no-properties 2) "'"))) + (error "Must be in a _test.go file"))) +