tests: Fix race condition in download fixture
authorJason Lowe-Power <jason@lowepower.com>
Thu, 14 Mar 2019 23:36:34 +0000 (16:36 -0700)
committerJason Lowe-Power <jason@lowepower.com>
Thu, 21 Mar 2019 15:57:10 +0000 (15:57 +0000)
Change-Id: Idace0e9e71a484080fc581e232ce217b449085c1
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17453
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
tests/gem5/fixture.py

index 9d9319c1e7d6dc75a5cc594da267f8d96a2ff689..c4fd12f52a46195588ff0e8a46a631bc18b82c83 100644 (file)
@@ -229,9 +229,14 @@ class DownloadedProgram(Fixture):
         self.url = self.urlbase + self.path
     def _download(self):
         import urllib
+        import errno
         log.test_log.debug("Downloading " + self.url + " to " + self.path)
         if not os.path.exists(self.program_dir):
-            os.makedirs(self.program_dir)
+            try:
+                os.makedirs(self.program_dir)
+            except OSError as e:
+                if e.errno != errno.EEXIST:
+                    raise
         urllib.urlretrieve(self.url, self.path)
 
     def _getremotetime(self):