diff -r 3337298f5c75 Lib/test/string_tests.py --- a/Lib/test/string_tests.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/string_tests.py Tue Dec 10 11:45:28 2013 -0600 @@ -750,10 +750,10 @@ self.checkraises(TypeError, 'hello', 'replace', 42, 'h') self.checkraises(TypeError, 'hello', 'replace', 'h', 42) + @unittest.skipIf(sys.maxint > (1 << 32) or struct.calcsize('P') != 4, + 'only applies to 32-bit platforms') def test_replace_overflow(self): # Check for overflow checking on 32 bit machines - if sys.maxint != 2147483647 or struct.calcsize("P") > 4: - return A2_16 = "A" * (2**16) self.checkraises(OverflowError, A2_16, "replace", "", A2_16) self.checkraises(OverflowError, A2_16, "replace", "A", A2_16) @@ -1286,27 +1286,27 @@ # Additional tests that only work with # 8bit compatible object, i.e. str and UserString - if test_support.have_unicode: - def test_encoding_decoding(self): - codecs = [('rot13', 'uryyb jbeyq'), - ('base64', 'aGVsbG8gd29ybGQ=\n'), - ('hex', '68656c6c6f20776f726c64'), - ('uu', 'begin 666 \n+:&5L;&\\@=V]R;&0 \n \nend\n')] - for encoding, data in codecs: - self.checkequal(data, 'hello world', 'encode', encoding) - self.checkequal('hello world', data, 'decode', encoding) - # zlib is optional, so we make the test optional too... - try: - import zlib - except ImportError: - pass - else: - data = 'x\x9c\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x1a\x0b\x04]' - self.checkequal(data, 'hello world', 'encode', 'zlib') - self.checkequal('hello world', data, 'decode', 'zlib') + @unittest.skipUnless(test_support.have_unicode, 'no unicode support') + def test_encoding_decoding(self): + codecs = [('rot13', 'uryyb jbeyq'), + ('base64', 'aGVsbG8gd29ybGQ=\n'), + ('hex', '68656c6c6f20776f726c64'), + ('uu', 'begin 666 \n+:&5L;&\\@=V]R;&0 \n \nend\n')] + for encoding, data in codecs: + self.checkequal(data, 'hello world', 'encode', encoding) + self.checkequal('hello world', data, 'decode', encoding) + # zlib is optional, so we make the test optional too... + try: + import zlib + except ImportError: + pass + else: + data = 'x\x9c\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x1a\x0b\x04]' + self.checkequal(data, 'hello world', 'encode', 'zlib') + self.checkequal('hello world', data, 'decode', 'zlib') - self.checkraises(TypeError, 'xyz', 'decode', 42) - self.checkraises(TypeError, 'xyz', 'encode', 42) + self.checkraises(TypeError, 'xyz', 'decode', 42) + self.checkraises(TypeError, 'xyz', 'encode', 42) class MixinStrUnicodeTest: diff -r 3337298f5c75 Lib/test/test_aepack.py --- a/Lib/test/test_aepack.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_aepack.py Tue Dec 10 11:45:28 2013 -0600 @@ -59,10 +59,10 @@ try: import Carbon.File except: - return + self.skipTest('Carbon.File not available') if not hasattr(Carbon.File, "FSSpec"): - return + self.skipTest('Carbon.File.FSSpec not available') o = Carbon.File.FSSpec(os.curdir) packed = aepack.pack(o) unpacked = aepack.unpack(packed) @@ -72,9 +72,9 @@ try: import Carbon.File except: - return + self.skipTest('Carbon.File not available') if not hasattr(Carbon.File, "FSSpec"): - return + self.skipTest('Carbon.File.FSSpec not available') o = Carbon.File.FSSpec(os.curdir).NewAliasMinimal() packed = aepack.pack(o) unpacked = aepack.unpack(packed) diff -r 3337298f5c75 Lib/test/test_array.py --- a/Lib/test/test_array.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_array.py Tue Dec 10 11:45:28 2013 -0600 @@ -754,7 +754,7 @@ try: import gc except ImportError: - return + self.skipTest('gc module not available') a = array.array(self.typecode) l = [iter(a)] l.append(l) diff -r 3337298f5c75 Lib/test/test_bsddb.py --- a/Lib/test/test_bsddb.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_bsddb.py Tue Dec 10 11:45:28 2013 -0600 @@ -47,10 +47,7 @@ self.assertIn('discovered', self.f.values()) def test_close_and_reopen(self): - if self.fname is None: - # if we're using an in-memory only db, we can't reopen it - # so finish here. - return + self.assertIsNotNone(self.fname) self.f.close() self.f = self.openmethod[0](self.fname, 'w') for k, v in self.d.iteritems(): @@ -309,8 +306,7 @@ self.assertEqual(self.f[k], v) def test_keyordering(self): - if self.openmethod[0] is not bsddb.btopen: - return + self.assertIs(self.openmethod[0], bsddb.btopen) keys = self.d.keys() keys.sort() self.assertEqual(self.f.first()[0], keys[0]) @@ -327,19 +323,34 @@ fname = None openmethod = [bsddb.btopen] + # if we're using an in-memory only db, we can't reopen it + test_close_and_reopen = None + class TestBTree_InMemory_Truncate(TestBSDDB): fname = None openflag = 'n' openmethod = [bsddb.btopen] + # if we're using an in-memory only db, we can't reopen it + test_close_and_reopen = None + class TestHashTable(TestBSDDB): fname = test_support.TESTFN openmethod = [bsddb.hashopen] + # keyordering is specific to btopen method + test_keyordering = None + class TestHashTable_InMemory(TestBSDDB): fname = None openmethod = [bsddb.hashopen] + # if we're using an in-memory only db, we can't reopen it + test_close_and_reopen = None + + # keyordering is specific to btopen method + test_keyordering = None + ## # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85 ## # appears broken... at least on ## # Solaris Intel - rmasse 1/97 diff -r 3337298f5c75 Lib/test/test_builtin.py --- a/Lib/test/test_builtin.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_builtin.py Tue Dec 10 11:45:28 2013 -0600 @@ -447,59 +447,6 @@ return 'a' self.assertRaises(TypeError, eval, 'dir()', globals(), C()) - # Done outside of the method test_z to get the correct scope - z = 0 - f = open(TESTFN, 'w') - f.write('z = z+1\n') - f.write('z = z*2\n') - f.close() - with check_py3k_warnings(("execfile.. not supported in 3.x", - DeprecationWarning)): - execfile(TESTFN) - - def test_execfile(self): - global numruns - if numruns: - return - numruns += 1 - - globals = {'a': 1, 'b': 2} - locals = {'b': 200, 'c': 300} - - self.assertEqual(self.__class__.z, 2) - globals['z'] = 0 - execfile(TESTFN, globals) - self.assertEqual(globals['z'], 2) - locals['z'] = 0 - execfile(TESTFN, globals, locals) - self.assertEqual(locals['z'], 2) - - class M: - "Test mapping interface versus possible calls from execfile()." - def __init__(self): - self.z = 10 - def __getitem__(self, key): - if key == 'z': - return self.z - raise KeyError - def __setitem__(self, key, value): - if key == 'z': - self.z = value - return - raise KeyError - - locals = M() - locals['z'] = 0 - execfile(TESTFN, globals, locals) - self.assertEqual(locals['z'], 2) - - unlink(TESTFN) - self.assertRaises(TypeError, execfile) - self.assertRaises(TypeError, execfile, TESTFN, {}, ()) - import os - self.assertRaises(IOError, execfile, os.curdir) - self.assertRaises(IOError, execfile, "I_dont_exist") - def test_filter(self): self.assertEqual(filter(lambda c: 'a' <= c <= 'z', 'Hello World'), 'elloorld') self.assertEqual(filter(None, [1, 'hello', [], [3], '', None, 9, 0]), [1, 'hello', [3], 9]) @@ -1646,6 +1593,56 @@ self.assertRaises(ValueError, x.translate, "1", 1) self.assertRaises(TypeError, x.translate, "1"*256, 1) +class TestExecFile(unittest.TestCase): + # Done outside of the method test_z to get the correct scope + z = 0 + f = open(TESTFN, 'w') + f.write('z = z+1\n') + f.write('z = z*2\n') + f.close() + with check_py3k_warnings(("execfile.. not supported in 3.x", + DeprecationWarning)): + execfile(TESTFN) + + def test_execfile(self): + globals = {'a': 1, 'b': 2} + locals = {'b': 200, 'c': 300} + + self.assertEqual(self.__class__.z, 2) + globals['z'] = 0 + execfile(TESTFN, globals) + self.assertEqual(globals['z'], 2) + locals['z'] = 0 + execfile(TESTFN, globals, locals) + self.assertEqual(locals['z'], 2) + + class M: + "Test mapping interface versus possible calls from execfile()." + def __init__(self): + self.z = 10 + def __getitem__(self, key): + if key == 'z': + return self.z + raise KeyError + def __setitem__(self, key, value): + if key == 'z': + self.z = value + return + raise KeyError + + locals = M() + locals['z'] = 0 + execfile(TESTFN, globals, locals) + self.assertEqual(locals['z'], 2) + + unlink(TESTFN) + self.assertRaises(TypeError, execfile) + self.assertRaises(TypeError, execfile, TESTFN, {}, ()) + import os + self.assertRaises(IOError, execfile, os.curdir) + self.assertRaises(IOError, execfile, "I_dont_exist") + + class TestSorted(unittest.TestCase): def test_basic(self): @@ -1693,6 +1690,10 @@ run_unittest(*args) def test_main(verbose=None): + global numruns + if not numruns: + _run_unittest(TestExecFile) + numruns += 1 test_classes = (BuiltinTest, TestSorted) _run_unittest(*test_classes) diff -r 3337298f5c75 Lib/test/test_cfgparser.py --- a/Lib/test/test_cfgparser.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_cfgparser.py Tue Dec 10 11:45:28 2013 -0600 @@ -284,13 +284,17 @@ cf.set("sect", "option1", mystr("splat")) cf.set("sect", "option2", "splat") cf.set("sect", "option2", mystr("splat")) + + def test_set_unicode(self): try: unicode except NameError: - pass - else: - cf.set("sect", "option1", unicode("splat")) - cf.set("sect", "option2", unicode("splat")) + self.skipTest('no unicode support') + + cf = self.fromstring("[sect]\n" + "option1=foo\n") + cf.set("sect", "option1", unicode("splat")) + cf.set("sect", "option2", unicode("splat")) def test_read_returns_file_list(self): file1 = test_support.findfile("cfgparser.1") diff -r 3337298f5c75 Lib/test/test_cmath.py --- a/Lib/test/test_cmath.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_cmath.py Tue Dec 10 11:45:28 2013 -0600 @@ -282,7 +282,7 @@ def test_specific_values(self): if not float.__getformat__("double").startswith("IEEE"): - return + self.skipTest('needs IEEE double') def rect_complex(z): """Wrapped version of rect that accepts a complex number instead of diff -r 3337298f5c75 Lib/test/test_codecencodings_iso2022.py --- a/Lib/test/test_codecencodings_iso2022.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_codecencodings_iso2022.py Tue Dec 10 11:45:28 2013 -0600 @@ -36,6 +36,7 @@ # iso2022_kr.txt cannot be used to test "chunk coding": the escape # sequence is only written on the first line + @unittest.skip('iso2022_kr.txt cannot be used to test "chunk coding"') def test_chunkcoding(self): pass diff -r 3337298f5c75 Lib/test/test_decimal.py --- a/Lib/test/test_decimal.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_decimal.py Tue Dec 10 11:45:28 2013 -0600 @@ -223,7 +223,6 @@ global skip_expected if skip_expected: raise unittest.SkipTest - return with open(file) as f: for line in f: line = line.replace('\r\n', '').replace('\n', '') @@ -234,7 +233,6 @@ #Exception raised where there shouldn't have been one. self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line) - return def eval_line(self, s): if s.find(' -> ') >= 0 and s[:2] != '--' and not s.startswith(' --'): @@ -391,7 +389,6 @@ 'Incorrect answer for ' + s + ' -- got ' + result) self.assertItemsEqual(myexceptions, theirexceptions, 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) - return def getexceptions(self): return [e for e in Signals if self.context.flags[e]] @@ -834,7 +831,7 @@ try: from locale import CHAR_MAX except ImportError: - return + self.skipTest('locale.CHAR_MAX not available') # Set up some localeconv-like dictionaries en_US = { @@ -1196,7 +1193,6 @@ cls.assertEqual(test1, Decimal('0.3333333333333333333333333333')) cls.assertEqual(test2, Decimal('0.3333333333333333333333333333')) - return def thfunc2(cls): d1 = Decimal(1) @@ -1210,17 +1206,12 @@ cls.assertEqual(test1, Decimal('0.3333333333333333333333333333')) cls.assertEqual(test2, Decimal('0.333333333333333333')) - return +@unittest.skipUnless(threading, 'threading required') class DecimalUseOfContextTest(unittest.TestCase): '''Unit tests for Use of Context cases in Decimal.''' - try: - import threading - except ImportError: - threading = None - # Take care executing this test from IDLE, there's an issue in threading # that hangs IDLE and I couldn't find it @@ -1239,10 +1230,6 @@ self.finish1.wait() self.finish2.wait() - return - - if threading is None: - del test_threading class DecimalUsabilityTest(unittest.TestCase): @@ -1540,7 +1527,6 @@ self.assertEqual(d1._sign, b1._sign) self.assertEqual(d1._int, b1._int) self.assertEqual(d1._exp, b1._exp) - return Decimal(d1) self.assertEqual(d1._sign, b1._sign) diff -r 3337298f5c75 Lib/test/test_descr.py --- a/Lib/test/test_descr.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_descr.py Tue Dec 10 11:45:28 2013 -0600 @@ -1059,11 +1059,12 @@ c.abc = 5 self.assertEqual(c.abc, 5) + def test_unicode_slots(self): # Test unicode slot names try: unicode except NameError: - pass + self.skipTest('no unicode support') else: # Test a single unicode string is not expanded as a sequence. class C(object): diff -r 3337298f5c75 Lib/test/test_dis.py --- a/Lib/test/test_dis.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_dis.py Tue Dec 10 11:45:28 2013 -0600 @@ -125,6 +125,8 @@ # so fails if the tests are run with -O. Skip this test then. if __debug__: self.do_disassembly_test(bug1333982, dis_bug1333982) + else: + self.skipTest('need asserts, run without -O') def test_big_linenos(self): def func(count): diff -r 3337298f5c75 Lib/test/test_dumbdbm.py --- a/Lib/test/test_dumbdbm.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_dumbdbm.py Tue Dec 10 11:45:28 2013 -0600 @@ -38,11 +38,9 @@ self.read_helper(f) f.close() + @unittest.skipUnless(hasattr(os, 'chmod'), 'os.chmod not available') + @unittest.skipUnless(hasattr(os, 'umask'), 'os.umask not available') def test_dumbdbm_creation_mode(self): - # On platforms without chmod, don't do anything. - if not (hasattr(os, 'chmod') and hasattr(os, 'umask')): - return - try: old_umask = os.umask(0002) f = dumbdbm.open(_fname, 'c', 0637) diff -r 3337298f5c75 Lib/test/test_fileio.py --- a/Lib/test/test_fileio.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_fileio.py Tue Dec 10 11:45:28 2013 -0600 @@ -283,28 +283,29 @@ self.assertEqual(f.seekable(), True) self.assertEqual(f.isatty(), False) f.close() - - if sys.platform != "win32": - try: - f = _FileIO("/dev/tty", "a") - except EnvironmentError: - # When run in a cron job there just aren't any - # ttys, so skip the test. This also handles other - # OS'es that don't support /dev/tty. - pass - else: - self.assertEqual(f.readable(), False) - self.assertEqual(f.writable(), True) - if sys.platform != "darwin" and \ - 'bsd' not in sys.platform and \ - not sys.platform.startswith('sunos'): - # Somehow /dev/tty appears seekable on some BSDs - self.assertEqual(f.seekable(), False) - self.assertEqual(f.isatty(), True) - f.close() finally: os.unlink(TESTFN) + @unittest.skipIf(sys.platform == 'win32', 'no ttys on Windows') + def testAblesOnTTY(self): + try: + f = _FileIO("/dev/tty", "a") + except EnvironmentError: + # When run in a cron job there just aren't any + # ttys, so skip the test. This also handles other + # OS'es that don't support /dev/tty. + self.skipTest('need /dev/tty') + else: + self.assertEqual(f.readable(), False) + self.assertEqual(f.writable(), True) + if sys.platform != "darwin" and \ + 'bsd' not in sys.platform and \ + not sys.platform.startswith('sunos'): + # Somehow /dev/tty appears seekable on some BSDs + self.assertEqual(f.seekable(), False) + self.assertEqual(f.isatty(), True) + f.close() + def testInvalidModeStrings(self): # check invalid mode strings for mode in ("", "aU", "wU+", "rw", "rt"): @@ -342,8 +343,7 @@ try: fn = TESTFN.encode("ascii") except UnicodeEncodeError: - # Skip test - return + self.skipTest('could not encode %r to ascii' % TESTFN) f = _FileIO(fn, "w") try: f.write(b"abc") diff -r 3337298f5c75 Lib/test/test_float.py --- a/Lib/test/test_float.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_float.py Tue Dec 10 11:45:28 2013 -0600 @@ -101,7 +101,7 @@ # it still has to accept the normal python syntax import locale if not locale.localeconv()['decimal_point'] == ',': - return + self.skipTest('decimal_point is not ","') self.assertEqual(float(" 3.14 "), 3.14) self.assertEqual(float("+3.14 "), 3.14) diff -r 3337298f5c75 Lib/test/test_functools.py --- a/Lib/test/test_functools.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_functools.py Tue Dec 10 11:45:28 2013 -0600 @@ -43,8 +43,6 @@ self.assertEqual(p.args, (1, 2)) self.assertEqual(p.keywords, dict(a=10, b=20)) # attributes should not be writable - if not isinstance(self.thetype, type): - return self.assertRaises(TypeError, setattr, p, 'func', map) self.assertRaises(TypeError, setattr, p, 'args', (1, 2)) self.assertRaises(TypeError, setattr, p, 'keywords', dict(a=1, b=2)) @@ -180,8 +178,10 @@ thetype = PythonPartial # the python version isn't picklable - def test_pickle(self): pass - def test_setstate_refcount(self): pass + test_pickle = test_setstate_refcount = None + + # the python version isn't a type + test_attributes = None class TestUpdateWrapper(unittest.TestCase): diff -r 3337298f5c75 Lib/test/test_getargs2.py --- a/Lib/test/test_getargs2.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_getargs2.py Tue Dec 10 11:45:28 2013 -0600 @@ -42,6 +42,13 @@ INT_MIN, LONG_MIN, LONG_MAX, PY_SSIZE_T_MIN, PY_SSIZE_T_MAX, \ SHRT_MIN, SHRT_MAX +try: + from _testcapi import getargs_L, getargs_K +except ImportError: + _PY_LONG_LONG_available = False +else: + _PY_LONG_LONG_available = True + # fake, they are not defined in Python's header files LLONG_MAX = 2**63-1 LLONG_MIN = -2**63 @@ -208,6 +215,7 @@ self.assertRaises(OverflowError, getargs_n, VERY_LARGE) +@unittest.skipUnless(_PY_LONG_LONG_available, 'PY_LONG_LONG not available') class LongLong_TestCase(unittest.TestCase): def test_L(self): from _testcapi import getargs_L @@ -322,13 +330,8 @@ self.fail('TypeError should have been raised') def test_main(): - tests = [Signed_TestCase, Unsigned_TestCase, Tuple_TestCase, Keywords_TestCase] - try: - from _testcapi import getargs_L, getargs_K - except ImportError: - pass # PY_LONG_LONG not available - else: - tests.append(LongLong_TestCase) + tests = [Signed_TestCase, Unsigned_TestCase, LongLong_TestCase, + Tuple_TestCase, Keywords_TestCase] test_support.run_unittest(*tests) if __name__ == "__main__": diff -r 3337298f5c75 Lib/test/test_grp.py --- a/Lib/test/test_grp.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_grp.py Tue Dec 10 11:45:28 2013 -0600 @@ -26,8 +26,10 @@ for e in entries: self.check_value(e) + def test_values_extended(self): + entries = grp.getgrall() if len(entries) > 1000: # Huge group file (NIS?) -- skip the rest - return + self.skipTest('huge group file, extended test skipped') for e in entries: e2 = grp.getgrgid(e.gr_gid) diff -r 3337298f5c75 Lib/test/test_imp.py --- a/Lib/test/test_imp.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_imp.py Tue Dec 10 11:45:28 2013 -0600 @@ -2,7 +2,12 @@ import unittest from test import test_support +try: + import thread +except ImportError: + thread = None +@unittest.skipUnless(thread, 'threading not available') class LockTests(unittest.TestCase): """Very basic test of import lock functions.""" @@ -68,13 +73,8 @@ def test_main(): tests = [ ReloadTests, + LockTests, ] - try: - import thread - except ImportError: - pass - else: - tests.append(LockTests) test_support.run_unittest(*tests) if __name__ == "__main__": diff -r 3337298f5c75 Lib/test/test_index.py --- a/Lib/test/test_index.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_index.py Tue Dec 10 11:45:28 2013 -0600 @@ -91,7 +91,7 @@ self.assertEqual(self.seq[self.o:self.o2], self.seq[1:3]) self.assertEqual(self.seq[self.n:self.n2], self.seq[2:4]) - def test_slice_bug7532(self): + def test_slice_bug7532a(self): seqlen = len(self.seq) self.o.ind = int(seqlen * 1.5) self.n.ind = seqlen + 2 @@ -99,9 +99,12 @@ self.assertEqual(self.seq[:self.o], self.seq) self.assertEqual(self.seq[self.n:], self.seq[0:0]) self.assertEqual(self.seq[:self.n], self.seq) + + def test_slice_bug7532b(self): if isinstance(self.seq, ClassicSeq): - return + self.skipTest('test fails for ClassicSeq') # These tests fail for ClassicSeq (see bug #7532) + seqlen = len(self.seq) self.o2.ind = -seqlen - 2 self.n2.ind = -int(seqlen * 1.5) self.assertEqual(self.seq[self.o2:], self.seq) diff -r 3337298f5c75 Lib/test/test_io.py --- a/Lib/test/test_io.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_io.py Tue Dec 10 11:45:28 2013 -0600 @@ -393,14 +393,9 @@ # a long time to build the >2GB file and takes >2GB of disk space # therefore the resource must be enabled to run this test. if sys.platform[:3] == 'win' or sys.platform == 'darwin': - if not support.is_resource_enabled("largefile"): - print("\nTesting large file ops skipped on %s." % sys.platform, - file=sys.stderr) - print("It requires %d bytes and a long time." % self.LARGE, - file=sys.stderr) - print("Use 'regrtest.py -u largefile test_io' to run it.", - file=sys.stderr) - return + support.requires( + 'largefile', + 'test requires %s bytes and a long time to run' % self.LARGE) with self.open(support.TESTFN, "w+b", 0) as f: self.large_file_ops(f) with self.open(support.TESTFN, "w+b") as f: @@ -650,6 +645,7 @@ self.assertEqual(42, bufio.fileno()) + @unittest.skip('test having existential crisis') def test_no_fileno(self): # XXX will we always have fileno() function? If so, kill # this test. Else, write it. diff -r 3337298f5c75 Lib/test/test_iter.py --- a/Lib/test/test_iter.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_iter.py Tue Dec 10 11:45:28 2013 -0600 @@ -526,7 +526,7 @@ d = {"one": 1, "two": 2, "three": 3} self.assertEqual(reduce(add, d), "".join(d.keys())) - # This test case will be removed if we don't have Unicode + @unittest.skipUnless(have_unicode, 'needs unicode support') def test_unicode_join_endcase(self): # This class inserts a Unicode object into its argument's natural @@ -567,8 +567,6 @@ unlink(TESTFN) except OSError: pass - if not have_unicode: - def test_unicode_join_endcase(self): pass # Test iterators with 'x in y' and 'x not in y'. def test_in_and_not_in(self): diff -r 3337298f5c75 Lib/test/test_macos.py --- a/Lib/test/test_macos.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_macos.py Tue Dec 10 11:45:28 2013 -0600 @@ -8,11 +8,9 @@ TESTFN2 = test_support.TESTFN + '2' class TestMacOS(unittest.TestCase): - + @unittest.skipUnless(os.path.exists('/Developer/Tools/SetFile'), + '/Developer/Tools/SetFile does not exist') def testGetCreatorAndType(self): - if not os.path.exists('/Developer/Tools/SetFile'): - return - try: fp = open(test_support.TESTFN, 'w') fp.write('\n') @@ -29,10 +27,9 @@ finally: os.unlink(test_support.TESTFN) + @unittest.skipUnless(os.path.exists('/Developer/Tools/GetFileInfo'), + '/Developer/Tools/GetFileInfo does not exist') def testSetCreatorAndType(self): - if not os.path.exists('/Developer/Tools/GetFileInfo'): - return - try: fp = open(test_support.TESTFN, 'w') fp.write('\n') diff -r 3337298f5c75 Lib/test/test_macostools.py --- a/Lib/test/test_macostools.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_macostools.py Tue Dec 10 11:45:28 2013 -0600 @@ -12,6 +12,8 @@ TESTFN2 = test_support.TESTFN + '2' +requires_32bit = unittest.skipUnless(sys.maxint < 2**32, '32-bit only test') + class TestMacostools(unittest.TestCase): def setUp(self): @@ -51,30 +53,32 @@ DeprecationWarning), quiet=True): macostools.touched(test_support.TESTFN) - if sys.maxint < 2**32: - def test_copy(self): - test_support.unlink(TESTFN2) - macostools.copy(test_support.TESTFN, TESTFN2) - self.assertEqual(self.compareData(), '') + @requires_32bit + def test_copy(self): + test_support.unlink(TESTFN2) + macostools.copy(test_support.TESTFN, TESTFN2) + self.assertEqual(self.compareData(), '') - if sys.maxint < 2**32: - def test_mkalias(self): - test_support.unlink(TESTFN2) - macostools.mkalias(test_support.TESTFN, TESTFN2) - fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) - self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) + @requires_32bit + def test_mkalias(self): + test_support.unlink(TESTFN2) + macostools.mkalias(test_support.TESTFN, TESTFN2) + fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) + self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) - def test_mkalias_relative(self): - test_support.unlink(TESTFN2) - # If the directory doesn't exist, then chances are this is a new - # install of Python so don't create it since the user might end up - # running ``sudo make install`` and creating the directory here won't - # leave it with the proper permissions. - if not os.path.exists(sys.prefix): - return - macostools.mkalias(test_support.TESTFN, TESTFN2, sys.prefix) - fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) - self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) + @requires_32bit + # If the directory doesn't exist, then chances are this is a new + # install of Python so don't create it since the user might end up + # running ``sudo make install`` and creating the directory here won't + # leave it with the proper permissions. + @unittest.skipUnless(os.path.exists(sys.prefix), + "%r doesn't exist" % sys.prefix) + def test_mkalias_relative(self): + test_support.unlink(TESTFN2) + + macostools.mkalias(test_support.TESTFN, TESTFN2, sys.prefix) + fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0) + self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN)) def test_main(): diff -r 3337298f5c75 Lib/test/test_memoryview.py --- a/Lib/test/test_memoryview.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_memoryview.py Tue Dec 10 11:45:28 2013 -0600 @@ -63,7 +63,7 @@ def test_setitem_readonly(self): if not self.ro_type: - return + self.skipTest("no read-only type to test") b = self.ro_type(self._source) oldrefcount = sys.getrefcount(b) m = self._view(b) @@ -77,7 +77,7 @@ def test_setitem_writable(self): if not self.rw_type: - return + self.skipTest("no writable type to test") tp = self.rw_type b = self.rw_type(self._source) oldrefcount = sys.getrefcount(b) @@ -183,13 +183,13 @@ def test_attributes_readonly(self): if not self.ro_type: - return + self.skipTest("no read-only type to test") m = self.check_attributes_with_type(self.ro_type) self.assertEqual(m.readonly, True) def test_attributes_writable(self): if not self.rw_type: - return + self.skipTest("no writable type to test") m = self.check_attributes_with_type(self.rw_type) self.assertEqual(m.readonly, False) @@ -236,7 +236,7 @@ # buffer as writable causing a segfault if using mmap tp = self.ro_type if tp is None: - return + self.skipTest("no read-only type to test") b = tp(self._source) m = self._view(b) i = io.BytesIO(b'ZZZZ') diff -r 3337298f5c75 Lib/test/test_multibytecodec.py --- a/Lib/test/test_multibytecodec.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_multibytecodec.py Tue Dec 10 11:45:28 2013 -0600 @@ -157,57 +157,55 @@ os.unlink(TESTFN) class Test_StreamWriter(unittest.TestCase): - if len(u'\U00012345') == 2: # UCS2 - def test_gb18030(self): - s = StringIO.StringIO() - c = codecs.getwriter('gb18030')(s) - c.write(u'123') - self.assertEqual(s.getvalue(), '123') - c.write(u'\U00012345') - self.assertEqual(s.getvalue(), '123\x907\x959') + @unittest.skipUnless(len(u'\U00012345') == 2, 'need a narrow build') + def test_gb18030(self): + s = StringIO.StringIO() + c = codecs.getwriter('gb18030')(s) + c.write(u'123') + self.assertEqual(s.getvalue(), '123') + c.write(u'\U00012345') + self.assertEqual(s.getvalue(), '123\x907\x959') + c.write(u'\U00012345'[0]) + self.assertEqual(s.getvalue(), '123\x907\x959') + c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac') + self.assertEqual(s.getvalue(), + '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') + c.write(u'\U00012345'[0]) + self.assertEqual(s.getvalue(), + '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') + self.assertRaises(UnicodeError, c.reset) + self.assertEqual(s.getvalue(), + '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') + + @unittest.skipUnless(len(u'\U00012345') == 2, 'need a narrow build') + def test_utf_8(self): + s= StringIO.StringIO() + c = codecs.getwriter('utf-8')(s) + c.write(u'123') + self.assertEqual(s.getvalue(), '123') + c.write(u'\U00012345') + self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85') + + # Python utf-8 codec can't buffer surrogate pairs yet. + if 0: c.write(u'\U00012345'[0]) - self.assertEqual(s.getvalue(), '123\x907\x959') + self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85') c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac') self.assertEqual(s.getvalue(), - '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') + '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' + '\xea\xb0\x80\xc2\xac') c.write(u'\U00012345'[0]) self.assertEqual(s.getvalue(), - '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') - self.assertRaises(UnicodeError, c.reset) + '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' + '\xea\xb0\x80\xc2\xac') + c.reset() self.assertEqual(s.getvalue(), - '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') - - def test_utf_8(self): - s= StringIO.StringIO() - c = codecs.getwriter('utf-8')(s) - c.write(u'123') - self.assertEqual(s.getvalue(), '123') - c.write(u'\U00012345') - self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85') - - # Python utf-8 codec can't buffer surrogate pairs yet. - if 0: - c.write(u'\U00012345'[0]) - self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85') - c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac') - self.assertEqual(s.getvalue(), - '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' - '\xea\xb0\x80\xc2\xac') - c.write(u'\U00012345'[0]) - self.assertEqual(s.getvalue(), - '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' - '\xea\xb0\x80\xc2\xac') - c.reset() - self.assertEqual(s.getvalue(), - '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' - '\xea\xb0\x80\xc2\xac\xed\xa0\x88') - c.write(u'\U00012345'[1]) - self.assertEqual(s.getvalue(), - '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' - '\xea\xb0\x80\xc2\xac\xed\xa0\x88\xed\xbd\x85') - - else: # UCS4 - pass + '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' + '\xea\xb0\x80\xc2\xac\xed\xa0\x88') + c.write(u'\U00012345'[1]) + self.assertEqual(s.getvalue(), + '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' + '\xea\xb0\x80\xc2\xac\xed\xa0\x88\xed\xbd\x85') def test_streamwriter_strwrite(self): s = StringIO.StringIO() diff -r 3337298f5c75 Lib/test/test_multibytecodec_support.py --- a/Lib/test/test_multibytecodec_support.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_multibytecodec_support.py Tue Dec 10 11:45:28 2013 -0600 @@ -67,7 +67,7 @@ def test_xmlcharrefreplace(self): if self.has_iso10646: - return + self.skipTest('encoding contains full ISO 10646 map') s = u"\u0b13\u0b23\u0b60 nd eggs" self.assertEqual( @@ -77,7 +77,7 @@ def test_customreplace_encode(self): if self.has_iso10646: - return + self.skipTest('encoding contains full ISO 10646 map') from htmlentitydefs import codepoint2name diff -r 3337298f5c75 Lib/test/test_multiprocessing.py --- a/Lib/test/test_multiprocessing.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_multiprocessing.py Tue Dec 10 11:45:28 2013 -0600 @@ -182,7 +182,7 @@ def test_current(self): if self.TYPE == 'threads': - return + self.skipTest('test not appropriate for {}'.format(self.TYPE)) current = self.current_process() authkey = current.authkey @@ -249,7 +249,7 @@ def test_terminate(self): if self.TYPE == 'threads': - return + self.skipTest('test not appropriate for {}'.format(self.TYPE)) p = self.Process(target=self._test_terminate) p.daemon = True @@ -334,7 +334,7 @@ def test_sys_exit(self): # See Issue 13854 if self.TYPE == 'threads': - return + self.skipTest('test not appropriate for {}'.format(self.TYPE)) testfn = test_support.TESTFN self.addCleanup(test_support.unlink, testfn) @@ -582,7 +582,7 @@ try: self.assertEqual(q.qsize(), 0) except NotImplementedError: - return + self.skipTest('qsize method not implemented') q.put(1) self.assertEqual(q.qsize(), 1) q.put(5) @@ -683,7 +683,7 @@ def test_timeout(self): if self.TYPE != 'processes': - return + self.skipTest('test not appropriate for {}'.format(self.TYPE)) sem = self.Semaphore(0) acquire = TimingWrapper(sem.acquire) @@ -1120,7 +1120,7 @@ def test_map_unplicklable(self): # Issue #19425 -- failure to pickle should not cause a hang if self.TYPE == 'threads': - return + self.skipTest('test not appropriate for {}'.format(self.TYPE)) class A(object): def __reduce__(self): raise RuntimeError('cannot pickle') @@ -1573,7 +1573,7 @@ def test_sendbytes(self): if self.TYPE != 'processes': - return + self.skipTest('test not appropriate for {}'.format(self.TYPE)) msg = latin('abcdefghijklmnopqrstuvwxyz') a, b = self.Pipe() diff -r 3337298f5c75 Lib/test/test_nis.py --- a/Lib/test/test_nis.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_nis.py Tue Dec 10 11:45:28 2013 -0600 @@ -9,11 +9,7 @@ maps = nis.maps() except nis.error, msg: # NIS is probably not active, so this test isn't useful - if test_support.verbose: - print "Test Skipped:", msg - # Can't raise SkipTest as regrtest only recognizes the exception - # import time. - return + self.skipTest(str(msg)) try: # On some systems, this map is only accessible to the # super user diff -r 3337298f5c75 Lib/test/test_os.py --- a/Lib/test/test_os.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_os.py Tue Dec 10 11:45:28 2013 -0600 @@ -134,7 +134,6 @@ self.assertEqual(first.args, second.args) else: self.fail("expected os.tmpfile() to raise OSError") - return else: # open() worked, therefore, tmpfile() should work. Close our # dummy file and proceed with the test as normal. @@ -258,7 +257,7 @@ except OSError, e: # On AtheOS, glibc always returns ENOSYS if e.errno == errno.ENOSYS: - return + self.skipTest('glibc always returns ENOSYS on AtheOS') # Make sure direct access works self.assertEqual(result.f_bfree, result[3]) @@ -338,7 +337,7 @@ os.stat(r"c:\pagefile.sys") except WindowsError, e: if e.errno == 2: # file does not exist; cannot run test - return + self.skipTest(r'c:\pagefile.sys does not exist') self.fail("Could not stat pagefile.sys") from test import mapping_tests diff -r 3337298f5c75 Lib/test/test_posix.py --- a/Lib/test/test_posix.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_posix.py Tue Dec 10 11:45:28 2013 -0600 @@ -461,18 +461,15 @@ os.mkdir(base_path) os.chdir(base_path) except: -# Just returning nothing instead of the SkipTest exception, -# because the test results in Error in that case. -# Is that ok? -# raise unittest.SkipTest, "cannot create directory for testing" - return + self.skipTest("cannot create directory for testing") try: def _create_and_do_getcwd(dirname, current_path_length = 0): try: os.mkdir(dirname) except: - raise unittest.SkipTest, "mkdir cannot create directory sufficiently deep for getcwd test" + self.skipTest("mkdir cannot create directory sufficiently " + "deep for getcwd test") os.chdir(dirname) try: diff -r 3337298f5c75 Lib/test/test_pwd.py --- a/Lib/test/test_pwd.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_pwd.py Tue Dec 10 11:45:28 2013 -0600 @@ -8,8 +8,6 @@ def test_values(self): entries = pwd.getpwall() - entriesbyname = {} - entriesbyuid = {} for e in entries: self.assertEqual(len(e), 7) @@ -32,13 +30,20 @@ # for one uid # self.assertEqual(pwd.getpwuid(e.pw_uid), e) # instead of this collect all entries for one uid - # and check afterwards + # and check afterwards (done in test_values_extended) + + def test_values_extended(self): + entries = pwd.getpwall() + entriesbyname = {} + entriesbyuid = {} + + if len(entries) > 1000: # Huge passwd file (NIS?) -- skip this test + self.skipTest('passwd file is huge; extended test skipped') + + for e in entries: entriesbyname.setdefault(e.pw_name, []).append(e) entriesbyuid.setdefault(e.pw_uid, []).append(e) - if len(entries) > 1000: # Huge passwd file (NIS?) -- skip the rest - return - # check whether the entry returned by getpwuid() # for each uid is among those from getpwall() for this uid for e in entries: diff -r 3337298f5c75 Lib/test/test_re.py --- a/Lib/test/test_re.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_re.py Tue Dec 10 11:45:28 2013 -0600 @@ -700,7 +700,7 @@ try: unicode except NameError: - return # no problem if we have no unicode + self.skipTest('no problem if we have no unicode') class my_unicode(unicode): pass pat = re.compile(my_unicode("abc")) self.assertEqual(pat.match("xyz"), None) @@ -714,7 +714,7 @@ try: unicode except NameError: - return # no problem if we have no unicode + self.skipTest('no problem if we have no unicode') self.assertTrue(re.compile('bug_926075') is not re.compile(eval("u'bug_926075'"))) @@ -722,7 +722,7 @@ try: unicode except NameError: - pass + self.skipTest('no problem if we have no unicode') pattern = eval('u"[\u002E\u3002\uFF0E\uFF61]"') self.assertEqual(re.compile(pattern).split("a.b.c"), ['a','b','c']) diff -r 3337298f5c75 Lib/test/test_repr.py --- a/Lib/test/test_repr.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_repr.py Tue Dec 10 11:45:28 2013 -0600 @@ -268,6 +268,7 @@ eq(repr(foo.foo), "" % foo.__name__) + @unittest.skip('need a suitable object') def test_object(self): # XXX Test the repr of a type with a really long tp_name but with no # tp_repr. WIBNI we had ::Inline? :) @@ -309,6 +310,7 @@ '= 0, "Error resolving host to ip.") try: hname, aliases, ipaddrs = socket.gethostbyaddr(ip) except socket.error: # Probably a similar problem as above; skip this test - return + self.skipTest('address lookup failure') all_host_names = [hostname, hname] + aliases fqhn = socket.getfqdn(ip) if not fqhn in all_host_names: @@ -491,9 +491,9 @@ try: from socket import inet_pton, AF_INET6, has_ipv6 if not has_ipv6: - return + self.skipTest('IPv6 not available') except ImportError: - return + self.skipTest('could not import needed symbols from socket') f = lambda a: inet_pton(AF_INET6, a) self.assertEqual('\x00' * 16, f('::')) @@ -525,9 +525,9 @@ try: from socket import inet_ntop, AF_INET6, has_ipv6 if not has_ipv6: - return + self.skipTest('IPv6 not available') except ImportError: - return + self.skipTest('could not import needed symbols from socket') f = lambda a: inet_ntop(AF_INET6, a) self.assertEqual('::', f('\x00' * 16)) @@ -567,7 +567,7 @@ my_ip_addr = socket.gethostbyname(socket.gethostname()) except socket.error: # Probably name lookup wasn't set up right; skip this test - return + self.skipTest('name lookup failure') self.assertIn(name[0], ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) self.assertEqual(name[1], port) @@ -786,10 +786,10 @@ big_chunk = 'f' * 2048 self.serv_conn.sendall(big_chunk) + @unittest.skipUnless(hasattr(socket, 'fromfd'), + 'socket.fromfd not availble') def testFromFd(self): # Testing fromfd() - if not hasattr(socket, "fromfd"): - return # On Windows, this doesn't exist fd = self.cli_conn.fileno() sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM) self.addCleanup(sock.close) diff -r 3337298f5c75 Lib/test/test_ssl.py --- a/Lib/test/test_ssl.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_ssl.py Tue Dec 10 11:45:28 2013 -0600 @@ -192,9 +192,8 @@ self.assertTrue(s.startswith("OpenSSL {:d}.{:d}.{:d}".format(major, minor, fix)), (s, t)) + @test_support.requires_resource('network') def test_ciphers(self): - if not test_support.is_resource_enabled('network'): - return remote = ("svn.python.org", 443) with test_support.transient_internet(remote[0]): s = ssl.wrap_socket(socket.socket(socket.AF_INET), diff -r 3337298f5c75 Lib/test/test_str.py --- a/Lib/test/test_str.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_str.py Tue Dec 10 11:45:28 2013 -0600 @@ -1,4 +1,4 @@ - +import unittest import struct import sys from test import test_support, string_tests @@ -110,12 +110,12 @@ self.assertEqual(str(Foo9("foo")), "string") self.assertEqual(unicode(Foo9("foo")), u"not unicode") + # This test only affects 32-bit platforms because expandtabs can only take + # an int as the max value, not a 64-bit C long. If expandtabs is changed + # to take a 64-bit long, this test should apply to all platforms. + @unittest.skipIf(sys.maxint > (1 << 32) or struct.calcsize('P') != 4, + 'only applies to 32-bit platforms') def test_expandtabs_overflows_gracefully(self): - # This test only affects 32-bit platforms because expandtabs can only take - # an int as the max value, not a 64-bit C long. If expandtabs is changed - # to take a 64-bit long, this test should apply to all platforms. - if sys.maxint > (1 << 32) or struct.calcsize('P') != 4: - return self.assertRaises(OverflowError, 't\tt\t'.expandtabs, sys.maxint) def test__format__(self): diff -r 3337298f5c75 Lib/test/test_strptime.py --- a/Lib/test/test_strptime.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_strptime.py Tue Dec 10 11:45:28 2013 -0600 @@ -313,7 +313,7 @@ # when time.tzname[0] == time.tzname[1] and time.daylight tz_name = time.tzname[0] if tz_name.upper() in ("UTC", "GMT"): - return + self.skipTest('need non-UTC/GMT timezone') try: original_tzname = time.tzname original_daylight = time.daylight @@ -526,7 +526,7 @@ try: locale.setlocale(locale.LC_TIME, ('en_US', 'UTF8')) except locale.Error: - return + self.skipTest('test needs en_US.UTF8 locale') try: _strptime._strptime_time('10', '%d') # Get id of current cache object. @@ -543,7 +543,7 @@ # If this is the case just suppress the exception and fall-through # to the resetting to the original locale. except locale.Error: - pass + self.skipTest('test needs de_DE.UTF8 locale') # Make sure we don't trample on the locale setting once we leave the # test. finally: diff -r 3337298f5c75 Lib/test/test_tarfile.py --- a/Lib/test/test_tarfile.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_tarfile.py Tue Dec 10 11:45:28 2013 -0600 @@ -260,7 +260,7 @@ def test_fail_comp(self): # For Gzip and Bz2 Tests: fail with a ReadError on an uncompressed file. if self.mode == "r:": - return + self.skipTest('needs a gz or bz2 mode') self.assertRaises(tarfile.ReadError, tarfile.open, tarname, self.mode) fobj = open(tarname, "rb") self.assertRaises(tarfile.ReadError, tarfile.open, fileobj=fobj, mode=self.mode) @@ -446,14 +446,12 @@ def test_detect_fileobj(self): self._test_modes(self._testfunc_fileobj) + @unittest.skipUnless(bz2, 'requires bz2') def test_detect_stream_bz2(self): # Originally, tarfile's stream detection looked for the string # "BZh91" at the start of the file. This is incorrect because # the '9' represents the blocksize (900kB). If the file was # compressed using another blocksize autodetection fails. - if not bz2: - return - with open(tarname, "rb") as fobj: data = fobj.read() @@ -982,12 +980,11 @@ self.assertTrue(data.count("\0") == tarfile.RECORDSIZE, "incorrect zero padding") + @unittest.skipIf(sys.platform == 'win32', 'not appropriate for Windows') + @unittest.skipUnless(hasattr(os, 'umask'), 'requires os.umask') def test_file_mode(self): # Test for issue #8464: Create files with correct # permissions. - if sys.platform == "win32" or not hasattr(os, "umask"): - return - if os.path.exists(tmpname): os.remove(tmpname) @@ -1360,15 +1357,13 @@ self._add_testfile() self._test(names=["foo", "bar"]) + @unittest.skipUnless(gzip, 'requires gzip') def test_append_gz(self): - if gzip is None: - return self._create_testtar("w:gz") self.assertRaises(tarfile.ReadError, tarfile.open, tmpname, "a") + @unittest.skipUnless(bz2, 'requires bz2') def test_append_bz2(self): - if bz2 is None: - return self._create_testtar("w:bz2") self.assertRaises(tarfile.ReadError, tarfile.open, tmpname, "a") diff -r 3337298f5c75 Lib/test/test_telnetlib.py --- a/Lib/test/test_telnetlib.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_telnetlib.py Tue Dec 10 11:45:28 2013 -0600 @@ -177,7 +177,6 @@ self.dataq.join() data = telnet.read_all() self.assertEqual(data, ''.join(want[:-1])) - return def _test_blocking(self, func): self.dataq.put([self.block_long, EOF_sigil]) diff -r 3337298f5c75 Lib/test/test_tempfile.py --- a/Lib/test/test_tempfile.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_tempfile.py Tue Dec 10 11:45:28 2013 -0600 @@ -342,10 +342,9 @@ finally: os.rmdir(dir) + @unittest.skipUnless(has_stat, 'os.stat not available') def test_file_mode(self): # _mkstemp_inner creates files with the proper mode - if not has_stat: - return # ugh, can't use SkipTest. file = self.do_create() mode = stat.S_IMODE(os.stat(file.name).st_mode) @@ -357,10 +356,9 @@ expected = user * (1 + 8 + 64) self.assertEqual(mode, expected) + @unittest.skipUnless(has_spawnl, 'os.spawnl not available') def test_noinherit(self): # _mkstemp_inner file handles are not inherited by child processes - if not has_spawnl: - return # ugh, can't use SkipTest. if support.verbose: v="v" @@ -395,10 +393,9 @@ "child process caught fatal signal %d" % -retval) self.assertFalse(retval > 0, "child process reports failure %d"%retval) + @unittest.skipUnless(has_textmode, "text mode not available") def test_textmode(self): # _mkstemp_inner can create files in text mode - if not has_textmode: - return # ugh, can't use SkipTest. self.do_create(bin=0).write("blat\n") # XXX should test that the file really is a text file @@ -590,10 +587,9 @@ finally: os.rmdir(dir) + @unittest.skipUnless(has_stat, 'os.stat not available') def test_mode(self): # mkdtemp creates directories with the proper mode - if not has_stat: - return # ugh, can't use SkipTest. dir = self.do_create() try: diff -r 3337298f5c75 Lib/test/test_thread.py --- a/Lib/test/test_thread.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_thread.py Tue Dec 10 11:45:28 2013 -0600 @@ -70,39 +70,35 @@ thread.stack_size(0) self.assertEqual(thread.stack_size(), 0, "stack_size not reset to default") - if os.name not in ("nt", "os2", "posix"): - return - - tss_supported = True + @unittest.skipIf(os.name not in ("nt", "os2", "posix"), 'test meant for nt, os2, and posix') + def test_nt_and_posix_stack_size(self): try: thread.stack_size(4096) except ValueError: verbose_print("caught expected ValueError setting " "stack_size(4096)") except thread.error: - tss_supported = False - verbose_print("platform does not support changing thread stack " - "size") + self.skipTest("platform does not support changing thread stack " + "size") - if tss_supported: - fail_msg = "stack_size(%d) failed - should succeed" - for tss in (262144, 0x100000, 0): - thread.stack_size(tss) - self.assertEqual(thread.stack_size(), tss, fail_msg % tss) - verbose_print("successfully set stack_size(%d)" % tss) + fail_msg = "stack_size(%d) failed - should succeed" + for tss in (262144, 0x100000, 0): + thread.stack_size(tss) + self.assertEqual(thread.stack_size(), tss, fail_msg % tss) + verbose_print("successfully set stack_size(%d)" % tss) - for tss in (262144, 0x100000): - verbose_print("trying stack_size = (%d)" % tss) - self.next_ident = 0 - self.created = 0 - for i in range(NUMTASKS): - self.newtask() + for tss in (262144, 0x100000): + verbose_print("trying stack_size = (%d)" % tss) + self.next_ident = 0 + self.created = 0 + for i in range(NUMTASKS): + self.newtask() - verbose_print("waiting for all tasks to complete") - self.done_mutex.acquire() - verbose_print("all tasks done") + verbose_print("waiting for all tasks to complete") + self.done_mutex.acquire() + verbose_print("all tasks done") - thread.stack_size(0) + thread.stack_size(0) def test__count(self): # Test the _count() function. diff -r 3337298f5c75 Lib/test/test_threading.py --- a/Lib/test/test_threading.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_threading.py Tue Dec 10 11:45:28 2013 -0600 @@ -125,9 +125,7 @@ try: threading.stack_size(262144) except thread.error: - if verbose: - print 'platform does not support changing thread stack size' - return + self.skipTest('platform does not support changing thread stack size') self.test_various_ops() threading.stack_size(0) @@ -138,9 +136,7 @@ try: threading.stack_size(0x100000) except thread.error: - if verbose: - print 'platform does not support changing thread stack size' - return + self.skipTest('platform does not support changing thread stack size') self.test_various_ops() threading.stack_size(0) @@ -167,9 +163,7 @@ try: import ctypes except ImportError: - if verbose: - print "test_PyThreadState_SetAsyncExc can't import ctypes" - return # can't do anything + self.skipTest('requires ctypes') set_async_exc = ctypes.pythonapi.PyThreadState_SetAsyncExc @@ -275,9 +269,7 @@ try: import ctypes except ImportError: - if verbose: - print("test_finalize_with_runnning_thread can't import ctypes") - return # can't do anything + self.skipTest('requires ctypes') rc = subprocess.call([sys.executable, "-c", """if 1: import ctypes, sys, time, thread diff -r 3337298f5c75 Lib/test/test_timeout.py --- a/Lib/test/test_timeout.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_timeout.py Tue Dec 10 11:45:28 2013 -0600 @@ -178,16 +178,19 @@ "timeout (%g) is %g seconds more than expected (%g)" %(_delta, self.fuzz, _timeout)) + @unittest.skip('test not implemented') def testSend(self): # Test send() timeout # couldn't figure out how to test it pass + @unittest.skip('test not implemented') def testSendto(self): # Test sendto() timeout # couldn't figure out how to test it pass + @unittest.skip('test not implemented') def testSendall(self): # Test sendall() timeout # couldn't figure out how to test it diff -r 3337298f5c75 Lib/test/test_unicode.py --- a/Lib/test/test_unicode.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_unicode.py Tue Dec 10 11:45:28 2013 -0600 @@ -1278,12 +1278,12 @@ self.assertEqual(repr(s1()), '\\n') self.assertEqual(repr(s2()), '\\n') + # This test only affects 32-bit platforms because expandtabs can only take + # an int as the max value, not a 64-bit C long. If expandtabs is changed + # to take a 64-bit long, this test should apply to all platforms. + @unittest.skipIf(sys.maxint > (1 << 32) or struct.calcsize('P') != 4, + 'only applies to 32-bit platforms') def test_expandtabs_overflows_gracefully(self): - # This test only affects 32-bit platforms because expandtabs can only take - # an int as the max value, not a 64-bit C long. If expandtabs is changed - # to take a 64-bit long, this test should apply to all platforms. - if sys.maxint > (1 << 32) or struct.calcsize('P') != 4: - return self.assertRaises(OverflowError, u't\tt\t'.expandtabs, sys.maxint) def test__format__(self): diff -r 3337298f5c75 Lib/test/test_urllibnet.py --- a/Lib/test/test_urllibnet.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_urllibnet.py Tue Dec 10 11:45:28 2013 -0600 @@ -112,12 +112,9 @@ open_url.close() self.assertEqual(code, 404) + @unittest.skipIf(sys.platform in ('win32',), 'not appropriate for Windows') + @unittest.skipUnless(hasattr(os, 'fdopen'), 'os.fdopen not available') def test_fileno(self): - if (sys.platform in ('win32',) or - not hasattr(os, 'fdopen')): - # On Windows, socket handles are not file descriptors; this - # test can't pass on Windows. - return # Make sure fd returned by fileno is valid. open_url = self.urlopen("http://www.python.org/") fd = open_url.fileno() diff -r 3337298f5c75 Lib/test/test_warnings.py --- a/Lib/test/test_warnings.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_warnings.py Tue Dec 10 11:45:28 2013 -0600 @@ -668,7 +668,7 @@ # Explicit tests for the test_support convenience wrapper wmod = self.module if wmod is not sys.modules['warnings']: - return + self.skipTest('module to test is not loaded warnings module') with test_support.check_warnings(quiet=False) as w: self.assertEqual(w.warnings, []) wmod.simplefilter("always") diff -r 3337298f5c75 Lib/test/test_xmlrpc.py --- a/Lib/test/test_xmlrpc.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_xmlrpc.py Tue Dec 10 11:45:28 2013 -0600 @@ -19,6 +19,11 @@ threading = None try: + import gzip +except ImportError: + gzip = None + +try: unicode except NameError: have_unicode = False @@ -681,6 +686,7 @@ #A test case that verifies that gzip encoding works in both directions #(for a request and the response) +@unittest.skipUnless(gzip, 'gzip not available') class GzipServerTestCase(BaseServerTestCase): #a request handler that supports keep-alive and logs requests into a #class variable @@ -1011,11 +1017,7 @@ xmlrpc_tests.append(SimpleServerTestCase) xmlrpc_tests.append(KeepaliveServerTestCase1) xmlrpc_tests.append(KeepaliveServerTestCase2) - try: - import gzip - xmlrpc_tests.append(GzipServerTestCase) - except ImportError: - pass #gzip not supported in this build + xmlrpc_tests.append(GzipServerTestCase) xmlrpc_tests.append(MultiPathServerTestCase) xmlrpc_tests.append(ServerProxyTestCase) xmlrpc_tests.append(FailingServerTestCase) diff -r 3337298f5c75 Lib/test/test_zipimport.py --- a/Lib/test/test_zipimport.py Tue Dec 10 17:23:00 2013 +0100 +++ b/Lib/test/test_zipimport.py Tue Dec 10 11:45:28 2013 -0600 @@ -123,7 +123,7 @@ # so we'll simply skip it then. Bug #765456. # if "zlib" in sys.builtin_module_names: - return + self.skipTest('zlib is a builtin module') if "zlib" in sys.modules: del sys.modules["zlib"] files = {"zlib.py": (NOW, test_src)}