changeset 24423:01b39e821d00

crecord: conditionalize the imports that are not available on Windows 'fcntl', 'termios' and 'wcurses' are not available on the default Windows python installation, and importing them caused widespread carnage in the test suite. There were 29 different changed test files (on top of unrelated errors), mostly in the form of an ImportError. The failures weren't related to actual crecord use, and followed the import chain: 'localrepo' -> 'subrepo' -> 'cmdutil' -> 'crecord' -> 'fcntl'
author Matt Harbison <matt_harbison@yahoo.com>
date Fri, 20 Mar 2015 23:32:00 -0400
parents 2bdd35ea0a03
children f7a3ea7b9dc6
files mercurial/crecord.py tests/test-module-imports.t
diffstat 2 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/crecord.py	Fri Mar 20 21:55:11 2015 -0400
+++ b/mercurial/crecord.py	Fri Mar 20 23:32:00 2015 -0400
@@ -12,7 +12,7 @@
 import patch as patchmod
 import util, encoding
 
-import os, re, sys, fcntl, struct, termios, signal, tempfile, locale, cStringIO
+import os, re, sys, struct, signal, tempfile, locale, cStringIO
 
 # This is required for ncurses to display non-ASCII characters in default user
 # locale encoding correctly.  --immerrr
@@ -20,10 +20,14 @@
 
 # os.name is one of: 'posix', 'nt', 'dos', 'os2', 'mac', or 'ce'
 if os.name == 'posix':
-    import curses
+    import curses, fcntl, termios
 else:
     # I have no idea if wcurses works with crecord...
-    import wcurses as curses
+    try:
+        import wcurses as curses
+    except ImportError:
+        # wcurses is not shipped on Windows by default
+        pass
 
 try:
     curses
--- a/tests/test-module-imports.t	Fri Mar 20 21:55:11 2015 -0400
+++ b/tests/test-module-imports.t	Fri Mar 20 23:32:00 2015 -0400
@@ -21,6 +21,9 @@
 these may expose other cycles.
 
   $ hg locate 'mercurial/**.py' | sed 's-\\-/-g' | xargs python "$import_checker"
+  mercurial/crecord.py mixed imports
+     stdlib:    fcntl, termios
+     relative:  curses
   mercurial/dispatch.py mixed imports
      stdlib:    commands
      relative:  error, extensions, fancyopts, hg, hook, util