Bug 1231981 - Part 4: Pull in the necessary python dependencies in CI. r=ahal
MozReview-Commit-ID: AkmzbnI4Lq5
--- a/testing/mochitest/moz.build
+++ b/testing/mochitest/moz.build
@@ -155,10 +155,11 @@ TEST_HARNESS_FILES.testing.mochitest.tes
]
TEST_HARNESS_FILES.testing.mochitest.iceserver += [
'/testing/tools/iceserver/iceserver.py',
]
TEST_HARNESS_FILES.testing.mochitest.websocketprocessbridge += [
'/testing/tools/websocketprocessbridge/websocketprocessbridge.py',
+ '/testing/tools/websocketprocessbridge/websocketprocessbridge_requirements.txt',
]
--- a/testing/mozharness/scripts/android_emulator_unittest.py
+++ b/testing/mozharness/scripts/android_emulator_unittest.py
@@ -17,17 +17,17 @@ import time
import tempfile
# load modules from parent dir
sys.path.insert(1, os.path.dirname(sys.path[0]))
from mozprocess import ProcessHandler
from mozharness.base.log import FATAL
-from mozharness.base.script import BaseScript
+from mozharness.base.script import BaseScript, PreScriptAction
from mozharness.base.vcs.vcsbase import VCSMixin
from mozharness.mozilla.blob_upload import BlobUploadMixin, blobupload_config_options
from mozharness.mozilla.mozbase import MozbaseMixin
from mozharness.mozilla.testing.testbase import TestingMixin, testing_config_options
from mozharness.mozilla.testing.unittest import EmulatorMixin
class AndroidEmulatorTest(BlobUploadMixin, TestingMixin, EmulatorMixin, VCSMixin, BaseScript, MozbaseMixin):
@@ -131,29 +131,44 @@ class AndroidEmulatorTest(BlobUploadMixi
dirs['abs_xre_dir'] = os.path.join(
abs_dirs['abs_work_dir'], 'hostutils')
dirs['abs_modules_dir'] = os.path.join(
dirs['abs_test_install_dir'], 'modules')
dirs['abs_blob_upload_dir'] = os.path.join(
abs_dirs['abs_work_dir'], 'blobber_upload_dir')
dirs['abs_emulator_dir'] = os.path.join(
abs_dirs['abs_work_dir'], 'emulator')
+ dirs['abs_mochitest_dir'] = os.path.join(
+ dirs['abs_test_install_dir'], 'mochitest')
if self.config.get("developer_mode"):
dirs['abs_avds_dir'] = os.path.join(
abs_dirs['abs_work_dir'], "avds_dir")
else:
dirs['abs_avds_dir'] = "/home/cltbld/.android"
for key in dirs.keys():
if key not in abs_dirs:
abs_dirs[key] = dirs[key]
self.abs_dirs = abs_dirs
return self.abs_dirs
+ @PreScriptAction('create-virtualenv')
+ def _pre_create_virtualenv(self, action):
+ dirs = self.query_abs_dirs()
+
+ if os.path.isdir(dirs['abs_mochitest_dir']):
+ # mochitest is the only thing that needs this
+ requirements = os.path.join(dirs['abs_mochitest_dir'],
+ 'websocketprocessbridge',
+ 'websocketprocessbridge_requirements.txt')
+
+ self.register_virtualenv_module(requirements=[requirements],
+ two_pass=True)
+
def _launch_emulator(self):
env = self.query_env()
# Set $LD_LIBRARY_PATH to self.dirs['abs_work_dir'] so that
# the emulator picks up the symlink to libGL.so.1 that we
# constructed in start_emulator.
env['LD_LIBRARY_PATH'] = self.abs_dirs['abs_work_dir']
--- a/testing/mozharness/scripts/androidx86_emulator_unittest.py
+++ b/testing/mozharness/scripts/androidx86_emulator_unittest.py
@@ -16,17 +16,17 @@ import time
import tempfile
# load modules from parent dir
sys.path.insert(1, os.path.dirname(sys.path[0]))
from mozprocess import ProcessHandler
from mozharness.base.log import FATAL
-from mozharness.base.script import BaseScript, PostScriptRun
+from mozharness.base.script import BaseScript, PostScriptRun, PreScriptAction
from mozharness.base.vcs.vcsbase import VCSMixin
from mozharness.mozilla.blob_upload import BlobUploadMixin, blobupload_config_options
from mozharness.mozilla.mozbase import MozbaseMixin
from mozharness.mozilla.buildbot import TBPL_WORST_LEVEL_TUPLE
from mozharness.mozilla.testing.testbase import TestingMixin, testing_config_options
from mozharness.mozilla.testing.unittest import EmulatorMixin
@@ -138,29 +138,44 @@ class AndroidEmulatorTest(BlobUploadMixi
dirs['abs_xre_dir'] = os.path.join(
abs_dirs['abs_work_dir'], 'hostutils')
dirs['abs_modules_dir'] = os.path.join(
dirs['abs_test_install_dir'], 'modules')
dirs['abs_blob_upload_dir'] = os.path.join(
abs_dirs['abs_work_dir'], 'blobber_upload_dir')
dirs['abs_emulator_dir'] = os.path.join(
abs_dirs['abs_work_dir'], 'emulator')
+ dirs['abs_mochitest_dir'] = os.path.join(
+ dirs['abs_test_install_dir'], 'mochitest')
if self.config.get("developer_mode"):
dirs['abs_avds_dir'] = os.path.join(
abs_dirs['abs_work_dir'], "avds_dir")
else:
dirs['abs_avds_dir'] = "/home/cltbld/.android"
for key in dirs.keys():
if key not in abs_dirs:
abs_dirs[key] = dirs[key]
self.abs_dirs = abs_dirs
return self.abs_dirs
+ @PreScriptAction('create-virtualenv')
+ def _pre_create_virtualenv(self, action):
+ dirs = self.query_abs_dirs()
+
+ if os.path.isdir(dirs['abs_mochitest_dir']):
+ # mochitest is the only thing that needs this
+ requirements = os.path.join(dirs['abs_mochitest_dir'],
+ 'websocketprocessbridge',
+ 'websocketprocessbridge_requirements.txt')
+
+ self.register_virtualenv_module(requirements=[requirements],
+ two_pass=True)
+
def _build_arg(self, option, value):
"""
Build a command line argument
"""
if not value:
return []
return [str(option), str(value)]
--- a/testing/mozharness/scripts/desktop_unittest.py
+++ b/testing/mozharness/scripts/desktop_unittest.py
@@ -255,21 +255,30 @@ class DesktopUnittest(TestingMixin, Merc
def _pre_create_virtualenv(self, action):
dirs = self.query_abs_dirs()
self.register_virtualenv_module(name='pip>=1.5')
self.register_virtualenv_module('psutil==3.1.1', method='pip')
self.register_virtualenv_module(name='mock')
self.register_virtualenv_module(name='simplejson')
- requirements = os.path.join(dirs['abs_test_install_dir'],
- 'config',
- 'marionette_requirements.txt')
- if os.path.isfile(requirements):
- self.register_virtualenv_module(requirements=[requirements],
+ requirements_files = [
+ os.path.join(dirs['abs_test_install_dir'],
+ 'config',
+ 'marionette_requirements.txt')]
+
+ if os.path.isdir(dirs['abs_mochitest_dir']):
+ # mochitest is the only thing that needs this
+ requirements_files.append(
+ os.path.join(dirs['abs_mochitest_dir'],
+ 'websocketprocessbridge',
+ 'websocketprocessbridge_requirements.txt'))
+
+ for requirements_file in requirements_files:
+ self.register_virtualenv_module(requirements=[requirements_file],
two_pass=True)
def _query_symbols_url(self):
"""query the full symbols URL based upon binary URL"""
# may break with name convention changes but is one less 'input' for script
if self.symbols_url:
return self.symbols_url
new file mode 100644
--- /dev/null
+++ b/testing/tools/websocketprocessbridge/websocketprocessbridge_requirements.txt
@@ -0,0 +1,13 @@
+twisted==10.2.0
+
+# websocket adapter for twisted, might be built into twisted someday
+txws==0.9.1
+
+psutil==3.1.1
+
+# needed by txws, but pypi doesn't know about it
+six==1.10.0
+
+# Needed by iceserver
+ipaddr==2.1.11
+passlib==1.6.5