Issue #17883: Tweak test_tcl testLoadWithUNC to skip the test in the
event of a permission error on Windows and to properly report other
skip conditions.
diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
index 50e1ac4..0ccede1 100644
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -138,18 +138,15 @@
tcl = self.interp
self.assertRaises(TclError,tcl.eval,'package require DNE')
+ @unittest.skipUnless(sys.platform == 'win32', "only applies to Windows")
def testLoadWithUNC(self):
- import sys
- if sys.platform != 'win32':
- return
-
# Build a UNC path from the regular path.
# Something like
# \\%COMPUTERNAME%\c$\python27\python.exe
fullname = os.path.abspath(sys.executable)
if fullname[1] != ':':
- return
+ self.skipTest('unusable path: %r' % fullname)
unc_name = r'\\%s\%s$\%s' % (os.environ['COMPUTERNAME'],
fullname[0],
fullname[3:])
@@ -158,7 +155,14 @@
env.unset("TCL_LIBRARY")
cmd = '%s -c "import Tkinter; print Tkinter"' % (unc_name,)
- p = Popen(cmd, stdout=PIPE, stderr=PIPE)
+ try:
+ p = Popen(cmd, stdout=PIPE, stderr=PIPE)
+ except WindowsError as e:
+ if e.winerror == 5:
+ self.skipTest('Not permitted to start the child process')
+ else:
+ raise
+
out_data, err_data = p.communicate()
msg = '\n\n'.join(['"Tkinter.py" not in output',