11from copy import deepcopy
22
3+ import pytest
4+
35from hugr .hugr .base import Hugr
46from hugr .passes ._composable_pass import (
57 ComposablePass ,
@@ -13,6 +15,7 @@ def test_composable_pass() -> None:
1315 class MyDummyInlinePass (ComposablePass ):
1416 def run (self , hugr : Hugr , inplace : bool = True ) -> PassResult :
1517 return impl_pass_run (
18+ self ,
1619 hugr = hugr ,
1720 inplace = inplace ,
1821 inplace_call = lambda hugr : PassResult .for_pass (
@@ -28,6 +31,7 @@ def run(self, hugr: Hugr, inplace: bool = True) -> PassResult:
2831 class MyDummyCopyPass (ComposablePass ):
2932 def run (self , hugr : Hugr , inplace : bool = True ) -> PassResult :
3033 return impl_pass_run (
34+ self ,
3135 hugr = hugr ,
3236 inplace = inplace ,
3337 copy_call = lambda hugr : PassResult .for_pass (
@@ -82,3 +86,20 @@ def run(self, hugr: Hugr, inplace: bool = True) -> PassResult:
8286 ("MyDummyCopyPass" , None ),
8387 ]
8488 assert copy_result .hugr is not hugr
89+
90+
91+ def test_invalid_composable_pass () -> None :
92+ class MyDummyInvalidPass (ComposablePass ):
93+ def run (self , hugr : Hugr , inplace : bool = True ) -> PassResult :
94+ return impl_pass_run (
95+ self ,
96+ hugr = hugr ,
97+ inplace = inplace ,
98+ )
99+
100+ dummy_invalid = MyDummyInvalidPass ()
101+ with pytest .raises (
102+ ValueError ,
103+ match = "MyDummyInvalidPass needs to implement at least an inplace or copy run method" , # noqa: E501
104+ ):
105+ dummy_invalid .run (Hugr ())
0 commit comments