1111
1212
1313CINDERX_INITIALIZED : bool = cinderx .is_initialized ()
14- ALREADY_INSTALLED : bool = cinderx .is_frame_evaluator_installed ()
15- JIT_ENABLED : bool = cinderx .jit .is_enabled ()
1614ARM : bool = "aarch64" in platform .machine () or "arm64" in platform .machine ()
1715
1816
1917@passUnless (CINDERX_INITIALIZED , "Need CinderX initialized to test frame evaluator" )
20- @passIf (ALREADY_INSTALLED , "Can only test frame evaluator with a clean slate" )
2118class FrameEvaluatorTest (unittest .TestCase ):
2219 def test_install_then_remove (self ) -> None :
23- self .assertFalse ( cinderx . is_frame_evaluator_installed () )
20+ self .skip_if_already_installed ( )
2421
2522 cinderx .install_frame_evaluator ()
2623 self .assertTrue (cinderx .is_frame_evaluator_installed ())
@@ -29,7 +26,7 @@ def test_install_then_remove(self) -> None:
2926 self .assertFalse (cinderx .is_frame_evaluator_installed ())
3027
3128 def test_idempotent (self ) -> None :
32- self .assertFalse ( cinderx . is_frame_evaluator_installed () )
29+ self .skip_if_already_installed ( )
3330
3431 cinderx .install_frame_evaluator ()
3532 self .assertTrue (cinderx .is_frame_evaluator_installed ())
@@ -43,39 +40,34 @@ def test_idempotent(self) -> None:
4340 cinderx .remove_frame_evaluator ()
4441 self .assertFalse (cinderx .is_frame_evaluator_installed ())
4542
46- @passIf (JIT_ENABLED , "Need to check JIT with a clean slate" )
4743 @passIf (ARM , "JIT doesn't work on ARM yet" )
4844 def test_jit_auto (self ) -> None :
49- self .assertFalse (cinderx .is_frame_evaluator_installed ())
50- self .assertFalse (cinderx .jit .is_enabled ())
45+ self .skip_if_already_installed ()
5146
5247 cinderx .jit .auto ()
5348 self .assertTrue (cinderx .is_frame_evaluator_installed ())
5449
5550 cinderx .jit .disable ()
5651 cinderx .remove_frame_evaluator ()
5752
58- @passIf (JIT_ENABLED , "Need to check JIT with a clean slate" )
5953 @passIf (ARM , "JIT doesn't work on ARM yet" )
6054 def test_jit_compile_after_n_calls (self ) -> None :
61- self .assertFalse (cinderx .is_frame_evaluator_installed ())
62- self .assertFalse (cinderx .jit .is_enabled ())
55+ self .skip_if_already_installed ()
6356
6457 cinderx .jit .compile_after_n_calls (40000 )
6558 self .assertTrue (cinderx .is_frame_evaluator_installed ())
6659
6760 cinderx .jit .disable ()
6861 cinderx .remove_frame_evaluator ()
6962
70- @passIf (JIT_ENABLED , "Need to check JIT with a clean slate" )
7163 @passIf (ARM , "JIT doesn't work on ARM yet" )
7264 def test_jit_force_compile (self ) -> None :
73- self .assertFalse (cinderx .is_frame_evaluator_installed ())
74- self .assertFalse (cinderx .jit .is_enabled ())
65+ self .skip_if_already_installed ()
7566
7667 def foo (a : int , b : int ) -> int :
7768 return a + b
7869
70+ cinderx .jit .enable ()
7971 cinderx .jit .force_compile (foo )
8072 self .assertTrue (cinderx .jit .is_jit_compiled (foo ))
8173 self .assertTrue (cinderx .is_frame_evaluator_installed ())
@@ -84,15 +76,14 @@ def foo(a: int, b: int) -> int:
8476 cinderx .jit .disable ()
8577 cinderx .remove_frame_evaluator ()
8678
87- @passIf (JIT_ENABLED , "Need to check JIT with a clean slate" )
8879 @passIf (ARM , "JIT doesn't work on ARM yet" )
8980 def test_jit_lazy_compile (self ) -> None :
90- self .assertFalse (cinderx .is_frame_evaluator_installed ())
91- self .assertFalse (cinderx .jit .is_enabled ())
81+ self .skip_if_already_installed ()
9282
9383 def foo (a : int , b : int ) -> int :
9484 return a + b
9585
86+ cinderx .jit .enable ()
9687 cinderx .jit .lazy_compile (foo )
9788 self .assertFalse (cinderx .jit .is_jit_compiled (foo ))
9889 self .assertTrue (cinderx .is_frame_evaluator_installed ())
@@ -105,6 +96,12 @@ def foo(a: int, b: int) -> int:
10596 cinderx .jit .disable ()
10697 cinderx .remove_frame_evaluator ()
10798
99+ def skip_if_already_installed (self ) -> None :
100+ # JIT can be enabled via decorators from other test modules, so this has to
101+ # be run inside of the test function and not as a decorator itself.
102+ if cinderx .is_frame_evaluator_installed ():
103+ self .skipTest ("Have to test frame evaluator with a clean slate" )
104+
108105
109106if __name__ == "__main__" :
110107 unittest .main ()
0 commit comments