mirror of
				https://github.com/home-assistant/supervisor.git
				synced 2025-10-31 06:29:35 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			2025.10.1
			...
			remove-dep
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 66a3766b5a | ||
|   | 7031a58083 | ||
|   | 3c0e62f6ba | 
| @@ -108,8 +108,7 @@ class APISupervisor(CoreSysAttributes): | ||||
|             ATTR_AUTO_UPDATE: self.sys_updater.auto_update, | ||||
|             ATTR_DETECT_BLOCKING_IO: BlockBusterManager.is_enabled(), | ||||
|             ATTR_COUNTRY: self.sys_config.country, | ||||
|             # Depricated | ||||
|             ATTR_WAIT_BOOT: self.sys_config.wait_boot, | ||||
|             # Deprecated | ||||
|             ATTR_ADDONS: [ | ||||
|                 { | ||||
|                     ATTR_NAME: addon.name, | ||||
| @@ -123,10 +122,6 @@ class APISupervisor(CoreSysAttributes): | ||||
|                 } | ||||
|                 for addon in self.sys_addons.local.values() | ||||
|             ], | ||||
|             ATTR_ADDONS_REPOSITORIES: [ | ||||
|                 {ATTR_NAME: store.name, ATTR_SLUG: store.slug} | ||||
|                 for store in self.sys_store.all | ||||
|             ], | ||||
|         } | ||||
|  | ||||
|     @api_process | ||||
| @@ -182,20 +177,10 @@ class APISupervisor(CoreSysAttributes): | ||||
|                 self.sys_config.detect_blocking_io = False | ||||
|                 BlockBusterManager.deactivate() | ||||
|  | ||||
|         # Deprecated | ||||
|         if ATTR_WAIT_BOOT in body: | ||||
|             self.sys_config.wait_boot = body[ATTR_WAIT_BOOT] | ||||
|  | ||||
|         # Save changes before processing addons in case of errors | ||||
|         await self.sys_updater.save_data() | ||||
|         await self.sys_config.save_data() | ||||
|  | ||||
|         # Remove: 2022.9 | ||||
|         if ATTR_ADDONS_REPOSITORIES in body: | ||||
|             await asyncio.shield( | ||||
|                 self.sys_store.update_repositories(set(body[ATTR_ADDONS_REPOSITORIES])) | ||||
|             ) | ||||
|  | ||||
|         await self.sys_resolution.evaluate.evaluate_system() | ||||
|  | ||||
|     @api_process | ||||
|   | ||||
| @@ -12,9 +12,8 @@ import pytest | ||||
| from supervisor.const import CoreState | ||||
| from supervisor.core import Core | ||||
| from supervisor.coresys import CoreSys | ||||
| from supervisor.exceptions import HassioError, HostNotSupportedError, StoreGitError | ||||
| from supervisor.exceptions import HassioError, HostNotSupportedError | ||||
| from supervisor.homeassistant.const import WSEvent | ||||
| from supervisor.store.repository import Repository | ||||
| from supervisor.supervisor import Supervisor | ||||
| from supervisor.updater import Updater | ||||
|  | ||||
| @@ -35,81 +34,6 @@ async def test_api_supervisor_options_debug(api_client: TestClient, coresys: Cor | ||||
|     assert coresys.config.debug | ||||
|  | ||||
|  | ||||
| async def test_api_supervisor_options_add_repository( | ||||
|     api_client: TestClient, coresys: CoreSys, supervisor_internet: AsyncMock | ||||
| ): | ||||
|     """Test add a repository via POST /supervisor/options REST API.""" | ||||
|     assert REPO_URL not in coresys.store.repository_urls | ||||
|  | ||||
|     with ( | ||||
|         patch("supervisor.store.repository.RepositoryGit.load", return_value=None), | ||||
|         patch("supervisor.store.repository.RepositoryGit.validate", return_value=True), | ||||
|     ): | ||||
|         response = await api_client.post( | ||||
|             "/supervisor/options", json={"addons_repositories": [REPO_URL]} | ||||
|         ) | ||||
|  | ||||
|     assert response.status == 200 | ||||
|     assert REPO_URL in coresys.store.repository_urls | ||||
|  | ||||
|  | ||||
| async def test_api_supervisor_options_remove_repository( | ||||
|     api_client: TestClient, coresys: CoreSys, test_repository: Repository | ||||
| ): | ||||
|     """Test remove a repository via POST /supervisor/options REST API.""" | ||||
|     assert test_repository.source in coresys.store.repository_urls | ||||
|     assert test_repository.slug in coresys.store.repositories | ||||
|  | ||||
|     response = await api_client.post( | ||||
|         "/supervisor/options", json={"addons_repositories": []} | ||||
|     ) | ||||
|  | ||||
|     assert response.status == 200 | ||||
|     assert test_repository.source not in coresys.store.repository_urls | ||||
|     assert test_repository.slug not in coresys.store.repositories | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize("git_error", [None, StoreGitError()]) | ||||
| async def test_api_supervisor_options_repositories_skipped_on_error( | ||||
|     api_client: TestClient, coresys: CoreSys, git_error: StoreGitError | ||||
| ): | ||||
|     """Test repositories skipped on error via POST /supervisor/options REST API.""" | ||||
|     with ( | ||||
|         patch("supervisor.store.repository.RepositoryGit.load", side_effect=git_error), | ||||
|         patch("supervisor.store.repository.RepositoryGit.validate", return_value=False), | ||||
|         patch("supervisor.store.repository.RepositoryCustom.remove"), | ||||
|     ): | ||||
|         response = await api_client.post( | ||||
|             "/supervisor/options", json={"addons_repositories": [REPO_URL]} | ||||
|         ) | ||||
|  | ||||
|     assert response.status == 400 | ||||
|     assert len(coresys.resolution.suggestions) == 0 | ||||
|     assert REPO_URL not in coresys.store.repository_urls | ||||
|  | ||||
|  | ||||
| async def test_api_supervisor_options_repo_error_with_config_change( | ||||
|     api_client: TestClient, coresys: CoreSys | ||||
| ): | ||||
|     """Test config change with add repository error via POST /supervisor/options REST API.""" | ||||
|     assert not coresys.config.debug | ||||
|  | ||||
|     with patch( | ||||
|         "supervisor.store.repository.RepositoryGit.load", side_effect=StoreGitError() | ||||
|     ): | ||||
|         response = await api_client.post( | ||||
|             "/supervisor/options", | ||||
|             json={"debug": True, "addons_repositories": [REPO_URL]}, | ||||
|         ) | ||||
|  | ||||
|     assert response.status == 400 | ||||
|     assert REPO_URL not in coresys.store.repository_urls | ||||
|  | ||||
|     assert coresys.config.debug | ||||
|     coresys.updater.save_data.assert_called_once() | ||||
|     coresys.config.save_data.assert_called_once() | ||||
|  | ||||
|  | ||||
| async def test_api_supervisor_options_auto_update( | ||||
|     api_client: TestClient, coresys: CoreSys | ||||
| ): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user