diff --git a/swh/loader/package/npm/loader.py b/swh/loader/package/npm/loader.py --- a/swh/loader/package/npm/loader.py +++ b/swh/loader/package/npm/loader.py @@ -189,7 +189,10 @@ author_str = "" name = author_data.get("name") if name is not None: - author_str += name + if isinstance(name, str): + author_str += name + elif isinstance(name, list): + author_str += _author_str(name[0]) if len(name) > 0 else "" email = author_data.get("email") if email is not None: author_str += f" <{email}>" diff --git a/swh/loader/package/npm/tests/test_npm.py b/swh/loader/package/npm/tests/test_npm.py --- a/swh/loader/package/npm/tests/test_npm.py +++ b/swh/loader/package/npm/tests/test_npm.py @@ -34,6 +34,11 @@ ([], ""), ({"name": "groot", "email": "groot@galaxy.org",}, "groot "), ({}, ""), + ({"name": []}, "",), + ( + {"name": ["Susan McSween", "William H. Bonney", "Doc Scurlock",]}, + "Susan McSween", + ), ]: assert _author_str(author) == expected_author