code: def test_list_basic(shutdown_only, storage_type):
      with simulate_storage(storage_type) as storage_uri:
          ray.init(storage=storage_uri, num_gpus=1)
          client = storage.get_client("ns")
          client.put("foo/bar1", b"hello")
          client.put("foo/bar2", b"hello")
          client.put("baz/baz1", b"goodbye!")
          d1 = client.list("")
          assert sorted([f.base_name for f in d1]) == ["baz", "foo"], d1
          d2 = client.list("foo")
          assert sorted([f.base_name for f in d2]) == [
              "bar1",
              "bar2",
          ], d2
          with pytest.raises(FileNotFoundError):
              client.list("invalid")
          with pytest.raises(NotADirectoryError):
              client.list("foo/bar1")
  
imports: import os
  import sys
  import subprocess
  import urllib
  from pathlib import Path
  from packaging.version import parse
  import pyarrow.fs
  import pytest
  import ray
  import ray._private.storage
  from ray._private.test_utils import simulate_storage
  from ray._private.utils import _add_creatable_buckets_param_if_s3_uri, _get_pyarrow_version
  from ray.tests.conftest import *
label_desc: Use image node_id 12 for calling a global function with example usage: test_list_basic(shutdown_only, storage_type) without return types