code: def testPipelineUpdate(self):
      pipeline_name = "chicago_taxi_local"
      handler_pipeline_path = os.path.join(
          self._local_home, pipeline_name
      )
      pipeline_path_1 = os.path.join(
          self._testdata_dir, "test_pipeline_local_1.py"
      )
      # Try pipeline update when pipeline does not exist.
      result = self.runner.invoke(
          cli_group,
          [
              "pipeline",
              "update",
              "--engine",
              "local",
              "--pipeline_path",
              pipeline_path_1,
          ],
      )
      self.assertIn("CLI", result.output)
      self.assertIn("Updating pipeline", result.output)
      self.assertIn(
          'Pipeline "{}" does not exist.'.format(pipeline_name),
          result.output,
      )
      self.assertFalse(fileio.exists(handler_pipeline_path))
  
      # Now update an existing pipeline.
      self._valid_create_and_check(pipeline_path_1, pipeline_name)
      pipeline_path_2 = os.path.join(
          self._testdata_dir, "test_pipeline_local_2.py"
      )
      result = self.runner.invoke(
          cli_group,
          [
              "pipeline",
              "update",
              "--engine",
              "local",
              "--pipeline_path",
              pipeline_path_2,
          ],
      )
      self.assertIn("CLI", result.output)
      self.assertIn("Updating pipeline", result.output)
      self.assertIn(
          'Pipeline "{}" updated successfully.'.format(pipeline_name),
          result.output,
      )
      self.assertTrue(
          fileio.exists(
              os.path.join(handler_pipeline_path, "pipeline_args.json")
          )
      )
  
imports: import codecs
  import locale
  import os
  from absl import logging
  from click import testing
  import tensorflow
  from tfx.dsl.io import fileio
  from tfx.tools.cli.cli_main import cli_group
  from tfx.utils import io_utils
  from tfx.utils import test_case_utils
label_desc: Use image node_id 4 for calling the CliLocalEndToEndTest obj's underlying member method code with example usage: obj.testPipelineUpdate() without return types