File: test_workon.sh

package info (click to toggle)
virtualenvwrapper 4.8.4-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 796 kB
  • sloc: sh: 3,369; python: 595; makefile: 185
file content (181 lines) | stat: -rwxr-xr-x 5,490 bytes parent folder | download
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# -*- mode: shell-script -*-

test_dir=$(cd $(dirname $0) && pwd)
source "$test_dir/setup.sh"

oneTimeSetUp() {
    rm -rf "$WORKON_HOME"
    mkdir -p "$WORKON_HOME"
    source "$test_dir/../virtualenvwrapper.sh"
    mkvirtualenv "test1" >/dev/null 2>&1
    mkvirtualenv "test2" >/dev/null 2>&1
    # Only test with leading and internal spaces. Directory names with trailing spaces are legal,
    # and work with virtualenv on OSX, but error out on Linux.
    mkvirtualenv " env with space" >/dev/null 2>&1
    deactivate >/dev/null 2>&1
}

oneTimeTearDown() {
    rm -rf "$WORKON_HOME"
}

setUp () {
    echo
    rm -f "$TMPDIR/catch_output"
}

tearDown () {
    deactivate >/dev/null 2>&1
}

test_workon () {
    workon test1
    assertTrue virtualenvwrapper_verify_active_environment
    assertSame "test1" $(basename "$VIRTUAL_ENV")
}

test_workon_activate_hooks () {
    for t in pre post
    do
        echo "#!/bin/sh" > "$WORKON_HOME/${t}activate"
        echo "echo GLOBAL ${t}activate >> \"$TMPDIR/catch_output\"" >> "$WORKON_HOME/${t}activate"
        chmod +x "$WORKON_HOME/${t}activate"

        echo "#!/bin/sh" > "$WORKON_HOME/test2/bin/${t}activate"
        echo "echo ENV ${t}activate >> \"$TMPDIR/catch_output\"" >> "$WORKON_HOME/test1/bin/${t}activate"
        chmod +x "$WORKON_HOME/test1/bin/${t}activate"
    done

    rm -f "$TMPDIR/catch_output"
    touch "$TMPDIR/catch_output"

    workon test1

    output=$(cat "$TMPDIR/catch_output")
    expected="GLOBAL preactivate
ENV preactivate
GLOBAL postactivate
ENV postactivate"

    assertSame "$expected"  "$output"

    for t in pre post
    do
        rm -f "$WORKON_HOME/test1/bin/${t}activate"
        rm -f "$WORKON_HOME/${t}activate"
    done
}

test_workon_deactivate_hooks () {
    for t in pre post
    do
        echo "#!/bin/sh" > "$WORKON_HOME/${t}deactivate"
        echo "echo GLOBAL ${t}deactivate >> \"$TMPDIR/catch_output\"" >> "$WORKON_HOME/${t}deactivate"
        chmod +x "$WORKON_HOME/${t}deactivate"

        echo "#!/bin/sh" > "$WORKON_HOME/test2/bin/${t}deactivate"
        echo "echo ENV ${t}deactivate >> \"$TMPDIR/catch_output\"" >> "$WORKON_HOME/test1/bin/${t}deactivate"
        chmod +x "$WORKON_HOME/test1/bin/${t}deactivate"
    done

    rm -f "$TMPDIR/catch_output"
    touch "$TMPDIR/catch_output"

    workon test1
    workon test2

    output=$(cat "$TMPDIR/catch_output")
    expected="ENV predeactivate
GLOBAL predeactivate
ENV postdeactivate
GLOBAL postdeactivate"

    assertSame "$expected"  "$output"

    for t in pre post
    do
        rm -f "$WORKON_HOME/test1/bin/${t}deactivate"
        rm -f "$WORKON_HOME/${t}deactivate"
    done
}

test_virtualenvwrapper_show_workon_options () {
    mkdir "$WORKON_HOME/not_env"
    (cd "$WORKON_HOME"; ln -s test1 link_env)
    envs=$(virtualenvwrapper_show_workon_options | tr '\n' ' ')
    # On OSX there are two trailing spaces, on Linux one, so compare substring
    assertSame " env with space link_env test1 test2 " "${envs:0:37}"
    rmdir "$WORKON_HOME/not_env"
    rm -f "$WORKON_HOME/link_env"
}

test_virtualenvwrapper_show_workon_options_grep_options () {
    mkdir "$WORKON_HOME/not_env"
    (cd "$WORKON_HOME"; ln -s test1 link_env)
    export GREP_OPTIONS="--count"
    envs=$(virtualenvwrapper_show_workon_options | tr '\n' ' ')
    unset GREP_OPTIONS
    # On OSX there are two trailing spaces, on Linux one, so compare substring
    assertSame " env with space link_env test1 test2 " "${envs:0:37}"
    rmdir "$WORKON_HOME/not_env"
    rm -f "$WORKON_HOME/link_env"
}

test_virtualenvwrapper_show_workon_options_chpwd () {
    # https://bitbucket.org/dhellmann/virtualenvwrapper/issue/153
    function chpwd {
        local SEARCH=' '
        local REPLACE='%20'
        local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
        printf '\e]7;%s\a' "$PWD_URL"
        echo -n "\033]0;${HOST//.*}:$USER\007"
    }
    mkdir "$WORKON_HOME/not_env"
    envs=$(virtualenvwrapper_show_workon_options | tr '\n' ' ')
    # On OSX there are two trailing spaces, on Linux one, so compare substring
    assertSame " env with space test1 test2 " "${envs:0:28}"
    rmdir "$WORKON_HOME/not_env"
    rm -f "$WORKON_HOME/link_env"
}

test_virtualenvwrapper_show_workon_options_no_envs () {
    old_home="$WORKON_HOME"
    export WORKON_HOME=${TMPDIR:-/tmp}/$$
    # On OSX there is a space and on Linux there is not, so strip all spaces
    envs=$(virtualenvwrapper_show_workon_options 2>/dev/null | sed 's/\n //g')
    assertSame "" "$envs"
    export WORKON_HOME="$old_home"
}

test_no_workon_home () {
    old_home="$WORKON_HOME"
    export WORKON_HOME="$WORKON_HOME/not_there"
    workon should_not_be_created >"$old_home/output" 2>&1
    output=$(cat "$old_home/output")
    assertTrue "Did not see expected message" "echo $output | grep 'does not exist'"
    WORKON_HOME="$old_home"
}

test_workon_dot () {
    cd $WORKON_HOME/test1
    workon .
    assertTrue virtualenvwrapper_verify_active_environment
    assertSame "test1" $(basename "$VIRTUAL_ENV")
}

test_workon_dot_with_space () {
    cd $WORKON_HOME/" env with space"
    workon .
    assertTrue virtualenvwrapper_verify_active_environment
    env_name=$(basename "$VIRTUAL_ENV")
    assertSame " env with space" "$env_name"
}

test_workon_with_space () {
    workon " env with space"
    assertTrue virtualenvwrapper_verify_active_environment
    env_name=$(basename "$VIRTUAL_ENV")
    assertSame " env with space" "$env_name"
}

. "$test_dir/shunit2"