code: def test_unwind_inner_wrapper_teardown_exc() -> None:
      out = []
  
      @hookimpl(wrapper=True)
      def m1():
          out.append("m1 init")
          try:
              yield
              out.append("m1 unreachable")
          except BaseException:
              out.append("m1 teardown")
              raise
          finally:
              out.append("m1 cleanup")
  
      @hookimpl(wrapper=True)
      def m2():
          out.append("m2 init")
          yield
          out.append("m2 raise")
          raise ValueError()
  
      with pytest.raises(ValueError):
          try:
              MC([m2, m1], {})
          finally:
              out.append("finally")
  
      assert out == [
          "m1 init",
          "m2 init",
          "m2 raise",
          "m1 teardown",
          "m1 cleanup",
          "finally",
      ]
  
imports: from typing import Callable
  from typing import List
  from typing import Mapping
  from typing import Sequence
  from typing import Type
  from typing import Union
  import pytest
  from pluggy import HookCallError
  from pluggy import HookimplMarker
  from pluggy import HookspecMarker
  from pluggy._callers import _multicall
  from pluggy._hooks import HookImpl
label_desc: Use image node_id 20 for calling a global function with example usage: test_unwind_inner_wrapper_teardown_exc() without return types