From d56f45d7204fd78735102692e6f13df762993c7c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 16 Jul 2022 11:46:59 +0200 Subject: [PATCH] filesystem: raise exception only when applicable We should first see if any of the files in the tree actually require a service mapping before raising ValueError('TODO: implement recursive service -> file mapping') Change-Id: I9c339f0cac020e7eec7f4f840748040e5f77923d --- pySim/filesystem.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pySim/filesystem.py b/pySim/filesystem.py index 37c668d7..c40eaf8b 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -301,6 +301,14 @@ class CardDF(CardFile): else: raise ValueError + def _has_service(self): + if self.service: + return True + for c in self.children.values(): + if isinstance(c, CardDF): + if c._has_service(): + return True + def add_file(self, child: CardFile, ignore_existing: bool = False): """Add a child (DF/EF) to this DF. Args: @@ -336,7 +344,10 @@ class CardDF(CardFile): for c in child.children.values(): self._add_file_services(c) if isinstance(c, CardDF): - raise ValueError('TODO: implement recursive service -> file mapping') + for gc in c.children.values(): + if isinstance(gc, CardDF): + if gc._has_service(): + raise ValueError('TODO: implement recursive service -> file mapping') def add_files(self, children: Iterable[CardFile], ignore_existing: bool = False): """Add a list of child (DF/EF) to this DF