+ def unlink_testcase_file(self, path):
+ MAX_ATTEMPTS = 9
+ retries = MAX_ATTEMPTS
+ while retries > 0:
+ retries = retries - 1
+ self.logger.debug(f"Unlinking {path}")
+ try:
+ path.unlink()
+ # Loop until unlink() fails with FileNotFoundError to ensure file is removed
+ except FileNotFoundError:
+ break
+ except OSError:
+ self.logger.debug(f"OSError: unlinking {path}")
+ self.sleep(0.25, f"{retries} retries left")
+ if retries == 0 and os.path.isfile(path):
+ self.logger.error(
+ f"Unable to delete testcase file in {MAX_ATTEMPTS} attempts: {path}"
+ )
+ raise OSError
+