From 6306ea5a92f02eaaac003190ec481891a919bf9a Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 6 Nov 2019 14:35:19 +0100 Subject: [PATCH] tiny-test-fw: fix running tests which use IDFDUT class --- tools/tiny-test-fw/IDF/IDFDUT.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tools/tiny-test-fw/IDF/IDFDUT.py b/tools/tiny-test-fw/IDF/IDFDUT.py index a360e4504..aa9c6ba6c 100644 --- a/tools/tiny-test-fw/IDF/IDFDUT.py +++ b/tools/tiny-test-fw/IDF/IDFDUT.py @@ -122,9 +122,10 @@ def _uses_esptool(func): settings = self.port_inst.get_settings() try: - rom = self._get_rom()(self.port_inst) - rom.connect('hard_reset') - esp = rom.run_stub() + if not self._rom_inst: + self._rom_inst = esptool.ESPLoader.detect_chip(self.port_inst) + self._rom_inst.connect('hard_reset') + esp = self._rom_inst.run_stub() ret = func(self, esp, *args, **kwargs) # do hard reset after use esptool @@ -158,6 +159,7 @@ class IDFDUT(DUT.SerialDUT): self.allow_dut_exception = allow_dut_exception self.exceptions = _queue.Queue() self.performance_items = _queue.Queue() + self._rom_inst = None @classmethod def _get_rom(cls): @@ -186,11 +188,16 @@ class IDFDUT(DUT.SerialDUT): @classmethod def confirm_dut(cls, port, app, **kwargs): inst = None + try: + expected_rom_class = cls._get_rom() + except NotImplementedError: + expected_rom_class = None + try: # TODO: check whether 8266 works with this logic # Otherwise overwrite it in ESP8266DUT inst = esptool.ESPLoader.detect_chip(port) - if type(inst) != cls._get_rom(): + if expected_rom_class and type(inst) != expected_rom_class: raise RuntimeError("Target not expected") return inst.read_mac() is not None except(esptool.FatalError, RuntimeError):