7 from nitsi
.logger
import init_logging
, Log_Formatter
8 from nitsi
.recipe
import RecipeExeption
10 from nitsi
.settings
import settings_parse_copy_from
, NitsiSettings
12 logger
= logging
.getLogger("nitsi")
14 # create console handler
15 ch
= logging
.StreamHandler()
16 formatter
= Log_Formatter()
17 ch
.setFormatter(formatter
)
18 # add the handler to the logger
22 parser
= argparse
.ArgumentParser()
24 parser
.add_argument( "--log-level", choices
=[ "debug", "error", "info", "warning" ], dest
="log_level", default
="info")
26 parser
.add_argument("-v", "--version", help="Display version and exit",
27 action
="store_true", dest
="version")
29 # Subparser for different commands
30 subparsers
= parser
.add_subparsers(dest
="subparsers_name")
32 parser_run_test
= subparsers
.add_parser('run-test', help='run-test help')
33 parser_run_test
.add_argument("-d", "--directory", dest
="dir", default
=None)
34 parser_run_test
.add_argument("-r", "--recipe", dest
="recipe", default
=None)
35 parser_run_test
.add_argument("-s", "--settings", dest
="settings", default
=None)
36 parser_run_test
.add_argument("--name", dest
="name", default
=None)
37 parser_run_test
.add_argument("--description", dest
="desc", default
=None)
38 parser_run_test
.add_argument("--copy-to", dest
="copy_to", default
=None)
39 parser_run_test
.add_argument("--copy-from", dest
="copy_from", default
=None, nargs
='+')
40 parser_run_test
.add_argument("--virtual-environment", dest
="virtual_environ_path", default
=None)
41 parser_run_test
.add_argument("--interactive-error-handling", dest
="interactive_error_handling", default
=False, action
="store_true")
43 args
= parser
.parse_args()
45 # We just log the version and exit
47 logger
.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
52 # We are doing this after we logged the version
53 # to avoid that the version is not shown because of the log level
54 if args
.log_level
== "info":
55 logger
.setLevel(logging
.INFO
)
56 elif args
.log_level
== "debug":
57 logger
.setLevel(logging
.DEBUG
)
58 elif args
.log_level
== "warning":
59 logger
.setLevel(logging
.WARNING
)
60 elif args
.log_level
== "error":
61 logger
.setLevel(logging
.ERROR
)
63 # Here we are going to run a test
64 if args
.subparsers_name
== "run-test":
65 if not (args
.dir or args
.recipe
):
66 logger
.error("You need to provide at least a director of a test '-d' or a recipe file '-r'")
69 if (args
.dir and args
.recipe
) or (args
.dir and args
.settings
):
70 logger
.error("You cannot use the options '-d' and '-r' or '-d' and '-s' at the same time")
73 # For all other stuff we need logging to a file
75 log_dir
= init_logging(args
.dir)
77 log_dir
= init_logging(args
.recipe
)
79 # We now going to log everything to log_dir/genaral.log
80 fh
= logging
.FileHandler("{}/general.log".format(log_dir
))
82 logger
.debug("We now logging everything to {}/general.log".format(log_dir
))
85 settings
= nitsi
.settings
.NitsiSettings(priority_list
=["cmd", "settings-file", "nitsi-default"])
88 settings
.set_config_value("name", args
.name
, type="cmd")
90 settings
.set_config_value("description", args
.desc
, type="cmd")
92 settings
.set_config_value("copy_to", args
.copy_to
, type="cmd")
94 settings
.set_config_value("copy_from", nitsi
.settings
.settings_parse_copy_from(args
.copy_from
), type="cmd")
95 if args
.virtual_environ_path
:
96 path
= args
.virtual_environ_path
97 if not os
.path
.isabs(path
):
98 path
= os
.path
.abspath(path
)
99 settings
.set_config_value("virtual_environ_path", path
, type="cmd")
100 if args
.interactive_error_handling
:
101 settings
.set_config_value("interactive_error_handling", True, type="cmd")
105 currenttest
= nitsi
.test
.Test(
108 recipe_file
=args
.recipe
,
109 settings_file
=args
.settings
,
111 currenttest
.virtual_environ_setup_stage_1()
112 currenttest
.load_recipe()
113 currenttest
.virtual_environ_setup_stage_2()
114 except RecipeExeption
as e
:
119 currenttest
.virtual_environ_start()
120 currenttest
.run_recipe()
121 except nitsi
.test
.TestException
as e
:
124 except BaseException
as e
:
128 currenttest
.virtual_environ_stop()
132 if __name__
== "__main__":
133 return_value
= main()
134 logger
.debug("Return value of main is: {}".format(return_value
))