2018-12-21 16:34:04 +01:00
|
|
|
#!/usr/bin/env python2
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
"""
|
|
|
|
Runs all the possible tests using bats.
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
qp_test [-av]
|
|
|
|
|
|
|
|
Options:
|
|
|
|
-v verbose output
|
|
|
|
-a test all installed modules. Default is to test the current directory.
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
|
|
|
|
try:
|
|
|
|
from docopt import docopt
|
|
|
|
from qp_path import QP_SRC, QP_PLUGINS, QP_ROOT, QP_TESTS
|
|
|
|
except ImportError:
|
|
|
|
print "Please check if you have sourced the ${QP_ROOT}/quantum_package.rc"
|
|
|
|
print "(`source ${QP_ROOT}/quantum_package.rc`)"
|
|
|
|
print sys.exit(1)
|
|
|
|
|
|
|
|
|
|
|
|
def main(arguments):
|
|
|
|
# Fetch all *.bats files
|
|
|
|
l_bats = []
|
|
|
|
def append_bats(dirname, filenames):
|
|
|
|
for f in filenames:
|
|
|
|
if f.endswith(".bats"):
|
2018-12-25 10:55:40 +01:00
|
|
|
number, _ = f.split('.',1)
|
|
|
|
l_bats.append( (int(number), os.path.join(dirname,f)) )
|
2018-12-21 16:34:04 +01:00
|
|
|
|
|
|
|
if arguments["-a"]:
|
|
|
|
for (dirname, _, filenames) in os.walk(QP_SRC, followlinks=False) :
|
2018-12-25 10:55:40 +01:00
|
|
|
if "IRPF90_temp" not in dirname:
|
|
|
|
append_bats(dirname, filenames)
|
2018-12-21 16:34:04 +01:00
|
|
|
else:
|
|
|
|
for (dirname, _, filenames) in os.walk(os.getcwd(), followlinks=False) :
|
2018-12-25 10:55:40 +01:00
|
|
|
if "IRPF90_temp" not in dirname:
|
|
|
|
append_bats(dirname, filenames)
|
|
|
|
l_bats = [ y for x,y in sorted(l_bats) ]
|
2018-12-21 16:34:04 +01:00
|
|
|
|
|
|
|
# Execute tests
|
|
|
|
os.chdir(QP_TESTS)
|
|
|
|
|
|
|
|
for bats_file in l_bats:
|
|
|
|
print ""
|
|
|
|
print "-~-~-~-~-~-~"
|
|
|
|
print ""
|
|
|
|
print "Running tests for %s"%(bats_file)
|
|
|
|
print ""
|
|
|
|
if arguments["-v"]:
|
|
|
|
p1 = subprocess.Popen(["python2", "bats_to_sh.py", bats_file], \
|
|
|
|
stdout=subprocess.PIPE)
|
|
|
|
p2 = subprocess.Popen(["bash"], stdin=p1.stdout)
|
|
|
|
_, _ = os.waitpid(p2.pid,0)
|
|
|
|
_, _ = os.waitpid(p1.pid,0)
|
|
|
|
else:
|
|
|
|
subprocess.check_call(["bats", bats_file])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
arguments = docopt(__doc__)
|
|
|
|
main(arguments)
|
|
|
|
|
|
|
|
|