diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py index 7b6b8cd7ded0ea732193ed687dd4238e3816cdb1..7f1dfa957ed551d6ef5f24f06823c826d9e19c39 100644 --- a/Ccs/ccs_function_lib.py +++ b/Ccs/ccs_function_lib.py @@ -6506,190 +6506,6 @@ class LoadInfo(Gtk.Window): print(err) -class TestReport: - """ - Provides functions for interactive test reporting - """ - def __init__(self, filename, version, idb_version, gui=False, delimiter='|'): - super(TestReport, self).__init__() - self.specfile = filename - self.delimiter = delimiter - self.gui = gui - self.report = dict() - - self.version = int(version) - self.idb_version = str(idb_version) - - self.step_rowid = dict() - self._read_test_spec(filename) - - self.testname = self.report[1][0] - - def _read_test_spec(self, filename): - with open(filename, 'r') as fd: - csv = fd.readlines() - - for i, line in enumerate(csv): - items = line.strip().split(self.delimiter) - self.report[i] = items - if items[0].startswith('Step '): - self.step_rowid[items[0]] = i - - def execute_step(self, step, ask=True): - """ - - :param step: - :param ask: - :return: - """ - if not ask: - return - - try: - exe_msg = '{}:\n{}'.format(step.upper(), self.report[self.step_rowid[str(step)]][1]) - if self.gui: - dialog = TestExecGUI(self.report[1][0], exe_msg) - response = dialog.run() - - if response == Gtk.ResponseType.YES: - dialog.destroy() - execute = True - else: - dialog.destroy() - execute = False - - else: - execute = input(exe_msg + ':\n(y/n)? > ') - while execute.lower() not in ('y', 'yes', 'n', 'no'): - execute = input(exe_msg + ':\n(y/n)? > ') - - if execute in ('y', 'yes'): - execute = True - else: - execute = False - - if execute: - return - else: - pass # TODO: abort step execution - - except KeyError: - logger.error('"{}": no such step defined!'.format(str(step))) - return - - def verify_step(self, step): - """ - - :param step: - :return: - """ - try: - ver_msg = '{}:\n{}'.format(step.upper(), self.report[self.step_rowid[str(step)]][2]) - if self.gui: - dialog = TestReportGUI(self.report[1][0], ver_msg) - response = dialog.run() - - if response == Gtk.ResponseType.YES: - result = 'OK' - comment = dialog.comment.get_text() - dialog.destroy() - elif response == Gtk.ResponseType.NO: - result = 'NOT_OK' - comment = dialog.comment.get_text() - dialog.destroy() - else: - dialog.destroy() - return - - if comment: - result += ' ({})'.format(comment) - - else: - result = input(ver_msg + ':\n>') - - except KeyError: - logger.error('"{}": no such step defined!'.format(str(step))) - return - - self.report[self.step_rowid[str(step)]][3] = result - - def export(self, reportdir=None, reportfile=None): - """ - - :param reportdir: - :param reportfile: - """ - if reportfile is None: - if reportdir is None: - reportfile = self.specfile.replace('.csv_PIPE', '-TR-{:03d}.csv_PIPE'.format(self.version)).replace('/testspec/', '/testrep/') - else: - reportdir += '/' if not reportdir.endswith('/') else '' - reportfile = reportdir + self.specfile.split('/')[-1].replace('.csv_PIPE', '-TR-{:03d}.csv_PIPE'.format(self.version)) - - self.report[1][3] += ' TR-{:03d}, MIB v{}'.format(self.version, self.idb_version) - self.report[2][3] = time.strftime('%Y-%m-%d') - - buf = '\n'.join([self.delimiter.join(self.report[line]) for line in range(len(self.report))]) - - Path(os.path.dirname(reportfile)).mkdir(parents=True, exist_ok=True) # create directory if it does not exist - - with open(reportfile, 'w') as fd: - fd.write(buf + '\n') - logger.info('Report written to {}.'.format(reportfile)) - print('Report written to {}.'.format(reportfile)) - - -class TestReportGUI(Gtk.MessageDialog): - """ - GUI for the TestReport class - """ - def __init__(self, testlabel, message): - super(TestReportGUI, self).__init__(title=testlabel, - buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, - Gtk.STOCK_NO, Gtk.ResponseType.NO, - Gtk.STOCK_YES, Gtk.ResponseType.YES,)) - - head, body = self.get_message_area().get_children() - head.set_text(message) - - cancel, fail, verify = self.get_action_area().get_children() - - cancel.get_child().get_child().get_children()[1].set_label('Skip') - fail.get_child().get_child().get_children()[1].set_label('FAILED') - verify.get_child().get_child().get_children()[1].set_label('VERIFIED') - - self.comment = Gtk.Entry() - self.comment.set_placeholder_text('Optional comment') - self.get_message_area().add(self.comment) - - verify.grab_focus() - - self.show_all() - - -class TestExecGUI(Gtk.MessageDialog): - """ - Dialog window to confirm test step execution - """ - def __init__(self, testlabel, message): - super(TestExecGUI, self).__init__(title=testlabel, - buttons=(# Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, - Gtk.STOCK_YES, Gtk.ResponseType.YES,)) - - head, body = self.get_message_area().get_children() - head.set_text(message) - - # abort, exe = self.get_action_area().get_children() - exe, = self.get_action_area().get_children() - - # abort.get_child().get_child().get_children()[1].set_label('ABORT') - exe.get_child().get_child().get_children()[1].set_label('EXECUTE') - - exe.grab_focus() - - self.show_all() - - class TmParameterDecoderDialog(Gtk.Dialog): """ Interface to define custom paramters