Fix handling of various import styles, add test

This commit is contained in:
Jeff Epler 2021-08-07 11:34:20 -05:00
parent d075358280
commit 5076a5dd4f
3 changed files with 34 additions and 1 deletions

View file

@ -935,7 +935,7 @@ def libraries_from_imports(code_py, mod_names):
:param str code_py: Full path of the code.py file
:return: sequence of library names
"""
imports = [info.name for info in findimports.find_imports(code_py)]
imports = [info.name.split(".", 1)[0] for info in findimports.find_imports(code_py)]
return [r for r in imports if r in mod_names]

8
tests/import_styles.py Normal file
View file

@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: 2021 Jeff Epler for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# pylint: disable=all
import adafruit_bus_device
from adafruit_button import Button
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
import adafruit_hid.consumer_control

View file

@ -27,6 +27,7 @@ SOFTWARE.
import os
import ctypes
import json
import pathlib
from unittest import mock
@ -912,3 +913,27 @@ def test_show_match_py_command():
result = runner.invoke(circup.show, ["py"])
assert result.exit_code == 0
assert "0 shown" in result.output
def test_libraries_from_imports():
"""Ensure that various styles of import all work"""
mod_names = [
"adafruit_bus_device",
"adafruit_button",
"adafruit_display_shapes",
"adafruit_display_text",
"adafruit_esp32spi",
"adafruit_hid",
"adafruit_oauth2",
"adafruit_requests",
"adafruit_touchscreen",
]
test_file = str(pathlib.Path(__file__).parent / "import_styles.py")
result = circup.libraries_from_imports(test_file, mod_names)
print(result)
assert result == [
"adafruit_bus_device",
"adafruit_button",
"adafruit_esp32spi",
"adafruit_hid",
]