#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Runs all the possible tests using bats. Usage: qp_test [-av] [TEST] Options: -v verbose output -a test all installed modules. Default is to test the current directory. """ import sys import os import subprocess try: from docopt import docopt from qp_path import QP_SRC, QP_TESTS except ImportError: print("Please check if you have sourced the ${QP_ROOT}/quantum_package.rc") print("(`source ${QP_ROOT}/quantum_package.rc`)") sys.exit(1) def main(arguments): """Main function""" # Fetch all *.bats files l_bats = [] def append_bats(dirname, filenames): for f in filenames: if f.endswith(".bats"): number, _ = f.split('.', 1) l_bats.append((int(number), os.path.join(dirname, f))) if arguments["TEST"]: os.environ["TEST"] = arguments["TEST"] if arguments["-a"]: for (dirname, _, filenames) in os.walk(QP_SRC, followlinks=False): if "IRPF90_temp" not in dirname: append_bats(dirname, filenames) else: for (dirname, _, filenames) in os.walk(os.getcwd(), followlinks=False): if "IRPF90_temp" not in dirname: append_bats(dirname, filenames) l_bats = [y for _, y in sorted(l_bats)] # 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"]: if arguments["TEST"]: test = "export TEST=%s ; "%arguments["TEST"] else: test = "" os.system(test+" python3 bats_to_sh.py "+bats_file+ "| bash") else: subprocess.check_call(["bats", "--verbose-run", "--trace", bats_file], env=os.environ) if __name__ == '__main__': ARGS = docopt(__doc__) main(ARGS)