code: def test_subprocess_script_launcher_external_processes(_, popen_mock):
      cluster_env = Mock()
      cluster_env.creates_processes_externally = True
      function = Mock()
      launcher = _SubprocessScriptLauncher(
          cluster_env, num_processes=4, num_nodes=2
      )
      launcher.launch(function, "positional-arg", keyword_arg=0)
      function.assert_called_with("positional-arg", keyword_arg=0)
      popen_mock.assert_not_called()
  
file_path: pytorch-lightning/tests/tests_fabric/strategies/launchers/test_subprocess_script.py
imports: import os
  import signal
  import sys
  from unittest import mock
  from unittest.mock import ANY, Mock
  import lightning.fabric
  import pytest
  from lightning.fabric.strategies.launchers.subprocess_script import _HYDRA_AVAILABLE, _ChildProcessObserver, _SubprocessScriptLauncher
label_desc: Use image node_id 3 for calling a global function with example usage: test_subprocess_script_launcher_external_processes(_, popen_mock) without return types