code: def test_numpy_shape(
      *,
      xs_n_input_dtypes_n_unique_idx,
      on_device,
      fn_tree,
      frontend,
      test_flags,
      backend_fw,
  ):
      input_dtypes, xs = xs_n_input_dtypes_n_unique_idx
      ret, ret_gt = helpers.test_frontend_function(
          input_dtypes=input_dtypes,
          backend_to_test=backend_fw,
          frontend=frontend,
          test_flags=test_flags,
          fn_tree=fn_tree,
          on_device=on_device,
          test_values=False,
          array=xs[0],
      )
      # Manually compare the shape here because ivy.shape doesn't return an array, so
      # ivy.to_numpy will narrow the bit-width, resulting in different dtypes. This is
      # not an issue with the front-end function, but how the testing framework converts
      # non-array function outputs to arrays.
      assert len(ret) == len(ret_gt)
      for i, j in zip(ret, ret_gt):
          assert i == j
  
file_path: ivy/ivy_tests/test_ivy/test_frontends/test_numpy/test_manipulation_routines/test_basic_operations.py
imports: from hypothesis import strategies
  import numpy
  import ivy_tests.test_ivy.helpers
  import ivy_tests.test_ivy.test_frontends.test_numpy.helpers
  from ivy_tests.test_ivy.helpers import handle_frontend_test, BackendHandler
label_desc: Use image node_id 3 for calling a global function with example usage: test_numpy_shape() without return types