author | Henrik Skupin <mail@hskupin.info> |
Thu, 17 Nov 2016 13:08:04 +0100 | |
changeset 323041 | 852fa3bf50d748266342a943f9900dc7eab6d4ce |
parent 323040 | 808a44ee14bde32c2d12e3c84245b77d9e968fbf |
child 323042 | 9812afab78b2322b519125fa28a757322871dcc5 |
push id | 34379 |
push user | hskupin@mozilla.com |
push date | Thu, 17 Nov 2016 22:17:02 +0000 |
treeherder | autoland@852fa3bf50d7 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | maja_zf |
bugs | 1316687 |
milestone | 53.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/testing/firefox-ui/harness/firefox_ui_harness/arguments/update.py +++ b/testing/firefox-ui/harness/firefox_ui_harness/arguments/update.py @@ -13,44 +13,38 @@ class UpdateBaseArguments(object): 'default': [], 'action': 'append', 'metavar': 'MAR_CHANNEL', 'help': 'Additional MAR channel to be allowed for updates, ' 'e.g. "firefox-mozilla-beta" for updating a release ' 'build to the latest beta build.' }], [['--update-channel'], { - 'dest': 'update_channel', 'metavar': 'CHANNEL', 'help': 'Channel to use for the update check.' }], [['--update-direct-only'], { - 'dest': 'update_direct_only', 'default': False, 'action': 'store_true', 'help': 'Only perform a direct update' }], [['--update-fallback-only'], { - 'dest': 'update_fallback_only', 'default': False, 'action': 'store_true', 'help': 'Only perform a fallback update' }], - [['--update-override-url'], { - 'dest': 'update_override_url', + [['--update-url'], { 'metavar': 'URL', 'help': 'Force specified URL to use for update checks.' }], [['--update-target-version'], { - 'dest': 'update_target_version', 'metavar': 'VERSION', 'help': 'Version of the updated build.' }], [['--update-target-buildid'], { - 'dest': 'update_target_buildid', 'metavar': 'BUILD_ID', 'help': 'Build ID of the updated build.' }], ] def verify_usage_handler(self, args): if args.update_direct_only and args.update_fallback_only: raise ValueError('Arguments --update-direct-only and --update-fallback-only '
--- a/testing/firefox-ui/harness/firefox_ui_harness/runners/update.py +++ b/testing/firefox-ui/harness/firefox_ui_harness/runners/update.py @@ -21,21 +21,16 @@ class UpdateTestRunner(FirefoxUITestRunn def __init__(self, **kwargs): super(UpdateTestRunner, self).__init__(**kwargs) self.original_bin = self.bin self.prefs.update(DEFAULT_PREFS) - # In case of overriding the update URL, set the appropriate preference - override_url = kwargs.pop('update_override_url', None) - if override_url: - self.prefs.update({'app.update.url.override': override_url}) - self.run_direct_update = not kwargs.pop('update_fallback_only', False) self.run_fallback_update = not kwargs.pop('update_direct_only', False) self.test_handlers = [UpdateTestCase] def run_tests(self, tests): # Used to store the last occurred exception because we execute # run_tests() multiple times
--- a/testing/firefox-ui/harness/firefox_ui_harness/testcases.py +++ b/testing/firefox-ui/harness/firefox_ui_harness/testcases.py @@ -31,16 +31,18 @@ class UpdateTestCase(PuppeteerMixin, Mar # raised. See: # http://mxr.mozilla.org/mozilla-central/source/toolkit/mozapps/update/nsUpdateService.js?rev=a9240b1eb2fb#4813 # http://mxr.mozilla.org/mozilla-central/source/toolkit/mozapps/update/nsUpdateService.js?rev=a9240b1eb2fb#4756 PREF_APP_UPDATE_ALTWINDOWTYPE = 'app.update.altwindowtype' def __init__(self, *args, **kwargs): super(UpdateTestCase, self).__init__(*args, **kwargs) + self.update_url = kwargs.pop('update_url') + self.target_buildid = kwargs.pop('update_target_buildid') self.target_version = kwargs.pop('update_target_version') self.update_channel = kwargs.pop('update_channel') self.default_update_channel = None self.update_mar_channels = set(kwargs.pop('update_mar_channels')) self.default_mar_channels = None @@ -54,16 +56,18 @@ class UpdateTestCase(PuppeteerMixin, Mar self.download_duration = None # Bug 604364 - Preparation to test multiple update steps self.current_update_index = 0 # Ensure that there exists no already partially downloaded update self.remove_downloaded_update() + self.set_preferences_defaults() + # If requested modify the default update channel. It will be active # after the next restart of the application # Bug 1142805 - Modify file via Python directly if self.update_channel: # Backup the original content and the path of the channel-prefs.js file self.default_update_channel = { 'content': self.software_update.update_channel.file_contents, 'path': self.software_update.update_channel.file_path, @@ -365,16 +369,23 @@ class UpdateTestCase(PuppeteerMixin, Mar """Remove an already downloaded update from the update staging directory. Hereby not only remove the update subdir but everything below 'updates'. """ path = os.path.dirname(self.software_update.staging_directory) self.logger.info('Clean-up update staging directory: {}'.format(path)) mozfile.remove(path) + def restart(self, *args, **kwargs): + super(UpdateTestCase, self).restart(*args, **kwargs) + + # After a restart default preference values as set in the former session are lost. + # Make sure that any of those are getting restored. + self.set_preferences_defaults() + def restore_config_files(self): # Reset channel-prefs.js file if modified try: if self.default_update_channel: path = self.default_update_channel['path'] self.logger.info('Restoring channel defaults for: {}'.format(path)) with open(path, 'w') as f: f.write(self.default_update_channel['content']) @@ -388,16 +399,22 @@ class UpdateTestCase(PuppeteerMixin, Mar path = self.default_mar_channels['path'] self.logger.info('Restoring mar channel defaults for: {}'.format(path)) with open(path, 'w') as f: f.write(self.default_mar_channels['content']) except IOError: self.logger.error('Failed to reset the default mar channels.', exc_info=True) + def set_preferences_defaults(self): + """Set the default value for specific preferences to force its usage.""" + if self.update_url: + self.puppeteer.prefs.set_pref("app.update.url", self.update_url, + default_branch=True) + def wait_for_download_finished(self, window, timeout=TIMEOUT_UPDATE_DOWNLOAD): """ Waits until download is completed. :param window: Instance of :class:`AboutWindow` or :class:`UpdateWizardDialog`. :param timeout: How long to wait for the download to finish. Optional, default to 360 seconds. """ # The old update wizard dialog has to be handled differently. It's necessary