mirror of
https://github.com/python/cpython.git
synced 2024-11-27 11:55:13 +08:00
Paul Prescod <paul@prescod.net>:
Regression test for the new winreg.py module. [Could a Windows person someone please review this?]
This commit is contained in:
parent
0412e494b8
commit
2658d15d45
341
Lib/test/test_winreg2.py
Normal file
341
Lib/test/test_winreg2.py
Normal file
@ -0,0 +1,341 @@
|
||||
from winreg import hives, createKey, openKey, flags, deleteKey, regtypes
|
||||
import sys, traceback
|
||||
import time
|
||||
|
||||
def testHives():
|
||||
hivenames = ["HKEY_CLASSES_ROOT","HKEY_CURRENT_USER","HKEY_LOCAL_MACHINE",
|
||||
"HKEY_USERS","HKEY_CURRENT_CONFIG"] #, #
|
||||
for hivename in hivenames:
|
||||
hive = hives[ hivename ]
|
||||
print hive.name
|
||||
assert hive.handle
|
||||
assert hive.getSubkeys()
|
||||
for hivename in ["HKEY_DYN_DATA", "HKEY_PERFORMANCE_DATA"]:
|
||||
hive = hives[ hivename ]
|
||||
print hive.name
|
||||
assert hive.handle
|
||||
assert not hive.getValues()
|
||||
assert not hive.getSubkeys()
|
||||
|
||||
def testNonZero():
|
||||
key=hives["HKLM"].openSubkey( "SOFTWARE" )
|
||||
assert key.openSubkey( "Microsoft" )
|
||||
assert key
|
||||
key.close()
|
||||
assert not key
|
||||
try:
|
||||
key.openSubkey( "Microsoft" )
|
||||
assert 0
|
||||
except EnvironmentError:
|
||||
pass
|
||||
|
||||
def testCmp():
|
||||
HKLM=hives["HKLM"]
|
||||
assert (openKey("HKLM\\SOFTWARE")==\
|
||||
HKLM.openSubkey("SOFTWARE"))
|
||||
assert not HKLM.openSubkey("SYSTEM")!=HKLM.openSubkey("SYSTEM")
|
||||
assert HKLM.openSubkey("SOFTWARE")!=HKLM.openSubkey("SYSTEM")
|
||||
assert not HKLM.openSubkey("SOFTWARE")==HKLM.openSubkey("SYSTEM")
|
||||
assert not HKLM.openSubkey("SOFTWARE")=="spam"
|
||||
assert ((HKLM.openSubkey("SOFTWARE")<"spam") !=
|
||||
(HKLM.openSubkey("SOFTWARE")>"spam"))
|
||||
|
||||
def testClose():
|
||||
key=hives["HKLM"].openSubkey( "SOFTWARE" )
|
||||
assert key
|
||||
key.close()
|
||||
assert not key
|
||||
|
||||
def testOpen():
|
||||
assert openKey( r"HKLM" )
|
||||
assert openKey( r"HKLM\HARDWARE" )
|
||||
assert openKey( r"HKLM\HARDWARE\DESCRIPTION\System" )
|
||||
|
||||
def testOpenFailure():
|
||||
try:
|
||||
print openKey( r"HKCU\Software\Python\A\B\C\D" )
|
||||
assert 0 #
|
||||
except EnvironmentError:
|
||||
pass
|
||||
|
||||
def testDeleteKey():
|
||||
createKey( r"HKCU\Software\Python\A\B\C\D" )
|
||||
deleteKey( r"HKCU\Software\Python\A\B\C\D" )
|
||||
deleteKey( r"HKCU\Software\Python\A\B\C" )
|
||||
deleteKey( r"HKCU\Software\Python\A\B" )
|
||||
assert "A" in \
|
||||
openKey(r"HKCU\Software\Python").getSubkeys().keys()
|
||||
openKey( r"HKCU\Software\Python" ).deleteSubkey( r"A" )
|
||||
assert "A" not in \
|
||||
openKey(r"HKCU\Software\Python").getSubkeys().keys()
|
||||
|
||||
def testDeleteValue():
|
||||
key=createKey( r"HKCU\Software\Python\A" )
|
||||
key.setValue( "abcde", "fghij" )
|
||||
assert key.getValueData( "abcde" )=="fghij"
|
||||
assert "abcde" in key.getValues().keys()
|
||||
assert "fghij" in map( lambda x:x[1], key.getValues().values() )
|
||||
assert "abcde" in key.getValues().keys()
|
||||
key.deleteValue( "abcde" )
|
||||
assert "abcde" not in key.getValues().keys()
|
||||
assert "fghij" not in map( lambda x:x[1], key.getValues().values() )
|
||||
deleteKey( r"HKCU\Software\Python\A" )
|
||||
|
||||
def testCreateKey():
|
||||
key=createKey( r"HKCU\Software\Python\A" )
|
||||
assert openKey( r"HKCU\Software\Python").getSubkeys().has_key( "A" )
|
||||
deleteKey( r"HKCU\Software\Python\A" )
|
||||
assert not openKey( r"HKCU\Software\Python").getSubkeys().\
|
||||
has_key( "A" )
|
||||
key=openKey( r"HKCU\Software\Python" ).createSubkey( "A" )
|
||||
|
||||
def testOpenKeyWithFlags():
|
||||
assert openKey( r"HKCU\Software\Python",
|
||||
flags["KEY_READ"])
|
||||
assert openKey( r"HKCU\Software\Python",
|
||||
flags["KEY_ALL_ACCESS"])
|
||||
|
||||
def testGetSubkeys():
|
||||
keys=openKey( r"HKCU\Software" ).getSubkeys()
|
||||
assert keys
|
||||
index=0
|
||||
for i in keys:
|
||||
index=index+1
|
||||
assert index==len( keys )
|
||||
|
||||
def testGetValueNameDataAndType(): pass
|
||||
|
||||
def testGetSubkeyNames():
|
||||
subkeyNames=hives["HKLM"].getSubkeyNames()
|
||||
assert len( subkeyNames )==len(hives["HKLM"].getSubkeys())
|
||||
for name in subkeyNames:
|
||||
assert type( name )==type("")
|
||||
|
||||
def testGetValueNames():
|
||||
valNames=hives["HKLM"].getValueNames()
|
||||
assert len( valNames )==len(hives["HKLM"].getValues())
|
||||
for name in valNames:
|
||||
assert type( name )==type("")
|
||||
|
||||
def testRepr():
|
||||
assert repr(hives["HKCU"])==str(hives["HKCU"])
|
||||
|
||||
def testSetStringValue():
|
||||
hives["HKCU"].setValue( "Blah", "abc" )
|
||||
assert hives["HKCU"].getValueData( "Blah" )=="abc"
|
||||
assert hives["HKCU"].getValues().has_key( "Blah" )
|
||||
del hives["HKCU"].getValues()[ "Blah" ]
|
||||
assert not hives["HKCU"].getValues().has_key( "Blah" )
|
||||
|
||||
def testDeleteValue():
|
||||
hives["HKCU"].setValue( "Blah", "abc" )
|
||||
assert hives["HKCU"].getValues().has_key( "Blah" )
|
||||
del hives["HKCU"].getValues()[ "Blah" ]
|
||||
assert not hives["HKCU"].getValues().has_key( "Blah" )
|
||||
hives["HKCU"].setValue( "Blah", "abc" )
|
||||
hives["HKCU"].deleteValue( "Blah" )
|
||||
assert not hives["HKCU"].getValues().has_key( "Blah" )
|
||||
|
||||
def testKeyDict_ClearKeys():
|
||||
createKey( "HKLM\\Software\\a\\b\\c\\d\\e" )
|
||||
createKey( "HKLM\\Software\\a\\b\\c\\d\\f" )
|
||||
createKey( "HKLM\\Software\\a\\b\\c\\d\\g" )
|
||||
createKey( "HKLM\\Software\\a\\b\\c\\d\\h" )
|
||||
createKey( "HKLM\\Software\\a\\b\\c\\d\\i" )
|
||||
key=openKey( "HKLM\\Software\\a\\b\\c\\d" )
|
||||
assert key.getSubkeys()
|
||||
key.getSubkeys().clear()
|
||||
assert not key.getSubkeys()
|
||||
assert not openKey( "HKLM\\Software\\a\\b\\c\\d").getSubkeys()
|
||||
deleteKey( "HKLM\\Software\\a\\b\\c\\d" )
|
||||
deleteKey( "HKLM\\Software\\a\\b\\c" )
|
||||
deleteKey( "HKLM\\Software\\a\\b" )
|
||||
deleteKey( "HKLM\\Software\\a" )
|
||||
|
||||
def testUnicodeKeyName(): pass
|
||||
|
||||
def testUnicodeValueName(): pass
|
||||
|
||||
def testGetValueDataFromEnum(): pass
|
||||
|
||||
def testGetValueDataFromName(): pass
|
||||
|
||||
def testGetBinaryData(): pass
|
||||
|
||||
|
||||
def testSetIntValue():
|
||||
key=createKey( "HKLM\\Software\\a\\b")
|
||||
key.setValue( "abcd", 5 )
|
||||
assert key.getValueData( "abcd" )==5
|
||||
assert key.getValues()[ "abcd" ][1]==5
|
||||
key.deleteValue( "abcd" )
|
||||
key.getValues()["abcd"]=5
|
||||
assert key.getValues()[ "abcd" ][1]==5
|
||||
key.deleteValue( "abcd" )
|
||||
key.getValues()["abcd"]=(5,regtypes["REG_DWORD"])
|
||||
assert key.getValues()[ "abcd" ][1]==5
|
||||
key.deleteValue( "abcd" )
|
||||
key.deleteKey( "HKLM\\Software\\a\\b")
|
||||
key.deleteKey( "HKLM\\Software\\a")
|
||||
|
||||
def testSetBinaryValue():
|
||||
key=createKey( "HKLM\\Software\\a\\b")
|
||||
key.setValue( "abcd", array.array( 'c', "PPPPPPPPPPPPPPP") )
|
||||
key.setValue( "abcde", array.array( 'c', "PPPPPPPPPPPPPPP"),
|
||||
regtypes["REG_BINARY"] )
|
||||
assert key.getValues()["abcd"]==key.getValues()["abcde"]
|
||||
key.deleteKey( "HKLM\\Software\\a\\b")
|
||||
key.deleteKey( "HKLM\\Software\\a")
|
||||
|
||||
def testSetNone(): pass
|
||||
|
||||
def testSetString(): pass
|
||||
|
||||
def testSetExpandString(): pass
|
||||
|
||||
def testSetBinaryData(): pass
|
||||
|
||||
def testSetDword(): pass
|
||||
|
||||
def testSetDwordBigEndian(): pass
|
||||
|
||||
def testSetLink(): pass
|
||||
|
||||
def testSetMultiSz(): pass
|
||||
|
||||
def testSetResourceList(): pass
|
||||
|
||||
def testSetFullResourceDescription(): pass
|
||||
|
||||
def testSetResourceRequirementsList(): pass
|
||||
|
||||
|
||||
|
||||
def testFlush(): pass
|
||||
|
||||
def testSave(): pass
|
||||
|
||||
def testLoad(): pass
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def testNoneType(): pass
|
||||
|
||||
def testStringType(): pass
|
||||
|
||||
def testExpandStringType(): pass
|
||||
|
||||
def testDWordType(): pass
|
||||
|
||||
def testDWordBigEndianType(): pass
|
||||
|
||||
def testLinkType(): pass
|
||||
|
||||
def testMultiStringType(): pass
|
||||
|
||||
def testResourceLinkType(): pass
|
||||
|
||||
def testResourceDescriptionType(): pass
|
||||
|
||||
def testResourceRequirementsListType(): pass
|
||||
|
||||
|
||||
def getSubkeysDict(): pass
|
||||
|
||||
def testKeyDict_Get(): pass
|
||||
|
||||
def testKeyDict_HasKey(): pass
|
||||
|
||||
def testKeyDict_Keys(): pass
|
||||
|
||||
def testKeyDict_Values(): pass
|
||||
|
||||
def testKeyDict_Items(): pass
|
||||
|
||||
def testKeyDict_Length(): pass
|
||||
|
||||
def testKeyDict_Map(): pass
|
||||
|
||||
def testKeyDict_GetItem(): pass
|
||||
|
||||
def testKeyDict_DelItem(): pass
|
||||
|
||||
def testRemote(): pass
|
||||
|
||||
def testShortcuts(): pass
|
||||
|
||||
|
||||
|
||||
def getValues(): pass
|
||||
|
||||
def testValueDict_ClearKeys(): pass
|
||||
|
||||
def testValueDict_Get(): pass
|
||||
|
||||
def testValueDict_HasKey(): pass
|
||||
|
||||
def testValueDict_Keys(): pass
|
||||
|
||||
def testValueDict_Values(): pass
|
||||
|
||||
def testValueDict_Items(): pass
|
||||
|
||||
def testValueDict_Length(): pass
|
||||
|
||||
def testValueDict_Map(): pass
|
||||
|
||||
def testValueDict_GetItem(): pass
|
||||
|
||||
def testValueDict_DelItem(): pass
|
||||
|
||||
for name in globals().keys():
|
||||
if name[0:4]=="test":
|
||||
func=globals()[ name ]
|
||||
try:
|
||||
func()
|
||||
print "Test Passed: %s" % name
|
||||
except Exception, e:
|
||||
print "Test Failed: %s" % name
|
||||
traceback.print_exc()
|
||||
|
||||
j=[0]*len( regtypes )
|
||||
|
||||
k=0
|
||||
|
||||
def test1( basekey ):
|
||||
global k
|
||||
for (name, data, type) in basekey.getValues():
|
||||
j[type.intval]=j[type.intval]+1
|
||||
if j[type.intval]==1:
|
||||
pass
|
||||
#print "[[%s]] %s [%s] = %s "% (type.msname, name, basekey, value)
|
||||
keys=basekey.getSubkeys()
|
||||
index=0
|
||||
k=k+1
|
||||
if(k%2500)==0:
|
||||
dump()
|
||||
while 1:
|
||||
try:
|
||||
test1( keys[index] )
|
||||
index=index+1
|
||||
except IndexError:
|
||||
break
|
||||
print "Done", basekey, index
|
||||
except (WindowsError, EnvironmentError):
|
||||
index=index+1
|
||||
dumpfile.write( "Skipping %s %s"% (basekey, index))
|
||||
|
||||
def dump(dumpfile):
|
||||
for i in range( len( j )):
|
||||
dumpfile.write( "%s %s\n" %( i,j[i] ))
|
||||
|
||||
def testRecursive():
|
||||
dumpfile=open( "foo.txt", "w" )
|
||||
start=time.time()
|
||||
for hive in hives.values():
|
||||
dumpfile.write( "Hive: %s\n" % hive )
|
||||
test1( hive )
|
||||
dump(dumpfile)
|
||||
print time.time()-start
|
Loading…
Reference in New Issue
Block a user