code: def test_zeros_propagation():
      workspace, module = make_workspace(
          numpy.zeros((10, 10)), numpy.zeros((10, 10), int)
      )
      module.method.value = (
          cellprofiler.modules.identifysecondaryobjects.M_PROPAGATION
      )
      module.run(workspace)
      m = workspace.measurements
      assert OUTPUT_OBJECTS_NAME in m.get_object_names()
      assert "Image" in m.get_object_names()
      assert "Count_%s" % OUTPUT_OBJECTS_NAME in m.get_feature_names(
          "Image"
      )
      counts = m.get_current_measurement(
          "Image", "Count_%s" % OUTPUT_OBJECTS_NAME
      )
      assert numpy.product(counts.shape) == 1
      assert counts == 0
      columns = module.get_measurement_columns(workspace.pipeline)
      for object_name in (
          "Image",
          OUTPUT_OBJECTS_NAME,
          INPUT_OBJECTS_NAME,
      ):
          ocolumns = [x for x in columns if x[0] == object_name]
          features = m.get_feature_names(object_name)
          assert len(ocolumns) == len(features)
          assert all([column[1] in features for column in ocolumns])
      assert "my_outlines" not in workspace.get_outline_names()
  
imports: import io
  import centrosome.threshold
  import numpy
  from cellprofiler_core.constants.measurement import FF_COUNT, COLTYPE_FLOAT, COLTYPE_INTEGER, R_FIRST_IMAGE_NUMBER, R_SECOND_IMAGE_NUMBER, R_FIRST_OBJECT_NUMBER, R_SECOND_OBJECT_NUMBER
  from cellprofiler_core.constants.module._identify import TS_GLOBAL, O_TWO_CLASS, O_FOREGROUND
  import tests.frontend.modules
  import cellprofiler_core.image
  import cellprofiler_core.measurement
  import cellprofiler.modules.identifysecondaryobjects
  import cellprofiler.modules.threshold
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.preferences
  import cellprofiler_core.workspace
label_desc: Use image node_id 4 for calling a global function with example usage: test_zeros_propagation() without return types