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("--default-settings", dest
="default_settings", default
=None)
37 parser_run_test
.add_argument("--name", dest
="name", default
=None)
38 parser_run_test
.add_argument("--description", dest
="desc", default
=None)
39 parser_run_test
.add_argument("--copy-to", dest
="copy_to", default
=None)
40 parser_run_test
.add_argument("--copy-from", dest
="copy_from", default
=None, nargs
='+')
41 parser_run_test
.add_argument("--virtual-environment", dest
="virtual_environ_path", default
=None)
42 parser_run_test
.add_argument("--interactive-error-handling", dest
="interactive_error_handling", default
=False, action
="store_true")
44 args
= parser
.parse_args()
46 # We just log the version and exit
48 logger
.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
53 # We are doing this after we logged the version
54 # to avoid that the version is not shown because of the log level
55 if args
.log_level
== "info":
56 logger
.setLevel(logging
.INFO
)
57 elif args
.log_level
== "debug":
58 logger
.setLevel(logging
.DEBUG
)
59 elif args
.log_level
== "warning":
60 logger
.setLevel(logging
.WARNING
)
61 elif args
.log_level
== "error":
62 logger
.setLevel(logging
.ERROR
)
64 # Here we are going to run a test
65 if args
.subparsers_name
== "run-test":
66 if not (args
.dir or args
.recipe
):
67 logger
.error("You need to provide at least a director of a test '-d' or a recipe file '-r'")
70 if (args
.dir and args
.recipe
) or (args
.dir and args
.settings
):
71 logger
.error("You cannot use the options '-d' and '-r' or '-d' and '-s' at the same time")
74 # For all other stuff we need logging to a file
76 log_dir
= init_logging(args
.dir)
78 log_dir
= init_logging(args
.recipe
)
80 # We now going to log everything to log_dir/genaral.log
81 fh
= logging
.FileHandler("{}/general.log".format(log_dir
))
83 logger
.debug("We now logging everything to {}/general.log".format(log_dir
))
86 settings
= nitsi
.settings
.NitsiSettings(priority_list
=["cmd", "settings-file", "default-settings-file", "nitsi-default"])
89 settings
.set_config_value("name", args
.name
, type="cmd")
91 settings
.set_config_value("description", args
.desc
, type="cmd")
93 settings
.set_config_value("copy_to", args
.copy_to
, type="cmd")
95 settings
.set_config_value("copy_from", nitsi
.settings
.settings_parse_copy_from(args
.copy_from
), type="cmd")
96 if args
.virtual_environ_path
:
97 path
= args
.virtual_environ_path
98 if not os
.path
.isabs(path
):
99 path
= os
.path
.abspath(path
)
100 settings
.set_config_value("virtual_environ_path", path
, type="cmd")
101 if args
.interactive_error_handling
:
102 settings
.set_config_value("interactive_error_handling", True, type="cmd")
106 currenttest
= nitsi
.test
.Test(
109 recipe_file
=args
.recipe
,
110 settings_file
=args
.settings
,
112 default_settings_file
=args
.default_settings
)
113 currenttest
.virtual_environ_setup_stage_1()
114 currenttest
.load_recipe()
115 currenttest
.virtual_environ_setup_stage_2()
116 except RecipeExeption
as e
:
121 currenttest
.virtual_environ_start()
122 currenttest
.run_recipe()
123 except nitsi
.test
.TestException
as e
:
126 except BaseException
as e
:
130 currenttest
.virtual_environ_stop()
134 if __name__
== "__main__":
135 return_value
= main()
136 logger
.debug("Return value of main is: {}".format(return_value
))