Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions devtools/dump_devinfo.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""This script generates devinfo files for the test suite.

If you have new, yet unsupported device or a device with no devinfo file under
kasa/tests/fixtures, feel free to run this script and create a PR to add the file
tests/fixtures, feel free to run this script and create a PR to add the file
to the repository.

Executing this script will several modules and methods one by one,
Expand Down Expand Up @@ -50,10 +50,10 @@
Call = namedtuple("Call", "module method")
FixtureResult = namedtuple("FixtureResult", "filename, folder, data")

SMART_FOLDER = "kasa/tests/fixtures/smart/"
SMARTCAMERA_FOLDER = "kasa/tests/fixtures/smartcamera/"
SMART_CHILD_FOLDER = "kasa/tests/fixtures/smart/child/"
IOT_FOLDER = "kasa/tests/fixtures/"
SMART_FOLDER = "tests/fixtures/smart/"
SMARTCAMERA_FOLDER = "tests/fixtures/smartcamera/"
SMART_CHILD_FOLDER = "tests/fixtures/smart/child/"
IOT_FOLDER = "tests/fixtures/"

ENCRYPT_TYPES = [encrypt_type.value for encrypt_type in DeviceEncryptionType]

Expand Down
4 changes: 2 additions & 2 deletions devtools/generate_supported.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ class SupportedVersion(NamedTuple):
SUPPORTED_FILENAME = "SUPPORTED.md"
README_FILENAME = "README.md"

IOT_FOLDER = "kasa/tests/fixtures/"
SMART_FOLDER = "kasa/tests/fixtures/smart/"
IOT_FOLDER = "tests/fixtures/"
SMART_FOLDER = "tests/fixtures/smart/"


def generate_supported(args):
Expand Down
2 changes: 1 addition & 1 deletion docs/source/contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ One of the easiest ways to contribute is by creating a fixture file and uploadin
These files will help us to improve the library and run tests against devices that we have no access to.

