adaptive-lighting/tests
BrawnyBravo c009f9a1e8 Fix bugs found in code review
- Brightness: a zero/negative linear or tanh ramp no longer divides by
  zero; brightness switches instantly at sunrise/sunset instead.
- Color temp: adapt_until_sleep now fades smoothly when the sleep color
  temp is cooler than min_color_temp (no jump at sunset).
- RGB fade: hue takes the short way around the color wheel and keeps the
  colored end's hue when fading to/from white or grey.
- Setting autoreset_control_seconds to 0 now clears a leftover delay,
  unless another profile for the same light still uses auto-reset.
- Turning the switch off during adapt_delay skips quietly instead of
  failing an assertion.
- Proactive-adaptation tracking is scoped per light, so one automation
  turning on light A no longer hides a manual change to light B made
  under the same context.
- Remove turn_on_lights from change_switch_settings in services.yaml and
  translations; the service schema never accepted it.
- Unload: drop the never-removed hass.config.entry_updated listener, keep
  the update listener when unload fails, and disable the shared manager
  on the last unload even after a YAML import (keeping the YAML marker).

Adds a regression test for each fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:33:55 -07:00
..
__init__.py Copy tests from https://github.com/home-assistant/core/pull/40626 2022-08-28 12:05:31 -07:00
conftest.py Bump to 1.27.0 for fixes in 2025.12 (#1293) 2025-11-27 09:06:41 -08:00
README.md Set conservative line and branch coverage floors for stable HA versions (#1566) 2026-09-06 17:18:47 +02:00
test_adaptation_utils.py Fix missing follow-up commands during multi-light interception (#1560) 2026-09-06 14:03:08 +02:00
test_automation_examples.py fix: synchronize sleep mode and mixed-light split timing (#1579) 2026-09-06 21:50:32 +02:00
test_color_and_brightness.py Fix missing solar_midnight event when derived solar noon crosses 12:00 UTC (#1599) (#1609) 2026-09-22 16:03:07 -07:00
test_config_flow.py feat: add expand_light_groups option (#1462) 2026-09-06 21:13:35 +02:00
test_diagnostics.py Add on-demand Home Assistant diagnostics (#1575) 2026-09-06 19:11:55 +02:00
test_hass_utils.py Test HA core v2023.6 until v2024.2 (#942) 2024-04-06 10:14:54 +02:00
test_init.py Register service actions in async_setup for Bronze tier compliance (#1403) 2026-09-06 13:04:18 +02:00
test_switch.py Fix bugs found in code review 2026-10-13 09:33:55 -07:00

Developer notes for the tests directory

To run the tests, check out the CI configuration to see how they are executed in the CI pipeline. Alternatively, you can use the provided Docker image to run the tests locally or run them with VS Code directly in the dev container.

Coverage reports

Open a pytest workflow run in GitHub Actions to see line and branch coverage in each job's summary. Download its coverage-<Home Assistant version>-py<Python version> artifact for the XML and JSON reports and the browsable HTML report. After extracting it, open htmlcov/index.html to inspect missing lines and branches. Supported stable Home Assistant versions require at least 89% line coverage and 80% branch coverage. The dev job reports coverage without enforcing these floors.

Coverage measures executed code, not whether assertions would catch a bug. Add tests for observable behavior: emitted light commands, final states, manual-control events, and timer expiry. The integration suite runs inside Home Assistant with simulated lights; it does not establish physical-device behavior. It also does not execute every documentation generator included in the package's coverage total.

The tests in test_automation_examples.py load YAML directly from README.md and execute it through Home Assistant's automation and script engines. Edit the README source when changing those examples, then run ./scripts/update-generated-content to update the documentation pages.

Prerequisites

Before running tests with Docker, you need a local Home Assistant core checkout with symlinks:

# Clone HA core (one-time setup)
git clone --depth 1 https://github.com/home-assistant/core.git core

# Setup symlinks (one-time setup)
./scripts/setup-symlinks

Running tests with Docker

Navigate to the adaptive-lighting repo folder and execute the following command.

Important: Mount the entire repo (-v $(pwd):/app), not individual directories, or the symlinks will break.

Linux / MacOS / Windows PowerShell:

docker run -v ${PWD}:/app basnijholt/adaptive-lighting:latest
  • In windows command prompt, the command is:
    docker run -v %cd%:/app basnijholt/adaptive-lighting:latest
    

This command will download the Docker image from the adaptive-lighting Docker Hub repo and run the tests.

If you prefer to build the image yourself, use the following command:

docker build -t basnijholt/adaptive-lighting:latest --no-cache --progress=plain .

This might be necessary if the image on Docker Hub is outdated or if the test_dependencies.py file is updated.

Passing arguments to pytest

You can pass arguments to pytest by appending them to the command:

For example, to run the tests with a custom log format, use the following command (this also gets rid of the captured stderr output):

docker run -v $(pwd):/app basnijholt/adaptive-lighting:latest --show-capture=log --log-format="%(asctime)s %(levelname)-8s %(name)s:%(filename)s:%(lineno)s %(message)s" --log-date-format="%H:%M:%S" tests/components/adaptive_lighting/