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