lutris/tests/check_prefixes.py

47 lines
1.5 KiB
Python
Raw Normal View History

2018-09-24 13:06:57 +00:00
#!/usr/bin/env python3
2016-10-25 21:53:49 +00:00
import os
import subprocess
import sys
2016-10-25 21:53:49 +00:00
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
2020-04-26 16:42:38 +00:00
from lutris.util.wine.registry import WineRegistry
2016-10-25 21:53:49 +00:00
PREFIXES_PATH = os.path.expanduser("~/Games/wine/prefixes")
def get_registries():
2020-04-26 16:42:38 +00:00
registry_list = []
2016-10-25 23:57:52 +00:00
directories = os.listdir(PREFIXES_PATH)
directories.append(os.path.expanduser("~/.wine"))
for prefix in directories:
2016-10-25 21:53:49 +00:00
for path in os.listdir(os.path.join(PREFIXES_PATH, prefix)):
if path.endswith(".reg"):
2020-04-26 16:42:38 +00:00
registry_list.append(os.path.join(PREFIXES_PATH, prefix, path))
return registry_list
2016-10-25 21:53:49 +00:00
def check_registry(registry_path):
2024-02-25 05:02:06 +00:00
with open(registry_path, "r") as registry_file:
2016-10-25 21:53:49 +00:00
original_content = registry_file.read()
2016-10-25 21:59:01 +00:00
try:
2020-04-26 16:42:38 +00:00
wine_registry = WineRegistry(registry_path)
2016-10-25 21:59:01 +00:00
except:
sys.stderr.write("Error parsing {}\n".format(registry_path))
raise
2020-04-26 16:42:38 +00:00
content = wine_registry.render()
2016-10-25 21:53:49 +00:00
if content != original_content:
2024-02-25 05:02:06 +00:00
wrong_path = os.path.join(os.path.dirname(__file__), "error.reg")
with open(wrong_path, "w") as wrong_reg:
2016-10-25 21:53:49 +00:00
wrong_reg.write(content)
print("Content of parsed registry doesn't match: {}".format(registry_path))
subprocess.call(["meld", registry_path, wrong_path])
sys.exit(2)
2016-10-25 21:53:49 +00:00
2017-03-03 03:28:05 +00:00
registries = get_registries()
for registry in registries:
2016-10-25 21:53:49 +00:00
check_registry(registry)
print("All {} registry files validated!".format(len(registries)))