code: def test_fetch_create_and_log(tmp_path):
      entry_point_name = "entry_point"
      parameters = {
          "method_name": "string",
      }
      entry_point = _project_spec.EntryPoint(
          entry_point_name, parameters, "run_model.sh"
      )
      mock_fetched_project = _project_spec.Project(
          env_type="local",
          env_config_path=None,
          entry_points={entry_point_name: entry_point},
          docker_env=None,
          name="my_project",
      )
      experiment_id = mlflow.create_experiment("test_fetch_project")
      expected_dir = str(tmp_path)
      project_uri = "http://someuri/myproject.git"
      user_param = {"method_name": "newton"}
      with mock.patch(
          "mlflow.projects.utils._fetch_project",
          return_value=expected_dir,
      ):
          with mock.patch(
              "mlflow.projects._project_spec.load_project",
              return_value=mock_fetched_project,
          ):
              work_dir = fetch_and_validate_project(
                  "", "", entry_point_name, user_param
              )
              project = load_project(work_dir)
              assert mock_fetched_project == project
              assert expected_dir == work_dir
              # Create a run
              active_run = get_or_create_run(
                  run_id=None,
                  uri=project_uri,
                  experiment_id=experiment_id,
                  work_dir=work_dir,
                  version=None,
                  entry_point=entry_point_name,
                  parameters=user_param,
              )
  
              # check tags
              run = mlflow.get_run(active_run.info.run_id)
              assert MLFLOW_PROJECT_ENTRY_POINT in run.data.tags
              assert MLFLOW_SOURCE_NAME in run.data.tags
              assert (
                  entry_point_name
                  == run.data.tags[MLFLOW_PROJECT_ENTRY_POINT]
              )
              assert project_uri == run.data.tags[MLFLOW_SOURCE_NAME]
              assert user_param == run.data.params
  
imports: import os
  import tempfile
  import zipfile
  from unittest import mock
  import git
  import pytest
  import mlflow
  from mlflow.exceptions import ExecutionException
  from mlflow.projects import _project_spec
  from mlflow.projects.utils import _fetch_git_repo, _fetch_project, _get_storage_dir, _is_valid_branch_name, _is_zip_uri, _parse_subdirectory, fetch_and_validate_project, get_or_create_run, load_project
  from mlflow.utils.mlflow_tags import MLFLOW_PROJECT_ENTRY_POINT, MLFLOW_SOURCE_NAME
  from tests.projects.utils import GIT_PROJECT_BRANCH, GIT_PROJECT_URI, TEST_PROJECT_DIR, TEST_PROJECT_NAME, assert_dirs_equal
label_desc: Use image node_id 13 for calling a global function with example usage: test_fetch_create_and_log(tmp_path) without return types