--- a/testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py
+++ b/testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py
@@ -1,43 +1,19 @@
# Default configuration as used by Mozmill CI (Jenkins)
-import os
-import sys
-
-import mozharness
-
-
-external_tools_path = os.path.join(
- os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
- 'external_tools',
-)
config = {
# Tests run in mozmill-ci do not use RelEng infra
'developer_mode': True,
'env': {
'PIP_TRUSTED_HOST': 'pypi.pub.build.mozilla.org',
},
- # General local variable overwrite
- 'exes': {
- 'gittool.py': [
- # Bug 1227079 - Python executable eeded to get it executed on Windows
- sys.executable,
- os.path.join(external_tools_path, 'gittool.py')
- ],
- 'hgtool.py': [
- # Bug 1227079 - Python executable eeded to get it executed on Windows
- sys.executable,
- os.path.join(external_tools_path, 'hgtool.py')
- ],
- },
-
# PIP
'find_links': ['http://pypi.pub.build.mozilla.org/pub'],
'pip_index': False,
# mozcrash support
'download_minidump_stackwalk': True,
'download_symbols': 'ondemand',
'download_tooltool': True,
--- a/testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
+++ b/testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
@@ -1,23 +1,19 @@
#!/usr/bin/env python
# ***** BEGIN LICENSE BLOCK *****
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
# ***** END LICENSE BLOCK *****
-"""firefox_ui_updates.py
-Author: Armen Zambrano G.
- Henrik Skupin
-"""
+
import copy
import os
import sys
-import urlparse
from mozharness.base.log import FATAL, WARNING
from mozharness.base.python import PostScriptRun, PreScriptAction
from mozharness.mozilla.structuredlog import StructuredOutputParser
from mozharness.mozilla.testing.testbase import (
TestingMixin,
testing_config_options,
)
@@ -112,97 +108,60 @@ class FirefoxUITests(TestingMixin, VCSTo
]
super(FirefoxUITests, self).__init__(
config_options=config_options,
all_actions=all_actions or actions,
default_actions=default_actions or actions,
*args, **kwargs)
- # As long as we don't run on buildbot the following properties have be set on our own
+ # Code which doesn't run on buildbot has to include the following properties
self.binary_path = self.config.get('binary_path')
self.installer_path = self.config.get('installer_path')
self.installer_url = self.config.get('installer_url')
self.test_packages_url = self.config.get('test_packages_url')
self.test_url = self.config.get('test_url')
self.reports = {'html': 'report.html', 'xunit': 'report.xml'}
- self.firefox_ui_repo = self.config['firefox_ui_repo']
- self.firefox_ui_branch = self.config.get('firefox_ui_branch')
-
- if not self.test_url and not self.test_packages_url and not self.firefox_ui_branch:
+ if not self.test_url and not self.test_packages_url:
self.fatal(
- 'You must use --test-url, --test-packages-url, or --firefox-ui-branch (valid '
- 'values can be found at: https://github.com/mozilla/firefox-ui-tests/branches)')
+ 'You must use --test-url, or --test-packages-url')
@PreScriptAction('create-virtualenv')
def _pre_create_virtualenv(self, action):
dirs = self.query_abs_dirs()
- # If tests are used from common.tests.zip install every Python package
- # via the single requirements file
- if self.test_packages_url or self.test_url:
- requirements = os.path.join(dirs['abs_test_install_dir'],
- 'config', 'firefox_ui_requirements.txt')
- self.register_virtualenv_module(requirements=[requirements], two_pass=True)
-
- # We have a non-packaged version of Firefox UI tests. So install requirements
- # and the firefox-ui-tests package separately
- # TODO - Can be removed when the github repository is no longer needed
- else:
- # Register all modules for firefox-ui-tests including all dependencies
- # as strict versions to ensure newer releases won't break something
- requirements = os.path.join(dirs['abs_test_install_dir'],
- 'requirements.txt')
- self.register_virtualenv_module(requirements=[requirements])
-
- def checkout(self):
- """Clone the firefox-ui-tests repository."""
- dirs = self.query_abs_dirs()
-
- self.vcs_checkout(
- repo=self.firefox_ui_repo,
- dest=dirs['abs_test_install_dir'],
- branch=self.firefox_ui_branch,
- vcs='gittool',
- env=self.query_env(),
- )
+ requirements = os.path.join(dirs['abs_test_install_dir'],
+ 'config', 'firefox_ui_requirements.txt')
+ self.register_virtualenv_module(requirements=[requirements], two_pass=True)
def clobber(self):
"""Delete the working directory"""
super(FirefoxUITests, self).clobber()
# Also ensure to delete the reports directory to get rid of old files
dirs = self.query_abs_dirs()
self.rmtree(dirs['abs_reports_dir'], error_level=FATAL)
def download_and_extract(self):
"""Overriding method from TestingMixin for more specific behavior.
We use the test_packages_url command line argument to check where to get the
harness, puppeteer, and tests from and how to set them up.
"""
- if self.test_packages_url or self.test_url:
- target_unzip_dirs = ['config/*',
- 'firefox-ui/*',
- 'marionette/*',
- 'mozbase/*',
- 'puppeteer/*',
- 'tools/wptserve/*',
- ]
- super(FirefoxUITests, self).download_and_extract(target_unzip_dirs=target_unzip_dirs)
-
- else:
- self.checkout()
- self._download_installer()
-
- if self.config.get('download_symbols'):
- self._download_and_extract_symbols()
+ target_unzip_dirs = ['config/*',
+ 'firefox-ui/*',
+ 'marionette/*',
+ 'mozbase/*',
+ 'puppeteer/*',
+ 'tools/wptserve/*',
+ ]
+ super(FirefoxUITests, self).download_and_extract(target_unzip_dirs=target_unzip_dirs)
def query_abs_dirs(self):
if self.abs_dirs:
return self.abs_dirs
abs_dirs = super(FirefoxUITests, self).query_abs_dirs()
abs_tests_install_dir = os.path.join(abs_dirs['abs_work_dir'], 'tests')
@@ -234,43 +193,16 @@ class FirefoxUITests(TestingMixin, VCSTo
if name:
if type(name) is bool:
args.append(option[0][0])
else:
args.extend([option[0][0], self.config[dest]])
return args
- def query_minidump_stackwalk(self):
- """Download the minidump stackwalk binary.
-
- We can remove this whole method once we no longer need the github repository.
-
- """
- # If the test package is available use it
- if self.test_packages_url or self.test_url:
- return super(FirefoxUITests, self).query_minidump_stackwalk()
-
- # Otherwise grab the manifest file from hg.mozilla.org
- manifest_path = None
-
- if self.config.get('download_minidump_stackwalk'):
- tooltool_manifest = self.query_minidump_tooltool_manifest()
- url_base = 'https://hg.mozilla.org/mozilla-central/raw-file/default/testing/'
-
- dirs = self.query_abs_dirs()
- manifest_path = os.path.join(dirs['abs_work_dir'], 'releng.manifest')
- try:
- self.download_file(urlparse.urljoin(url_base, tooltool_manifest),
- manifest_path)
- except Exception as e:
- self.fatal('Download of tooltool manifest file failed: %s' % e.message)
-
- return super(FirefoxUITests, self).query_minidump_stackwalk(manifest=manifest_path)
-
@PostScriptRun
def copy_logs_to_upload_dir(self):
"""Overwrite this method so we also upload the other (e.g. report) files"""
# Copy logs and report files to the upload folder
super(FirefoxUITests, self).copy_logs_to_upload_dir()
dirs = self.query_abs_dirs()
self.info("Copying reports to upload dir...")
@@ -355,63 +287,16 @@ class FirefoxUITests(TestingMixin, VCSTo
def run_tests(self):
"""Run all the tests"""
return self.run_test(
binary_path=self.binary_path,
env=self.query_env(),
)
- def download_unzip(self, url, parent_dir, target_unzip_dirs=None, halt_on_failure=True):
- """Overwritten method from BaseScript until bug 1237706 is fixed.
-
- The downloaded file will always be saved to the working directory and is not getting
- deleted after extracting.
-
- Args:
- url (str): URL where the file to be downloaded is located.
- parent_dir (str): directory where the downloaded file will
- be extracted to.
- target_unzip_dirs (list, optional): directories inside the zip file to extract.
- Defaults to `None`.
- halt_on_failure (bool, optional): whether or not to redefine the
- log level as `FATAL` on errors. Defaults to True.
-
- """
- import fnmatch
- import itertools
- import functools
- import zipfile
-
- def _filter_entries(namelist):
- """Filter entries of the archive based on the specified list of extract_dirs."""
- filter_partial = functools.partial(fnmatch.filter, namelist)
- for entry in itertools.chain(*map(filter_partial, target_unzip_dirs or ['*'])):
- yield entry
-
- dirs = self.query_abs_dirs()
- zip = self.download_file(url, parent_dir=dirs['abs_work_dir'],
- error_level=FATAL)
-
- try:
- self.info('Using ZipFile to extract {} to {}'.format(zip, parent_dir))
- with zipfile.ZipFile(zip) as bundle:
- for entry in _filter_entries(bundle.namelist()):
- bundle.extract(entry, path=parent_dir)
-
- # ZipFile doesn't preserve permissions: http://bugs.python.org/issue15795
- fname = os.path.realpath(os.path.join(parent_dir, entry))
- mode = bundle.getinfo(entry).external_attr >> 16 & 0x1FF
- # Only set permissions if attributes are available.
- if mode:
- os.chmod(fname, mode)
- except zipfile.BadZipfile as e:
- self.log('%s (%s)' % (e.message, zip),
- level=FATAL, exit_code=2)
-
class FirefoxUIFunctionalTests(FirefoxUITests):
cli_script = 'cli_functional.py'
default_tests = [
os.path.join('puppeteer', 'manifest.ini'),
os.path.join('functional', 'manifest.ini'),
]