Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5197)

Unified Diff: chrome/test/mini_installer/registry_verifier.py

Issue 2747023002: Cleanup machine based on the state in configuration file for mini installer test.
Patch Set: refactor to use visitor pattern Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/mini_installer/registry.py ('k') | chrome/test/mini_installer/state_walker.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/mini_installer/registry_verifier.py
diff --git a/chrome/test/mini_installer/registry_verifier.py b/chrome/test/mini_installer/registry_verifier.py
deleted file mode 100644
index bd790d574823082202e3bc5c5eda561b9b2e1abb..0000000000000000000000000000000000000000
--- a/chrome/test/mini_installer/registry_verifier.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import _winreg
-
-import verifier
-
-
-class RegistryVerifier(verifier.Verifier):
- """Verifies that the current registry matches the specified criteria."""
-
- def _RootKeyConstant(self, root_key):
- """Converts a root registry key string into a _winreg.HKEY_* constant."""
- root_key_mapping = {
- 'HKEY_CLASSES_ROOT': _winreg.HKEY_CLASSES_ROOT,
- 'HKEY_CURRENT_USER': _winreg.HKEY_CURRENT_USER,
- 'HKEY_LOCAL_MACHINE': _winreg.HKEY_LOCAL_MACHINE,
- 'HKEY_USERS': _winreg.HKEY_USERS,
- }
- if root_key not in root_key_mapping:
- raise KeyError("Unknown root registry key '%s'" % root_key)
- return root_key_mapping[root_key]
-
- def _ValueTypeConstant(self, value_type):
- """Converts a registry value type string into a _winreg.REG_* constant."""
- value_type_mapping = {
- 'BINARY': _winreg.REG_BINARY,
- 'DWORD': _winreg.REG_DWORD,
- 'DWORD_LITTLE_ENDIAN': _winreg.REG_DWORD_LITTLE_ENDIAN,
- 'DWORD_BIG_ENDIAN': _winreg.REG_DWORD_BIG_ENDIAN,
- 'EXPAND_SZ': _winreg.REG_EXPAND_SZ,
- 'LINK': _winreg.REG_LINK,
- 'MULTI_SZ': _winreg.REG_MULTI_SZ,
- 'NONE': _winreg.REG_NONE,
- 'SZ': _winreg.REG_SZ,
- }
- if value_type not in value_type_mapping:
- raise KeyError("Unknown registry value type '%s'" % value_type)
- return value_type_mapping[value_type]
-
- def _VerifyExpectation(self, expectation_name, expectation,
- variable_expander):
- """Overridden from verifier.Verifier.
-
- Verifies a registry key according to the |expectation|.
-
- Args:
- expectation_name: The registry key being verified. It is expanded using
- Expand.
- expectation: A dictionary with the following keys and values:
- 'exists' a string indicating whether the registry key's existence is
- 'required', 'optional', or 'forbidden'. Values are not checked if
- an 'optional' key is not present in the registry.
- 'values' (optional) a dictionary where each key is a registry value
- and its associated value is a dictionary with the following key
- and values:
- 'type' (optional) a string indicating the type of the registry
- value. If not present, the corresponding value is expected
- to be absent in the registry.
- 'data' the associated data of the registry value if 'type' is
- specified. If it is a string, it is expanded using Expand.
- variable_expander: A VariableExpander object.
- """
- key = variable_expander.Expand(expectation_name)
- root_key, sub_key = key.split('\\', 1)
- try:
- # Query the Windows registry for the registry key. It will throw a
- # WindowsError if the key doesn't exist.
- key_handle = _winreg.OpenKey(self._RootKeyConstant(root_key), sub_key, 0,
- _winreg.KEY_QUERY_VALUE)
- except WindowsError:
- # Key doesn't exist. See that it matches the expectation.
- assert expectation['exists'] != 'required', ('Registry key %s is '
- 'missing' % key)
- # Values are not checked if the missing key's existence is optional.
- return
- # The key exists, see that it matches the expectation.
- assert expectation['exists'] != 'forbidden', ('Registry key %s exists' %
- key)
-
- # Verify the expected values.
- if 'values' not in expectation:
- return
- for value, value_expectation in expectation['values'].iteritems():
- # Query the value. It will throw a WindowsError if the value doesn't
- # exist.
- try:
- data, value_type = _winreg.QueryValueEx(key_handle, value)
- except WindowsError:
- # The value does not exist. See that this matches the expectation.
- assert 'type' not in value_expectation, ('Value %s of registry key %s '
- 'is missing' % (value, key))
- continue
-
- assert 'type' in value_expectation, ('Value %s of registry key %s exists '
- 'with value %s' % (value, key, data))
-
- # Verify the type of the value.
- expected_value_type = value_expectation['type']
- assert self._ValueTypeConstant(expected_value_type) == value_type, \
- "Value '%s' of registry key %s has unexpected type '%s'" % (
- value, key, expected_value_type)
-
- # Verify the associated data of the value.
- expected_data = value_expectation['data']
- if isinstance(expected_data, basestring):
- expected_data = variable_expander.Expand(expected_data)
- assert expected_data == data, \
- ("Value '%s' of registry key %s has unexpected data.\n"
- " Expected: %s\n"
- " Actual: %s" % (value, key, expected_data, data))
« no previous file with comments | « chrome/test/mini_installer/registry.py ('k') | chrome/test/mini_installer/state_walker.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698