aboutsummaryrefslogtreecommitdiffstats
path: root/test/lisp/progmodes/python-tests.el
diff options
context:
space:
mode:
Diffstat (limited to 'test/lisp/progmodes/python-tests.el')
-rw-r--r--test/lisp/progmodes/python-tests.el76
1 files changed, 50 insertions, 26 deletions
diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el
index 0eb1c087f4c..1a6a7dc176d 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -2634,58 +2634,59 @@ if x:
2634 "Test `python-shell-process-environment' modification." 2634 "Test `python-shell-process-environment' modification."
2635 (let* ((python-shell-process-environment 2635 (let* ((python-shell-process-environment
2636 '("TESTVAR1=value1" "TESTVAR2=value2")) 2636 '("TESTVAR1=value1" "TESTVAR2=value2"))
2637 (process-environment (python-shell-calculate-process-environment))) 2637 (env (python-shell--calculate-process-environment)))
2638 (should (equal (getenv "TESTVAR1") "value1")) 2638 (should (equal (getenv-internal "TESTVAR1" env) "value1"))
2639 (should (equal (getenv "TESTVAR2") "value2")))) 2639 (should (equal (getenv-internal "TESTVAR2" env) "value2"))))
2640 2640
2641(ert-deftest python-shell-calculate-process-environment-2 () 2641(ert-deftest python-shell-calculate-process-environment-2 ()
2642 "Test `python-shell-extra-pythonpaths' modification." 2642 "Test `python-shell-extra-pythonpaths' modification."
2643 (let* ((process-environment process-environment) 2643 (let* ((process-environment process-environment)
2644 (_original-pythonpath (setenv "PYTHONPATH" "/path0")) 2644 (_original-pythonpath (setenv "PYTHONPATH" "/path0"))
2645 (python-shell-extra-pythonpaths '("/path1" "/path2")) 2645 (python-shell-extra-pythonpaths '("/path1" "/path2"))
2646 (process-environment (python-shell-calculate-process-environment))) 2646 (env (python-shell--calculate-process-environment)))
2647 (should (equal (getenv "PYTHONPATH") 2647 (should (equal (getenv-internal "PYTHONPATH" env)
2648 (concat "/path1" path-separator 2648 (concat "/path1" path-separator
2649 "/path2" path-separator "/path0"))))) 2649 "/path2" path-separator "/path0")))))
2650 2650
2651(ert-deftest python-shell-calculate-process-environment-3 () 2651(ert-deftest python-shell-calculate-process-environment-3 ()
2652 "Test `python-shell-virtualenv-root' modification." 2652 "Test `python-shell-virtualenv-root' modification."
2653 (let* ((python-shell-virtualenv-root "/env") 2653 (let* ((python-shell-virtualenv-root "/env")
2654 (process-environment 2654 (env
2655 (let ((process-environment process-environment)) 2655 (let ((process-environment process-environment))
2656 (setenv "PYTHONHOME" "/home") 2656 (setenv "PYTHONHOME" "/home")
2657 (setenv "VIRTUAL_ENV") 2657 (setenv "VIRTUAL_ENV")
2658 (python-shell-calculate-process-environment)))) 2658 (python-shell--calculate-process-environment))))
2659 (should (not (getenv "PYTHONHOME"))) 2659 (should (member "PYTHONHOME" env))
2660 (should (string= (getenv "VIRTUAL_ENV") "/env")))) 2660 (should (string= (getenv-internal "VIRTUAL_ENV" env) "/env"))))
2661 2661
2662(ert-deftest python-shell-calculate-process-environment-4 () 2662(ert-deftest python-shell-calculate-process-environment-4 ()
2663 "Test PYTHONUNBUFFERED when `python-shell-unbuffered' is non-nil." 2663 "Test PYTHONUNBUFFERED when `python-shell-unbuffered' is non-nil."
2664 (let* ((python-shell-unbuffered t) 2664 (let* ((python-shell-unbuffered t)
2665 (process-environment 2665 (env
2666 (let ((process-environment process-environment)) 2666 (let ((process-environment process-environment))
2667 (setenv "PYTHONUNBUFFERED") 2667 (setenv "PYTHONUNBUFFERED")
2668 (python-shell-calculate-process-environment)))) 2668 (python-shell--calculate-process-environment))))
2669 (should (string= (getenv "PYTHONUNBUFFERED") "1")))) 2669 (should (string= (getenv-internal "PYTHONUNBUFFERED" env) "1"))))
2670 2670
2671(ert-deftest python-shell-calculate-process-environment-5 () 2671(ert-deftest python-shell-calculate-process-environment-5 ()
2672 "Test PYTHONUNBUFFERED when `python-shell-unbuffered' is nil." 2672 "Test PYTHONUNBUFFERED when `python-shell-unbuffered' is nil."
2673 (let* ((python-shell-unbuffered nil) 2673 (let* ((python-shell-unbuffered nil)
2674 (process-environment 2674 (env
2675 (let ((process-environment process-environment)) 2675 (let ((process-environment process-environment))
2676 (setenv "PYTHONUNBUFFERED") 2676 (setenv "PYTHONUNBUFFERED")
2677 (python-shell-calculate-process-environment)))) 2677 (python-shell--calculate-process-environment))))
2678 (should (not (getenv "PYTHONUNBUFFERED"))))) 2678 (should (not (getenv-internal "PYTHONUNBUFFERED" env)))))
2679 2679
2680(ert-deftest python-shell-calculate-process-environment-6 () 2680(ert-deftest python-shell-calculate-process-environment-6 ()
2681 "Test PYTHONUNBUFFERED=1 when `python-shell-unbuffered' is nil." 2681 "Test PYTHONUNBUFFERED=1 when `python-shell-unbuffered' is nil."
2682 (let* ((python-shell-unbuffered nil) 2682 (let* ((python-shell-unbuffered nil)
2683 (process-environment 2683 (env
2684 (let ((process-environment process-environment)) 2684 (let ((process-environment process-environment))
2685 (setenv "PYTHONUNBUFFERED" "1") 2685 (setenv "PYTHONUNBUFFERED" "1")
2686 (python-shell-calculate-process-environment)))) 2686 (append (python-shell--calculate-process-environment)
2687 process-environment))))
2687 ;; User default settings must remain untouched: 2688 ;; User default settings must remain untouched:
2688 (should (string= (getenv "PYTHONUNBUFFERED") "1")))) 2689 (should (string= (getenv-internal "PYTHONUNBUFFERED" env) "1"))))
2689 2690
2690(ert-deftest python-shell-calculate-process-environment-7 () 2691(ert-deftest python-shell-calculate-process-environment-7 ()
2691 "Test no side-effects on `process-environment'." 2692 "Test no side-effects on `process-environment'."
@@ -2695,7 +2696,7 @@ if x:
2695 (python-shell-unbuffered t) 2696 (python-shell-unbuffered t)
2696 (python-shell-extra-pythonpaths'("/path1" "/path2")) 2697 (python-shell-extra-pythonpaths'("/path1" "/path2"))
2697 (original-process-environment (copy-sequence process-environment))) 2698 (original-process-environment (copy-sequence process-environment)))
2698 (python-shell-calculate-process-environment) 2699 (python-shell--calculate-process-environment)
2699 (should (equal process-environment original-process-environment)))) 2700 (should (equal process-environment original-process-environment))))
2700 2701
2701(ert-deftest python-shell-calculate-process-environment-8 () 2702(ert-deftest python-shell-calculate-process-environment-8 ()
@@ -2708,7 +2709,7 @@ if x:
2708 (python-shell-extra-pythonpaths'("/path1" "/path2")) 2709 (python-shell-extra-pythonpaths'("/path1" "/path2"))
2709 (original-process-environment 2710 (original-process-environment
2710 (copy-sequence tramp-remote-process-environment))) 2711 (copy-sequence tramp-remote-process-environment)))
2711 (python-shell-calculate-process-environment) 2712 (python-shell--calculate-process-environment)
2712 (should (equal tramp-remote-process-environment original-process-environment)))) 2713 (should (equal tramp-remote-process-environment original-process-environment))))
2713 2714
2714(ert-deftest python-shell-calculate-exec-path-1 () 2715(ert-deftest python-shell-calculate-exec-path-1 ()
@@ -2780,23 +2781,43 @@ if x:
2780 (should (string= (getenv "VIRTUAL_ENV") "/env"))) 2781 (should (string= (getenv "VIRTUAL_ENV") "/env")))
2781 (should (equal exec-path original-exec-path)))) 2782 (should (equal exec-path original-exec-path))))
2782 2783
2784(defun python--tests-process-env-canonical (pe)
2785 ;; `process-environment' can contain various entries for the same
2786 ;; var, and the first in the list hides the others.
2787 (let ((process-environment '()))
2788 (dolist (x (reverse pe))
2789 (if (string-match "=" x)
2790 (setenv (substring x 0 (match-beginning 0))
2791 (substring x (match-end 0)))
2792 (setenv x nil)))
2793 process-environment))
2794
2795(defun python--tests-process-env-eql (pe1 pe2)
2796 (equal (python--tests-process-env-canonical pe1)
2797 (python--tests-process-env-canonical pe2)))
2798
2783(ert-deftest python-shell-with-environment-2 () 2799(ert-deftest python-shell-with-environment-2 ()
2784 "Test environment with remote `default-directory'." 2800 "Test environment with remote `default-directory'."
2785 (let* ((default-directory "/ssh::/example/dir/") 2801 (let* ((default-directory "/ssh::/example/dir/")
2786 (python-shell-remote-exec-path '("/remote1" "/remote2")) 2802 (python-shell-remote-exec-path '("/remote1" "/remote2"))
2787 (python-shell-exec-path '("/path1" "/path2")) 2803 (python-shell-exec-path '("/path1" "/path2"))
2788 (tramp-remote-process-environment '("EMACS=t")) 2804 (tramp-remote-process-environment '("EMACS=t"))
2789 (original-process-environment (copy-sequence tramp-remote-process-environment)) 2805 (original-process-environment
2806 (copy-sequence tramp-remote-process-environment))
2790 (python-shell-virtualenv-root "/env")) 2807 (python-shell-virtualenv-root "/env"))
2791 (python-shell-with-environment 2808 (python-shell-with-environment
2792 (should (equal (python-shell-calculate-exec-path) 2809 (should (equal (python-shell-calculate-exec-path)
2793 (list (python-virt-bin) 2810 (list (python-virt-bin)
2794 "/path1" "/path2" "/remote1" "/remote2"))) 2811 "/path1" "/path2" "/remote1" "/remote2")))
2795 (let ((process-environment (python-shell-calculate-process-environment))) 2812 (let ((process-environment
2813 (append (python-shell--calculate-process-environment)
2814 tramp-remote-process-environment)))
2796 (should (not (getenv "PYTHONHOME"))) 2815 (should (not (getenv "PYTHONHOME")))
2797 (should (string= (getenv "VIRTUAL_ENV") "/env")) 2816 (should (string= (getenv "VIRTUAL_ENV") "/env"))
2798 (should (equal tramp-remote-process-environment process-environment)))) 2817 (should (python--tests-process-env-eql
2799 (should (equal tramp-remote-process-environment original-process-environment)))) 2818 tramp-remote-process-environment process-environment))))
2819 (should (equal tramp-remote-process-environment
2820 original-process-environment))))
2800 2821
2801(ert-deftest python-shell-with-environment-3 () 2822(ert-deftest python-shell-with-environment-3 ()
2802 "Test `python-shell-with-environment' is idempotent." 2823 "Test `python-shell-with-environment' is idempotent."
@@ -2805,11 +2826,14 @@ if x:
2805 (python-shell-virtualenv-root "/home/user/env") 2826 (python-shell-virtualenv-root "/home/user/env")
2806 (single-call 2827 (single-call
2807 (python-shell-with-environment 2828 (python-shell-with-environment
2808 (list exec-path process-environment))) 2829 (list exec-path
2830 (python--tests-process-env-canonical process-environment))))
2809 (nested-call 2831 (nested-call
2810 (python-shell-with-environment 2832 (python-shell-with-environment
2811 (python-shell-with-environment 2833 (python-shell-with-environment
2812 (list exec-path process-environment))))) 2834 (list exec-path
2835 (python--tests-process-env-canonical
2836 process-environment))))))
2813 (should (equal single-call nested-call)))) 2837 (should (equal single-call nested-call))))
2814 2838
2815(ert-deftest python-shell-make-comint-1 () 2839(ert-deftest python-shell-make-comint-1 ()