Index: run_tests.py |
diff --git a/run_tests.py b/run_tests.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..97c40441a712bbac213d7283c23957c38a46f0f0 |
--- /dev/null |
+++ b/run_tests.py |
@@ -0,0 +1,95 @@ |
+#!/usr/bin/env python |
+# 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/. |
+ |
+import os |
+import shutil |
+from subprocess import check_call |
+import sys |
+import urllib2 |
+import zipfile |
+ |
+# Link to the folder which contains the zip archives of virtualenv |
+URL_VIRTUALENV = 'https://codeload.github.com/pypa/virtualenv/zip/' |
+VERSION_VIRTUALENV = '1.9.1' |
+ |
+DIR_BASE = os.path.abspath(os.path.dirname(__file__)) |
+DIR_ENV = os.path.join(DIR_BASE, 'tmp', 'venv') |
+DIR_TMP = os.path.join(DIR_BASE, 'tmp') |
+ |
+REQ_TXT = os.path.join('tests', 'requirements.txt') |
+ |
+ |
+def download(url, target): |
+ """Downloads the specified url to the given target.""" |
+ response = urllib2.urlopen(url) |
+ with open(target, 'wb') as f: |
+ f.write(response.read()) |
+ return target |
+ |
+ |
+# see http://stackoverflow.com/questions/12332975/installing-python-module-within-code |
+def install(package, version): |
+ package_arg = "%s==%s" % (package, version) |
+ check_call(['pip', 'install', '--upgrade', package_arg]) |
+ |
+ |
+def python(*args): |
+ pypath = [os.path.join(DIR_ENV, 'bin', 'python')] |
+ check_call(pypath + list(args)) |
+ |
+ |
+try: |
+ # Remove potentially pre-existing tmp_dir |
+ shutil.rmtree(DIR_TMP, True) |
+ # Start out clean |
+ os.makedirs(DIR_TMP) |
+ |
+ print 'Downloading virtualenv %s' % VERSION_VIRTUALENV |
+ virtualenv_file = download(URL_VIRTUALENV + VERSION_VIRTUALENV, |
+ os.path.join(DIR_TMP, 'virtualenv.zip')) |
+ virtualenv_zip = zipfile.ZipFile(virtualenv_file) |
+ virtualenv_zip.extractall(DIR_TMP) |
+ virtualenv_zip.close() |
+ |
+ print 'Creating new virtual environment' |
+ virtualenv_script = os.path.join(DIR_TMP, |
+ 'virtualenv-%s' % VERSION_VIRTUALENV, |
+ 'virtualenv.py') |
+ check_call(['python', virtualenv_script, DIR_ENV]) |
+ |
+ print 'Activating virtual environment' |
+ # for more info see: |
+ # http://www.virtualenv.org/en/latest/#using-virtualenv-without-bin-python |
+ if sys.platform == 'win32': |
+ activate_this_file = os.path.join(DIR_ENV, 'Scripts', |
+ 'activate_this.py') |
+ else: |
+ activate_this_file = os.path.join(DIR_ENV, 'bin', |
+ 'activate_this.py') |
+ |
+ if not os.path.isfile(activate_this_file): |
+ # create venv |
+ check_call(['virtualenv', '--no-site-packages', DIR_ENV]) |
+ |
+ execfile(activate_this_file, dict(__file__=activate_this_file)) |
+ print "Virtual environment activated successfully." |
+ |
+except: |
+ print "Could not activate virtual environment." |
+ print "Exiting." |
+ sys.exit(1) |
+ |
+ |
+# Install dependent packages |
+check_call(['pip', 'install', '--upgrade', '-r', REQ_TXT]) |
+ |
+# Install mozdownload |
+python('setup.py', 'develop') |
+ |
+# run the tests |
+python(os.path.join('tests', 'test.py')) |
+ |
+# Clean up |
+shutil.rmtree(DIR_TMP) |