xref: /openbmc/openbmc-test-automation/extended/run_keyword.py (revision aca557110becf3f4d45391b6f70d0f52f1046f4e)
1#!/usr/bin/env python
2
3r"""
4This module is the python counterpart to run_keyword.robot.
5"""
6
7import gen_print as gp
8import gen_robot_print as grp
9import gen_robot_valid as grv
10
11from robot.libraries.BuiltIn import BuiltIn
12
13
14###############################################################################
15def main_py():
16
17    r"""
18    Do main program processing.
19    """
20
21    setup()
22
23    keyword_string = BuiltIn().get_variable_value("${keyword_string}")
24    lib_file_path = BuiltIn().get_variable_value("${lib_file_path}")
25
26    cmd_buf = keyword_string.split("  ")
27
28    if lib_file_path != "":
29        # We don't want global variable getting changed when an import is done
30        # so we'll save it and restore it.
31        quiet = int(BuiltIn().get_variable_value("${quiet}"))
32        if lib_file_path.endswith(".py"):
33            grp.rdprint_issuing("import_library(\"" + lib_file_path + "\")")
34            BuiltIn().import_library(lib_file_path)
35        else:
36            grp.rdprint_issuing("import_resource(\"" + lib_file_path + "\")")
37            BuiltIn().import_resource(lib_file_path)
38        BuiltIn().set_global_variable("${quiet}", quiet)
39
40    error_message = grp.sprint_error_report("Keyword \"" + cmd_buf[0] +
41                                            "\" does not exist.\n")
42    BuiltIn().keyword_should_exist(cmd_buf[0], msg=error_message)
43
44    grp.rqprint_issuing_keyword(cmd_buf)
45    status, output = BuiltIn().run_keyword_and_ignore_error(*cmd_buf)
46    if status != "PASS":
47        error_message = grp.sprint_error_report("\"" + cmd_buf[0] +
48                                                "\" failed with the" +
49                                                " following error:\n" + output)
50        if not quiet:
51            grp.rprint(error_message, 'STDERR')
52        BuiltIn().fail(error_message)
53
54    if output is not None:
55        grp.rprint(output)
56
57###############################################################################
58
59
60###############################################################################
61def setup():
62
63    r"""
64    Do general program setup tasks.
65    """
66
67    grp.rqprintn()
68
69    validate_parms()
70
71    grp.rqprint_pgm_header()
72
73###############################################################################
74
75
76###############################################################################
77def validate_parms():
78
79    r"""
80    Validate all program parameters.
81    """
82
83    grv.rvalid_value("keyword_string")
84
85    return True
86
87###############################################################################
88
89
90###############################################################################
91def program_teardown():
92
93    r"""
94    Clean up after this program.
95    """
96
97    grp.rqprint_pgm_footer()
98
99###############################################################################
100