code: def test_apply_and_enforce_message():
      def func():
          return pd.DataFrame(columns=["A", "B", "C"], index=[0])
  
      meta = pd.DataFrame(columns=["A", "D"], index=[0])
      with pytest.raises(ValueError, match="Extra: *['B', 'C']"):
          apply_and_enforce(_func=func, _meta=meta)
  
      with pytest.raises(ValueError, match=re.escape("Missing: ['D']")):
          apply_and_enforce(_func=func, _meta=meta)
  
imports: from __future__ import annotations
  import re
  import warnings
  from collections.abc import Iterable
  import numpy
  import pandas
  import pytest
  from packaging.version import Version
  import dask
  import dask.dataframe
  from dask.dataframe._compat import PANDAS_GE_200, tm
  from dask.dataframe.core import apply_and_enforce
  from dask.dataframe.utils import UNKNOWN_CATEGORIES, assert_eq, check_matching_columns, check_meta, is_dataframe_like, is_index_like, is_series_like, make_meta, meta_frame_constructor, meta_nonempty, meta_series_constructor, pyarrow_strings_enabled, raise_on_meta_error, shard_df_on_index, valid_divisions
  from dask.local import get_sync
label_desc: Use image node_id 14 for calling a global function with example usage: test_apply_and_enforce_message() and returns: pd