diff --git a/swh/lister/gnu/tests/data/https_ftp.gnu.org/tree.json.gz b/swh/lister/gnu/tests/data/https_ftp.gnu.org/tree.json.gz index 34b3b28a09e0c92683ef85c046441ecdd6aa9c23..21424731e26ff05ba327b84012d26e4e3af393d2 100644 Binary files a/swh/lister/gnu/tests/data/https_ftp.gnu.org/tree.json.gz and b/swh/lister/gnu/tests/data/https_ftp.gnu.org/tree.json.gz differ diff --git a/swh/lister/gnu/tests/data/tree.json b/swh/lister/gnu/tests/data/tree.json index e4a99d4bc5f0672672af99a3fa2ed453880f4c2b..1f2bb9fa58cba57d721f127a86e43121aa958988 100644 --- a/swh/lister/gnu/tests/data/tree.json +++ b/swh/lister/gnu/tests/data/tree.json @@ -69,5 +69,6 @@ {"type":"file","name":"xboard-4.2.5.tar.gz","size":1055502,"time":"1008466945"}, {"type":"file","name":"xboard-4.2.6.tar.gz","size":1057625,"time":"1012641715"}, {"type":"file","name":"xboard-4.2.7.tar.gz","size":1318110,"time":"1070057764"} - ]} + ]}, + {"type":"directory","name":"no-contents","size":4096,"time":"1254860068"} ] diff --git a/swh/lister/gnu/tree.py b/swh/lister/gnu/tree.py index ec48cf089f7029c1f9e9e82c6c8c6d33763fd481..26e4f2b86ce16027d4cb0b2d66fc72b74db63775 100644 --- a/swh/lister/gnu/tree.py +++ b/swh/lister/gnu/tree.py @@ -61,7 +61,7 @@ class GNUTree: for directory in raw_data["contents"]: if directory["name"] not in self.top_level_directories: continue - infos = directory["contents"] + infos = directory.get("contents", []) for info in infos: if info["type"] == "directory": package_url = "%s/%s/%s/" % ( @@ -69,7 +69,9 @@ class GNUTree: directory["name"], info["name"], ) - package_artifacts = find_artifacts(info["contents"], package_url) + package_artifacts = find_artifacts( + info.get("contents", []), package_url + ) if package_artifacts != []: repo_details = { "name": info["name"], @@ -146,7 +148,7 @@ def find_artifacts( # It will recursively check for artifacts in all sub-folders elif filetype == "directory": tarballs_in_dir = find_artifacts( - info_file["contents"], url + filename + "/" + info_file.get("contents", []), url + filename + "/" ) artifacts.extend(tarballs_in_dir)