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}