lsb-release: split the function so it can be tested with more ease

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This commit is contained in:
Olivier Gayot 2024-02-13 11:51:48 +01:00
parent 2883cad416
commit 8e3751f647
1 changed files with 13 additions and 9 deletions

View File

@ -6,15 +6,7 @@ LSB_RELEASE_FILE = "/etc/lsb-release"
LSB_RELEASE_EXAMPLE = "examples/lsb-release-focal"
def lsb_release(path=None, dry_run: bool = False) -> Dict[str, str]:
"""return a dictionary of values from /etc/lsb-release.
keys are lower case with DISTRIB_ prefix removed."""
if dry_run and path is not None:
raise ValueError("Both dry_run and path are specified.")
if path is None:
path = LSB_RELEASE_EXAMPLE if dry_run else LSB_RELEASE_FILE
def lsb_release_from_path(path: str) -> Dict[str, str]:
ret: Dict[str, str] = {}
try:
with open(path, "r") as fp:
@ -30,5 +22,17 @@ def lsb_release(path=None, dry_run: bool = False) -> Dict[str, str]:
return ret
def lsb_release(path=None, dry_run: bool = False) -> Dict[str, str]:
"""return a dictionary of values from /etc/lsb-release.
keys are lower case with DISTRIB_ prefix removed."""
if dry_run and path is not None:
raise ValueError("Both dry_run and path are specified.")
if path is None:
path = LSB_RELEASE_EXAMPLE if dry_run else LSB_RELEASE_FILE
return lsb_release_from_path(path)
if __name__ == "__main__":
print(lsb_release())