summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Cresswell <robert.cresswell@outlook.com>2016-11-19 08:27:57 +0000
committerRob Cresswell <robert.cresswell@outlook.com>2017-08-15 10:38:19 +0000
commit6529cd1eb8aef16b7ded96779c684644ed5a9fe0 (patch)
tree8b09c56779dfd39d6d5a7f181892b31a5b98d250
parentb57226a4b50db0e129971a7074b1b6dc4499455d (diff)
downloadhorizon-6529cd1eb8aef16b7ded96779c684644ed5a9fe0.tar.gz
Remove run_tests.sh
Change-Id: I9892b6c07c6392e534aad0391722727c7ca3e879
-rw-r--r--.gitignore1
-rwxr-xr-xrun_tests.sh595
-rw-r--r--tools/install_venv.py73
-rw-r--r--tools/install_venv_common.py175
-rwxr-xr-xtools/pseudo.py83
-rwxr-xr-xtools/with_venv.sh13
6 files changed, 0 insertions, 940 deletions
diff --git a/.gitignore b/.gitignore
index e418001ca..9fcb838f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,7 +34,6 @@ openstack_dashboard/wsgi/horizon.wsgi
doc/build/
/static/
integration_tests_screenshots/
-.venv
.tox
node_modules
npm-debug.log
diff --git a/run_tests.sh b/run_tests.sh
deleted file mode 100755
index 15e3a9a8a..000000000
--- a/run_tests.sh
+++ /dev/null
@@ -1,595 +0,0 @@
-#!/bin/bash
-
-echo ""
-echo "The run_tests script is deprecated and will be removed in the "
-echo "Queens Release Cycle (13.0), in favor of tox."
-echo ""
-
-set -o errexit
-
-function usage {
- echo "Usage: $0 [OPTION]..."
- echo "Run Horizon's test suite(s)"
- echo ""
- echo " -V, --virtual-env Always use virtualenv. Install automatically"
- echo " if not present"
- echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local"
- echo " environment"
- echo " -c, --coverage Generate reports using Coverage"
- echo " -f, --force Force a clean re-build of the virtual"
- echo " environment. Useful when dependencies have"
- echo " been added."
- echo " -m, --manage Run a Django management command."
- echo " --makemessages Create/Update English translation files."
- echo " --compilemessages Compile all translation files."
- echo " --check-only Do not update translation files (--makemessages only)."
- echo " --pseudo Pseudo translate a language."
- echo " -p, --pep8 Just run pep8"
- echo " -8, --pep8-changed [<basecommit>]"
- echo " Just run PEP8 and HACKING compliance check"
- echo " on files changed since HEAD~1 (or <basecommit>)"
- echo " -P, --no-pep8 Don't run pep8 by default"
- echo " -t, --tabs Check for tab characters in files."
- echo " -y, --pylint Just run pylint"
- echo " -e, --eslint Just run eslint"
- echo " -k, --karma Just run karma"
- echo " -q, --quiet Run non-interactively. (Relatively) quiet."
- echo " Implies -V if -N is not set."
- echo " --only-selenium Run only the Selenium unit tests"
- echo " --with-selenium Run unit tests including Selenium tests"
- echo " --selenium-headless Run Selenium tests headless"
- echo " --selenium-phantomjs Run Selenium tests using phantomjs (headless)"
- echo " --integration Run the integration tests (requires a running "
- echo " OpenStack environment)"
- echo " --runserver Run the Django development server for"
- echo " openstack_dashboard in the virtual"
- echo " environment."
- echo " --docs Just build the documentation"
- echo " --backup-environment Make a backup of the environment on exit"
- echo " --restore-environment Restore the environment before running"
- echo " --destroy-environment Destroy the environment and exit"
- echo " -h, --help Print this usage message"
- echo ""
- echo "Note: with no options specified, the script will try to run the tests in"
- echo " a virtual environment, If no virtualenv is found, the script will ask"
- echo " if you would like to create one. If you prefer to run tests NOT in a"
- echo " virtual environment, simply pass the -N option."
- exit
-}
-
-# DEFAULTS FOR RUN_TESTS.SH
-#
-root=`pwd -P`
-venv=$root/.venv
-with_venv=tools/with_venv.sh
-included_dirs="openstack_dashboard horizon"
-
-always_venv=0
-backup_env=0
-command_wrapper=""
-destroy=0
-force=0
-just_pep8=0
-just_pep8_changed=0
-no_pep8=0
-just_pylint=0
-just_docs=0
-just_tabs=0
-just_eslint=0
-just_karma=0
-never_venv=0
-quiet=0
-restore_env=0
-runserver=0
-only_selenium=0
-with_selenium=0
-selenium_headless=0
-selenium_phantomjs=0
-integration=0
-testopts=""
-testargs=""
-with_coverage=0
-makemessages=0
-compilemessages=0
-check_only=0
-pseudo=0
-manage=0
-
-# NOTE(tonyb): the release team will automatically update tox.ini to point at
-# the correct requirements branch when creating stable/* from master. So go to
-# a little effort to get the deault from there to avoid dift and having to
-# update this when branching
-_default_uc=$(sed -n 's/^.*{env:UPPER_CONSTRAINTS_FILE\:\([^}]*\)}.*$/\1/p' \
- tox.ini | head -n1)
-
-# Jenkins sets a "JOB_NAME" variable, if it's not set, we'll make it "default"
-[ "$JOB_NAME" ] || JOB_NAME="default"
-
-function process_option {
- # If running manage command, treat the rest of options as arguments.
- if [ $manage -eq 1 ]; then
- testargs="$testargs $1"
- return 0
- fi
-
- case "$1" in
- -h|--help) usage;;
- -V|--virtual-env) always_venv=1; never_venv=0;;
- -N|--no-virtual-env) always_venv=0; never_venv=1;;
- -p|--pep8) just_pep8=1;;
- -8|--pep8-changed) just_pep8_changed=1;;
- -P|--no-pep8) no_pep8=1;;
- -y|--pylint) just_pylint=1;;
- -e|--eslint) just_eslint=1;;
- -k|--karma) just_karma=1;;
- -f|--force) force=1;;
- -t|--tabs) just_tabs=1;;
- -q|--quiet) quiet=1;;
- -c|--coverage) with_coverage=1;;
- -m|--manage) manage=1;;
- --makemessages) makemessages=1;;
- --compilemessages) compilemessages=1;;
- --check-only) check_only=1;;
- --pseudo) pseudo=1;;
- --only-selenium) only_selenium=1;;
- --with-selenium) with_selenium=1;;
- --selenium-headless) selenium_headless=1;;
- --selenium-phantomjs) selenium_phantomjs=1;;
- --integration) integration=1;;
- --docs) just_docs=1;;
- --runserver) runserver=1;;
- --backup-environment) backup_env=1;;
- --restore-environment) restore_env=1;;
- --destroy-environment) destroy=1;;
- -*) testopts="$testopts $1";;
- *) testargs="$testargs $1"
- esac
-}
-
-function run_management_command {
- ${command_wrapper} python $root/manage.py $testopts $testargs
-}
-
-function run_server {
- echo "Starting Django development server..."
- ${command_wrapper} python $root/manage.py runserver $testopts $testargs
- echo "Server stopped."
-}
-
-function run_pylint {
- echo "Running pylint ..."
- PYTHONPATH=$root ${command_wrapper} pylint --rcfile=.pylintrc -f parseable $included_dirs > pylint.txt || true
- CODE=$?
- grep Global -A2 pylint.txt
- if [ $CODE -lt 32 ]; then
- echo "Completed successfully."
- exit 0
- else
- echo "Completed with problems."
- exit $CODE
- fi
-}
-
-function run_eslint {
- echo "Running eslint ..."
- if [ "`which npm`" == '' ] ; then
- echo "npm is not present; please install, e.g. sudo apt-get install npm"
- else
- npm install
- npm run lint
- fi
-}
-
-function run_karma {
- echo "Running karma ..."
- npm install
- npm run test
-}
-
-function warn_on_flake8_without_venv {
- set +o errexit
- ${command_wrapper} python -c "import hacking" 2>/dev/null
- no_hacking=$?
- set -o errexit
- if [ $never_venv -eq 1 -a $no_hacking -eq 1 ]; then
- echo "**WARNING**:" >&2
- echo "OpenStack hacking is not installed on your host. Its detection will be missed." >&2
- echo "Please install or use virtual env if you need OpenStack hacking detection." >&2
- fi
-}
-
-function run_pep8 {
- echo "Running flake8 ..."
- warn_on_flake8_without_venv
- DJANGO_SETTINGS_MODULE=openstack_dashboard.test.settings ${command_wrapper} flake8
-}
-
-function run_pep8_changed {
- # NOTE(gilliard) We want use flake8 to check the entirety of every file that has
- # a change in it. Unfortunately the --filenames argument to flake8 only accepts
- # file *names* and there are no files named (eg) "nova/compute/manager.py". The
- # --diff argument behaves surprisingly as well, because although you feed it a
- # diff, it actually checks the file on disk anyway.
- local base_commit=${testargs:-HEAD~1}
- files=$(git diff --name-only $base_commit | tr '\n' ' ')
- echo "Running flake8 on ${files}"
- warn_on_flake8_without_venv
- diff -u --from-file /dev/null ${files} | DJANGO_SETTINGS_MODULE=openstack_dashboard.test.settings ${command_wrapper} flake8 --diff
- exit
-}
-
-function run_sphinx {
- echo "Building sphinx..."
- DJANGO_SETTINGS_MODULE=openstack_dashboard.test.settings ${command_wrapper} python setup.py build_sphinx
- echo "Build complete."
-}
-
-function tab_check {
- TAB_VIOLATIONS=`find $included_dirs -type f -regex ".*\.\(css\|js\|py\|html\)" -print0 | xargs -0 awk '/\t/' | wc -l`
- if [ $TAB_VIOLATIONS -gt 0 ]; then
- echo "TABS! $TAB_VIOLATIONS of them! Oh no!"
- HORIZON_FILES=`find $included_dirs -type f -regex ".*\.\(css\|js\|py|\html\)"`
- for TABBED_FILE in $HORIZON_FILES
- do
- TAB_COUNT=`awk '/\t/' $TABBED_FILE | wc -l`
- if [ $TAB_COUNT -gt 0 ]; then
- echo "$TABBED_FILE: $TAB_COUNT"
- fi
- done
- fi
- return $TAB_VIOLATIONS;
-}
-
-function destroy_venv {
- echo "Cleaning environment..."
- echo "Removing virtualenv..."
- rm -rf $venv
- echo "Virtualenv removed."
-}
-
-function sanity_check {
- # Anything that should be determined prior to running the tests, server, etc.
- # Don't sanity-check anything environment-related in -N flag is set
- if [ $never_venv -eq 0 ]; then
- if [ ! -e ${venv} ]; then
- echo "Virtualenv not found at $venv. Did install_venv.py succeed?"
- exit 1
- fi
- fi
- # Remove .pyc files. This is sanity checking because they can linger
- # after old files are deleted.
- find . -name "*.pyc" -exec rm -rf {} \;
-}
-
-function backup_environment {
- if [ $backup_env -eq 1 ]; then
- echo "Backing up environment \"$JOB_NAME\"..."
- if [ ! -e ${venv} ]; then
- echo "Environment not installed. Cannot back up."
- return 0
- fi
- if [ -d /tmp/.horizon_environment/$JOB_NAME ]; then
- mv /tmp/.horizon_environment/$JOB_NAME /tmp/.horizon_environment/$JOB_NAME.old
- rm -rf /tmp/.horizon_environment/$JOB_NAME
- fi
- mkdir -p /tmp/.horizon_environment/$JOB_NAME
- cp -r $venv /tmp/.horizon_environment/$JOB_NAME/
- # Remove the backup now that we've completed successfully
- rm -rf /tmp/.horizon_environment/$JOB_NAME.old
- echo "Backup completed"
- fi
-}
-
-function restore_environment {
- if [ $restore_env -eq 1 ]; then
- echo "Restoring environment from backup..."
- if [ ! -d /tmp/.horizon_environment/$JOB_NAME ]; then
- echo "No backup to restore from."
- return 0
- fi
-
- cp -r /tmp/.horizon_environment/$JOB_NAME/.venv ./ || true
- echo "Environment restored successfully."
- fi
-}
-
-function install_venv {
- # Install with install_venv.py
- export UPPER_CONSTRAINTS_FILE=${UPPER_CONSTRAINTS_FILE:-$_default_uc}
- export PIP_DOWNLOAD_CACHE=${PIP_DOWNLOAD_CACHE-/tmp/.pip_download_cache}
- export PIP_USE_MIRRORS=true
- if [ $quiet -eq 1 ]; then
- export PIP_NO_INPUT=true
- fi
- echo "Fetching new src packages..."
- rm -rf $venv/src
- python tools/install_venv.py
- command_wrapper="$root/${with_venv}"
- # Make sure it worked and record the environment version
- sanity_check
- chmod -R 754 $venv
-}
-
-function run_tests {
- sanity_check
-
- if [ $with_selenium -eq 1 ]; then
- export WITH_SELENIUM=1
- elif [ $only_selenium -eq 1 ]; then
- export WITH_SELENIUM=1
- export SKIP_UNITTESTS=1
- fi
-
- if [ $with_selenium -eq 0 -a $integration -eq 0 ]; then
- testopts="$testopts --exclude-dir=openstack_dashboard/test/integration_tests"
- fi
-
- if [ $selenium_headless -eq 1 ]; then
- export SELENIUM_HEADLESS=1
- fi
-
- if [ $selenium_phantomjs -eq 1 ]; then
- export SELENIUM_PHANTOMJS=1
- fi
-
- if [ -z "$testargs" ]; then
- run_tests_all
- else
- run_tests_subset
- fi
-}
-
-function run_tests_subset {
- project=`echo $testargs | awk -F. '{print $1}'`
- ${command_wrapper} python $root/manage.py test --settings=$project.test.settings $testopts $testargs
-}
-
-function run_tests_all {
- echo "Running Horizon application tests"
- export NOSE_XUNIT_FILE=horizon/nosetests.xml
- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
- export NOSE_HTML_OUT_FILE='horizon_nose_results.html'
- fi
- if [ $with_coverage -eq 1 ]; then
- ${command_wrapper} python -m coverage.__main__ erase
- coverage_run="python -m coverage.__main__ run -p"
- fi
- ${command_wrapper} ${coverage_run} $root/manage.py test horizon --settings=horizon.test.settings $testopts
- # get results of the Horizon tests
- HORIZON_RESULT=$?
-
- echo "Running openstack_dashboard tests"
- export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
- export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
- fi
- ${command_wrapper} ${coverage_run} $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
- # get results of the openstack_dashboard tests
- DASHBOARD_RESULT=$?
-
- if [ $with_coverage -eq 1 ]; then
- echo "Generating coverage reports"
- ${command_wrapper} python -m coverage.__main__ combine
- ${command_wrapper} python -m coverage.__main__ xml -i --include="horizon/*,openstack_dashboard/*" --omit='/usr*,setup.py,*egg*,.venv/*'
- ${command_wrapper} python -m coverage.__main__ html -i --include="horizon/*,openstack_dashboard/*" --omit='/usr*,setup.py,*egg*,.venv/*' -d reports
- fi
- # Remove the leftover coverage files from the -p flag earlier.
- rm -f .coverage.*
-
- PEP8_RESULT=0
- if [ $no_pep8 -eq 0 ] && [ $only_selenium -eq 0 ]; then
- run_pep8
- PEP8_RESULT=$?
- fi
-
- TEST_RESULT=$(($HORIZON_RESULT || $DASHBOARD_RESULT || $PEP8_RESULT))
- if [ $TEST_RESULT -eq 0 ]; then
- echo "Tests completed successfully."
- else
- echo "Tests failed."
- fi
- exit $TEST_RESULT
-}
-
-function run_integration_tests {
- export INTEGRATION_TESTS=1
-
- if [ $selenium_headless -eq 1 ]; then
- export SELENIUM_HEADLESS=1
- fi
-
- if [ $selenium_phantomjs -eq 1 ]; then
- export SELENIUM_PHANTOMJS=1
- fi
-
- echo "Running Horizon integration tests..."
- if [ -z "$testargs" ]; then
- ${command_wrapper} nosetests openstack_dashboard/test/integration_tests/tests
- else
- ${command_wrapper} nosetests $testargs
- fi
- exit 0
-}
-
-function babel_extract {
- local MODULE_NAME=$1
- local DOMAIN=$2
- local KEYWORDS="-k gettext_noop -k gettext_lazy -k ngettext_lazy:1,2"
- KEYWORDS+=" -k ugettext_noop -k ugettext_lazy -k ungettext_lazy:1,2"
- KEYWORDS+=" -k npgettext:1c,2,3 -k pgettext_lazy:1c,2 -k npgettext_lazy:1c,2,3"
-
- ${command_wrapper} pybabel extract -F babel-${DOMAIN}.cfg \
- --add-comments Translators: -o $MODULE_NAME/locale/${DOMAIN}.pot \
- $KEYWORDS $MODULE_NAME
-}
-
-function run_makemessages {
-
- echo -n "horizon: "
- babel_extract horizon django
- HORIZON_PY_RESULT=$?
-
- echo -n "horizon javascript: "
- babel_extract horizon djangojs
- HORIZON_JS_RESULT=$?
-
- echo -n "openstack_dashboard: "
- babel_extract openstack_dashboard django
- DASHBOARD_RESULT=$?
-
- echo -n "openstack_dashboard javascript: "
- babel_extract openstack_dashboard djangojs
- DASHBOARD_JS_RESULT=$?
-
- if [ $check_only -eq 1 ]; then
- rm horizon/locale/django*.pot
- rm openstack_dashboard/locale/django*.pot
- fi
-
- exit $(($HORIZON_PY_RESULT || $HORIZON_JS_RESULT || $DASHBOARD_RESULT || $DASHBOARD_JS_RESULT))
-}
-
-function run_compilemessages {
- cd horizon
- ${command_wrapper} $root/manage.py compilemessages
- HORIZON_PY_RESULT=$?
- cd ../openstack_dashboard
- ${command_wrapper} $root/manage.py compilemessages
- DASHBOARD_RESULT=$?
- exit $(($HORIZON_PY_RESULT || $DASHBOARD_RESULT))
-}
-
-function run_pseudo {
- for lang in $testargs
- # Use English pot file as the source file/pot file just like real Horizon translations
- do
- ${command_wrapper} $root/tools/pseudo.py openstack_dashboard/locale/django.pot openstack_dashboard/locale/$lang/LC_MESSAGES/django.po $lang
- ${command_wrapper} $root/tools/pseudo.py openstack_dashboard/locale/djangojs.pot openstack_dashboard/locale/$lang/LC_MESSAGES/djangojs.po $lang
- ${command_wrapper} $root/tools/pseudo.py horizon/locale/django.pot horizon/locale/$lang/LC_MESSAGES/django.po $lang
- ${command_wrapper} $root/tools/pseudo.py horizon/locale/djangojs.pot horizon/locale/$lang/LC_MESSAGES/djangojs.po $lang
- done
- exit $?
-}
-
-
-# ---------PREPARE THE ENVIRONMENT------------ #
-
-# PROCESS ARGUMENTS, OVERRIDE DEFAULTS
-for arg in "$@"; do
- process_option $arg
-done
-
-if [ $quiet -eq 1 ] && [ $never_venv -eq 0 ] && [ $always_venv -eq 0 ]
-then
- always_venv=1
-fi
-
-# If destroy is set, just blow it away and exit.
-if [ $destroy -eq 1 ]; then
- destroy_venv
- exit 0
-fi
-
-# Ignore all of this if the -N flag was set
-if [ $never_venv -eq 0 ]; then
-
- # Restore previous environment if desired
- if [ $restore_env -eq 1 ]; then
- restore_environment
- fi
-
- # Remove the virtual environment if --force used
- if [ $force -eq 1 ]; then
- destroy_venv
- fi
-
- # Create or update venv.
- install_venv
-
- # Create a backup of the up-to-date environment if desired
- if [ $backup_env -eq 1 ]; then
- backup_environment
- fi
-fi
-
-# ---------EXERCISE THE CODE------------ #
-
-# Run management commands
-if [ $manage -eq 1 ]; then
- run_management_command
- exit $?
-fi
-
-# Build the docs
-if [ $just_docs -eq 1 ]; then
- run_sphinx
- exit $?
-fi
-
-# Update translation files
-if [ $makemessages -eq 1 ]; then
- run_makemessages
- exit $?
-fi
-
-# Compile translation files
-if [ $compilemessages -eq 1 ]; then
- run_compilemessages
- exit $?
-fi
-
-# Generate Pseudo translation
-if [ $pseudo -eq 1 ]; then
- run_pseudo
- exit $?
-fi
-
-# PEP8
-if [ $just_pep8 -eq 1 ]; then
- run_pep8
- exit $?
-fi
-
-if [ $just_pep8_changed -eq 1 ]; then
- run_pep8_changed
- exit $?
-fi
-
-# Pylint
-if [ $just_pylint -eq 1 ]; then
- run_pylint
- exit $?
-fi
-
-# ESLint
-if [ $just_eslint -eq 1 ]; then
- run_eslint
- exit $?
-fi
-
-# Karma
-if [ $just_karma -eq 1 ]; then
- run_karma
- exit $?
-fi
-
-# Tab checker
-if [ $just_tabs -eq 1 ]; then
- tab_check
- exit $?
-fi
-
-# Integration tests
-if [ $integration -eq 1 ]; then
- run_integration_tests
- exit $?
-fi
-
-# Django development server
-if [ $runserver -eq 1 ]; then
- run_server
- exit $?
-fi
-
-# Full test suite
-run_tests || exit
diff --git a/tools/install_venv.py b/tools/install_venv.py
deleted file mode 100644
index bdfad2953..000000000
--- a/tools/install_venv.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2010 United States Government as represented by the
-# Administrator of the National Aeronautics and Space Administration.
-# All Rights Reserved.
-#
-# Copyright 2010 OpenStack Foundation
-# Copyright 2013 IBM Corp.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-import os
-import sys
-
-import install_venv_common as install_venv
-
-
-def print_help(venv, root):
- help = """
- OpenStack development environment setup is complete.
-
- OpenStack development uses virtualenv to track and manage Python
- dependencies while in development and testing.
-
- To activate the OpenStack virtualenv for the extent of your current shell
- session you can run:
-
- $ source %s/bin/activate
-
- Or, if you prefer, you can run commands in the virtualenv on a case by case
- basis by running:
-
- $ %s/tools/with_venv.sh <your command>
-
- Also, make test will automatically use the virtualenv.
- """
- print(help % (venv, root))
-
-
-def main(argv):
- root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-
- if os.environ.get('tools_path'):
- root = os.environ['tools_path']
- venv = os.path.join(root, '.venv')
- if os.environ.get('venv'):
- venv = os.environ['venv']
-
- pip_requires = os.path.join(root, 'requirements.txt')
- test_requires = os.path.join(root, 'test-requirements.txt')
- py_version = "python%s.%s" % (sys.version_info[0], sys.version_info[1])
- project = 'OpenStack'
- constraints = os.environ.get('UPPER_CONSTRAINTS_FILE')
- install = install_venv.InstallVenv(root, venv, pip_requires, test_requires,
- py_version, project,
- constraints=constraints)
- options = install.parse_args(argv)
- install.check_python_version()
- install.check_dependencies()
- install.create_virtualenv(no_site_packages=options.no_site_packages)
- install.install_dependencies()
- print_help(venv, root)
-
-if __name__ == '__main__':
- main(sys.argv)
diff --git a/tools/install_venv_common.py b/tools/install_venv_common.py
deleted file mode 100644
index 3a2e33683..000000000
--- a/tools/install_venv_common.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright 2013 OpenStack Foundation
-# Copyright 2013 IBM Corp.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-"""Provides methods needed by installation script for OpenStack development
-virtual environments.
-
-Since this script is used to bootstrap a virtualenv from the system's Python
-environment, it should be kept strictly compatible with Python 2.6.
-
-Synced in from openstack-common
-"""
-
-from __future__ import print_function
-
-import optparse
-import os
-import subprocess
-import sys
-
-
-class InstallVenv(object):
-
- def __init__(self, root, venv, requirements,
- test_requirements, py_version,
- project, constraints=None):
- self.root = root
- self.venv = venv
- self.constraints = constraints
- self.requirements = requirements
- self.test_requirements = test_requirements
- self.py_version = py_version
- self.project = project
-
- def die(self, message, *args):
- print(message % args, file=sys.stderr)
- sys.exit(1)
-
- def check_python_version(self):
- if sys.version_info < (2, 6):
- self.die("Need Python Version >= 2.6")
-
- def run_command_with_code(self, cmd, redirect_output=True,
- check_exit_code=True):
- """Runs a command in an out-of-process shell.
-
- Returns the output of that command. Working directory is self.root.
- """
- if redirect_output:
- stdout = subprocess.PIPE
- else:
- stdout = None
-
- proc = subprocess.Popen(cmd, cwd=self.root, stdout=stdout)
- output = proc.communicate()[0]
- if check_exit_code and proc.returncode != 0:
- self.die('Command "%s" failed.\n%s', ' '.join(cmd), output)
- return (output, proc.returncode)
-
- def run_command(self, cmd, redirect_output=True, check_exit_code=True):
- return self.run_command_with_code(cmd, redirect_output,
- check_exit_code)[0]
-
- def get_distro(self):
- if (os.path.exists('/etc/fedora-release') or
- os.path.exists('/etc/redhat-release')):
- return Fedora(
- self.root, self.venv, self.requirements,
- self.test_requirements, self.py_version, self.project)
- else:
- return Distro(
- self.root, self.venv, self.requirements,
- self.test_requirements, self.py_version, self.project)
-
- def check_dependencies(self):
- self.get_distro().install_virtualenv()
-
- def create_virtualenv(self, no_site_packages=True):
- """Creates the virtual environment and installs PIP.
-
- Creates the virtual environment and installs PIP only into the
- virtual environment.
- """
- if not os.path.isdir(self.venv):
- print('Creating venv...', end=' ')
- if no_site_packages:
- self.run_command(['virtualenv', '-q', '--no-site-packages',
- self.venv])
- else:
- self.run_command(['virtualenv', '-q', self.venv])
- print('done.')
- else:
- print("venv already exists...")
- pass
-
- def pip_install(self, *args):
- cmd = ['tools/with_venv.sh', 'pip', 'install', '--upgrade']
- if self.constraints:
- cmd += ['-c', self.constraints]
- self.run_command(cmd + list(args), redirect_output=False)
-
- def install_dependencies(self):
- print('Installing dependencies with pip (this can take a while)...')
-
- # First things first, make sure our venv has the latest pip and
- # setuptools and pbr
- self.pip_install('pip>=7.1.0')
- self.pip_install('setuptools')
- self.pip_install('wheel')
- self.pip_install('pbr')
-
- self.pip_install('-r', self.requirements, '-r', self.test_requirements)
-
- def parse_args(self, argv):
- """Parses command-line arguments."""
- parser = optparse.OptionParser()
- parser.add_option('-n', '--no-site-packages',
- action='store_true',
- help="Do not inherit packages from global Python "
- "install")
- return parser.parse_args(argv[1:])[0]
-
-
-class Distro(InstallVenv):
-
- def check_cmd(self, cmd):
- return bool(self.run_command(['which', cmd],
- check_exit_code=False).strip())
-
- def install_virtualenv(self):
- if self.check_cmd('virtualenv'):
- return
-
- if self.check_cmd('easy_install'):
- print('Installing virtualenv via easy_install...', end=' ')
- if self.run_command(['easy_install', 'virtualenv']):
- print('Succeeded')
- return
- else:
- print('Failed')
-
- self.die('ERROR: virtualenv not found.\n\n%s development'
- ' requires virtualenv, please install it using your'
- ' favorite package management tool' % self.project)
-
-
-class Fedora(Distro):
- """This covers all Fedora-based distributions.
-
- Includes: Fedora, RHEL, CentOS, Scientific Linux
- """
-
- def check_pkg(self, pkg):
- return self.run_command_with_code(['rpm', '-q', pkg],
- check_exit_code=False)[1] == 0
-
- def install_virtualenv(self):
- if self.check_cmd('virtualenv'):
- return
-
- if not self.check_pkg('python-virtualenv'):
- self.die("Please install 'python-virtualenv'.")
-
- super(Fedora, self).install_virtualenv()
diff --git a/tools/pseudo.py b/tools/pseudo.py
deleted file mode 100755
index 4a5ef1a0d..000000000
--- a/tools/pseudo.py
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/env python
-# coding: utf-8
-
-# Copyright 2015 IBM Corp.
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-import argparse
-
-import babel.messages.catalog as catalog
-import babel.messages.pofile as pofile
-
-# NOTE: This implementation has been superseded by the pseudo_translate
-# management command, and will be removed in Queens (13.0) when run_tests.sh
-# is also removed.
-
-
-def translate(segment):
- prefix = u""
- # When the id starts with a newline the mo compiler enforces that
- # the translated message must also start with a newline. Make
- # sure that doesn't get broken when prepending the bracket.
- if segment.startswith('\n'):
- prefix = u"\n"
- orig_size = len(segment)
- # Add extra expansion space based on recommendation from
- # http://www-01.ibm.com/software/globalization/guidelines/a3.html
- if orig_size < 20:
- multiplier = 1
- elif orig_size < 30:
- multiplier = 0.8
- elif orig_size < 50:
- multiplier = 0.6
- elif orig_size < 70:
- multiplier = 0.4
- else:
- multiplier = 0.3
- extra_length = int(max(0, (orig_size * multiplier) - 10))
- extra_chars = "~" * extra_length
- return u"{0}[~{1}~您好яшçあ{2}]".format(prefix, segment, extra_chars)
-
-
-def main():
- # Check arguments
- parser = argparse.ArgumentParser()
- parser.add_argument('pot_filename', type=argparse.FileType('r'))
- parser.add_argument('po_filename', type=argparse.FileType('w'))
- parser.add_argument('locale')
- args = parser.parse_args()
-
- # read POT file
- pot_cat = pofile.read_po(args.pot_filename, ignore_obsolete=True)
-
- # Create the new Catalog
- new_cat = catalog.Catalog(locale=args.locale,
- last_translator="pseudo.py",
- charset="utf-8")
- num_plurals = new_cat.num_plurals
-
- # Process messages from template
- for msg in pot_cat:
- if msg.pluralizable:
- msg.string = [translate(u"{}:{}".format(i, msg.id[0]))
- for i in range(num_plurals)]
- else:
- msg.string = translate(msg.id)
- new_cat[msg.id] = msg
-
- # Write "translated" PO file
- pofile.write_po(args.po_filename, new_cat, ignore_obsolete=True)
-
-
-if __name__ == '__main__':
- main()
diff --git a/tools/with_venv.sh b/tools/with_venv.sh
deleted file mode 100755
index f4170c9a7..000000000
--- a/tools/with_venv.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-TOOLS_PATH=${TOOLS_PATH:-$(dirname $0)}
-VENV_PATH=${VENV_PATH:-${TOOLS_PATH}}
-VENV_DIR=${VENV_NAME:-/../.venv}
-TOOLS=${TOOLS_PATH}
-VENV=${VENV:-${VENV_PATH}/${VENV_DIR}}
-HORIZON_DIR=${TOOLS%/tools}
-
-# This horrible mangling of the PYTHONPATH is required to get the
-# babel-angular-gettext extractor to work. To fix this the extractor needs to
-# be packaged on pypi and added to global requirements. That work is in progress.
-export PYTHONPATH="$HORIZON_DIR"
-source ${VENV}/bin/activate && "$@"