mirror of
https://github.com/esphome/esphome.git
synced 2026-06-24 14:55:05 +00:00
82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
"""Tests for the stable upload-targets classification helpers."""
|
|
|
|
import pytest
|
|
|
|
from esphome.upload_targets import PortType, get_port_type
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"port",
|
|
[
|
|
"/dev/ttyUSB0",
|
|
"/dev/ttyACM0",
|
|
"/dev/cu.usbserial-1410",
|
|
"/dev/tty.usbmodem1101",
|
|
"COM1",
|
|
"COM23",
|
|
],
|
|
)
|
|
def test_get_port_type_serial(port: str) -> None:
|
|
"""Local serial devices classify as SERIAL."""
|
|
assert get_port_type(port) is PortType.SERIAL
|
|
|
|
|
|
def test_get_port_type_bootsel() -> None:
|
|
"""``BOOTSEL`` magic string classifies as BOOTSEL."""
|
|
assert get_port_type("BOOTSEL") is PortType.BOOTSEL
|
|
|
|
|
|
def test_get_port_type_mqtt() -> None:
|
|
"""``MQTT`` magic string classifies as MQTT."""
|
|
assert get_port_type("MQTT") is PortType.MQTT
|
|
|
|
|
|
def test_get_port_type_mqttip() -> None:
|
|
"""``MQTTIP`` magic string classifies as MQTTIP."""
|
|
assert get_port_type("MQTTIP") is PortType.MQTTIP
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"port",
|
|
[
|
|
"192.168.1.10",
|
|
"fe80::1",
|
|
"device.local",
|
|
"my-esp.example.com",
|
|
],
|
|
)
|
|
def test_get_port_type_network(port: str) -> None:
|
|
"""IP addresses, mDNS, and hostnames classify as NETWORK."""
|
|
assert get_port_type(port) is PortType.NETWORK
|
|
|
|
|
|
def test_port_type_values_are_stable() -> None:
|
|
"""Member values are part of the stable surface.
|
|
|
|
External tooling (device-builder, etc.) may compare against the
|
|
string values directly. Renaming or changing these breaks
|
|
downstream consumers — guard against accidental edits.
|
|
"""
|
|
assert PortType.SERIAL.value == "SERIAL"
|
|
assert PortType.NETWORK.value == "NETWORK"
|
|
assert PortType.MQTT.value == "MQTT"
|
|
assert PortType.MQTTIP.value == "MQTTIP"
|
|
assert PortType.BOOTSEL.value == "BOOTSEL"
|
|
|
|
|
|
def test_main_re_exports_for_backwards_compat() -> None:
|
|
"""``esphome.__main__`` re-exports the stable surface.
|
|
|
|
The CLI entry point pre-dated the stable module and existing
|
|
internal callers (and any third-party code that snuck in via
|
|
``__main__``) still import from there. The re-export must
|
|
resolve to the same objects.
|
|
"""
|
|
from esphome.__main__ import (
|
|
PortType as MainPortType,
|
|
get_port_type as main_get_port_type,
|
|
)
|
|
|
|
assert MainPortType is PortType
|
|
assert main_get_port_type is get_port_type
|