#!/usr/bin/python3
-from nitsi.test import test
+import argparse
import logging
+from nitsi.logger import init_logging
+from nitsi.recipe import RecipeExeption
+from nitsi.test import TestException, test
+
logger = logging.getLogger("nitsi")
logger.setLevel(logging.DEBUG)
-# create file handler which logs even debug messages
-fh = logging.FileHandler('nitsi.log')
-fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
-fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
-logger.addHandler(fh)
logger.addHandler(ch)
-if __name__ == "__main__":
- import argparse
-
+def main():
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--directory", dest="dir")
+ parser.add_argument("-v", "--version", help="Display version and exit",
+ action="store_true", dest="version")
+
args = parser.parse_args()
- currenttest = test(args.dir)
- currenttest.read_settings()
- currenttest.virtual_environ_setup()
- currenttest.load_recipe()
+ # We just log the version and exit
+ if args.version:
+ logger.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
+ return 0
+
+ # For all other stuff we need logging to a file
+ log_dir = init_logging(args.dir)
+ # We now going to log everything to log_dir/genaral.log
+ fh = logging.FileHandler("{}/general.log".format(log_dir))
+ fh.setLevel(logging.DEBUG)
+ logger.addHandler(fh)
+ logger.debug("We now logging everything to {}/general.log".format(log_dir))
+
+ # here we run a test
+ try:
+ currenttest = test(args.dir, log_dir)
+ currenttest.read_settings()
+ currenttest.virtual_environ_setup()
+ currenttest.load_recipe()
+ except RecipeExeption as e:
+ logger.exception(e)
+ return 2
+
try:
currenttest.virtual_environ_start()
currenttest.run_recipe()
+ except TestException as e:
+ logger.exception(e)
+ return 1
except BaseException as e:
- print(e)
+ logger.exception(e)
+ return 3
finally:
- currenttest.virtual_environ_stop()
\ No newline at end of file
+ currenttest.virtual_environ_stop()
+
+ return 0
+
+if __name__ == "__main__":
+ return_value = main()
+ logger.debug("Return value of main is: {}".format(return_value))
+ exit(return_value)