old_contents: import sys
  import distutils.command.build_ext as orig
  
  from distutils.sysconfig import get_config_var
  from setuptools.command.build_ext import build_ext, get_abi3_suffix
  from setuptools.dist import Distribution
  from setuptools.extension import Extension
  
  class TestBuildExt:
  
      def test_get_ext_filename(self):
          """
          Setuptools needs to give back the same
          result as distutils, even if the fullname
          is not in ext_map.
          """
          dist = Distribution()
          cmd = build_ext(dist)
          cmd.ext_map['foo/bar'] = ''
          res = cmd.get_ext_filename('foo')
          wanted = orig.build_ext.get_ext_filename(cmd, 'foo')
          assert res == wanted
  
      def test_abi3_filename(self):
          """
          Filename needs to be loadable by several versions
          of Python 3 if 'is_abi3' is truthy on Extension()
          """
          print(get_abi3_suffix())
          
          extension = Extension('spam.eggs', ['eggs.c'], py_limited_api=True)
          dist = Distribution(dict(ext_modules=[extension]))
          cmd = build_ext(dist)
          cmd.finalize_options()
          assert 'spam.eggs' in cmd.ext_map
          res = cmd.get_ext_filename('spam.eggs')
  
          if sys.version_info[0] == 2 or not get_abi3_suffix():
              assert res.endswith(get_config_var('SO'))
          elif sys.platform == 'win32':
              assert res.endswith('eggs.pyd')
          else:
              assert 'abi3' in res
new_contents: import sys
  import distutils.command.build_ext as orig
  from distutils.sysconfig import get_config_var
  
  from setuptools.extern import six
  
  from setuptools.command.build_ext import build_ext, get_abi3_suffix
  from setuptools.dist import Distribution
  from setuptools.extension import Extension
  
  class TestBuildExt:
  
      def test_get_ext_filename(self):
          """
          Setuptools needs to give back the same
          result as distutils, even if the fullname
          is not in ext_map.
          """
          dist = Distribution()
          cmd = build_ext(dist)
          cmd.ext_map['foo/bar'] = ''
          res = cmd.get_ext_filename('foo')
          wanted = orig.build_ext.get_ext_filename(cmd, 'foo')
          assert res == wanted
  
      def test_abi3_filename(self):
          """
          Filename needs to be loadable by several versions
          of Python 3 if 'is_abi3' is truthy on Extension()
          """
          print(get_abi3_suffix())
  
          extension = Extension('spam.eggs', ['eggs.c'], py_limited_api=True)
          dist = Distribution(dict(ext_modules=[extension]))
          cmd = build_ext(dist)
          cmd.finalize_options()
          assert 'spam.eggs' in cmd.ext_map
          res = cmd.get_ext_filename('spam.eggs')
  
          if six.PY2 or not get_abi3_suffix():
              assert res.endswith(get_config_var('SO'))
          elif sys.platform == 'win32':
              assert res.endswith('eggs.pyd')
          else:
              assert 'abi3' in res
  
subject: Use six for python major version detection