code: def test_clean_containers(
      tmp_path, mocker, capsys, backend, clear_runner, container_type
  ):
      # given
      unsynced_container = prepare_v1_container(
          container_type=container_type,
          path=tmp_path,
          last_ack_version=1,
      )
      synced_container = prepare_v1_container(
          container_type=container_type,
          path=tmp_path,
          last_ack_version=3,
      )
      offline_containers = prepare_v1_container(
          container_type=container_type,
          path=tmp_path,
          last_ack_version=None,
      )
      get_container_impl = generate_get_metadata_container(
          registered_containers=(unsynced_container, synced_container)
      )
  
      # and
      mocker.patch.object(
          backend, "get_metadata_container", get_container_impl
      )
      mocker.patch.object(Operation, "from_dict")
  
      assert os.path.exists(
          tmp_path
          / ASYNC_DIRECTORY
          / container_type.create_dir_name(unsynced_container.id)
      )
      assert os.path.exists(
          tmp_path
          / ASYNC_DIRECTORY
          / container_type.create_dir_name(synced_container.id)
      )
      assert os.path.exists(
          tmp_path
          / OFFLINE_DIRECTORY
          / container_type.create_dir_name(offline_containers.id)
      )
  
      # when
      clear_runner.clear(tmp_path, force=True)
  
      # then
      assert not os.path.exists(
          tmp_path
          / ASYNC_DIRECTORY
          / container_type.create_dir_name(unsynced_container.id)
      )
      assert not os.path.exists(
          tmp_path
          / ASYNC_DIRECTORY
          / container_type.create_dir_name(synced_container.id)
      )
      assert not os.path.exists(
          tmp_path
          / OFFLINE_DIRECTORY
          / container_type.create_dir_name(offline_containers.id)
      )
  
      # and
      captured = capsys.readouterr()
      assert captured.out.splitlines() == [
          "",
          "Unsynchronized objects:",
          f"- {get_qualified_name(unsynced_container)}",
          "",
          "Unsynchronized offline objects:",
          f"- offline/{container_type.create_dir_name(offline_containers.id)}",
          f"Deleted: {tmp_path / OFFLINE_DIRECTORY / container_type.create_dir_name(offline_containers.id)}",
          f"Deleted: {tmp_path / ASYNC_DIRECTORY / container_type.create_dir_name(unsynced_container.id)}",
      ]
  
file_path: neptune-client/tests/unit/neptune/new/cli/test_clear.py
imports: import os
  from unittest.mock import MagicMock
  import pytest
  from neptune.cli.clear import ClearRunner
  from neptune.cli.utils import get_qualified_name
  from neptune.constants import ASYNC_DIRECTORY, OFFLINE_DIRECTORY, SYNC_DIRECTORY
  from neptune.internal.container_type import ContainerType
  from neptune.internal.operation import Operation
  from tests.unit.neptune.new.cli.utils import generate_get_metadata_container, prepare_v1_container
label_desc: Use image node_id 3 for calling a global function with example usage: test_clean_containers(tmp_path, mocker, capsys, backend, clear_runner, container_type) without return types