3661
def should_only_run_tests():
3661
def parse_test_args():
3662
# type: () -> argparse.Namespace
3662
3663
parser = argparse.ArgumentParser(add_help=False)
3663
3664
parser.add_argument("--check", action="store_true")
3665
parser.add_argument("--prefix", )
3664
3666
args, unknown_args = parser.parse_known_args()
3665
run_tests = args.check
3667
# Remove --check argument from sys.argv
3668
# Remove test options from sys.argv
3668
3669
sys.argv[1:] = unknown_args
3671
3672
# Add all tests from doctest strings
3672
3673
def load_tests(loader, tests, none):
3677
3678
if __name__ == "__main__":
3679
options = parse_test_args()
3679
if should_only_run_tests():
3680
# Call using ./mandos --check [--verbose]
3682
extra_test_prefix = options.prefix
3683
if extra_test_prefix is not None:
3684
if not (unittest.main(argv=[""], exit=False)
3685
.result.wasSuccessful()):
3687
class ExtraTestLoader(unittest.TestLoader):
3688
testMethodPrefix = extra_test_prefix
3689
# Call using ./scriptname --test [--verbose]
3690
unittest.main(argv=[""], testLoader=ExtraTestLoader())
3692
unittest.main(argv=[""])
3685
3696
logging.shutdown()
3700
# (lambda (&optional extra)
3701
# (if (not (funcall run-tests-in-test-buffer default-directory
3703
# (funcall show-test-buffer-in-test-window)
3704
# (funcall remove-test-window)
3705
# (if extra (message "Extra tests run successfully!"))))
3706
# run-tests-in-test-buffer:
3707
# (lambda (dir &optional extra)
3708
# (with-current-buffer (get-buffer-create "*Test*")
3709
# (setq buffer-read-only nil
3710
# default-directory dir)
3712
# (compilation-mode))
3713
# (let ((inhibit-read-only t))
3714
# (= (process-file-shell-command
3715
# (funcall get-command-line extra)
3716
# nil "*Test*") 0)))
3718
# (lambda (&optional extra)
3719
# (let ((quoted-script
3720
# (shell-quote-argument (funcall get-script-name))))
3722
# (concat "%s --check" (if extra " --prefix=atest" ""))
3726
# (if (fboundp 'file-local-name)
3727
# (file-local-name (buffer-file-name))
3728
# (or (file-remote-p (buffer-file-name) 'localname)
3729
# (buffer-file-name))))
3730
# remove-test-window:
3732
# (let ((test-window (get-buffer-window "*Test*")))
3733
# (if test-window (delete-window test-window))))
3734
# show-test-buffer-in-test-window:
3736
# (when (not (get-buffer-window-list "*Test*"))
3737
# (setq next-error-last-buffer (get-buffer "*Test*"))
3738
# (let* ((side (if (>= (window-width) 146) 'right 'bottom))
3739
# (display-buffer-overriding-action
3740
# `((display-buffer-in-side-window) (side . ,side)
3741
# (window-height . fit-window-to-buffer)
3742
# (window-width . fit-window-to-buffer))))
3743
# (display-buffer "*Test*"))))
3746
# (let* ((run-extra-tests (lambda () (interactive)
3747
# (funcall run-tests t)))
3748
# (inner-keymap `(keymap (116 . ,run-extra-tests))) ; t
3749
# (outer-keymap `(keymap (3 . ,inner-keymap)))) ; C-c
3750
# (setq minor-mode-overriding-map-alist
3751
# (cons `(run-tests . ,outer-keymap)
3752
# minor-mode-overriding-map-alist)))
3753
# (add-hook 'after-save-hook run-tests 90 t))