1
0
mirror of https://github.com/home-assistant/supervisor.git synced 2025-12-24 20:35:55 +00:00

Refactoring around add-on store Repository classes (#5990)

* Rename repository fixture to test_repository

Also don't remove the built-in repositories. The list was incomplete,
and tests don't seem to require that anymore.

* Get rid of StoreType

The type doesn't have much value, we have constant strings anyways.

* Introduce types.py

* Use slug to determine which repository urls to return

* Simplify BuiltinRepository enum

* Mock GitRepo load

* Improve URL handling and repository creation logic

* Refactor update_repositories

* Get rid of get_from_url

It is no longer used in production code.

* More refactoring

* Address pylint

* Introduce is_git_based property to Repository class

Return all git based URLs, including the Core repository.

* Revert "Introduce is_git_based property to Repository class"

This reverts commit dfd5ad79bf.

* Fold type.py into const.py

Align more with how Supervisor code is typically structured.

* Update supervisor/store/__init__.py

Co-authored-by: Mike Degatano <michael.degatano@gmail.com>

* Apply repository remove suggestion

* Fix tests

---------

Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
This commit is contained in:
Stefan Agner
2025-07-10 11:07:53 +02:00
committed by GitHub
parent 7873c457d5
commit baf9695cf7
16 changed files with 247 additions and 235 deletions

View File

@@ -10,7 +10,7 @@ from supervisor.resolution.fixups.store_execute_remove import FixupStoreExecuteR
from supervisor.store.repository import Repository
async def test_fixup(coresys: CoreSys, repository: Repository):
async def test_fixup(coresys: CoreSys, test_repository: Repository):
"""Test fixup."""
store_execute_remove = FixupStoreExecuteRemove(coresys)
@@ -18,16 +18,20 @@ async def test_fixup(coresys: CoreSys, repository: Repository):
coresys.resolution.add_suggestion(
Suggestion(
SuggestionType.EXECUTE_REMOVE, ContextType.STORE, reference=repository.slug
SuggestionType.EXECUTE_REMOVE,
ContextType.STORE,
reference=test_repository.slug,
)
)
coresys.resolution.add_issue(
Issue(
IssueType.CORRUPT_REPOSITORY, ContextType.STORE, reference=repository.slug
IssueType.CORRUPT_REPOSITORY,
ContextType.STORE,
reference=test_repository.slug,
)
)
with patch.object(type(repository), "remove") as remove_repo:
with patch.object(type(test_repository), "remove") as remove_repo:
await store_execute_remove()
assert remove_repo.called
@@ -36,4 +40,4 @@ async def test_fixup(coresys: CoreSys, repository: Repository):
assert len(coresys.resolution.suggestions) == 0
assert len(coresys.resolution.issues) == 0
assert repository.slug not in coresys.store.repositories
assert test_repository.slug not in coresys.store.repositories