code: def test_needs_sphinx(make_app_with_empty_project):
      make_app = make_app_with_empty_project
      # micro version
      make_app(confoverrides={"needs_sphinx": "1.6.3"})  # OK: less
      make_app(confoverrides={"needs_sphinx": "1.6.4"})  # OK: equals
      with pytest.raises(VersionRequirementError):
          make_app(
              confoverrides={"needs_sphinx": "1.6.5"}
          )  # NG: greater
  
      # minor version
      make_app(confoverrides={"needs_sphinx": "1.5"})  # OK: less
      make_app(confoverrides={"needs_sphinx": "1.6"})  # OK: equals
      with pytest.raises(VersionRequirementError):
          make_app(confoverrides={"needs_sphinx": "1.7"})  # NG: greater
  
      # major version
      make_app(confoverrides={"needs_sphinx": "0"})  # OK: less
      make_app(confoverrides={"needs_sphinx": "1"})  # OK: equals
      with pytest.raises(VersionRequirementError):
          make_app(confoverrides={"needs_sphinx": "2"})
  
imports: import pickle
  import time
  from pathlib import Path
  from unittest import mock
  import pytest
  import sphinx
  from sphinx.builders.gettext import _gettext_compact_validator
  from sphinx.config import ENUM, Config, _Opt, check_confval_types
  from sphinx.deprecation import RemovedInSphinx90Warning
  from sphinx.errors import ConfigError, ExtensionError, VersionRequirementError
label_desc: Use image node_id 13 for calling a global function with example usage: test_needs_sphinx(make_app_with_empty_project) without return types