232 lines
6.1 KiB
JSON
232 lines
6.1 KiB
JSON
{
|
|
"version": "2.0.0",
|
|
"tasks": [
|
|
{
|
|
"label": "Run Home Assistant Core",
|
|
"type": "shell",
|
|
"command": "hass -c ./config",
|
|
"group": "test",
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": [],
|
|
"dependsOn": ["Compile English translations"]
|
|
},
|
|
{
|
|
"label": "Pytest",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m pytest --timeout=10 tests",
|
|
"dependsOn": ["Install all Test Requirements"],
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Pytest (changed tests only)",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m pytest --timeout=10 --picked",
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Ruff",
|
|
"type": "shell",
|
|
"command": "pre-commit run ruff --all-files",
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Pre-commit",
|
|
"type": "shell",
|
|
"command": "pre-commit run --show-diff-on-failure",
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Pylint",
|
|
"type": "shell",
|
|
"command": "pylint homeassistant",
|
|
"dependsOn": ["Install all Requirements"],
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Code Coverage",
|
|
"detail": "Generate code coverage report for a given integration.",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m pytest ./tests/components/${input:integrationName}/ --cov=homeassistant.components.${input:integrationName} --cov-report term-missing --durations-min=1 --durations=0 --numprocesses=auto",
|
|
"dependsOn": ["Compile English translations"],
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Update syrupy snapshots",
|
|
"detail": "Update syrupy snapshots for a given integration.",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m pytest ./tests/components/${input:integrationName} --snapshot-update",
|
|
"dependsOn": ["Compile English translations"],
|
|
"group": {
|
|
"kind": "test",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Generate Requirements",
|
|
"type": "shell",
|
|
"command": "./script/gen_requirements_all.py",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Install all Requirements",
|
|
"type": "shell",
|
|
"command": "uv pip install -r requirements_all.txt",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Install all Test Requirements",
|
|
"type": "shell",
|
|
"command": "uv pip install -r requirements_test_all.txt",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
},
|
|
"problemMatcher": []
|
|
},
|
|
{
|
|
"label": "Compile English translations",
|
|
"detail": "In order to test changes to translation files, the translation strings must be compiled into Home Assistant's translation directories.",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m script.translations develop --all",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
}
|
|
},
|
|
{
|
|
"label": "Run scaffold",
|
|
"detail": "Add new functionality to a integration using a scaffold.",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m script.scaffold ${input:scaffoldName} --integration ${input:integrationName}",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
}
|
|
},
|
|
{
|
|
"label": "Create new integration",
|
|
"detail": "Use the scaffold to create a new integration.",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m script.scaffold integration",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
}
|
|
},
|
|
{
|
|
"label": "Install integration requirements",
|
|
"detail": "Install all requirements of a given integration.",
|
|
"type": "shell",
|
|
"command": "${command:python.interpreterPath} -m script.install_integration_requirements ${input:integrationName}",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
},
|
|
"presentation": {
|
|
"reveal": "always",
|
|
"panel": "new"
|
|
}
|
|
}
|
|
],
|
|
"inputs": [
|
|
{
|
|
"id": "integrationName",
|
|
"type": "promptString",
|
|
"description": "For which integration should the task run?"
|
|
},
|
|
{
|
|
"id": "scaffoldName",
|
|
"type": "pickString",
|
|
"options": [
|
|
"backup",
|
|
"config_flow",
|
|
"config_flow_discovery",
|
|
"config_flow_helper",
|
|
"config_flow_oauth2",
|
|
"device_action",
|
|
"device_condition",
|
|
"device_trigger",
|
|
"reproduce_state",
|
|
"significant_change"
|
|
],
|
|
"description": "Which scaffold should be run?"
|
|
}
|
|
]
|
|
}
|