You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

381 lines
9.8 KiB

9 years ago
9 years ago
9 years ago
9 years ago
  1. #!/usr/bin/env bats
  2. load test_helper
  3. setup() {
  4. export PYENV_ROOT="${TMP}/pyenv"
  5. unset PYENV_VERSION
  6. unset PYENV_ACTIVATE_SHELL
  7. unset PYENV_VIRTUAL_ENV
  8. unset VIRTUAL_ENV
  9. unset CONDA_DEFAULT_ENV
  10. unset PYTHONHOME
  11. unset _OLD_VIRTUAL_PYTHONHOME
  12. unset PYENV_VIRTUALENV_VERBOSE_ACTIVATE
  13. unset PYENV_VIRTUALENV_DISABLE_PROMPT
  14. unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
  15. unset VIRTUAL_ENV_DISABLE_PROMPT
  16. unset _OLD_VIRTUAL_PS1
  17. stub pyenv-hooks "deactivate : echo"
  18. }
  19. @test "deactivate virtualenv" {
  20. export PYENV_VIRTUALENV_INIT=1
  21. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  22. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  23. export PYENV_ACTIVATE_SHELL=
  24. PYENV_SHELL="bash" run pyenv-sh-deactivate
  25. assert_success
  26. assert_output <<EOS
  27. unset PYENV_VIRTUAL_ENV;
  28. unset VIRTUAL_ENV;
  29. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  30. export PATH="\${_OLD_VIRTUAL_PATH}";
  31. unset _OLD_VIRTUAL_PATH;
  32. fi;
  33. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  34. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  35. unset _OLD_VIRTUAL_PYTHONHOME;
  36. fi;
  37. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  38. export PS1="\${_OLD_VIRTUAL_PS1}";
  39. unset _OLD_VIRTUAL_PS1;
  40. fi;
  41. if declare -f deactivate 1>/dev/null 2>&1; then
  42. unset -f deactivate;
  43. fi;
  44. EOS
  45. }
  46. @test "deactivate virtualenv (quiet)" {
  47. export PYENV_VIRTUALENV_INIT=1
  48. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  49. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  50. export PYENV_ACTIVATE_SHELL=
  51. PYENV_SHELL="bash" run pyenv-sh-deactivate --quiet
  52. assert_success
  53. assert_output <<EOS
  54. unset PYENV_VIRTUAL_ENV;
  55. unset VIRTUAL_ENV;
  56. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  57. export PATH="\${_OLD_VIRTUAL_PATH}";
  58. unset _OLD_VIRTUAL_PATH;
  59. fi;
  60. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  61. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  62. unset _OLD_VIRTUAL_PYTHONHOME;
  63. fi;
  64. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  65. export PS1="\${_OLD_VIRTUAL_PS1}";
  66. unset _OLD_VIRTUAL_PS1;
  67. fi;
  68. if declare -f deactivate 1>/dev/null 2>&1; then
  69. unset -f deactivate;
  70. fi;
  71. EOS
  72. }
  73. @test "deactivate virtualenv (verbose)" {
  74. export PYENV_VIRTUALENV_INIT=1
  75. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  76. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  77. export PYENV_ACTIVATE_SHELL=
  78. export PYENV_VIRTUALENV_VERBOSE_ACTIVATE=1
  79. PYENV_SHELL="bash" run pyenv-sh-deactivate --verbose
  80. assert_success
  81. assert_output <<EOS
  82. pyenv-virtualenv: deactivate venv
  83. unset PYENV_VIRTUAL_ENV;
  84. unset VIRTUAL_ENV;
  85. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  86. export PATH="\${_OLD_VIRTUAL_PATH}";
  87. unset _OLD_VIRTUAL_PATH;
  88. fi;
  89. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  90. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  91. unset _OLD_VIRTUAL_PYTHONHOME;
  92. fi;
  93. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  94. export PS1="\${_OLD_VIRTUAL_PS1}";
  95. unset _OLD_VIRTUAL_PS1;
  96. fi;
  97. if declare -f deactivate 1>/dev/null 2>&1; then
  98. unset -f deactivate;
  99. fi;
  100. EOS
  101. }
  102. @test "deactivate virtualenv (with shell activation)" {
  103. export PYENV_VIRTUALENV_INIT=1
  104. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  105. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  106. export PYENV_ACTIVATE_SHELL=1
  107. PYENV_SHELL="bash" run pyenv-sh-deactivate
  108. assert_success
  109. assert_output <<EOS
  110. unset PYENV_VERSION;
  111. unset PYENV_ACTIVATE_SHELL;
  112. unset PYENV_VIRTUAL_ENV;
  113. unset VIRTUAL_ENV;
  114. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  115. export PATH="\${_OLD_VIRTUAL_PATH}";
  116. unset _OLD_VIRTUAL_PATH;
  117. fi;
  118. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  119. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  120. unset _OLD_VIRTUAL_PYTHONHOME;
  121. fi;
  122. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  123. export PS1="\${_OLD_VIRTUAL_PS1}";
  124. unset _OLD_VIRTUAL_PS1;
  125. fi;
  126. if declare -f deactivate 1>/dev/null 2>&1; then
  127. unset -f deactivate;
  128. fi;
  129. EOS
  130. }
  131. @test "deactivate virtualenv (with shell activation) (quiet)" {
  132. export PYENV_VIRTUALENV_INIT=1
  133. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  134. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  135. export PYENV_ACTIVATE_SHELL=1
  136. PYENV_SHELL="bash" run pyenv-sh-deactivate --quiet
  137. assert_success
  138. assert_output <<EOS
  139. unset PYENV_VERSION;
  140. unset PYENV_ACTIVATE_SHELL;
  141. unset PYENV_VIRTUAL_ENV;
  142. unset VIRTUAL_ENV;
  143. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  144. export PATH="\${_OLD_VIRTUAL_PATH}";
  145. unset _OLD_VIRTUAL_PATH;
  146. fi;
  147. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  148. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  149. unset _OLD_VIRTUAL_PYTHONHOME;
  150. fi;
  151. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  152. export PS1="\${_OLD_VIRTUAL_PS1}";
  153. unset _OLD_VIRTUAL_PS1;
  154. fi;
  155. if declare -f deactivate 1>/dev/null 2>&1; then
  156. unset -f deactivate;
  157. fi;
  158. EOS
  159. }
  160. @test "deactivate virtualenv which has been activated manually" {
  161. export PYENV_VIRTUALENV_INIT=1
  162. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  163. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  164. export PYENV_ACTIVATE_SHELL=
  165. PYENV_SHELL="bash" run pyenv-sh-deactivate
  166. assert_success
  167. assert_output <<EOS
  168. unset PYENV_VIRTUAL_ENV;
  169. unset VIRTUAL_ENV;
  170. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  171. export PATH="\${_OLD_VIRTUAL_PATH}";
  172. unset _OLD_VIRTUAL_PATH;
  173. fi;
  174. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  175. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  176. unset _OLD_VIRTUAL_PYTHONHOME;
  177. fi;
  178. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  179. export PS1="\${_OLD_VIRTUAL_PS1}";
  180. unset _OLD_VIRTUAL_PS1;
  181. fi;
  182. if declare -f deactivate 1>/dev/null 2>&1; then
  183. unset -f deactivate;
  184. fi;
  185. EOS
  186. }
  187. @test "deactivate virtualenv (fish)" {
  188. export PYENV_VIRTUALENV_INIT=1
  189. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  190. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  191. export PYENV_ACTIVATE_SHELL=
  192. PYENV_SHELL="fish" run pyenv-sh-deactivate
  193. assert_success
  194. assert_output <<EOS
  195. set -e PYENV_VIRTUAL_ENV;
  196. set -e VIRTUAL_ENV;
  197. if [ -n "\$_OLD_VIRTUAL_PATH" ];
  198. set -gx PATH "\$_OLD_VIRTUAL_PATH";
  199. set -e _OLD_VIRTUAL_PATH;
  200. end;
  201. if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
  202. set -gx PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
  203. set -e _OLD_VIRTUAL_PYTHONHOME;
  204. end;
  205. # check if old prompt function exists
  206. if functions -q _pyenv_old_prompt
  207. # remove old prompt function if exists.
  208. functions -e fish_prompt
  209. functions -c _pyenv_old_prompt fish_prompt
  210. functions -e _pyenv_old_prompt
  211. end
  212. if functions -q deactivate;
  213. functions -e deactivate;
  214. end;
  215. EOS
  216. }
  217. @test "deactivate virtualenv (fish) (quiet)" {
  218. export PYENV_VIRTUALENV_INIT=1
  219. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  220. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  221. export PYENV_ACTIVATE_SHELL=
  222. PYENV_SHELL="fish" run pyenv-sh-deactivate --quiet
  223. assert_success
  224. assert_output <<EOS
  225. set -e PYENV_VIRTUAL_ENV;
  226. set -e VIRTUAL_ENV;
  227. if [ -n "\$_OLD_VIRTUAL_PATH" ];
  228. set -gx PATH "\$_OLD_VIRTUAL_PATH";
  229. set -e _OLD_VIRTUAL_PATH;
  230. end;
  231. if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
  232. set -gx PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
  233. set -e _OLD_VIRTUAL_PYTHONHOME;
  234. end;
  235. # check if old prompt function exists
  236. if functions -q _pyenv_old_prompt
  237. # remove old prompt function if exists.
  238. functions -e fish_prompt
  239. functions -c _pyenv_old_prompt fish_prompt
  240. functions -e _pyenv_old_prompt
  241. end
  242. if functions -q deactivate;
  243. functions -e deactivate;
  244. end;
  245. EOS
  246. }
  247. @test "deactivate virtualenv (fish) (with shell activation)" {
  248. export PYENV_VIRTUALENV_INIT=1
  249. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  250. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  251. export PYENV_ACTIVATE_SHELL=1
  252. PYENV_SHELL="fish" run pyenv-sh-deactivate
  253. assert_success
  254. assert_output <<EOS
  255. set -e PYENV_VERSION;
  256. set -e PYENV_ACTIVATE_SHELL;
  257. set -e PYENV_VIRTUAL_ENV;
  258. set -e VIRTUAL_ENV;
  259. if [ -n "\$_OLD_VIRTUAL_PATH" ];
  260. set -gx PATH "\$_OLD_VIRTUAL_PATH";
  261. set -e _OLD_VIRTUAL_PATH;
  262. end;
  263. if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
  264. set -gx PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
  265. set -e _OLD_VIRTUAL_PYTHONHOME;
  266. end;
  267. # check if old prompt function exists
  268. if functions -q _pyenv_old_prompt
  269. # remove old prompt function if exists.
  270. functions -e fish_prompt
  271. functions -c _pyenv_old_prompt fish_prompt
  272. functions -e _pyenv_old_prompt
  273. end
  274. if functions -q deactivate;
  275. functions -e deactivate;
  276. end;
  277. EOS
  278. }
  279. @test "deactivate virtualenv (fish) (with shell activation) (quiet)" {
  280. export PYENV_VIRTUALENV_INIT=1
  281. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  282. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  283. export PYENV_ACTIVATE_SHELL=1
  284. PYENV_SHELL="fish" run pyenv-sh-deactivate --quiet
  285. assert_success
  286. assert_output <<EOS
  287. set -e PYENV_VERSION;
  288. set -e PYENV_ACTIVATE_SHELL;
  289. set -e PYENV_VIRTUAL_ENV;
  290. set -e VIRTUAL_ENV;
  291. if [ -n "\$_OLD_VIRTUAL_PATH" ];
  292. set -gx PATH "\$_OLD_VIRTUAL_PATH";
  293. set -e _OLD_VIRTUAL_PATH;
  294. end;
  295. if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
  296. set -gx PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
  297. set -e _OLD_VIRTUAL_PYTHONHOME;
  298. end;
  299. # check if old prompt function exists
  300. if functions -q _pyenv_old_prompt
  301. # remove old prompt function if exists.
  302. functions -e fish_prompt
  303. functions -c _pyenv_old_prompt fish_prompt
  304. functions -e _pyenv_old_prompt
  305. end
  306. if functions -q deactivate;
  307. functions -e deactivate;
  308. end;
  309. EOS
  310. }
  311. @test "deactivate virtualenv which has been activated manually (fish)" {
  312. export PYENV_VIRTUALENV_INIT=1
  313. export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  314. export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
  315. export PYENV_ACTIVATE_SHELL=
  316. PYENV_SHELL="fish" run pyenv-sh-deactivate
  317. assert_success
  318. assert_output <<EOS
  319. set -e PYENV_VIRTUAL_ENV;
  320. set -e VIRTUAL_ENV;
  321. if [ -n "\$_OLD_VIRTUAL_PATH" ];
  322. set -gx PATH "\$_OLD_VIRTUAL_PATH";
  323. set -e _OLD_VIRTUAL_PATH;
  324. end;
  325. if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
  326. set -gx PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
  327. set -e _OLD_VIRTUAL_PYTHONHOME;
  328. end;
  329. # check if old prompt function exists
  330. if functions -q _pyenv_old_prompt
  331. # remove old prompt function if exists.
  332. functions -e fish_prompt
  333. functions -c _pyenv_old_prompt fish_prompt
  334. functions -e _pyenv_old_prompt
  335. end
  336. if functions -q deactivate;
  337. functions -e deactivate;
  338. end;
  339. EOS
  340. }
  341. @test "should fail if deactivate is invoked as a command" {
  342. run pyenv-deactivate
  343. assert_failure
  344. }