diff --git a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py index 783c070a2ec..b279d5b47ce 100644 --- a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py +++ b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py @@ -90,7 +90,7 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana init.append(OptimizeSwapBeforeMeasure()) init.append(RemoveDiagonalGatesBeforeMeasure()) else: - return TranspilerError(f"Invalid optimization level {optimization_level}") + raise TranspilerError(f"Invalid optimization level {optimization_level}") return init diff --git a/releasenotes/notes/followup_11468-61c6181e62531796.yaml b/releasenotes/notes/followup_11468-61c6181e62531796.yaml new file mode 100644 index 00000000000..81156a9619b --- /dev/null +++ b/releasenotes/notes/followup_11468-61c6181e62531796.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + The default ``init`` plugin was not properly raising a :class:`.TranspilerError` when called with an invalid optimization level. diff --git a/test/python/transpiler/test_stage_plugin.py b/test/python/transpiler/test_stage_plugin.py index 54dd56e1ebd..a126a0d45e6 100644 --- a/test/python/transpiler/test_stage_plugin.py +++ b/test/python/transpiler/test_stage_plugin.py @@ -86,6 +86,15 @@ def test_build_pm(self): ) self.assertIsInstance(pm, PassManager) + def test_init_invalid_optlevel(self): + """Test default init stage with invalid optimization level. + See: https://github.com/Qiskit/qiskit/pull/12170""" + plugin_manager = PassManagerStagePluginManager() + with self.assertRaises(TranspilerError): + plugin_manager.get_passmanager_stage( + "init", "default", PassManagerConfig(), optimization_level=4 + ) + @ddt.ddt class TestBuiltinPlugins(QiskitTestCase):