[FIX] tests: make sure screencasts dir exists before writing to it

Without this patch, running this command on an environment where the tour will fail, will create massive and useless logs:

    odoo --stop-after-init -i auth_totp --test-enable --test-tags /auth_totp

This is because this method is a callback that can come in a different thread, creating a race condition.

There's no problem on checking wether the directory exists before creating the file, and then safeguarding from the problem.

@moduon MT-1075

closes odoo/odoo#151579

X-original-commit: 7aca8ae8728c66700c3afdca350e99ea78a63d88
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
This commit is contained in:
Jairo Llopis
2024-01-30 12:19:57 +00:00
parent 21c25a7ccd
commit 6fda467597
+9 -6
View File
@@ -1343,12 +1343,15 @@ which leads to stray network requests and inconsistencies."""
def _handle_screencast_frame(self, sessionId, data, metadata): def _handle_screencast_frame(self, sessionId, data, metadata):
self._websocket_send('Page.screencastFrameAck', params={'sessionId': sessionId}) self._websocket_send('Page.screencastFrameAck', params={'sessionId': sessionId})
outfile = os.path.join(self.screencasts_frames_dir, 'frame_%05d.b64' % len(self.screencast_frames)) outfile = os.path.join(self.screencasts_frames_dir, 'frame_%05d.b64' % len(self.screencast_frames))
with open(outfile, 'w') as f: try:
f.write(data) with open(outfile, 'w') as f:
self.screencast_frames.append({ f.write(data)
'file_path': outfile, self.screencast_frames.append({
'timestamp': metadata.get('timestamp') 'file_path': outfile,
}) 'timestamp': metadata.get('timestamp')
})
except FileNotFoundError:
self._logger.debug('Useless screencast frame skipped: %s', outfile)
_TO_LEVEL = { _TO_LEVEL = {
'debug': logging.DEBUG, 'debug': logging.DEBUG,