mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-29 05:21:37 +03:00
allow reading test environment from python mocks
This allows requesting environment variable values set in the C++ test code, from python mock code. Use case is cross-checking test results against values expected by the host side part of the test.
This commit is contained in:
committed by
Ivan Grokhotkov
parent
8bd26f2ded
commit
1acaa8b8f6
@ -93,19 +93,27 @@ class BSTestRunner(object):
|
||||
self.sp.logfile = test_output
|
||||
print('running test "{}"'.format(name))
|
||||
if should_update_env:
|
||||
res = self.update_env()
|
||||
res = self.update_env(self.env_vars)
|
||||
if res != BSTestRunner.SUCCESS:
|
||||
print('failed to set environment variables')
|
||||
break;
|
||||
should_update_env = False
|
||||
if name in self.mocks:
|
||||
debug_print('setting up mocks')
|
||||
self.mocks[name]['request_env'] = self.request_env
|
||||
self.mocks[name]['setup']()
|
||||
extra_env = mock_decorators.get_all_envs(name)
|
||||
if extra_env is not None:
|
||||
self.update_env(extra_env)
|
||||
t_start = time.time()
|
||||
result = self.run_test(index)
|
||||
if name in self.mocks:
|
||||
debug_print('tearing down mocks')
|
||||
self.mocks[name]['teardown']()
|
||||
try:
|
||||
self.mocks[name]['teardown']()
|
||||
except AssertionError:
|
||||
debug_print('teardown assert failure')
|
||||
result = BSTestRunner.FAIL
|
||||
t_stop = time.time()
|
||||
self.sp.logfile = None
|
||||
test_case.elapsed_sec = t_stop - t_start
|
||||
@ -167,12 +175,12 @@ class BSTestRunner(object):
|
||||
if timeout <= 0:
|
||||
return BSTestRunner.TIMEOUT
|
||||
|
||||
def update_env(self):
|
||||
for env_kv in self.env_vars:
|
||||
def update_env(self, env_to_set):
|
||||
for env_kv in env_to_set:
|
||||
self.sp.sendline('setenv "{}" "{}"'.format(env_kv[0], env_kv[1]))
|
||||
timeout = 10
|
||||
while timeout > 0:
|
||||
res = self.sp.expect(['>>>>>bs_test_setenv ok', EOF, TIMEOUT])
|
||||
res = self.sp.expect(['>>>>>bs_test_setenv', EOF, TIMEOUT])
|
||||
if res == 0:
|
||||
break
|
||||
time.sleep(0.1)
|
||||
@ -183,6 +191,20 @@ class BSTestRunner(object):
|
||||
return BSTestRunner.TIMEOUT
|
||||
return BSTestRunner.SUCCESS
|
||||
|
||||
def request_env(self, key):
|
||||
self.sp.sendline('getenv "{}"'.format(key))
|
||||
timeout = 10
|
||||
while timeout > 0:
|
||||
res = self.sp.expect([r'>>>>>bs_test_getenv value=\"(.+)\"', EOF, TIMEOUT])
|
||||
if res == 0:
|
||||
break
|
||||
time.sleep(0.1)
|
||||
timeout -= 0.1
|
||||
if res != 0:
|
||||
return None
|
||||
return self.sp.match.group(1)
|
||||
|
||||
|
||||
ser = None
|
||||
|
||||
def spawn_port(port_name, baudrate=115200):
|
||||
|
Reference in New Issue
Block a user