]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
- Add unittests for platform.mac_ver (or rather, ensure that the unittest for
authorRonald Oussoren <ronaldoussoren@mac.com>
Sun, 18 May 2008 20:54:47 +0000 (20:54 +0000)
committerRonald Oussoren <ronaldoussoren@mac.com>
Sun, 18 May 2008 20:54:47 +0000 (20:54 +0000)
  that function actually tests something on OSX).

- Add documentation to platform.mac_ver that explains why the middle element
  of the return value will not contain useful information.

Lib/platform.py
Lib/test/test_platform.py

index 1dc8b27afc95c9600dd8e33e4596053771035af2..e0e710bee6cf6214a468b04106d2f07646ebe3b3 100755 (executable)
@@ -733,7 +733,11 @@ def mac_ver(release='',versioninfo=('','',''),machine=''):
             release = '%i.%i.%i' %(major, minor, patch)
         else:
             release = '%s.%i.%i' % (_bcd2str(major),minor,patch)
+
     if sysu:
+        # NOTE: this block is left as documentation of the
+        # intention of this function, the 'sysu' gestalt is no
+        # longer available and there are no alternatives.
         major =  int((sysu & 0xFF000000L) >> 24)
         minor =  (sysu & 0x00F00000) >> 20
         bugfix = (sysu & 0x000F0000) >> 16
@@ -746,6 +750,8 @@ def mac_ver(release='',versioninfo=('','',''),machine=''):
                  0x60:'beta',
                  0x80:'final'}.get(stage,'')
         versioninfo = (version,stage,nonrel)
+
+
     if sysa:
         machine = {0x1: '68k',
                    0x2: 'PowerPC',
index fced4d021529d4a68710ca9f99e5c903a8120303..f337fba3ed91594c0cb29e637a12fae77dcbd34c 100644 (file)
@@ -63,12 +63,29 @@ class PlatformTest(unittest.TestCase):
 
     def test_mac_ver(self):
         res = platform.mac_ver()
-        try:
-            import gestalt
-        except ImportError: pass
-        else:
-            if sys.platform == 'darwin':
-                self.assert_(all(res))
+
+        if os.uname()[0] == 'Darwin':
+            # We're on a MacOSX system, check that
+            # the right version information is returned
+            fd = os.popen('sw_vers', 'r')
+            real_ver = None
+            for ln in fd:
+                if ln.startswith('ProductVersion:'):
+                    real_ver = ln.strip().split()[-1]
+                    break
+            fd.close()
+            self.failIf(real_ver is None)
+            self.assertEquals(res[0], real_ver)
+
+            # res[1] claims to contain
+            # (version, dev_stage, non_release_version)
+            # That information is no longer available
+            self.assertEquals(res[1], ('', '', ''))
+
+            if sys.byteorder == 'little':
+                self.assertEquals(res[2], 'i386')
+            else:
+                self.assertEquals(res[2], 'PowerPC')
 
     def test_dist(self):
         res = platform.dist()