mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-14 17:22:56 -07:00
Bump cherrypy from 18.8.0 to 18.9.0 (#2266)
* Bump cherrypy from 18.8.0 to 18.9.0 Bumps [cherrypy](https://github.com/cherrypy/cherrypy) from 18.8.0 to 18.9.0. - [Changelog](https://github.com/cherrypy/cherrypy/blob/main/CHANGES.rst) - [Commits](https://github.com/cherrypy/cherrypy/compare/v18.8.0...v18.9.0) --- updated-dependencies: - dependency-name: cherrypy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Update cherrypy==18.9.0 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> [skip ci]
This commit is contained in:
parent
cfefa928be
commit
faef9a94c4
673 changed files with 159850 additions and 11583 deletions
268
lib/win32/test/test_win32api.py
Normal file
268
lib/win32/test/test_win32api.py
Normal file
|
@ -0,0 +1,268 @@
|
|||
# General test module for win32api - please add some :)
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
import win32api
|
||||
import win32con
|
||||
import win32event
|
||||
import winerror
|
||||
from pywin32_testutil import TestSkipped, str2bytes
|
||||
|
||||
|
||||
class CurrentUserTestCase(unittest.TestCase):
|
||||
def testGetCurrentUser(self):
|
||||
domain = win32api.GetDomainName()
|
||||
if domain == "NT AUTHORITY":
|
||||
# Running as a service account, so the comparison will fail
|
||||
raise TestSkipped("running as service account")
|
||||
name = "%s\\%s" % (domain, win32api.GetUserName())
|
||||
self.assertEqual(name, win32api.GetUserNameEx(win32api.NameSamCompatible))
|
||||
|
||||
|
||||
class TestTime(unittest.TestCase):
|
||||
def testTimezone(self):
|
||||
# GetTimeZoneInformation
|
||||
rc, tzinfo = win32api.GetTimeZoneInformation()
|
||||
if rc == win32con.TIME_ZONE_ID_DAYLIGHT:
|
||||
tz_str = tzinfo[4]
|
||||
tz_time = tzinfo[5]
|
||||
else:
|
||||
tz_str = tzinfo[1]
|
||||
tz_time = tzinfo[2]
|
||||
# for the sake of code exercise but don't output
|
||||
tz_str.encode()
|
||||
if not isinstance(tz_time, datetime.datetime) and not isinstance(
|
||||
tz_time, tuple
|
||||
):
|
||||
tz_time.Format()
|
||||
|
||||
def TestDateFormat(self):
|
||||
DATE_LONGDATE = 2
|
||||
date_flags = DATE_LONGDATE
|
||||
win32api.GetDateFormat(0, date_flags, None)
|
||||
win32api.GetDateFormat(0, date_flags, 0)
|
||||
win32api.GetDateFormat(0, date_flags, datetime.datetime.now())
|
||||
win32api.GetDateFormat(0, date_flags, time.time())
|
||||
|
||||
def TestTimeFormat(self):
|
||||
win32api.GetTimeFormat(0, 0, None)
|
||||
win32api.GetTimeFormat(0, 0, 0)
|
||||
win32api.GetTimeFormat(0, 0, datetime.datetime.now())
|
||||
win32api.GetTimeFormat(0, 0, time.time())
|
||||
|
||||
|
||||
class Registry(unittest.TestCase):
|
||||
key_name = r"PythonTestHarness\Whatever"
|
||||
|
||||
def test1(self):
|
||||
# This used to leave a stale exception behind.
|
||||
def reg_operation():
|
||||
hkey = win32api.RegCreateKey(win32con.HKEY_CURRENT_USER, self.key_name)
|
||||
x = 3 / 0 # or a statement like: raise 'error'
|
||||
|
||||
# do the test
|
||||
try:
|
||||
try:
|
||||
try:
|
||||
reg_operation()
|
||||
except:
|
||||
1 / 0 # Force exception
|
||||
finally:
|
||||
win32api.RegDeleteKey(win32con.HKEY_CURRENT_USER, self.key_name)
|
||||
except ZeroDivisionError:
|
||||
pass
|
||||
|
||||
def testValues(self):
|
||||
key_name = r"PythonTestHarness\win32api"
|
||||
## tuples containing value name, value type, data
|
||||
values = (
|
||||
(None, win32con.REG_SZ, "This is default unnamed value"),
|
||||
("REG_SZ", win32con.REG_SZ, "REG_SZ text data"),
|
||||
("REG_EXPAND_SZ", win32con.REG_EXPAND_SZ, "%systemdir%"),
|
||||
## REG_MULTI_SZ value needs to be a list since strings are returned as a list
|
||||
(
|
||||
"REG_MULTI_SZ",
|
||||
win32con.REG_MULTI_SZ,
|
||||
["string 1", "string 2", "string 3", "string 4"],
|
||||
),
|
||||
("REG_MULTI_SZ_empty", win32con.REG_MULTI_SZ, []),
|
||||
("REG_DWORD", win32con.REG_DWORD, 666),
|
||||
("REG_QWORD_INT", win32con.REG_QWORD, 99),
|
||||
("REG_QWORD", win32con.REG_QWORD, 2**33),
|
||||
(
|
||||
"REG_BINARY",
|
||||
win32con.REG_BINARY,
|
||||
str2bytes("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x01\x00"),
|
||||
),
|
||||
)
|
||||
|
||||
hkey = win32api.RegCreateKey(win32con.HKEY_CURRENT_USER, key_name)
|
||||
for value_name, reg_type, data in values:
|
||||
win32api.RegSetValueEx(hkey, value_name, None, reg_type, data)
|
||||
|
||||
for value_name, orig_type, orig_data in values:
|
||||
data, typ = win32api.RegQueryValueEx(hkey, value_name)
|
||||
self.assertEqual(typ, orig_type)
|
||||
self.assertEqual(data, orig_data)
|
||||
|
||||
def testNotifyChange(self):
|
||||
def change():
|
||||
hkey = win32api.RegCreateKey(win32con.HKEY_CURRENT_USER, self.key_name)
|
||||
try:
|
||||
win32api.RegSetValue(hkey, None, win32con.REG_SZ, "foo")
|
||||
finally:
|
||||
win32api.RegDeleteKey(win32con.HKEY_CURRENT_USER, self.key_name)
|
||||
|
||||
evt = win32event.CreateEvent(None, 0, 0, None)
|
||||
## REG_NOTIFY_CHANGE_LAST_SET - values
|
||||
## REG_CHANGE_NOTIFY_NAME - keys
|
||||
## REG_NOTIFY_CHANGE_SECURITY - security descriptor
|
||||
## REG_NOTIFY_CHANGE_ATTRIBUTES
|
||||
win32api.RegNotifyChangeKeyValue(
|
||||
win32con.HKEY_CURRENT_USER,
|
||||
1,
|
||||
win32api.REG_NOTIFY_CHANGE_LAST_SET,
|
||||
evt,
|
||||
True,
|
||||
)
|
||||
ret_code = win32event.WaitForSingleObject(evt, 0)
|
||||
# Should be no change.
|
||||
self.assertTrue(ret_code == win32con.WAIT_TIMEOUT)
|
||||
change()
|
||||
# Our event should now be in a signalled state.
|
||||
ret_code = win32event.WaitForSingleObject(evt, 0)
|
||||
self.assertTrue(ret_code == win32con.WAIT_OBJECT_0)
|
||||
|
||||
|
||||
class FileNames(unittest.TestCase):
|
||||
def testShortLongPathNames(self):
|
||||
try:
|
||||
me = __file__
|
||||
except NameError:
|
||||
me = sys.argv[0]
|
||||
fname = os.path.abspath(me).lower()
|
||||
short_name = win32api.GetShortPathName(fname).lower()
|
||||
long_name = win32api.GetLongPathName(short_name).lower()
|
||||
self.assertTrue(
|
||||
long_name == fname,
|
||||
"Expected long name ('%s') to be original name ('%s')" % (long_name, fname),
|
||||
)
|
||||
self.assertEqual(long_name, win32api.GetLongPathNameW(short_name).lower())
|
||||
long_name = win32api.GetLongPathNameW(short_name).lower()
|
||||
self.assertTrue(
|
||||
type(long_name) == str,
|
||||
"GetLongPathNameW returned type '%s'" % (type(long_name),),
|
||||
)
|
||||
self.assertTrue(
|
||||
long_name == fname,
|
||||
"Expected long name ('%s') to be original name ('%s')" % (long_name, fname),
|
||||
)
|
||||
|
||||
def testShortUnicodeNames(self):
|
||||
try:
|
||||
me = __file__
|
||||
except NameError:
|
||||
me = sys.argv[0]
|
||||
fname = os.path.abspath(me).lower()
|
||||
# passing unicode should cause GetShortPathNameW to be called.
|
||||
short_name = win32api.GetShortPathName(str(fname)).lower()
|
||||
self.assertTrue(isinstance(short_name, str))
|
||||
long_name = win32api.GetLongPathName(short_name).lower()
|
||||
self.assertTrue(
|
||||
long_name == fname,
|
||||
"Expected long name ('%s') to be original name ('%s')" % (long_name, fname),
|
||||
)
|
||||
self.assertEqual(long_name, win32api.GetLongPathNameW(short_name).lower())
|
||||
long_name = win32api.GetLongPathNameW(short_name).lower()
|
||||
self.assertTrue(
|
||||
type(long_name) == str,
|
||||
"GetLongPathNameW returned type '%s'" % (type(long_name),),
|
||||
)
|
||||
self.assertTrue(
|
||||
long_name == fname,
|
||||
"Expected long name ('%s') to be original name ('%s')" % (long_name, fname),
|
||||
)
|
||||
|
||||
def testLongLongPathNames(self):
|
||||
# We need filename where the FQN is > 256 - simplest way is to create a
|
||||
# 250 character directory in the cwd (except - cwd may be on a drive
|
||||
# not supporting \\\\?\\ (eg, network share) - so use temp.
|
||||
import win32file
|
||||
|
||||
basename = "a" * 250
|
||||
# but we need to ensure we use the 'long' version of the
|
||||
# temp dir for later comparison.
|
||||
long_temp_dir = win32api.GetLongPathNameW(tempfile.gettempdir())
|
||||
fname = "\\\\?\\" + os.path.join(long_temp_dir, basename)
|
||||
try:
|
||||
win32file.CreateDirectoryW(fname, None)
|
||||
except win32api.error as details:
|
||||
if details.winerror != winerror.ERROR_ALREADY_EXISTS:
|
||||
raise
|
||||
try:
|
||||
# GetFileAttributes automatically calls GetFileAttributesW when
|
||||
# passed unicode
|
||||
try:
|
||||
attr = win32api.GetFileAttributes(fname)
|
||||
except win32api.error as details:
|
||||
if details.winerror != winerror.ERROR_FILENAME_EXCED_RANGE:
|
||||
raise
|
||||
|
||||
attr = win32api.GetFileAttributes(str(fname))
|
||||
self.assertTrue(attr & win32con.FILE_ATTRIBUTE_DIRECTORY, attr)
|
||||
|
||||
long_name = win32api.GetLongPathNameW(fname)
|
||||
self.assertEqual(long_name.lower(), fname.lower())
|
||||
finally:
|
||||
win32file.RemoveDirectory(fname)
|
||||
|
||||
|
||||
class FormatMessage(unittest.TestCase):
|
||||
def test_FromString(self):
|
||||
msg = "Hello %1, how are you %2?"
|
||||
inserts = ["Mark", "today"]
|
||||
result = win32api.FormatMessage(
|
||||
win32con.FORMAT_MESSAGE_FROM_STRING,
|
||||
msg, # source
|
||||
0, # ID
|
||||
0, # LangID
|
||||
inserts,
|
||||
)
|
||||
self.assertEqual(result, "Hello Mark, how are you today?")
|
||||
|
||||
|
||||
class Misc(unittest.TestCase):
|
||||
def test_last_error(self):
|
||||
for x in (0, 1, -1, winerror.TRUST_E_PROVIDER_UNKNOWN):
|
||||
win32api.SetLastError(x)
|
||||
self.assertEqual(x, win32api.GetLastError())
|
||||
|
||||
def testVkKeyScan(self):
|
||||
# hopefully ' ' doesn't depend on the locale!
|
||||
self.assertEqual(win32api.VkKeyScan(" "), 32)
|
||||
|
||||
def testVkKeyScanEx(self):
|
||||
# hopefully ' ' doesn't depend on the locale!
|
||||
self.assertEqual(win32api.VkKeyScanEx(" ", 0), 32)
|
||||
|
||||
def testGetSystemPowerStatus(self):
|
||||
# Dummy
|
||||
sps = win32api.GetSystemPowerStatus()
|
||||
self.assertIsInstance(sps, dict)
|
||||
test_keys = (
|
||||
"ACLineStatus",
|
||||
"BatteryFlag",
|
||||
"BatteryLifePercent",
|
||||
"SystemStatusFlag",
|
||||
"BatteryLifeTime",
|
||||
"BatteryFullLifeTime",
|
||||
)
|
||||
self.assertEqual(set(test_keys), set(sps.keys()))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
Loading…
Add table
Add a link
Reference in a new issue