From 63347be3831a50023bbd98cc52e80d364f2aad8e Mon Sep 17 00:00:00 2001 From: Mathieu Comandon Date: Tue, 25 Oct 2016 12:38:01 -0700 Subject: [PATCH] Handle registry timestamps as ints or floats --- lutris/util/wineregistry.py | 13 +++++++++---- tests/fixtures/user.reg | 4 ++-- tests/test_registry.py | 4 ++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lutris/util/wineregistry.py b/lutris/util/wineregistry.py index d063cd863..d72b289dd 100644 --- a/lutris/util/wineregistry.py +++ b/lutris/util/wineregistry.py @@ -113,16 +113,21 @@ class WineRegistry(object): class WineRegistryKey(object): def __init__(self, key_def): - key, timestamp = key_def.strip().rsplit(' ', 1) - self.timestamp = int(timestamp) + self.raw_name = key_def[:key_def.index(']') + 1] + self.raw_timestamp = key_def[key_def.index(']') + 1:] + ts_parts = self.raw_timestamp.strip().split() + if len(ts_parts) == 1: + self.timestamp = int(ts_parts[0]) + else: + self.timestamp = float("{}.{}".format(ts_parts[0], ts_parts[1])) self.values = {} - self.name = key.replace('\\\\', '/').strip("[]") + self.name = self.raw_name.replace('\\\\', '/').strip("[]") def set_key(self, name, value): self.values[name.strip("\"")] = value.strip() def __str__(self): - return "[{0}] {1}".format(self.winname, self.timestamp) + return "{0} {1}".format(self.raw_name, self.raw_timestamp) @property def winname(self): diff --git a/tests/fixtures/user.reg b/tests/fixtures/user.reg index 0daf507d4..701378ba3 100644 --- a/tests/fixtures/user.reg +++ b/tests/fixtures/user.reg @@ -130,8 +130,8 @@ WINE REGISTRY Version 2 "SnapToDefaultButton"="0" "SwapMouseButtons"="0" -[Control Panel\\Sound] 1477412318 -#time=1d22edb718040d6 +[Control Panel\\Sound] 1475423303 7943190 +#time=1d21cc468677196 "Beep"="Yes" [Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders] 1477412318 diff --git a/tests/test_registry.py b/tests/test_registry.py index 952510a68..f9e891746 100644 --- a/tests/test_registry.py +++ b/tests/test_registry.py @@ -20,3 +20,7 @@ class TestWineRegistry(TestCase): def test_can_get_timestamp_as_int(self): key = self.registry.get_key('Control Panel/Keyboard') self.assertEqual(key.timestamp, 1477412318) + + def test_can_get_timestamp_as_float(self): + key = self.registry.get_key('Control Panel/Sound') + self.assertEqual(key.timestamp, 1475423303.7943190)