#7855: merge with 3.3.

This commit is contained in:
Ezio Melotti 2013-05-04 17:47:54 +03:00
commit 4e59af7abd
5 changed files with 51 additions and 1 deletions

View file

@ -62,7 +62,7 @@ def get_tests(package, mask, verbosity, exclude=()):
continue continue
try: try:
mod = __import__(modname, globals(), locals(), ['*']) mod = __import__(modname, globals(), locals(), ['*'])
except ResourceDenied as detail: except (ResourceDenied, unittest.SkipTest) as detail:
skipped.append(modname) skipped.append(modname)
if verbosity > 1: if verbosity > 1:
print("Skipped %s: %s" % (modname, detail), file=sys.stderr) print("Skipped %s: %s" % (modname, detail), file=sys.stderr)

View file

@ -0,0 +1,43 @@
import sys
import unittest
if not sys.platform.startswith('win'):
raise unittest.SkipTest('Windows-only test')
from ctypes import *
from ctypes import wintypes
class WinTypesTest(unittest.TestCase):
def test_variant_bool(self):
# reads 16-bits from memory, anything non-zero is True
for true_value in (1, 32767, 32768, 65535, 65537):
true = POINTER(c_int16)(c_int16(true_value))
value = cast(true, POINTER(wintypes.VARIANT_BOOL))
self.assertEqual(repr(value.contents), 'VARIANT_BOOL(True)')
vb = wintypes.VARIANT_BOOL()
self.assertIs(vb.value, False)
vb.value = True
self.assertIs(vb.value, True)
vb.value = true_value
self.assertIs(vb.value, True)
for false_value in (0, 65536, 262144, 2**33):
false = POINTER(c_int16)(c_int16(false_value))
value = cast(false, POINTER(wintypes.VARIANT_BOOL))
self.assertEqual(repr(value.contents), 'VARIANT_BOOL(False)')
# allow any bool conversion on assignment to value
for set_value in (65536, 262144, 2**33):
vb = wintypes.VARIANT_BOOL()
vb.value = set_value
self.assertIs(vb.value, True)
vb = wintypes.VARIANT_BOOL()
vb.value = [2, 3]
self.assertIs(vb.value, True)
vb.value = []
self.assertIs(vb.value, False)
if __name__ == "__main__":
unittest.main()

View file

@ -457,6 +457,9 @@ class Win64WinregTests(BaseWinregTests):
DeleteKeyEx(HKEY_CURRENT_USER, test_reflect_key_name, DeleteKeyEx(HKEY_CURRENT_USER, test_reflect_key_name,
KEY_WOW64_32KEY, 0) KEY_WOW64_32KEY, 0)
def test_exception_numbers(self):
with self.assertRaises(FileNotFoundError) as ctx:
QueryValue(HKEY_CLASSES_ROOT, 'some_value_that_does_not_exist')
def test_main(): def test_main():
support.run_unittest(LocalWinregTests, RemoteWinregTests, support.run_unittest(LocalWinregTests, RemoteWinregTests,

View file

@ -1287,6 +1287,7 @@ Nikita Vetoshkin
Al Vezza Al Vezza
Jacques A. Vidrine Jacques A. Vidrine
John Viega John Viega
Dino Viehland
Kannan Vijayan Kannan Vijayan
Kurt Vile Kurt Vile
Norman Vine Norman Vine

View file

@ -188,6 +188,9 @@ Library
Tests Tests
----- -----
- Issue #7855: Add tests for ctypes/winreg for issues found in IronPython.
Initial patch by Dino Viehland.
- Issue #11078: test___all__ now checks for duplicates in __all__. - Issue #11078: test___all__ now checks for duplicates in __all__.
Initial patch by R. David Murray. Initial patch by R. David Murray.