1
mirror of https://github.com/home-assistant/core synced 2024-09-06 10:29:55 +02:00

Add the ability to reload filesize platforms from yaml (#39347)

This commit is contained in:
J. Nick Koston 2020-08-27 23:53:27 -05:00 committed by GitHub
parent 0db5bb27a8
commit f449620d38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 64 additions and 1 deletions

View File

@ -1 +1,4 @@
"""The filesize component."""
DOMAIN = "filesize"
PLATFORMS = ["sensor"]

View File

@ -9,6 +9,9 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA
from homeassistant.const import DATA_MEGABYTES
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.reload import setup_reload_service
from . import DOMAIN, PLATFORMS
_LOGGER = logging.getLogger(__name__)
@ -23,6 +26,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the file size sensor."""
setup_reload_service(hass, DOMAIN, PLATFORMS)
sensors = []
for path in config.get(CONF_FILE_PATHS):
if not hass.config.is_allowed_path(path):

View File

@ -0,0 +1,2 @@
reload:
description: Reload all filesize entities.

View File

@ -2,9 +2,13 @@
import os
import unittest
from homeassistant import config as hass_config
from homeassistant.components.filesize import DOMAIN
from homeassistant.components.filesize.sensor import CONF_FILE_PATHS
from homeassistant.setup import setup_component
from homeassistant.const import SERVICE_RELOAD
from homeassistant.setup import async_setup_component, setup_component
from tests.async_mock import patch
from tests.common import get_test_home_assistant
TEST_DIR = os.path.join(os.path.dirname(__file__))
@ -47,3 +51,47 @@ class TestFileSensor(unittest.TestCase):
state = self.hass.states.get("sensor.mock_file_test_filesize_txt")
assert state.state == "0.0"
assert state.attributes.get("bytes") == 4
async def test_reload(hass, tmpdir):
"""Verify we can reload filter sensors."""
testfile = f"{tmpdir}/file"
await hass.async_add_executor_job(create_file, testfile)
with patch.object(hass.config, "is_allowed_path", return_value=True):
await async_setup_component(
hass,
"sensor",
{
"sensor": {
"platform": "filesize",
"file_paths": [testfile],
}
},
)
await hass.async_block_till_done()
assert len(hass.states.async_all()) == 1
assert hass.states.get("sensor.file")
yaml_path = os.path.join(
_get_fixtures_base_path(),
"fixtures",
"filesize/configuration.yaml",
)
with patch.object(hass_config, "YAML_CONFIG_FILE", yaml_path), patch.object(
hass.config, "is_allowed_path", return_value=True
):
await hass.services.async_call(
DOMAIN,
SERVICE_RELOAD,
{},
blocking=True,
)
await hass.async_block_till_done()
assert hass.states.get("sensor.file") is None
def _get_fixtures_base_path():
return os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

View File

@ -0,0 +1,4 @@
sensor:
- platform: filesize
file_paths:
- "/dev/null"