1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
#!/bin/sh
test_dir=$(cd $(dirname $0) && pwd)
source "$test_dir/setup.sh"
setUp () {
rm -rf "$WORKON_HOME"
mkdir -p "$WORKON_HOME"
source "$test_dir/../virtualenvwrapper.sh"
rm -f "$test_dir/catch_output"
echo
}
tearDown() {
if type deactivate >/dev/null 2>&1
then
deactivate
fi
rm -rf "$WORKON_HOME"
}
test_new_env_activated () {
mkvirtualenv "source"
(cd tests/testpackage && python setup.py install) >/dev/null 2>&1
cpvirtualenv "source" "destination"
rmvirtualenv "source"
testscript="$(which testscript.py)"
assertTrue "Environment test script not found in path" "[ $WORKON_HOME/destination/bin/testscript.py -ef $testscript ]"
testscriptcontent="$(cat $testscript)"
assertTrue "No cpvirtualenvtest in $testscriptcontent" "echo $testscriptcontent | grep cpvirtualenvtest"
assertTrue virtualenvwrapper_verify_active_environment
}
test_virtual_env_variable () {
mkvirtualenv "source"
cpvirtualenv "source" "destination"
assertSame "Wrong virtualenv name" "destination" $(basename "$VIRTUAL_ENV")
assertTrue "$WORKON_HOME not in $VIRTUAL_ENV" "echo $VIRTUAL_ENV | grep -q $WORKON_HOME"
}
fake_virtualenv () {
typeset envname="$1"
touch "$envname/fake_virtualenv_was_here"
virtualenv $@
}
test_virtualenvwrapper_virtualenv_variable () {
mkvirtualenv "source"
export VIRTUALENVWRAPPER_VIRTUALENV=fake_virtualenv
cpvirtualenv "source" "destination"
unset VIRTUALENVWRAPPER_VIRTUALENV
assertTrue "wrapper was not run" "[ -f $VIRTUAL_ENV/fake_virtualenv_was_here ]"
}
test_source_relocatable () {
mkvirtualenv "source"
(cd tests/testpackage && python setup.py install) >/dev/null 2>&1
assertTrue "virtualenv --relocatable \"$WORKON_HOME/source\""
cpvirtualenv "source" "destination"
testscript="$(which testscript.py)"
assertTrue "Environment test script not the same as copy" "[ $WORKON_HOME/destination/bin/testscript.py -ef $testscript ]"
assertTrue virtualenvwrapper_verify_active_environment
assertSame "Wrong virtualenv name" "destination" $(basename "$VIRTUAL_ENV")
}
test_source_does_not_exist () {
out="$(cpvirtualenv virtualenvthatdoesntexist foo)"
assertSame "$out" "virtualenvthatdoesntexist virtualenv doesn't exist"
}
test_hooks () {
mkvirtualenv "source"
export pre_test_dir=$(cd "$test_dir"; pwd)
# Set the interpreter of the hook script to the simple shell
echo "#!/bin/sh" > "$WORKON_HOME/premkvirtualenv"
echo "echo GLOBAL premkvirtualenv \`pwd\` \"\$@\" >> \"$pre_test_dir/catch_output\"" >> "$WORKON_HOME/premkvirtualenv"
chmod +x "$WORKON_HOME/premkvirtualenv"
echo "echo GLOBAL postmkvirtualenv >> $test_dir/catch_output" > "$WORKON_HOME/postmkvirtualenv"
# Set the interpreter of the hook script to the simple shell
echo "#!/bin/sh" > "$WORKON_HOME/precpvirtualenv"
echo "echo GLOBAL precpvirtualenv \`pwd\` \"\$@\" >> \"$pre_test_dir/catch_output\"" >> "$WORKON_HOME/precpvirtualenv"
chmod +x "$WORKON_HOME/precpvirtualenv"
# Set the interpreter of the hook script to the simple shell
echo "#!/bin/sh" > "$WORKON_HOME/postcpvirtualenv"
echo "echo GLOBAL postcpvirtualenv >> $test_dir/catch_output" > "$WORKON_HOME/postcpvirtualenv"
cpvirtualenv "source" "destination"
output=$(cat "$test_dir/catch_output")
workon_home_as_pwd=$(cd $WORKON_HOME; pwd)
expected="GLOBAL precpvirtualenv $workon_home_as_pwd source destination
GLOBAL premkvirtualenv $workon_home_as_pwd destination
GLOBAL postmkvirtualenv
GLOBAL postcpvirtualenv"
assertSame "$expected" "$output"
rm -f "$WORKON_HOME/premkvirtualenv"
rm -f "$WORKON_HOME/postmkvirtualenv"
}
test_no_site_packages () {
# See issue #102
mkvirtualenv "source" --no-site-packages >/dev/null 2>&1
cpvirtualenv "source" "destination"
ngsp_file="$VIRTUALENVWRAPPER_ENV_SITE_PACKAGES/../no-global-site-packages.txt"
assertTrue "$ngsp_file does not exist in copied env" "[ -f \"$ngsp_file\" ]"
}
test_no_site_packages_default_args () {
# See issue #102
VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--no-site-packages"
# With the argument, verify that they are not copied.
mkvirtualenv "source" >/dev/null 2>&1
cpvirtualenv "source" "destination"
ngsp_file="$VIRTUALENVWRAPPER_ENV_SITE_PACKAGES/../no-global-site-packages.txt"
assertTrue "$ngsp_file does not exist" "[ -f \"$ngsp_file\" ]"
unset VIRTUALENVWRAPPER_VIRTUALENV_ARGS
}
test_no_site_packages_default_behavior () {
# See issue #102
# virtualenv 1.7 changed to make --no-site-packages the default
mkvirtualenv "source" >/dev/null 2>&1
cpvirtualenv "source" "destination"
ngsp_file="$VIRTUALENVWRAPPER_ENV_SITE_PACKAGES/../no-global-site-packages.txt"
assertTrue "$ngsp_file does not exist in copied env" "[ -f \"$ngsp_file\" ]"
}
. "$test_dir/shunit2"
|