code: def test_update_hail_version(
      gcloud_run, monkeypatch, deploy_metadata
  ):
      monkeypatch.setattr(
          "hailtop.hailctl.dataproc.modify.get_deploy_metadata",
          lambda: deploy_metadata,
      )
  
      runner.invoke(
          cli.app, ["modify", "test-cluster", "--update-hail-version"]
      )
      assert gcloud_run.call_count == 1
      gcloud_args = gcloud_run.call_args[0][0]
      assert gcloud_args[:3] == ["compute", "ssh", "test-cluster-m"]
  
      remote_command = gcloud_args[gcloud_args.index("--") + 1]
      assert remote_command == (
          "sudo gsutil cp gs://hail-common/hailctl/dataproc/test-version/hail-test-version-py3-none-any.whl /tmp/ && "
          + "sudo /opt/conda/default/bin/pip uninstall -y hail && "
          + "sudo /opt/conda/default/bin/pip install --no-dependencies /tmp/hail-test-version-py3-none-any.whl && "
          + "unzip /tmp/hail-test-version-py3-none-any.whl && "
          + "requirements_file=$(mktemp) && "
          + "grep 'Requires-Dist: ' hail*dist-info/METADATA | sed 's/Requires-Dist: //' | sed 's/ (//' | sed 's/)//' | grep -v 'pyspark' >$requirements_file &&"
          + "/opt/conda/default/bin/pip install -r $requirements_file"
      )
  
imports: import pytest
  from typer.testing import CliRunner
  from hailtop.hailctl.dataproc import cli
label_desc: Use image node_id 19 for calling a global function with example usage: test_update_hail_version(gcloud_run, monkeypatch, deploy_metadata) without return types