Skip to content

Commit 3df29bd

Browse files
chaenweb-flow
authored andcommitted
sweep: #5921 fix (Resources): fix listDirectory for local storage
1 parent b2e4c7f commit 3df29bd

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

src/DIRAC/Resources/Storage/FileStorage.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,9 @@ def createDirectory(self, path):
444444
os.makedirs(url)
445445
successful[url] = True
446446
except OSError as ose:
447+
if ose.errno == errno.EEXIST:
448+
successful[url] = True
449+
continue
447450
failed[url] = str(ose)
448451

449452
return S_OK({"Failed": failed, "Successful": successful})
@@ -537,16 +540,21 @@ def listDirectory(self, path):
537540

538541
for url in urls:
539542
try:
540-
dirs = []
541-
files = []
543+
dirs = {}
544+
files = {}
542545
# os.listdir returns files and directories together
543546
for child in os.listdir(url):
544547
fullpath = os.path.join(url, child)
545548
lfnPath = os.path.join("/", os.path.relpath(fullpath, self.basePath))
549+
res = self.__stat(fullpath)
550+
if not res["OK"]:
551+
failed[lfnPath] = res["Message"]
552+
continue
553+
546554
if os.path.isfile(fullpath):
547-
files.append(lfnPath)
555+
files[lfnPath] = res["Value"]
548556
else:
549-
dirs.append(lfnPath)
557+
dirs[lfnPath] = res["Value"]
550558

551559
successful[url] = {"SubDirs": dirs, "Files": files}
552560
except OSError as ose:

src/DIRAC/Resources/Storage/test/Test_FilePlugin.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,14 @@ def test_04_putDirectory(self, mk_isLocalSE, mk_addAccounting):
338338

339339
res = self.se.listDirectory(self.ALL + localdirs)
340340
self.assertTrue(res["OK"], res)
341-
self.assertEqual(res["Value"]["Successful"][self.subDir], {"Files": [self.subFile], "SubDirs": []})
342-
self.assertEqual(res["Value"]["Successful"]["/test"], {"Files": [self.existingFile], "SubDirs": [self.subDir]})
341+
342+
self.assertEqual(sorted(list(res["Value"]["Successful"][self.subDir])), sorted(["Files", "SubDirs"]))
343+
self.assertEqual(list(res["Value"]["Successful"][self.subDir]["Files"]), [self.subFile])
344+
self.assertEqual(list(res["Value"]["Successful"][self.subDir]["SubDirs"]), [])
345+
346+
self.assertEqual(list(res["Value"]["Successful"]["/test"]["Files"]), [self.existingFile])
347+
self.assertEqual(list(res["Value"]["Successful"]["/test"]["SubDirs"]), [self.subDir])
348+
343349
self.assertTrue(os.strerror(errno.ENOENT) in res["Value"]["Failed"][self.nonExistingFile], res)
344350
self.assertTrue(os.strerror(errno.ENOTDIR) in res["Value"]["Failed"][self.existingFile], res)
345351
self.assertTrue(os.strerror(errno.ENOENT) in res["Value"]["Failed"][nonExistingDir], res)

0 commit comments

Comments
 (0)