code: def test_train_dry_run(
      run_in_simple_project_with_model: Callable[..., RunResult]
  ):
      temp_dir = os.getcwd()
  
      assert os.path.exists(os.path.join(temp_dir, "models"))
      files = rasa.shared.utils.io.list_files(
          os.path.join(temp_dir, "models")
      )
      assert len(files) == 1
  
      output = run_in_simple_project_with_model("train", "--dry-run")
  
      assert [
          s
          for s in output.outlines
          if "No training of components required" in s
      ]
      assert output.ret == 0
  
imports: import os
  import sys
  from pathlib import Path
  from _pytest.capture import CaptureFixture
  import pytest
  from typing import Callable, List
  from _pytest.pytester import RunResult
  from _pytest.tmpdir import TempPathFactory
  import rasa.shared.utils.io
  from rasa.constants import NUMBER_OF_TRAINING_STORIES_FILE
  from rasa.core.policies.policy import Policy
  from rasa.engine.storage.local_model_storage import LocalModelStorage
  from rasa.engine.storage.resource import Resource
  from rasa.shared.core.domain import Domain
  from rasa.model_training import CODE_NEEDS_TO_BE_RETRAINED, CODE_FORCED_TRAINING
  from rasa.shared.constants import LATEST_TRAINING_DATA_FORMAT_VERSION
  from rasa.shared.nlu.training_data.training_data import DEFAULT_TRAINING_DATA_OUTPUT_PATH
  import rasa.utils.io
  from tests.cli.conftest import RASA_EXE
label_desc: Use image node_id 7 for calling a global function with example usage: test_train_dry_run(run_in_simple_project_with_model) without return types