code: def test_foreach_data_expects_list_or_dict(
      tmp_dir, dvc, foreach_data
  ):
      context = Context(
          {
              "foo": "bar",
              "dct": {"model1": "a-out"},
              "lst": ["foo", "bar"],
          }
      )
      definition = make_foreach_def(
          tmp_dir, "build", foreach_data, {}, context
      )
      with pytest.raises(ResolveError) as exc_info:
          definition.resolve_all()
      assert (
          str(exc_info.value)
          == "failed to resolve 'stages.build.foreach' in 'dvc.yaml': "
          "expected list/dictionary, got str"
      )
  
imports: import logging
  import re
  import pytest
  from dvc.parsing import ResolveError
  from dvc.parsing.context import Context
  from dvc.parsing.interpolate import embrace
  from dvc.utils.humanize import join
  from .None import make_entry_definition, make_foreach_def
label_desc: Use image node_id 12 for calling a global function with example usage: test_foreach_data_expects_list_or_dict(tmp_dir, dvc, foreach_data) without return types