mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
parent
60575a1967
commit
2361521449
1 changed files with 0 additions and 94 deletions
|
@ -1,94 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import print_function
|
||||
from subprocess import call
|
||||
import argparse
|
||||
import glob
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def find_tests():
|
||||
tests = []
|
||||
|
||||
for test in glob.glob("*.test.sh") + glob.glob("*.test.py"):
|
||||
if os.access(test, os.X_OK):
|
||||
# Executables only
|
||||
tests.append(test)
|
||||
else:
|
||||
log.debug("Ignored test %s as it is not executable", test)
|
||||
|
||||
log.info("Tests found: %s", len(tests))
|
||||
|
||||
return tests
|
||||
|
||||
|
||||
def run_test(test):
|
||||
log.warn("Running test %s %s times", test, cmd_args.repeat)
|
||||
|
||||
if not test.startswith(".{0}".format(os.path.sep)):
|
||||
test = ".{0}{1}".format(os.path.sep, test)
|
||||
|
||||
for i in range(cmd_args.repeat):
|
||||
exit = call([test], stdout=sys.stdout, stderr=sys.stderr)
|
||||
|
||||
if exit != 0:
|
||||
log.error("Failed to run test %s on repetition %s", test, i)
|
||||
break
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser(description="Run Taskwarrior tests repeatedly")
|
||||
parser.add_argument('--logging', '-l', action="count", default=0,
|
||||
help="Logging level. -lll is the highest level")
|
||||
parser.add_argument('--repeat', metavar="N", type=int, default=100,
|
||||
help="How many times to run each test (default: 100)")
|
||||
parser.add_argument('--noprompt', action="store_true",
|
||||
help="Do not prompt when running all tests")
|
||||
parser.add_argument('test', nargs="*",
|
||||
help="Test files to run repeatedly. Unspecified = all tests")
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main():
|
||||
if cmd_args.test:
|
||||
for test in cmd_args.test:
|
||||
run_test(test)
|
||||
else:
|
||||
if not cmd_args.noprompt:
|
||||
r = raw_input("No test was specified, are you sure you want to run all tests? (y/N)\n")
|
||||
if not (r and r[0] in ["y", "Y"]):
|
||||
return
|
||||
|
||||
log.info("Stress testing all tests")
|
||||
for test in find_tests():
|
||||
run_test(test)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cmd_args = parse_args()
|
||||
|
||||
if cmd_args.logging == 1:
|
||||
level = logging.WARN
|
||||
elif cmd_args.logging == 2:
|
||||
level = logging.INFO
|
||||
elif cmd_args.logging >= 3:
|
||||
level = logging.DEBUG
|
||||
else:
|
||||
level = logging.ERROR
|
||||
|
||||
logging.basicConfig(
|
||||
format="%(asctime)s - %(levelname)s - %(message)s",
|
||||
level=level,
|
||||
)
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
log.debug("Parsed commandline arguments: %s", cmd_args)
|
||||
|
||||
try:
|
||||
main()
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
sys.exit(1)
|
Loading…
Add table
Add a link
Reference in a new issue