diff --git a/src/embit/descriptor/miniscript.py b/src/embit/descriptor/miniscript.py index 990e3e5..39c0cb2 100644 --- a/src/embit/descriptor/miniscript.py +++ b/src/embit/descriptor/miniscript.py @@ -870,6 +870,11 @@ def inner_compile(self): def __len__(self): return len(self.arg) + 1 + + def verify(self): + super().verify() + if self.arg.type != "V": + raise MiniscriptError("t: X must be of type V") @property def properties(self): diff --git a/tests/tests/test_descriptor.py b/tests/tests/test_descriptor.py index de3e4a6..b58d99e 100644 --- a/tests/tests/test_descriptor.py +++ b/tests/tests/test_descriptor.py @@ -199,6 +199,14 @@ def test_miniscript_compat(self): for desc in generalistic_descs: Descriptor.from_string(desc) + def test_invalid_miniscript(self): + """Ensure an error is raised when parsing invalid miniscript""" + invalid_descs = [ + "wsh(ttvtvtvtvtvtvtv:after(230775))", + ] + for desc in invalid_descs: + self.assertRaises(MiniscriptError, Descriptor.from_string, desc) + def test_len(self): """Checks that len(miniscript) returns correct length""" for op in OPERATORS: