/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos

  • Committer: Teddy Hogeborn
  • Date: 2022-04-24 12:21:33 UTC
  • Revision ID: teddy@recompile.se-20220424122133-yc4q3115ptcj7r7e
mandos-ctl: Update testing code

* mandos-ctl: Update testing code.
  (should_only_run_tests): Replaced with "parse_test_args".
  (parse_test_args): New.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/usr/bin/python3 -bI
2
 
# -*- mode: python; after-save-hook: (lambda () (let ((command (if (fboundp 'file-local-name) (file-local-name (buffer-file-name)) (or (file-remote-p (buffer-file-name) 'localname) (buffer-file-name))))) (if (= (progn (if (get-buffer "*Test*") (kill-buffer "*Test*")) (process-file-shell-command (format "%s --check" (shell-quote-argument command)) nil "*Test*")) 0) (let ((w (get-buffer-window "*Test*"))) (if w (delete-window w))) (progn (with-current-buffer "*Test*" (compilation-mode)) (display-buffer "*Test*" '(display-buffer-in-side-window)))))); coding: utf-8 -*-
 
2
# -*- coding: utf-8; lexical-binding: t -*-
3
3
#
4
4
# Mandos server - give out binary blobs to connecting clients.
5
5
#
31
31
#
32
32
# Contact the authors at <mandos@recompile.se>.
33
33
#
34
 
 
35
34
from __future__ import (division, absolute_import, print_function,
36
35
                        unicode_literals)
37
36
 
40
39
except ImportError:
41
40
    pass
42
41
 
 
42
import sys
 
43
import unittest
 
44
import argparse
 
45
import logging
 
46
import os
43
47
try:
44
48
    import SocketServer as socketserver
45
49
except ImportError:
46
50
    import socketserver
47
51
import socket
48
 
import argparse
49
52
import datetime
50
53
import errno
51
54
try:
52
55
    import ConfigParser as configparser
53
56
except ImportError:
54
57
    import configparser
55
 
import sys
56
58
import re
57
 
import os
58
59
import signal
59
60
import subprocess
60
61
import atexit
61
62
import stat
62
 
import logging
63
63
import logging.handlers
64
64
import pwd
65
65
import contextlib
77
77
import itertools
78
78
import collections
79
79
import codecs
80
 
import unittest
81
80
import random
82
81
import shlex
83
82
 
94
93
if sys.version_info.major == 2:
95
94
    __metaclass__ = type
96
95
    str = unicode
 
96
    input = raw_input
97
97
 
98
98
# Add collections.abc.Callable if it does not exist
99
99
try:
3658
3658
    cleanup()
3659
3659
 
3660
3660
 
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
3666
 
    if run_tests:
3667
 
        # Remove --check argument from sys.argv
 
3667
    if args.check:
 
3668
        # Remove test options from sys.argv
3668
3669
        sys.argv[1:] = unknown_args
3669
 
    return run_tests
 
3670
    return args
3670
3671
 
3671
3672
# Add all tests from doctest strings
3672
3673
def load_tests(loader, tests, none):
3675
3676
    return tests
3676
3677
 
3677
3678
if __name__ == "__main__":
 
3679
    options = parse_test_args()
3678
3680
    try:
3679
 
        if should_only_run_tests():
3680
 
            # Call using ./mandos --check [--verbose]
3681
 
            unittest.main()
 
3681
        if options.check:
 
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()):
 
3686
                    sys.exit(1)
 
3687
                class ExtraTestLoader(unittest.TestLoader):
 
3688
                    testMethodPrefix = extra_test_prefix
 
3689
                # Call using ./scriptname --test [--verbose]
 
3690
                unittest.main(argv=[""], testLoader=ExtraTestLoader())
 
3691
            else:
 
3692
                unittest.main(argv=[""])
3682
3693
        else:
3683
3694
            main()
3684
3695
    finally:
3685
3696
        logging.shutdown()
 
3697
 
 
3698
# Local Variables:
 
3699
# run-tests:
 
3700
# (lambda (&optional extra)
 
3701
#   (if (not (funcall run-tests-in-test-buffer default-directory
 
3702
#             extra))
 
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)
 
3711
#     (erase-buffer)
 
3712
#     (compilation-mode))
 
3713
#   (let ((inhibit-read-only t))
 
3714
#     (= (process-file-shell-command
 
3715
#         (funcall get-command-line extra)
 
3716
#         nil "*Test*") 0)))
 
3717
# get-command-line:
 
3718
# (lambda (&optional extra)
 
3719
#   (let ((quoted-script
 
3720
#          (shell-quote-argument (funcall get-script-name))))
 
3721
#     (format
 
3722
#      (concat "%s --check" (if extra " --prefix=atest" ""))
 
3723
#      quoted-script)))
 
3724
# get-script-name:
 
3725
# (lambda ()
 
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:
 
3731
# (lambda ()
 
3732
#   (let ((test-window (get-buffer-window "*Test*")))
 
3733
#     (if test-window (delete-window test-window))))
 
3734
# show-test-buffer-in-test-window:
 
3735
# (lambda ()
 
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*"))))
 
3744
# eval:
 
3745
# (progn
 
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))
 
3754
# End: