mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 23:21:54 +00:00 
			
		
		
		
	[packages] Tighten package validation (#11584)
This commit is contained in:
		| @@ -102,7 +102,7 @@ CONFIG_SCHEMA = cv.Any( | |||||||
|             str: PACKAGE_SCHEMA, |             str: PACKAGE_SCHEMA, | ||||||
|         } |         } | ||||||
|     ), |     ), | ||||||
|     cv.ensure_list(PACKAGE_SCHEMA), |     [PACKAGE_SCHEMA], | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, patch | |||||||
|  |  | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
| from esphome.components.packages import do_packages_pass | from esphome.components.packages import CONFIG_SCHEMA, do_packages_pass | ||||||
| from esphome.config import resolve_extend_remove | from esphome.config import resolve_extend_remove | ||||||
| from esphome.config_helpers import Extend, Remove | from esphome.config_helpers import Extend, Remove | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| @@ -94,6 +94,50 @@ def test_package_invalid_dict(basic_esphome, basic_wifi): | |||||||
|         packages_pass(config) |         packages_pass(config) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.parametrize( | ||||||
|  |     "package", | ||||||
|  |     [ | ||||||
|  |         {"package1": "github://esphome/non-existant-repo/file1.yml@main"}, | ||||||
|  |         {"package2": "github://esphome/non-existant-repo/file1.yml"}, | ||||||
|  |         {"package3": "github://esphome/non-existant-repo/other-folder/file1.yml"}, | ||||||
|  |         [ | ||||||
|  |             "github://esphome/non-existant-repo/file1.yml@main", | ||||||
|  |             "github://esphome/non-existant-repo/file1.yml", | ||||||
|  |             "github://esphome/non-existant-repo/other-folder/file1.yml", | ||||||
|  |         ], | ||||||
|  |     ], | ||||||
|  | ) | ||||||
|  | def test_package_shorthand(package): | ||||||
|  |     CONFIG_SCHEMA(package) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.parametrize( | ||||||
|  |     "package", | ||||||
|  |     [ | ||||||
|  |         # not github | ||||||
|  |         {"package1": "someplace://esphome/non-existant-repo/file1.yml@main"}, | ||||||
|  |         # missing repo | ||||||
|  |         {"package2": "github://esphome/file1.yml"}, | ||||||
|  |         # missing file | ||||||
|  |         {"package3": "github://esphome/non-existant-repo/@main"}, | ||||||
|  |         {"a": "invalid string, not shorthand"}, | ||||||
|  |         "some string", | ||||||
|  |         3, | ||||||
|  |         False, | ||||||
|  |         {"a": 8}, | ||||||
|  |         ["someplace://esphome/non-existant-repo/file1.yml@main"], | ||||||
|  |         ["github://esphome/file1.yml"], | ||||||
|  |         ["github://esphome/non-existant-repo/@main"], | ||||||
|  |         ["some string"], | ||||||
|  |         [True], | ||||||
|  |         [3], | ||||||
|  |     ], | ||||||
|  | ) | ||||||
|  | def test_package_invalid(package): | ||||||
|  |     with pytest.raises(cv.Invalid): | ||||||
|  |         CONFIG_SCHEMA(package) | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_package_include(basic_wifi, basic_esphome): | def test_package_include(basic_wifi, basic_esphome): | ||||||
|     """ |     """ | ||||||
|     Tests the simple case where an independent config present in a package is added to the top-level config as is. |     Tests the simple case where an independent config present in a package is added to the top-level config as is. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user