summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrun_tests.sh121
-rw-r--r--tools/install_venv.py75
-rw-r--r--tools/install_venv_common.py172
-rwxr-xr-xtools/with_venv.sh10
4 files changed, 0 insertions, 378 deletions
diff --git a/run_tests.sh b/run_tests.sh
deleted file mode 100755
index 92f9471..0000000
--- a/run_tests.sh
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/bash
-
-BASE_DIR=`dirname $0`
-
-function usage {
- echo "Usage: $0 [OPTION]..."
- echo "Run heatclient test suite(s)"
- echo ""
- echo " -V, --virtual-env Use virtualenv. Install automatically if not present."
- echo " (Default is to run tests in local environment)"
- echo " -F, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added."
- echo " -f, --func Functional tests have been removed."
- echo " -u, --unit Run unit tests (default when nothing specified)"
- echo " -p, --pep8 Run pep8 tests"
- echo " --all Run pep8 and unit tests"
- echo " -c, --coverage Generate coverage report"
- echo " -d, --debug Run tests with testtools instead of testr. This allows you to use the debugger."
- echo " -h, --help Print this usage message"
- exit
-}
-
-# must not assign -a as an option, needed for selecting custom attributes
-no_venv=1
-function process_option {
- case "$1" in
- -V|--virtual-env) no_venv=0;;
- -F|--force) force=1;;
- -f|--func) test_func=1;;
- -u|--unit) test_unit=1;;
- -p|--pep8) test_pep8=1;;
- --all) test_unit=1; test_pep8=1;;
- -c|--coverage) coverage=1;;
- -d|--debug) debug=1;;
- -h|--help) usage;;
- *) args="$args $1"; test_unit=1;;
- esac
-}
-
-venv=.venv
-with_venv=tools/with_venv.sh
-wrapper=""
-debug=0
-
-function run_tests {
- echo 'Running tests'
-
- if [ $debug -eq 1 ]; then
- echo "Debugging..."
- if [ "$args" = "" ]; then
- # Default to running all tests if specific test is not
- # provided.
- testrargs="discover ./heatclient/tests"
- fi
- ${wrapper} python -m testtools.run $args $testrargs
-
- # Short circuit because all of the testr and coverage stuff
- # below does not make sense when running testtools.run for
- # debugging purposes.
- return $?
- fi
-
- # Just run the test suites in current environment
- if [ -n "$args" ] ; then
- args="-t $args"
- fi
- ${wrapper} python setup.py testr --slowest $args
-}
-
-function run_pep8 {
- echo "Running flake8..."
- bash -c "${wrapper} flake8"
-}
-
-# run unit tests with pep8 when no arguments are specified
-# otherwise process CLI options
-if [[ $# == 0 ]]; then
- test_pep8=1
- test_unit=1
-else
- for arg in "$@"; do
- process_option $arg
- done
-fi
-
-if [ "$no_venv" == 0 ]
-then
- # Remove the virtual environment if --force used
- if [ "$force" == 1 ]; then
- echo "Cleaning virtualenv..."
- rm -rf ${venv}
- fi
- if [ -e ${venv} ]; then
- wrapper="${with_venv}"
- else
- # Automatically install the virtualenv
- python tools/install_venv.py
- wrapper="${with_venv}"
- fi
-fi
-
-result=0
-
-# If functional or unit tests have been selected, run them
-if [ "$test_unit" == 1 ] || [ "$debug" == 1 ] ; then
- run_tests
- result=$?
-fi
-
-# Run pep8 if it was selected
-if [ "$test_pep8" == 1 ]; then
- run_pep8
-fi
-
-# Generate coverage report
-if [ "$coverage" == 1 ]; then
- echo "Generating coverage report in ./cover"
- ${wrapper} python setup.py testr --coverage --slowest
- ${wrapper} python -m coverage report --show-missing
-fi
-
-exit $result
diff --git a/tools/install_venv.py b/tools/install_venv.py
deleted file mode 100644
index 468d113..0000000
--- a/tools/install_venv.py
+++ /dev/null
@@ -1,75 +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.
-# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
-#
-# 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
-
-from six.moves import configparser
-
-import install_venv_common as install_venv
-
-
-def print_help(project, venv, root):
- help = """
- %(project)s development environment setup is complete.
-
- %(project)s development uses virtualenv to track and manage Python
- dependencies while in development and testing.
-
- To activate the %(project)s virtualenv for the extent of your current
- shell session you can run:
-
- $ source %(venv)s/bin/activate
-
- Or, if you prefer, you can run commands in the virtualenv on a case by
- case basis by running:
-
- $ %(root)s/tools/with_venv.sh <your command>
- """
- print(help % dict(project=project, venv=venv, root=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])
- setup_cfg = configparser.ConfigParser()
- setup_cfg.read('setup.cfg')
- project = setup_cfg.get('metadata', 'name')
-
- install = install_venv.InstallVenv(
- root, venv, pip_requires, test_requires, py_version, project)
- 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(project, 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 46822e3..0000000
--- a/tools/install_venv_common.py
+++ /dev/null
@@ -1,172 +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):
- self.root = root
- self.venv = venv
- 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):
- self.run_command(['tools/with_venv.sh',
- 'pip', 'install', '--upgrade'] + 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>=1.4')
- self.pip_install('setuptools')
- 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/with_venv.sh b/tools/with_venv.sh
deleted file mode 100755
index e6e44f5..0000000
--- a/tools/with_venv.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-command -v tox > /dev/null 2>&1
-if [ $? -ne 0 ]; then
- echo 'This script requires "tox" to run.'
- echo 'You can install it with "pip install tox".'
- exit 1;
-fi
-
-tox -evenv -- $@