121 lines
3.0 KiB
Python
121 lines
3.0 KiB
Python
|
"""Tests for hassfest dependency finder."""
|
||
|
import ast
|
||
|
|
||
|
import pytest
|
||
|
from script.hassfest.dependencies import ImportCollector
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def mock_collector():
|
||
|
"""Fixture with import collector that adds all referenced nodes."""
|
||
|
collector = ImportCollector(None)
|
||
|
collector.maybe_add_reference = collector.referenced.add
|
||
|
return collector
|
||
|
|
||
|
|
||
|
def test_child_import(mock_collector):
|
||
|
"""Test detecting a child_import reference."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
from homeassistant.components import child_import
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {"child_import"}
|
||
|
|
||
|
|
||
|
def test_subimport(mock_collector):
|
||
|
"""Test detecting a subimport reference."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
from homeassistant.components.subimport.smart_home import EVENT_ALEXA_SMART_HOME
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {"subimport"}
|
||
|
|
||
|
|
||
|
def test_child_import_field(mock_collector):
|
||
|
"""Test detecting a child_import_field reference."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
from homeassistant.components.child_import_field import bla
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {"child_import_field"}
|
||
|
|
||
|
|
||
|
def test_renamed_absolute(mock_collector):
|
||
|
"""Test detecting a renamed_absolute reference."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
import homeassistant.components.renamed_absolute as hue
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {"renamed_absolute"}
|
||
|
|
||
|
|
||
|
def test_hass_components_var(mock_collector):
|
||
|
"""Test detecting a hass_components_var reference."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
def bla(hass):
|
||
|
hass.components.hass_components_var.async_do_something()
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {"hass_components_var"}
|
||
|
|
||
|
|
||
|
def test_hass_components_class(mock_collector):
|
||
|
"""Test detecting a hass_components_class reference."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
class Hello:
|
||
|
def something(self):
|
||
|
self.hass.components.hass_components_class.async_yo()
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {"hass_components_class"}
|
||
|
|
||
|
|
||
|
def test_all_imports(mock_collector):
|
||
|
"""Test all imports together."""
|
||
|
mock_collector.visit(
|
||
|
ast.parse(
|
||
|
"""
|
||
|
from homeassistant.components import child_import
|
||
|
|
||
|
from homeassistant.components.subimport.smart_home import EVENT_ALEXA_SMART_HOME
|
||
|
|
||
|
from homeassistant.components.child_import_field import bla
|
||
|
|
||
|
import homeassistant.components.renamed_absolute as hue
|
||
|
|
||
|
def bla(hass):
|
||
|
hass.components.hass_components_var.async_do_something()
|
||
|
|
||
|
class Hello:
|
||
|
def something(self):
|
||
|
self.hass.components.hass_components_class.async_yo()
|
||
|
"""
|
||
|
)
|
||
|
)
|
||
|
assert mock_collector.referenced == {
|
||
|
"child_import",
|
||
|
"subimport",
|
||
|
"child_import_field",
|
||
|
"renamed_absolute",
|
||
|
"hass_components_var",
|
||
|
"hass_components_class",
|
||
|
}
|