]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 71415 via svnmerge from
authorTarek Ziadé <ziade.tarek@gmail.com>
Thu, 9 Apr 2009 22:51:41 +0000 (22:51 +0000)
committerTarek Ziadé <ziade.tarek@gmail.com>
Thu, 9 Apr 2009 22:51:41 +0000 (22:51 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r71415 | tarek.ziade | 2009-04-10 00:02:39 +0200 (Fri, 10 Apr 2009) | 9 lines

  Merged revisions 71413 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r71413 | tarek.ziade | 2009-04-09 23:36:44 +0200 (Thu, 09 Apr 2009) | 1 line

    Fixed #5731: Distutils bdist_wininst no longer worked on non-Windows platforms
  ........
................

Lib/distutils/command/bdist_wininst.py
Lib/distutils/tests/test_bdist_wininst.py [new file with mode: 0644]
Misc/NEWS

index e997e8f09446547432ebb4e929058fc49a6b9e67..d6d01c630d44228124c332e2128a28163028fc85 100644 (file)
@@ -330,9 +330,14 @@ class bdist_wininst(Command):
         directory = os.path.dirname(__file__)
         # we must use a wininst-x.y.exe built with the same C compiler
         # used for python.  XXX What about mingw, borland, and so on?
-        if self.plat_name == 'win32':
-            sfix = ''
+
+        # if plat_name starts with "win" but is not "win32"
+        # we want to strip "win" and leave the rest (e.g. -amd64)
+        # for all other cases, we don't want any suffix
+        if self.plat_name != 'win32' and self.plat_name[:3] == 'win':
+            sfix = self.plat_name[3:]
         else:
-            sfix = self.plat_name[3:] # strip 'win' - leaves eg '-amd64'
+            sfix = ''
+
         filename = os.path.join(directory, "wininst-%.1f%s.exe" % (bv, sfix))
         return open(filename, "rb").read()
diff --git a/Lib/distutils/tests/test_bdist_wininst.py b/Lib/distutils/tests/test_bdist_wininst.py
new file mode 100644 (file)
index 0000000..de6601f
--- /dev/null
@@ -0,0 +1,34 @@
+"""Tests for distutils.command.bdist_wininst."""
+import unittest
+import os
+
+from distutils.dist import Distribution
+from distutils.command.bdist_wininst import bdist_wininst
+from distutils.tests import support
+
+class BuildWinInstTestCase(support.TempdirManager,
+                           unittest.TestCase):
+
+    def test_get_exe_bytes(self):
+
+        # issue5731: command was broken on non-windows platforms
+        # this test makes sure it works now for every platform
+        # let's create a command
+        tmp_dir = self.mkdtemp()
+        pkg_dir = os.path.join(tmp_dir, 'foo')
+        os.mkdir(pkg_dir)
+        dist = Distribution()
+        cmd = bdist_wininst(dist)
+        cmd.ensure_finalized()
+
+        # let's run the code that finds the right wininst*.exe file
+        # and make sure it finds it and returns its content
+        # no matter what platform we have
+        exe_file = cmd.get_exe_bytes()
+        self.assert_(len(exe_file) > 10)
+
+def test_suite():
+    return unittest.makeSuite(BuildWinInstTestCase)
+
+if __name__ == '__main__':
+    test_support.run_unittest(test_suite())
index ab6645af2a0d5cd17734c292f488ea4397fc50cd..022141b7be8c19f4f219a38e1d85da413642bf2f 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -216,6 +216,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #5731: Distutils bdist_wininst no longer worked on non-Windows 
+  platforms. Initial patch by Paul Moore.
+
 - Issue #4998: The memory saving effect of __slots__ had been lost on Fractions
   which inherited from numbers.py which did not have __slots__ defined.  The
   numbers hierarchy now has its own __slots__ declarations.