def test_get_versions(self): # get_versions calls distutils.spawn.find_executable on # 'gcc', 'ld' and 'dllwrap' self.assertEqual(get_versions(), (None, None, None)) # Let's fake we have 'gcc' and it returns '3.4.5' self._exes['gcc'] = b'gcc (GCC) 3.4.5 (mingw special)\nFSF' res = get_versions() self.assertEqual(str(res[0]), '3.4.5') # and let's see what happens when the version # doesn't match the regular expression # (\d+\.\d+(\.\d+)*) self._exes['gcc'] = b'very strange output' res = get_versions() self.assertEqual(res[0], None) # same thing for ld self._exes['ld'] = b'GNU ld version 2.17.50 20060824' res = get_versions() self.assertEqual(str(res[1]), '2.17.50') self._exes['ld'] = b'@(#)PROGRAM:ld PROJECT:ld64-77' res = get_versions() self.assertEqual(res[1], None) # and dllwrap self._exes['dllwrap'] = b'GNU dllwrap 2.17.50 20060824\nFSF' res = get_versions() self.assertEqual(str(res[2]), '2.17.50') self._exes['dllwrap'] = b'Cheese Wrap' res = get_versions() self.assertEqual(res[2], None)
def test_get_version_deprecated(self): with check_warnings() as w: warnings.simplefilter("always") # make sure get_compiler_versions and get_versions # returns the same thing self.assertEquals(get_compiler_versions(), get_versions()) # make sure using get_version() generated a warning self.assertEquals(len(w.warnings), 1) # make sure any usage of RE_VERSION will also # generate a warning, but till works version = RE_VERSION.search('1.2').group(1) self.assertEquals(version, '1.2') self.assertEquals(len(w.warnings), 2)
def test_get_versions(self): self.assertEqual(get_versions(), (None, None, None)) self._exes['gcc'] = b'gcc (GCC) 3.4.5 (mingw special)\nFSF' res = get_versions() self.assertEqual(str(res[0]), '3.4.5') self._exes['gcc'] = b'very strange output' res = get_versions() self.assertEqual(res[0], None) self._exes['ld'] = b'GNU ld version 2.17.50 20060824' res = get_versions() self.assertEqual(str(res[1]), '2.17.50') self._exes['ld'] = b'@(#)PROGRAM:ld PROJECT:ld64-77' res = get_versions() self.assertEqual(res[1], None) self._exes['dllwrap'] = b'GNU dllwrap 2.17.50 20060824\nFSF' res = get_versions() self.assertEqual(str(res[2]), '2.17.50') self._exes['dllwrap'] = b'Cheese Wrap' res = get_versions() self.assertEqual(res[2], None)
class DependencyException(Exception): pass class RequiredDependencyException(Exception): pass PLATFORM_MINGW = os.name == "nt" and "GCC" in sys.version PLATFORM_PYPY = hasattr(sys, "pypy_version_info") if sys.platform == "win32" and PLATFORM_MINGW: from distutils import cygwinccompiler cygwin_versions = cygwinccompiler.get_versions() if cygwin_versions[1] is None: # ld version is None # distutils cygwinccompiler might fetch the ld path from gcc # Try the normal path instead cygwin_versions = list(cygwin_versions) cygwin_versions[1] = cygwinccompiler._find_exe_version("ld -v") cygwinccompiler.get_versions = lambda: tuple(cygwin_versions) def _dbg(s, tp=None): if DEBUG: if tp: print(s % tp) return print(s)