Parent directory

test_rmvenv.zunit

2090 bytes
 1#!/usr/bin/env zunit
 2
 3@setup {
 4
 5    export DISABLE_AUTOSWITCH_VENV="1"
 6    load "../autoswitch_virtualenv.plugin.zsh"
 7    TARGET="$(mktemp -d)"
 8    cd "$TARGET"
 9
10    function poetry {
11        echo 'poetry' $@
12    }
13
14    function pipenv {
15        echo 'pipenv' $@
16    }
17
18    function deactivate {
19        echo 'deactivate'
20    }
21}
22
23@teardown {
24    rm -rf "$TARGET"
25}
26
27
28@test 'rmvenv - shows warning if no .venv present' {
29    run rmvenv
30
31    assert $state equals 0
32    assert "$output" same_as "No .venv file in the current directory!"
33}
34
35
36@test 'rmvenv - removes .venv if present' {
37    # lightweight simulation of creating a virtualenv
38    mkdir -p "$HOME/.virtualenvs/12345"
39
40    echo "12345" > .venv
41
42    run rmvenv
43
44    assert $state equals 0
45    assert "$output" same_as "Removing \e[35m12345\e[0m..."
46    test ! -f .venv
47    test ! -d "$HOME/.virtualenvs/12345"
48}
49
50@test 'rmvenv - removes .venv if present with function' {
51    # lightweight simulation of creating a virtualenv
52    mkdir -p "$HOME/.virtualenvs/54321"
53
54    echo "54321" > .venv
55
56    # Interfere with rm executable (in normal use alias or function would do the same).
57    function rm(){ : }
58
59    run rmvenv
60
61    assert $state equals 0
62    assert "$output" same_as "Removing \e[35m54321\e[0m..."
63    test ! -f .venv
64    test ! -d "$HOME/.virtualenvs/54321"
65}
66
67@test 'rmvenv - removes .venv and deactivates if currently active' {
68    test_venv="$(basename $PWD)"
69    run mkvenv
70    target_venv="$(<.venv)"
71
72    run rmvenv
73
74    assert $state equals 0
75    assert "$output" same_as "Removing \e[35m$target_venv\e[0m..."
76    test ! -f .venv
77    test ! -d "$HOME/.virtualenvs/$test_venv"
78}
79
80@test 'rmvenv - uninstalls poetry project' {
81    touch "poetry.lock"
82
83    run rmvenv
84
85    assert $state equals 0
86    assert "$lines[1]" same_as "deactivate"
87    assert "$lines[2]" same_as "poetry env remove poetry run which python"
88}
89
90
91@test 'rmvenv - uninstalls pipenv project' {
92    touch "Pipfile"
93
94    run rmvenv
95
96    assert $state equals 0
97    assert "$lines[1]" same_as "deactivate"
98    assert "$lines[2]" same_as "pipenv --rm"
99}