BCDA-APS / adl2pydm

Convert MEDM's .adl files to PyDM's .ui format
Other
0 stars 4 forks source link

unit tests fail in main branch #64

Closed prjemian closed 2 years ago

prjemian commented 2 years ago

Unit tests are failing in the main branch. Tried both the old way (coverage run tests/) and the new way (pytest -vvv) and got the same test failures. Here's the pytest output:

``` (bluesky_2021_2) prjemian@zap:~/.../BCDA-APS/adl2pydm$ pytest -vvv ======================================================================================================= test session starts ======================================================================================================== platform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- /home/prjemian/.conda/envs/bluesky_2021_2/bin/python cachedir: .pytest_cache rootdir: /home/prjemian/Documents/projects/BCDA-APS/adl2pydm plugins: anyio-2.2.0 collected 65 items tests/test_adl_parser.py::Test_Files::test__paths PASSED [ 1%] tests/test_adl_parser.py::Test_Files::test_adl_parser PASSED [ 3%] tests/test_adl_parser.py::Test_Files::test_parse_medm_file PASSED [ 4%] tests/test_adl_parser.py::Test_Files::test_parse_medm_userArrayCalc PASSED [ 6%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_arc PASSED [ 7%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_bar PASSED [ 9%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_byte PASSED [ 10%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_byte_additional PASSED [ 12%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_cartesian_plot PASSED [ 13%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_choice_button PASSED [ 15%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_composite PASSED [ 16%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_image PASSED [ 18%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_indicator PASSED [ 20%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_menu PASSED [ 21%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_message_button PASSED [ 23%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_meter PASSED [ 24%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_oval PASSED [ 26%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_polygon PASSED [ 27%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_polyline PASSED [ 29%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_rectangle PASSED [ 30%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_related_display PASSED [ 32%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_shell_command PASSED [ 33%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_strip_chart PASSED [ 35%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_text PASSED [ 36%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_text_entry PASSED [ 38%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_text_update PASSED [ 40%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_valuator PASSED [ 41%] tests/test_adl_parser.py::Test_Files::test_parse_medm_widget_wheel_switch PASSED [ 43%] tests/test_calc2rules.py::TestSuite::test_example_calcs PASSED [ 44%] tests/test_cli.py::Test_Main::test_cli_main PASSED [ 46%] tests/test_output_handler.py::TestOutputHandler::test_write_all_example_files_process PASSED [ 47%] tests/test_output_handler.py::TestOutputHandler::test_write_extends_customwidget PASSED [ 49%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_arc PASSED [ 50%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_bar PASSED [ 52%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_byte PASSED [ 53%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_cartesian_plot PASSED [ 55%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_choice_button PASSED [ 56%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_composite PASSED [ 58%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_embedded_display PASSED [ 60%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_image PASSED [ 61%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_indicator PASSED [ 63%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_menu PASSED [ 64%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_message_button PASSED [ 66%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_meter PASSED [ 67%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_oval PASSED [ 69%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_polygon PASSED [ 70%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_polyline PASSED [ 72%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_polyline_wuth_rules PASSED [ 73%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_rectangle PASSED [ 75%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_related_display PASSED [ 76%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_shell_command PASSED [ 78%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_strip_chart PASSED [ 80%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_strip_chart_axis_labels PASSED [ 81%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_text FAILED [ 83%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_text_entry PASSED [ 84%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_text_examples FAILED [ 86%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_text_update PASSED [ 87%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_valuator PASSED [ 89%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_valuator_variations PASSED [ 90%] tests/test_output_handler.py::TestOutputHandler::test_write_widget_wheel_switch PASSED [ 92%] tests/test_output_handler.py::Test_PYDM_Writer_Support::test_xml_subelements PASSED [ 93%] tests/test_output_handler.py::Test_PYDM_Writer_Support::test_zorder PASSED [ 95%] tests/test_simple.py::Test_Something::test_the_package_name PASSED [ 96%] tests/test_symbols.py::Test_Module::test_symbols PASSED [ 98%] tests/test_testDisplay.py::Test_ADL_Conversion::test_file_conversion PASSED [100%] ============================================================================================================= FAILURES ============================================================================================================= _____________________________________________________________________________________________ TestOutputHandler.test_write_widget_text _____________________________________________________________________________________________ self = def test_write_widget_text(self): uiname = self.convertAdlFile("testDisplay.adl") full_uiname = os.path.join(self.tempdir, uiname) self.assertTrue(os.path.exists(full_uiname)) root = ElementTree.parse(full_uiname).getroot() screen = self.getSubElement(root, "widget") widgets = screen.findall("widget") self.assertEqual(len(widgets), 64) key = "text" widget = self.getNamedWidget(screen, key) > self.assertEqualClassName(widget, "PyDMLabel", key) tests/test_output_handler.py:1103: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_output_handler.py:96: in assertEqualClassName self.assertExpectedAttrib(parent, **{"class":cls, "name":nm}) tests/test_output_handler.py:219: in assertExpectedAttrib self.assertExpectedDictInRef(parent.attrib, **kwargs) tests/test_output_handler.py:226: in assertExpectedDictInRef self.assertEqual(v, ref[k], f"{doc}, k={k}, v={v}") E AssertionError: 'PyDMLabel' != 'QLabel' E - PyDMLabel E + QLabel E : None, k=class, v=PyDMLabel ________________________________________________________________________________________ TestOutputHandler.test_write_widget_text_examples _________________________________________________________________________________________ self = def test_write_widget_text_examples(self): uiname = self.convertAdlFile("text_examples.adl") full_uiname = os.path.join(self.tempdir, uiname) self.assertTrue(os.path.exists(full_uiname)) root = ElementTree.parse(full_uiname).getroot() screen = self.getSubElement(root, "widget") # self.print_xml_children(screen) widgets = screen.findall("widget") self.assertEqual(len(widgets), 17) key = "text_update" widget = self.getNamedWidget(screen, key) self.assertEqualClassName( widget, "PyDMLabel", key) key = "text" widget = self.getNamedWidget(screen, key) > self.assertEqualClassName( widget, "PyDMLabel", key) tests/test_output_handler.py:1340: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_output_handler.py:96: in assertEqualClassName self.assertExpectedAttrib(parent, **{"class":cls, "name":nm}) tests/test_output_handler.py:219: in assertExpectedAttrib self.assertExpectedDictInRef(parent.attrib, **kwargs) tests/test_output_handler.py:226: in assertExpectedDictInRef self.assertEqual(v, ref[k], f"{doc}, k={k}, v={v}") E AssertionError: 'PyDMLabel' != 'QLabel' E - PyDMLabel E + QLabel E : None, k=class, v=PyDMLabel ========================================================================================================= warnings summary ========================================================================================================= tests/test_cli.py::Test_Main::test_cli_main tests/test_output_handler.py::TestOutputHandler::test_write_all_example_files_process /home/prjemian/Documents/projects/BCDA-APS/adl2pydm/adl2pydm/adl_parser.py:354: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead logger.warn("Did not find %s block" % symbol) -- Docs: https://docs.pytest.org/en/stable/warnings.html ===================================================================================================== short test summary info ====================================================================================================== FAILED tests/test_output_handler.py::TestOutputHandler::test_write_widget_text - AssertionError: 'PyDMLabel' != 'QLabel' FAILED tests/test_output_handler.py::TestOutputHandler::test_write_widget_text_examples - AssertionError: 'PyDMLabel' != 'QLabel' ============================================================================================= 2 failed, 63 passed, 2 warnings in 3.54s ============================================================================================= ```
prjemian commented 2 years ago

PyDMLabel has changed into a QLabel. Why is that?

prjemian commented 2 years ago

Perhaps as a fallback choice due to #55. Accept now. Keep TODO: in the code to investigate.

prjemian commented 2 years ago

Makes sense now. The widget in question (MEDM text widget) has no associated PV, so does not need to be a PyDMLabel (which has an EPICS PV attached). Removing the TODO items now.