code: def test_one_subprocess(self, mock_rmtree, mock_popen, mock_mkdtemp):
      # Verify cleanups are done correctly
      mock_mkdtemp.return_value = "temp_dir"
      mock_process = mock.Mock()
      mock_popen.return_value = mock_process
      mock_process.wait.return_value = 0  # return normally
      colocation = (
          multi_processing_colocation.MultiProcessingColocation(
              [python.PyNode(_run_no_op)]
          )
      )
      colocation.run()
      mock_mkdtemp.called_once_with()
      mock_popen.called_once()
      mock_rmtree.called_once_with("temp_dir")
  
file_path: launchpad/launchpad/nodes/multi_processing_colocation/node_test.py
imports: import shutil
  import subprocess
  import tempfile
  from unittest import mock
  from absl.testing import absltest
  from launchpad.nodes.multi_processing_colocation import node
  from launchpad.nodes.python import node
label_desc: Use image node_id 1 for calling the NodeTest obj's underlying member method code with example usage: obj.test_one_subprocess(mock_rmtree, mock_popen, mock_mkdtemp) without return types