code: def test_copy_file_into_nonannex(workdir=None):
      workdir = Path(workdir)
      src_ds = Dataset(workdir / "src").create()
      (src_ds.pathobj / "present.txt").write_text("123")
      (src_ds.pathobj / "gone.txt").write_text("abc")
      src_ds.save()
      src_ds.drop("gone.txt", reckless="kill")
  
      # destination has no annex
      dest_ds = Dataset(workdir / "dest").create(annex=False)
      # no issue copying a file that has content
      copy_file([src_ds.pathobj / "present.txt", dest_ds.pathobj])
      ok_file_has_content(dest_ds.pathobj / "present.txt", "123")
      # but cannot handle a dropped file, no chance to register
      # availability info in an annex
      assert_status(
          "impossible",
          copy_file(
              [src_ds.pathobj / "gone.txt", dest_ds.pathobj],
              on_failure="ignore",
          ),
      )
  
file_path: datalad/datalad/local/tests/test_copy_file.py
imports: from os.path import join
  from datalad.api import copy_file
  from datalad.consts import DATALAD_SPECIAL_REMOTE
  from datalad.distribution.dataset import Dataset
  from datalad.tests.utils_pytest import assert_in_results, assert_raises, assert_repo_status, assert_status, chpwd, eq_, nok_, ok_, ok_file_has_content, serve_path_via_http, slow, with_tempfile, with_tree
  from datalad.utils import Path
label_desc: Use image node_id 4 for calling a global function with example usage: test_copy_file_into_nonannex(workdir) without return types