Commit 4e59af7a authored by Ezio Melotti's avatar Ezio Melotti

#7855: merge with 3.3.

parents a8bc7fd5 28faf03d
...@@ -62,7 +62,7 @@ def get_tests(package, mask, verbosity, exclude=()): ...@@ -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)
......
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()
...@@ -457,6 +457,9 @@ class Win64WinregTests(BaseWinregTests): ...@@ -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,
......
...@@ -1287,6 +1287,7 @@ Nikita Vetoshkin ...@@ -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
......
...@@ -188,6 +188,9 @@ Library ...@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment