~0x44/nova/bug838466

« back to all changes in this revision

Viewing changes to run_tests.sh

  • Committer: Eric Day
  • Date: 2010-10-21 18:49:51 UTC
  • mto: This revision was merged to the branch mainline in revision 377.
  • Revision ID: eday@oddments.org-20101021184951-x0vs3s8y7mc0aeyy
PEP8 and pylint cleanup. There should be no functional changes here, just style changes to get violations down.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/bin/bash
2
2
 
3
 
set -eu
4
 
 
5
3
function usage {
6
4
  echo "Usage: $0 [OPTION]..."
7
5
  echo "Run Nova's test suite(s)"
8
6
  echo ""
9
7
  echo "  -V, --virtual-env        Always use virtualenv.  Install automatically if not present"
10
8
  echo "  -N, --no-virtual-env     Don't use virtualenv.  Run tests in local environment"
11
 
  echo "  -r, --recreate-db        Recreate the test database (deprecated, as this is now the default)."
12
 
  echo "  -n, --no-recreate-db     Don't recreate the test database."
13
 
  echo "  -x, --stop               Stop running tests after the first error or failure."
14
9
  echo "  -f, --force              Force a clean re-build of the virtual environment. Useful when dependencies have been added."
15
 
  echo "  -p, --pep8               Just run pep8"
16
 
  echo "  -c, --coverage           Generate coverage report"
17
10
  echo "  -h, --help               Print this usage message"
18
 
  echo "  --hide-elapsed           Don't print the elapsed time for each test along with slow test list"
19
11
  echo ""
20
12
  echo "Note: with no options specified, the script will try to run the tests in a virtual environment,"
21
13
  echo "      If no virtualenv is found, the script will ask if you would like to create one.  If you "
26
18
function process_option {
27
19
  case "$1" in
28
20
    -h|--help) usage;;
29
 
    -V|--virtual-env) always_venv=1; never_venv=0;;
30
 
    -N|--no-virtual-env) always_venv=0; never_venv=1;;
31
 
    -r|--recreate-db) recreate_db=1;;
32
 
    -n|--no-recreate-db) recreate_db=0;;
33
 
    -f|--force) force=1;;
34
 
    -p|--pep8) just_pep8=1;;
35
 
    -c|--coverage) coverage=1;;
36
 
    -*) noseopts="$noseopts $1";;
37
 
    *) noseargs="$noseargs $1"
 
21
    -V|--virtual-env) let always_venv=1; let never_venv=0;;
 
22
    -N|--no-virtual-env) let always_venv=0; let never_venv=1;;
 
23
    -f|--force) let force=1;;
38
24
  esac
39
25
}
40
26
 
43
29
always_venv=0
44
30
never_venv=0
45
31
force=0
46
 
noseargs=
47
 
noseopts=
48
 
wrapper=""
49
 
just_pep8=0
50
 
coverage=0
51
 
recreate_db=1
52
32
 
53
33
for arg in "$@"; do
54
34
  process_option $arg
55
35
done
56
36
 
57
 
# If enabled, tell nose to collect coverage data 
58
 
if [ $coverage -eq 1 ]; then
59
 
    noseopts="$noseopts --with-coverage --cover-package=nova"
60
 
fi
61
 
 
62
 
function run_tests {
 
37
if [ $never_venv -eq 1 ]; then
63
38
  # Just run the test suites in current environment
64
 
  ${wrapper} $NOSETESTS 2> run_tests.log
65
 
  # If we get some short import error right away, print the error log directly
66
 
  RESULT=$?
67
 
  if [ "$RESULT" -ne "0" ];
68
 
  then
69
 
    ERRSIZE=`wc -l run_tests.log | awk '{print \$1}'`
70
 
    if [ "$ERRSIZE" -lt "40" ];
71
 
    then
72
 
        cat run_tests.log
73
 
    fi
74
 
  fi
75
 
  return $RESULT
76
 
}
77
 
 
78
 
function run_pep8 {
79
 
  echo "Running pep8 ..."
80
 
  # Opt-out files from pep8
81
 
  ignore_scripts="*.sh:*nova-debug:*clean-vlans"
82
 
  ignore_files="*eventlet-patch:*pip-requires"
83
 
  ignore_dirs="*ajaxterm*"
84
 
  GLOBIGNORE="$ignore_scripts:$ignore_files:$ignore_dirs"
85
 
  srcfiles=`find bin -type f ! -name "nova.conf*"`
86
 
  srcfiles+=" `find tools/*`"
87
 
  srcfiles+=" nova setup.py plugins/xenserver/xenapi/etc/xapi.d/plugins/glance"
88
 
  # Just run PEP8 in current environment
89
 
  ${wrapper} pep8 --repeat --show-pep8 --show-source \
90
 
  --exclude=vcsversion.py ${srcfiles}
91
 
}
92
 
 
93
 
NOSETESTS="python run_tests.py $noseopts $noseargs"
94
 
 
95
 
if [ $never_venv -eq 0 ]
96
 
then
97
 
  # Remove the virtual environment if --force used
98
 
  if [ $force -eq 1 ]; then
99
 
    echo "Cleaning virtualenv..."
100
 
    rm -rf ${venv}
101
 
  fi
102
 
  if [ -e ${venv} ]; then
103
 
    wrapper="${with_venv}"
 
39
  python run_tests.py
 
40
  exit
 
41
fi
 
42
 
 
43
# Remove the virtual environment if --force used
 
44
if [ $force -eq 1 ]; then
 
45
  echo "Cleaning virtualenv..."
 
46
  rm -rf ${venv}
 
47
fi
 
48
 
 
49
if [ -e ${venv} ]; then
 
50
  ${with_venv} python run_tests.py $@
 
51
else  
 
52
  if [ $always_venv -eq 1 ]; then
 
53
    # Automatically install the virtualenv
 
54
    python tools/install_venv.py
104
55
  else
105
 
    if [ $always_venv -eq 1 ]; then
106
 
      # Automatically install the virtualenv
 
56
    echo -e "No virtual environment found...create one? (Y/n) \c"
 
57
    read use_ve
 
58
    if [ "x$use_ve" = "xY" -o "x$use_ve" = "x" -o "x$use_ve" = "xy" ]; then
 
59
      # Install the virtualenv and run the test suite in it
107
60
      python tools/install_venv.py
108
 
      wrapper="${with_venv}"
109
61
    else
110
 
      echo -e "No virtual environment found...create one? (Y/n) \c"
111
 
      read use_ve
112
 
      if [ "x$use_ve" = "xY" -o "x$use_ve" = "x" -o "x$use_ve" = "xy" ]; then
113
 
        # Install the virtualenv and run the test suite in it
114
 
        python tools/install_venv.py
115
 
        wrapper=${with_venv}
116
 
      fi
 
62
      python run_tests.py
 
63
      exit
117
64
    fi
118
65
  fi
119
 
fi
120
 
 
121
 
# Delete old coverage data from previous runs
122
 
if [ $coverage -eq 1 ]; then
123
 
    ${wrapper} coverage erase
124
 
fi
125
 
 
126
 
if [ $just_pep8 -eq 1 ]; then
127
 
    run_pep8
128
 
    exit
129
 
fi
130
 
 
131
 
if [ $recreate_db -eq 1 ]; then
132
 
    rm -f tests.sqlite
133
 
fi
134
 
 
135
 
run_tests
136
 
 
137
 
# NOTE(sirp): we only want to run pep8 when we're running the full-test suite,
138
 
# not when we're running tests individually. To handle this, we need to
139
 
# distinguish between options (noseopts), which begin with a '-', and
140
 
# arguments (noseargs).
141
 
if [ -z "$noseargs" ]; then
142
 
  run_pep8
143
 
fi
144
 
 
145
 
if [ $coverage -eq 1 ]; then
146
 
    echo "Generating coverage report in covhtml/"
147
 
    ${wrapper} coverage html -d covhtml -i
 
66
  ${with_venv} python run_tests.py $@
148
67
fi