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

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

Issue 2747023002: Cleanup machine based on the state in configuration file for mini installer test.
Patch Set: fixup 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
Index: chrome/test/mini_installer/test_installer.py
diff --git a/chrome/test/mini_installer/test_installer.py b/chrome/test/mini_installer/test_installer.py
index c0c9a91e3b7314954d49ff6a0fb09ffef640403e..5aeab33fd1ab5ca98376ed4dea84fbbc79dad551 100644
--- a/chrome/test/mini_installer/test_installer.py
+++ b/chrome/test/mini_installer/test_installer.py
@@ -19,9 +19,9 @@ import sys
import time
import traceback
import unittest
-import _winreg
from variable_expander import VariableExpander
+import cleanup
import verifier_runner
@@ -122,7 +122,8 @@ class InstallerTest(unittest.TestCase):
def tearDown(self):
"""Cleans up the machine if the test case fails."""
if self._clean_on_teardown:
- RunCleanCommand(True, self._variable_expander)
+ RunCleanCommand(True, self._config.states[self._test[-1]],
grt (UTC plus 2) 2017/03/14 09:19:44 rather than baking in the assumption that the last
zmin 2017/03/14 23:13:00 Done.
+ self._variable_expander)
def shortDescription(self):
"""Overridden from unittest.TestCase.
@@ -168,30 +169,7 @@ def RunCommand(command, variable_expander):
raise Exception('Command %s returned non-zero exit status %s' % (
expanded_command, exit_status))
-
-def DeleteGoogleUpdateRegistration(system_level, registry_subkey,
- variable_expander):
- """Deletes Chrome's registration with Google Update.
-
- Args:
- system_level: True if system-level Chrome is to be deleted.
- registry_subkey: The pre-expansion registry subkey for the product.
- variable_expander: A VariableExpander object.
- """
- root = (_winreg.HKEY_LOCAL_MACHINE if system_level
- else _winreg.HKEY_CURRENT_USER)
- key_name = variable_expander.Expand(registry_subkey)
- try:
- key_handle = _winreg.OpenKey(root, key_name, 0,
- _winreg.KEY_SET_VALUE |
- _winreg.KEY_WOW64_32KEY)
- _winreg.DeleteValue(key_handle, 'pv')
- except WindowsError:
- # The key isn't present, so there is no value to delete.
- pass
-
-
-def RunCleanCommand(force_clean, variable_expander):
+def RunCleanCommand(force_clean, clean_state, variable_expander):
"""Puts the machine in the clean state (i.e. Chrome not installed).
Args:
@@ -199,33 +177,30 @@ def RunCleanCommand(force_clean, variable_expander):
installations.
variable_expander: A VariableExpander object.
"""
- # A list of (system_level, product_name, product_switch, registry_subkey)
+ # A list of (product_name, product_switch)
# tuples for the possible installed products.
data = [
- (False, '$CHROME_LONG_NAME', '',
- '$CHROME_UPDATE_REGISTRY_SUBKEY'),
- (True, '$CHROME_LONG_NAME', '--system-level',
- '$CHROME_UPDATE_REGISTRY_SUBKEY'),
+ ('$CHROME_LONG_NAME', ''),
+ ('$CHROME_LONG_NAME', '--system-level'),
]
if variable_expander.Expand('$SUPPORTS_SXS') == 'True':
- data.append((False, '$CHROME_LONG_NAME_SXS', '',
- '$CHROME_UPDATE_REGISTRY_SUBKEY_SXS'))
+ data.append(('$CHROME_LONG_NAME_SXS', ''))
interactive_option = '--interactive' if not force_clean else ''
- for system_level, product_name, product_switch, registry_subkey in data:
+ for product_name, product_switch in data:
command = ('python uninstall_chrome.py '
'--chrome-long-name="%s" '
'--no-error-if-absent %s %s' %
(product_name, product_switch, interactive_option))
try:
RunCommand(command, variable_expander)
- except:
+ except (Exception, OSError, ValueError):
message = traceback.format_exception(*sys.exc_info())
message.insert(0, 'Error cleaning up an old install with:\n')
LogMessage(''.join(message))
- if force_clean:
- DeleteGoogleUpdateRegistration(system_level, registry_subkey,
- variable_expander)
+
+ if force_clean:
+ cleanup.CleanupRunner.Create().CleanAll(clean_state, variable_expander)
def MergePropertyDictionaries(current_property, new_property):
@@ -323,6 +298,7 @@ def ParseConfigFile(filename, variable_expander):
config.actions[action_name] = action_command
return config
+DEFAULT_CLEAN_STATE = 'clean'
grt (UTC plus 2) 2017/03/14 09:19:44 how about making this an argument for the parser w
def main():
parser = argparse.ArgumentParser()
@@ -340,7 +316,8 @@ def main():
parser.add_argument('--config', metavar='FILENAME',
help='Path to test configuration file')
parser.add_argument('test', nargs='*',
- help='Name(s) of tests to run.')
+ help=('Name(s) of tests to run. For example, '
+ '__main__.InstallerTest.ChromeUserLevel'))
args = parser.parse_args()
if not args.config:
parser.error('missing mandatory --config FILENAME argument')
@@ -361,7 +338,8 @@ def main():
next_version_mini_installer_path)
config = ParseConfigFile(args.config, variable_expander)
- RunCleanCommand(args.force_clean, variable_expander)
+ RunCleanCommand(args.force_clean, config.states[DEFAULT_CLEAN_STATE],
+ variable_expander)
for test in config.tests:
# If tests were specified via |tests|, their names are formatted like so:
test_name = '%s.%s.%s' % (InstallerTest.__module__,

Powered by Google App Engine
This is Rietveld 408576698