[mmap] Make tests pass again

Which also means we don't have tests for overwriting a file :).
diff --git a/Lib/fontTools/ttLib/__init__.py b/Lib/fontTools/ttLib/__init__.py
index 741a23c..4fe865e 100644
--- a/Lib/fontTools/ttLib/__init__.py
+++ b/Lib/fontTools/ttLib/__init__.py
@@ -44,6 +44,7 @@
 from __future__ import print_function, division, absolute_import
 from fontTools.misc.py23 import *
 from fontTools.misc.loggingTools import deprecateArgument, deprecateFunction
+import io
 import os
 import sys
 import logging
@@ -175,16 +176,24 @@
 			# assume "file" is a readable file object
 			closeStream = False
 		if not self.lazy:
+			tmp = None
 			# Try mmap()ing it first:
-			try:
-				# TODO: Port to Windows version of mmap's module
-				tmp = _mmap(file.fileno(), 0, flags=mmap.MAP_PRIVATE, prot=mmap.PROT_READ)
-			except mmap.error:
+			if hasattr(file, 'fileno'):
+				try:
+					# TODO: Port to Windows version of mmap's module
+					fno = file.fileno()
+					print(fno)
+					tmp = _mmap(file.fileno(), 0, flags=mmap.MAP_PRIVATE, prot=mmap.PROT_READ)
+					if hasattr(file, 'name'):
+						tmp.name = file.name
+				except io.UnsupportedOperation:
+					pass
+			if tmp is None:
 				# Read into memory and wrap a stream around it to allow overwriting
 				tmp = BytesIO(file.read())
-			if hasattr(file, 'name'):
-				# save reference to input file name
-				tmp.name = file.name
+				if hasattr(file, 'name'):
+					tmp.name = file.name
+
 			if closeStream:
 				file.close()
 			file = tmp