code: def test_tutorial_message(cli_runner: MetricFlowCliRunner) -> None:
      """Tests the message output of the tutorial.
  
      The tutorial now essentially compiles a semantic manifest and then asks the user to run dbt seed,
      so from an end user perspective it's little more than the output with -m.
  
      The tutorial currently requires execution from a dbt project path. Rather than go all the way on testing the
      tutorial given the path and dbt project requirements, we simply check the message output. When we allow for
      project path overrides it might warrant a more complete test of the semantic manifest building steps in the
      tutorial flow.
      """
      resp = cli_runner.run(tutorial, args=["-m"])
      assert "Please run the following steps" in resp.output
      assert "dbt seed" in resp.output
  
imports: from __future__ import annotations
  import logging
  import shutil
  import textwrap
  from contextlib import contextmanager
  from pathlib import Path
  from typing import Iterator
  import pytest
  from _pytest.fixtures import FixtureRequest
  from dbt_semantic_interfaces.parsing.dir_to_model import parse_yaml_files_to_validation_ready_semantic_manifest
  from dbt_semantic_interfaces.parsing.objects import YamlConfigFile
  from dbt_semantic_interfaces.test_utils import base_semantic_manifest_file
  from metricflow.cli.cli_context import CLIContext
  from metricflow.cli.main import dimension_values, dimensions, entities, health_checks, metrics, query, tutorial, validate_configs
  from metricflow.protocols.sql_client import SqlClient, SqlEngine
  from metricflow.test.fixtures.cli_fixtures import MetricFlowCliRunner
  from metricflow.test.fixtures.setup_fixtures import MetricFlowTestSessionState
  from metricflow.test.model.example_project_configuration import EXAMPLE_PROJECT_CONFIGURATION_YAML_CONFIG_FILE
  from metricflow.test.snapshot_utils import assert_object_snapshot_equal
label_desc: Use image node_id 8 for calling a global function with example usage: test_tutorial_message(cli_runner) without return types