code: def test_push_custom_summary(path=None):
      path = Path(path)
      ds = Dataset(path / "ds").create()
  
      sib = mk_push_target(
          ds, "sib", str(path / "sib"), bare=False, annex=False
      )
      (sib.pathobj / "f1").write_text("f1")
      sib.save()
  
      (ds.pathobj / "f2").write_text("f2")
      ds.save()
  
      # These options are true by default and our tests usually run with a
      # temporary home, but set them to be sure.
      ds.config.set("advice.pushUpdateRejected", "true", scope="local")
      ds.config.set("advice.pushFetchFirst", "true", scope="local")
      with swallow_outputs() as cmo:
          ds.push(
              to="sib", result_renderer="default", on_failure="ignore"
          )
          assert_in("Hints:", cmo.out)
          assert_in("action summary:", cmo.out)
  
imports: import logging
  import os
  import pytest
  from datalad.core.distributed.clone import Clone
  from datalad.core.distributed.push import Push
  from datalad.distribution.dataset import Dataset
  from datalad.support.annexrepo import AnnexRepo
  from datalad.support.exceptions import IncompleteResultsError, InsufficientArgumentsError
  from datalad.support.external_versions import external_versions
  from datalad.support.gitrepo import GitRepo
  from datalad.support.network import get_local_file_url
  from datalad.tests.utils_pytest import DEFAULT_BRANCH, DEFAULT_REMOTE, SkipTest, assert_false, assert_in, assert_in_results, assert_not_in, assert_not_in_results, assert_raises, assert_repo_status, assert_result_count, assert_status, eq_, known_failure_githubci_osx, known_failure_githubci_win, neq_, ok_, ok_file_has_content, serve_path_via_http, skip_if_adjusted_branch, skip_if_on_windows, skip_ssh, slow, swallow_logs, with_tempfile, with_tree
  from datalad.utils import Path, chpwd, path_startswith, swallow_outputs
label_desc: Use image node_id 21 for calling a global function with example usage: test_push_custom_summary(path) without return types