old_contents: from numpy.testing import assert_raises, assert_warns, assert_, assert_equal
  from numpy.compat import pickle
  
  import sys
  import subprocess
  import textwrap
  from importlib import reload
  
  
  def test_numpy_reloading():
      # gh-7844. Also check that relevant globals retain their identity.
      import numpy as np
      import numpy._globals
  
      _NoValue = np._NoValue
      VisibleDeprecationWarning = np.VisibleDeprecationWarning
      ModuleDeprecationWarning = np.ModuleDeprecationWarning
  
      with assert_warns(UserWarning):
          reload(np)
      assert_(_NoValue is np._NoValue)
      assert_(ModuleDeprecationWarning is np.ModuleDeprecationWarning)
      assert_(VisibleDeprecationWarning is np.VisibleDeprecationWarning)
  
      assert_raises(RuntimeError, reload, numpy._globals)
      with assert_warns(UserWarning):
          reload(np)
      assert_(_NoValue is np._NoValue)
      assert_(ModuleDeprecationWarning is np.ModuleDeprecationWarning)
      assert_(VisibleDeprecationWarning is np.VisibleDeprecationWarning)
  
  def test_novalue():
      import numpy as np
      for proto in range(2, pickle.HIGHEST_PROTOCOL + 1):
          assert_equal(repr(np._NoValue), '<no value>')
          assert_(pickle.loads(pickle.dumps(np._NoValue,
                                            protocol=proto)) is np._NoValue)
  
  
  def test_full_reimport():
      """At the time of writing this, it is *not* truly supported, but
      apparently enough users rely on it, for it to be an annoying change
      when it started failing previously.
      """
      # Test within a new process, to ensure that we do not mess with the
      # global state during the test run (could lead to cryptic test failures).
      # This is generally unsafe, especially, since we also reload the C-modules.
      code = textwrap.dedent(r"""
          import sys
          from pytest import warns
          import numpy as np
  
          for k in list(sys.modules.keys()):
              if "numpy" in k:
                  del sys.modules[k]
  
          with warns(UserWarning):
              import numpy as np
          """)
      p = subprocess.run([sys.executable, '-c', code])
  
  
new_contents: from numpy.testing import assert_raises, assert_warns, assert_, assert_equal
  from numpy.compat import pickle
  
  import sys
  import subprocess
  import textwrap
  from importlib import reload
  
  
  def test_numpy_reloading():
      # gh-7844. Also check that relevant globals retain their identity.
      import numpy as np
      import numpy._globals
  
      _NoValue = np._NoValue
      VisibleDeprecationWarning = np.VisibleDeprecationWarning
      ModuleDeprecationWarning = np.ModuleDeprecationWarning
  
      with assert_warns(UserWarning):
          reload(np)
      assert_(_NoValue is np._NoValue)
      assert_(ModuleDeprecationWarning is np.ModuleDeprecationWarning)
      assert_(VisibleDeprecationWarning is np.VisibleDeprecationWarning)
  
      assert_raises(RuntimeError, reload, numpy._globals)
      with assert_warns(UserWarning):
          reload(np)
      assert_(_NoValue is np._NoValue)
      assert_(ModuleDeprecationWarning is np.ModuleDeprecationWarning)
      assert_(VisibleDeprecationWarning is np.VisibleDeprecationWarning)
  
  def test_novalue():
      import numpy as np
      for proto in range(2, pickle.HIGHEST_PROTOCOL + 1):
          assert_equal(repr(np._NoValue), '<no value>')
          assert_(pickle.loads(pickle.dumps(np._NoValue,
                                            protocol=proto)) is np._NoValue)
  
  
  def test_full_reimport():
      """At the time of writing this, it is *not* truly supported, but
      apparently enough users rely on it, for it to be an annoying change
      when it started failing previously.
      """
      # Test within a new process, to ensure that we do not mess with the
      # global state during the test run (could lead to cryptic test failures).
      # This is generally unsafe, especially, since we also reload the C-modules.
      code = textwrap.dedent(r"""
          import sys
          from pytest import warns
          import numpy as np
  
          for k in list(sys.modules.keys()):
              if "numpy" in k:
                  del sys.modules[k]
  
          with warns(UserWarning):
              import numpy as np
          """)
      p = subprocess.run([sys.executable, '-c', code], capture_output=True)
      if p.returncode:
          raise AssertionError(
              f"Non-zero return code: {p.returncode!r}\n\n{p.stderr.decode()}"
          )
  
subject: Validate the return code of `test_full_reimport`