nixosTests.home-assistant: port to python#74126
Closed
Br1ght0ne wants to merge 1 commit intoNixOS:masterfrom
Closed
nixosTests.home-assistant: port to python#74126Br1ght0ne wants to merge 1 commit intoNixOS:masterfrom
Br1ght0ne wants to merge 1 commit intoNixOS:masterfrom
Conversation
Member
Author
|
@GrahamcOfBorg test home-assistant |
tfc
reviewed
Nov 25, 2019
tfc
reviewed
Nov 25, 2019
tfc
reviewed
Nov 25, 2019
Member
Author
|
@tfc Thanks for the review! |
Member
Author
|
@GrahamcOfBorg test home-assistant |
tfc
approved these changes
Nov 27, 2019
Member
|
@GrahamcOfBorg test home-assistant |
Member
|
@GrahamcOfBorg test home-assistant |
Mic92
reviewed
Dec 10, 2019
ba18a85 to
73160c0
Compare
Member
Author
|
@GrahamcOfBorg test home-assistant |
Member
|
You can fix the format issues by copying the python code to a dedicated file and use black to format it before copying it back into the file. |
nixosTests.home-assistant: use subtests
73160c0 to
631cbc3
Compare
Member
Author
|
@Mic92 Thanks for the suggestion! |
Member
|
@GrahamcOfBorg test home-assistant |
makefu
reviewed
Dec 30, 2019
| "${hassCli} --output json state get binary_sensor.mqtt_binary_sensor" | ||
| ) | ||
| hass.succeed( | ||
| "${hassCli} state edit binary_sensor.mqtt_binary_sensor --json=\'{"state": "off"}\'" |
Contributor
There was a problem hiding this comment.
you've got some typo there:
Suggested change
| "${hassCli} state edit binary_sensor.mqtt_binary_sensor --json=\'{"state": "off"}\'" | |
| "${hassCli} state edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'" |
makefu
reviewed
Dec 30, 2019
| hass.wait_until_succeeds( | ||
| "mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light" | ||
| ) | ||
| assert '"state": "off"' in hass.succeed( |
Contributor
There was a problem hiding this comment.
should be :
Suggested change
| assert '"state": "off"' in hass.succeed( | |
| assert '"state": "on"' in hass.succeed( |
makefu
reviewed
Dec 30, 2019
| # Check that no errors were logged | ||
| $hass->fail("cat ${configDir}/home-assistant.log | grep -qF ERROR"); | ||
| with subtest("Check that no errors were logged"): | ||
| assert "ERROR" not in log |
Contributor
There was a problem hiding this comment.
this will work:
with subtest("Print log to ease debugging"):
print("\n### home-assistant.log ###\n")
print(hass.succeed("cat ${configDir}/home-assistant.log"))
with subtest("Check that no errors were logged"):
assert "ERROR" not in hass.succeed("cat ${configDir}/home-assistant.log")
Contributor
|
The complete working file: import ./make-test-python.nix ({ pkgs, ... }:
let
configDir = "/var/lib/foobar";
apiPassword = "some_secret";
mqttPassword = "another_secret";
hassCli = "hass-cli --server http://hass:8123 --password '${apiPassword}'";
in {
name = "home-assistant";
meta = with pkgs.stdenv.lib; {
maintainers = with maintainers; [ dotlambda ];
};
nodes = {
hass =
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
mosquitto home-assistant-cli
];
services.home-assistant = {
inherit configDir;
enable = true;
package = pkgs.home-assistant.override {
extraPackages = ps: with ps; [ hbmqtt ];
};
config = {
homeassistant = {
name = "Home";
time_zone = "UTC";
latitude = "0.0";
longitude = "0.0";
elevation = 0;
auth_providers = [
{
type = "legacy_api_password";
api_password = apiPassword;
}
];
};
frontend = { };
mqtt = { # Use hbmqtt as broker
password = mqttPassword;
};
binary_sensor = [
{
platform = "mqtt";
state_topic = "home-assistant/test";
payload_on = "let_there_be_light";
payload_off = "off";
}
];
};
lovelaceConfig = {
title = "My Awesome Home";
views = [ {
title = "Example";
cards = [ {
type = "markdown";
title = "Lovelace";
content = "Welcome to your **Lovelace UI**.";
} ];
} ];
};
lovelaceConfigWritable = true;
};
};
};
testScript = ''
start_all()
hass.wait_for_unit("home-assistant.service")
with subtest("Check that YAML configuration file is in place"):
hass.succeed("test -L ${configDir}/configuration.yaml")
with subtest("lovelace config is copied because lovelaceConfigWritable = true"):
hass.succeed("test -f ${configDir}/ui-lovelace.yaml")
with subtest("Check that Home Assistant's web interface and API can be reached"):
hass.wait_for_open_port(8123)
hass.succeed("curl --fail http://localhost:8123/states")
assert "API running" in hass.succeed(
"curl --fail -H 'x-ha-access: ${apiPassword}' http://localhost:8123/api/"
)
with subtest("Toggle a binary sensor using MQTT"):
assert '"state": "off"' in hass.succeed(
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
)
hass.wait_until_succeeds(
"mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light"
)
assert '"state": "on"' in hass.succeed(
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
)
with subtest("Toggle a binary sensor using hass-cli"):
assert '"state": "on"' in hass.succeed(
"${hassCli} --output json state get binary_sensor.mqtt_binary_sensor"
)
hass.succeed(
"${hassCli} state edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'"
)
assert '"state": "off"' in hass.succeed(
"curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'"
)
with subtest("Print log to ease debugging"):
output_log = hass.succeed("cat ${configDir}/home-assistant.log")
print("\n### home-assistant.log ###\n")
print(output_log + "\n")
with subtest("Check that no errors were logged"):
assert "ERROR" not in output_log
'';
}) |
Member
|
Part of #76088 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation for this change
#72828
Things done
sandboxinnix.confon non-NixOS linux)nix-shell -p nix-review --run "nix-review wip"./result/bin/)nix path-info -Sbefore and after)Notify maintainers
cc @dotlambda
This change is