1#!/usr/bin/env python3
2# pylint: disable=C0301,C0103,C0111
3
4from __future__ import print_function
5
6import os
7import sys
8
9# Look for requirements.txt
10name = "requirements.txt"
11requirements = name
12path = os.path.dirname(os.path.realpath(__file__))
13requirements = os.path.join(path, requirements)
14
15try:
16    import nunit_tests_provider
17    import robot_tests_provider
18    import tests_engine
19    from robot import __version__ as robot_version
20
21    # Check if current robot version matches the one from requirements file
22    def check_robot_version():
23        required_version = ""
24        with open(requirements, 'r') as req_file:
25            for line in req_file.readlines():
26                if line.find("robotframework==") != -1:
27                    split_line = line.split("==")
28                    if len(split_line) > 1:
29                        required_version = split_line[1].strip()
30                    break
31
32        if robot_version != required_version:
33            print(f"Required `robotframework` version is `{required_version}`, while the one available in your system is `{robot_version}`. " + \
34                "Tests may still work, but this version of Robot is not officially supported. " + \
35                f"Please install the required version using `pip install robotframework=={required_version}` before running the tests")
36
37    if __name__ == '__main__':
38        check_robot_version()
39
40        tests_engine.register_handler('nunit', 'csproj', nunit_tests_provider.NUnitTestSuite, nunit_tests_provider.install_cli_arguments)
41        tests_engine.register_handler('robot', 'robot', robot_tests_provider.RobotTestSuite, robot_tests_provider.install_cli_arguments, robot_tests_provider.verify_cli_arguments)
42        tests_engine.run()
43
44except ImportError as e:
45    print("{}\nPlease install required dependencies with `pip install -r {}`".format(str(e), os.path.abspath(requirements)), file=sys.stderr)
46    sys.exit(1)
47