Index: /pyyaml/trunk/tests/test_yaml_ext.py
===================================================================
--- /pyyaml/trunk/tests/test_yaml_ext.py	(revision 322)
+++ /pyyaml/trunk/tests/test_yaml_ext.py	(revision 325)
@@ -241,5 +241,9 @@
         finally:
             _tear_down()
-    wrapper.func_name = '%s_ext' % function.func_name
+    try:
+        wrapper.func_name = '%s_ext' % function.func_name
+    except TypeError:
+        pass
+    wrapper.unittest_name = '%s_ext' % function.func_name
     wrapper.unittest = function.unittest
     wrapper.skip = getattr(function, 'skip', [])+['.skip-ext']
@@ -260,6 +264,6 @@
                 functions.append(wrap_ext_function(value))
     for function in functions:
-        assert function.func_name not in globals()
-        globals()[function.func_name] = function
+        assert function.unittest_name not in globals()
+        globals()[function.unittest_name] = function
 
 import test_tokens, test_structure, test_errors, test_resolver, test_constructor,   \
Index: /pyyaml/trunk/tests/test_constructor.py
===================================================================
--- /pyyaml/trunk/tests/test_constructor.py	(revision 322)
+++ /pyyaml/trunk/tests/test_constructor.py	(revision 325)
@@ -232,4 +232,6 @@
     elif isinstance(data, unicode):
         return data.encode('utf-8')
+    elif isinstance(data, float) and data != data:
+        return '?'
     else:
         return str(data)
Index: /pyyaml/trunk/tests/test_appliance.py
===================================================================
--- /pyyaml/trunk/tests/test_appliance.py	(revision 322)
+++ /pyyaml/trunk/tests/test_appliance.py	(revision 325)
@@ -52,7 +52,11 @@
 
 def execute(function, filenames, verbose):
+    if hasattr(function, 'unittest_name'):
+        name = function.unittest_name
+    else:
+        name = function.func_name
     if verbose:
         sys.stdout.write('='*75+'\n')
-        sys.stdout.write('%s(%s)...\n' % (function.func_name, ', '.join(filenames)))
+        sys.stdout.write('%s(%s)...\n' % (name, ', '.join(filenames)))
     try:
         function(verbose=verbose, *filenames)
@@ -74,5 +78,5 @@
             sys.stdout.write('.')
     sys.stdout.flush()
-    return (function, filenames, kind, info)
+    return (name, filenames, kind, info)
 
 def display(results, verbose):
@@ -82,5 +86,5 @@
     failures = 0
     errors = 0
-    for function, filenames, kind, info in results:
+    for name, filenames, kind, info in results:
         if kind == 'SUCCESS':
             continue
@@ -90,5 +94,5 @@
             errors += 1
         sys.stdout.write('='*75+'\n')
-        sys.stdout.write('%s(%s): %s\n' % (function.func_name, ', '.join(filenames), kind))
+        sys.stdout.write('%s(%s): %s\n' % (name, ', '.join(filenames), kind))
         if kind == 'ERROR':
             traceback.print_exception(file=sys.stdout, *info)
@@ -99,5 +103,5 @@
             sys.stdout.write('~'*75+'\n')
             for arg in info[1].args:
-                pprint.pprint(arg, stream=sys.stdout, indent=2)
+                pprint.pprint(arg, stream=sys.stdout)
         for filename in filenames:
             sys.stdout.write('-'*75+'\n')
Index: /pyyaml/trunk/tests/test_recursive.py
===================================================================
--- /pyyaml/trunk/tests/test_recursive.py	(revision 322)
+++ /pyyaml/trunk/tests/test_recursive.py	(revision 325)
@@ -36,6 +36,6 @@
     finally:
         if verbose:
-            print "VALUE1:", value1
-            print "VALUE2:", value2
+            #print "VALUE1:", value1
+            #print "VALUE2:", value2
             print "OUTPUT1:"
             print output1
Index: /pyyaml/trunk/setup.py
===================================================================
--- /pyyaml/trunk/setup.py	(revision 322)
+++ /pyyaml/trunk/setup.py	(revision 325)
@@ -221,5 +221,6 @@
                     depends=ext.depends)
         except CompileError:
-            log.warn("%s appears not to be installed" % ext.feature_name)
+            log.warn("%s appears not to be installed: forcing --%s"
+                     % (ext.feature_name, ext.neg_option_name))
             log.warn("(if %s is installed, you may need to specify"
                     % ext.feature_name)
