code: def test_push_incomplete_dir(tmp_dir, dvc, mocker, local_remote):
      (stage,) = tmp_dir.dvc_gen({"dir": {"foo": "foo", "bar": "bar"}})
      remote_odb = dvc.cloud.get_remote_odb("upstream")
  
      odb = dvc.cache.local
      out = stage.outs[0]
      file_objs = [entry_obj for _, _, entry_obj in out.obj]
  
      # remove one of the cache files for directory
      remove(odb.oid_to_path(file_objs[0].value))
  
      dvc.push()
      assert not remote_odb.exists(out.hash_info.value)
      assert not remote_odb.exists(file_objs[0].value)
      assert remote_odb.exists(file_objs[1].value)
  
imports: import errno
  import itertools
  import os
  import stat
  import configobj
  import pytest
  from dvc.cli import main
  from dvc.config import Config
  from dvc.exceptions import DownloadError, UploadError
  from dvc.utils.fs import remove
label_desc: Use image node_id 23 for calling a global function with example usage: test_push_incomplete_dir(tmp_dir, dvc, mocker, local_remote) without return types