source: titan/mediathek/localhoster/lib/python2.7/ctypes/test/test_errno.py @ 40094

Last change on this file since 40094 was 40094, checked in by obi, 7 years ago

tithek add yoztube-dl support

File size: 2.3 KB
Line 
1import unittest, os, errno
2from ctypes import *
3from ctypes.util import find_library
4from test import test_support
5try:
6    import threading
7except ImportError:
8    threading = None
9
10class Test(unittest.TestCase):
11    def test_open(self):
12        libc_name = find_library("c")
13        if libc_name is None:
14            raise unittest.SkipTest("Unable to find C library")
15        libc = CDLL(libc_name, use_errno=True)
16        if os.name == "nt":
17            libc_open = libc._open
18        else:
19            libc_open = libc.open
20
21        libc_open.argtypes = c_char_p, c_int
22
23        self.assertEqual(libc_open("", 0), -1)
24        self.assertEqual(get_errno(), errno.ENOENT)
25
26        self.assertEqual(set_errno(32), errno.ENOENT)
27        self.assertEqual(get_errno(), 32)
28
29        if threading:
30            def _worker():
31                set_errno(0)
32
33                libc = CDLL(libc_name, use_errno=False)
34                if os.name == "nt":
35                    libc_open = libc._open
36                else:
37                    libc_open = libc.open
38                libc_open.argtypes = c_char_p, c_int
39                self.assertEqual(libc_open("", 0), -1)
40                self.assertEqual(get_errno(), 0)
41
42            t = threading.Thread(target=_worker)
43            t.start()
44            t.join()
45
46            self.assertEqual(get_errno(), 32)
47            set_errno(0)
48
49    @unittest.skipUnless(os.name == "nt", 'Test specific to Windows')
50    def test_GetLastError(self):
51        dll = WinDLL("kernel32", use_last_error=True)
52        GetModuleHandle = dll.GetModuleHandleA
53        GetModuleHandle.argtypes = [c_wchar_p]
54
55        self.assertEqual(0, GetModuleHandle("foo"))
56        self.assertEqual(get_last_error(), 126)
57
58        self.assertEqual(set_last_error(32), 126)
59        self.assertEqual(get_last_error(), 32)
60
61        def _worker():
62            set_last_error(0)
63
64            dll = WinDLL("kernel32", use_last_error=False)
65            GetModuleHandle = dll.GetModuleHandleW
66            GetModuleHandle.argtypes = [c_wchar_p]
67            GetModuleHandle("bar")
68
69            self.assertEqual(get_last_error(), 0)
70
71        t = threading.Thread(target=_worker)
72        t.start()
73        t.join()
74
75        self.assertEqual(get_last_error(), 32)
76
77        set_last_error(0)
78
79if __name__ == "__main__":
80    unittest.main()
Note: See TracBrowser for help on using the repository browser.