This library is tested against responses from real devices ("fixture files").
These files contain responses for selected, known device commands and are stored [in our test suite](https://github.com/python-kasa/python-kasa/tree/master/kasa/tests/fixtures).
These files contain responses for selected, known device commands and are stored [in our test suite](https://github.com/python-kasa/python-kasa/tree/master/tests/fixtures).

You can generate these files by using the `dump_devinfo.py` script.
Note, that this script should be run inside the main source directory so that the generated files are stored in the correct directories.
Expand Down
10 changes: 5 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,22 +71,19 @@ include = [
"/kasa",
"/devtools",
"/docs",
"/tests",
"/CHANGELOG.md",
]

[tool.hatch.build.targets.wheel]
include = [
"/kasa",
]
exclude = [
"/kasa/tests",
]

[tool.coverage.run]
source = ["kasa"]
branch = true
omit = [
"kasa/tests/*",
"kasa/experimental/*"
]

Expand All @@ -107,6 +104,9 @@ exclude_lines = [
]

[tool.pytest.ini_options]
testpaths = [
"tests",
]
markers = [
"requires_dummy: test requires dummy data to pass, skipped on real devices",
]
Expand Down Expand Up @@ -154,7 +154,7 @@ ignore = [
convention = "pep257"

[tool.ruff.lint.per-file-ignores]
"kasa/tests/*.py" = [
"tests/*.py" = [
"D100",
"D101",
"D102",
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions kasa/tests/fakeprotocol_iot.py → tests/fakeprotocol_iot.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import copy
import logging

from ..deviceconfig import DeviceConfig
from ..iotprotocol import IotProtocol
from ..protocol import BaseTransport
from kasa.deviceconfig import DeviceConfig
from kasa.iotprotocol import IotProtocol
from kasa.protocol import BaseTransport

_LOGGER = logging.getLogger(__name__)

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from kasa import Module
from kasa.iot import IotDimmer
from kasa.iot.modules.ambientlight import AmbientLight
from kasa.tests.device_fixtures import dimmer_iot

from ...device_fixtures import dimmer_iot


@dimmer_iot
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from kasa import Module
from kasa.iot import IotDimmer
from kasa.iot.modules.motion import Motion, Range
from kasa.tests.device_fixtures import dimmer_iot

from ...device_fixtures import dimmer_iot


@dimmer_iot
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from kasa.tests.device_fixtures import wallswitch_iot
from ..device_fixtures import wallswitch_iot


@wallswitch_iot
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from kasa.iot import IotDevice
from kasa.smart import SmartDevice
from kasa.tests.conftest import dimmable_iot, get_parent_and_child_modules, parametrize

from ...conftest import dimmable_iot, get_parent_and_child_modules, parametrize

brightness = parametrize("brightness smart", component_filter="brightness")

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest

from kasa.smart import SmartDevice
from kasa.tests.conftest import variable_temp_smart

from ...conftest import variable_temp_smart


@variable_temp_smart
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

from kasa import Module
from kasa.smart import SmartDevice
from kasa.tests.device_fixtures import get_parent_and_child_modules, parametrize

from ...device_fixtures import get_parent_and_child_modules, parametrize

autooff = parametrize(
"has autooff", component_filter="auto_off", protocol_filter={"SMART"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from kasa import Module
from kasa.smart.modules import ChildProtection
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

child_protection = parametrize(
"has child protection",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest

from kasa import Module, SmartDevice
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

contact = parametrize(
"is contact sensor", model_filter="T110", protocol_filter={"SMART.CHILD"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from kasa import Module
from kasa.smart import SmartDevice
from kasa.tests.device_fixtures import get_parent_and_child_modules, parametrize

from ...device_fixtures import get_parent_and_child_modules, parametrize

fan = parametrize("has fan", component_filter="fan_control", protocol_filter={"SMART"})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
from kasa import KasaException, Module
from kasa.smart import SmartDevice
from kasa.smart.modules.firmware import DownloadState
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

firmware = parametrize(
"has firmware", component_filter="firmware", protocol_filter={"SMART"}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest

from kasa.smart.modules import HumiditySensor
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

humidity = parametrize(
"has humidity", component_filter="humidity", protocol_filter={"SMART.CHILD"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

from kasa import Device, Feature, Module
from kasa.smart.modules import LightEffect
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

light_effect = parametrize(
"has light effect", component_filter="light_effect", protocol_filter={"SMART"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

from kasa import Device, Feature, Module
from kasa.smart.modules import LightEffect, LightStripEffect
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

light_strip_effect = parametrize(
"has light strip effect",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

from kasa import Feature, Module
from kasa.smart import SmartDevice
from kasa.tests.device_fixtures import get_parent_and_child_modules, parametrize
from kasa.tests.fixtureinfo import ComponentFilter

from ...device_fixtures import get_parent_and_child_modules, parametrize
from ...fixtureinfo import ComponentFilter

light_transition_v1 = parametrize(
"has light transition",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest

from kasa import Module, SmartDevice
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

motion = parametrize(
"is motion sensor", model_filter="T100", protocol_filter={"SMART.CHILD"}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest

from kasa.smart.modules import TemperatureSensor
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

temperature = parametrize(
"has temperature", component_filter="temperature", protocol_filter={"SMART.CHILD"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

from kasa.smart.modules import TemperatureControl
from kasa.smart.modules.temperaturecontrol import ThermostatState
from kasa.tests.device_fixtures import parametrize, thermostats_smart

from ...device_fixtures import parametrize, thermostats_smart

temperature = parametrize(
"has temperature control",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
import pytest

from kasa.smart.modules import WaterleakSensor
from kasa.tests.device_fixtures import parametrize

from ...device_fixtures import parametrize

waterleak = parametrize(
"has waterleak", component_filter="sensor_alarm", protocol_filter={"SMART.CHILD"}
Expand Down
Empty file added tests/smartcamera/__init__.py
Empty file.
10 changes: 5 additions & 5 deletions kasa/tests/test_aestransport.py → tests/test_aestransport.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@
from freezegun.api import FrozenDateTimeFactory
from yarl import URL

from ..aestransport import AesEncyptionSession, AesTransport, TransportState
from ..credentials import Credentials
from ..deviceconfig import DeviceConfig
from ..exceptions import (
from kasa.aestransport import AesEncyptionSession, AesTransport, TransportState
from kasa.credentials import Credentials
from kasa.deviceconfig import DeviceConfig
from kasa.exceptions import (
AuthenticationError,
KasaException,
SmartErrorCode,
_ConnectionError,
)
from ..httpclient import HttpClient
from kasa.httpclient import HttpClient

DUMMY_QUERY = {"foobar": {"foo": "bar", "bar": "foo"}}

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
from zoneinfo import ZoneInfo

from kasa import Device, LightState, Module
from kasa.tests.device_fixtures import (

from .device_fixtures import (
bulb_iot,
bulb_smart,
dimmable_iot,
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions kasa/tests/test_httpclient.py → tests/test_httpclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
import aiohttp
import pytest

from ..deviceconfig import DeviceConfig
from ..exceptions import (
from kasa.deviceconfig import DeviceConfig
from kasa.exceptions import (
KasaException,
TimeoutError,
_ConnectionError,
)
from ..httpclient import HttpClient
from kasa.httpclient import HttpClient


@pytest.mark.parametrize(
Expand Down
File renamed without changes.
18 changes: 9 additions & 9 deletions kasa/tests/test_klapprotocol.py → tests/test_klapprotocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,26 @@
import pytest
from yarl import URL

from ..aestransport import AesTransport
from ..credentials import Credentials
from ..deviceconfig import DeviceConfig
from ..exceptions import (
from kasa.aestransport import AesTransport
from kasa.credentials import Credentials
from kasa.deviceconfig import DeviceConfig
from kasa.exceptions import (
AuthenticationError,
KasaException,
TimeoutError,
_ConnectionError,
_RetryableError,
)
from ..httpclient import HttpClient
from ..iotprotocol import IotProtocol
from ..klaptransport import (
from kasa.httpclient import HttpClient
from kasa.iotprotocol import IotProtocol
from kasa.klaptransport import (
KlapEncryptionSession,
KlapTransport,
KlapTransportV2,
_sha256,
)
from ..protocol import DEFAULT_CREDENTIALS, get_default_credentials
from ..smartprotocol import SmartProtocol
from kasa.protocol import DEFAULT_CREDENTIALS, get_default_credentials
from kasa.smartprotocol import SmartProtocol

DUMMY_QUERY = {"foobar": {"foo": "bar", "bar": "foo"}}

Expand Down
File renamed without changes.
File renamed without changes.
20 changes: 10 additions & 10 deletions kasa/tests/test_protocol.py → tests/test_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,22 @@

import pytest

from kasa.aestransport import AesTransport
from kasa.credentials import Credentials
from kasa.device import Device
from kasa.deviceconfig import DeviceConfig
from kasa.exceptions import KasaException
from kasa.iot import IotDevice

from ..aestransport import AesTransport
from ..credentials import Credentials
from ..device import Device
from ..deviceconfig import DeviceConfig
from ..exceptions import KasaException
from ..iotprotocol import IotProtocol, _deprecated_TPLinkSmartHomeProtocol
from ..klaptransport import KlapTransport, KlapTransportV2
from ..protocol import (
from kasa.iotprotocol import IotProtocol, _deprecated_TPLinkSmartHomeProtocol
from kasa.klaptransport import KlapTransport, KlapTransportV2
from kasa.protocol import (
BaseProtocol,
BaseTransport,
mask_mac,
redact_data,
)
from ..xortransport import XorEncryption, XorTransport
from kasa.xortransport import XorEncryption, XorTransport

from .conftest import device_iot
from .fakeprotocol_iot import FakeIotTransport

Expand Down
Loading