|
14 | 14 |
|
15 | 15 | (require 'el-mock)
|
16 | 16 |
|
17 |
| -(ert-deftest haskell-process-stringify-cmd-no-arg () |
18 |
| - "No wrapper, return directly the command (between string quote)." |
19 |
| - (should (equal "run" |
20 |
| - (let ((haskell-process-wrapper nil)) |
21 |
| - (haskell-process-stringify-cmd "run"))))) |
22 |
| - |
23 |
| -(ert-deftest haskell-process-stringify-cmd-with-args () |
24 |
| - "No wrapper, return directly the command." |
25 |
| - (should (equal "run -a b -c d" |
26 |
| - (let ((haskell-process-wrapper nil)) |
27 |
| - (haskell-process-stringify-cmd "run" '("-a" "b" "-c" "d")))))) |
28 |
| - |
29 |
| -(ert-deftest haskell-process-wrapper-command-nil () |
| 17 | +(ert-deftest haskell-process-wrapper-command-function-identity () |
30 | 18 | "No wrapper, return directly the command."
|
31 | 19 | (should (equal '("ghci")
|
32 |
| - (let ((haskell-process-wrapper nil)) |
33 |
| - (haskell-process-wrapper-command "ghci"))))) |
34 |
| - |
35 |
| -(ert-deftest haskell-process-wrapper-command-with-string () |
36 |
| - "Wrapper as a string, return the wrapping command as a string." |
37 |
| - (should (equal '("nix-shell" "cabal run") |
38 |
| - (let ((haskell-process-wrapper "nix-shell")) |
39 |
| - (haskell-process-wrapper-command "cabal run"))))) |
| 20 | + (progn |
| 21 | + (custom-set-variables '(haskell-process-wrapper-function #'identity)) |
| 22 | + (apply haskell-process-wrapper-function (list '("ghci"))))))) |
40 | 23 |
|
41 |
| -(ert-deftest haskell-process-wrapper-command-with-string-2 () |
| 24 | +(ert-deftest haskell-process-wrapper-function-non-identity () |
42 | 25 | "Wrapper as a string, return the wrapping command as a string."
|
43 |
| - (should (equal '("nix-shell" "cabal repl") |
44 |
| - (let ((haskell-process-wrapper "nix-shell")) |
45 |
| - (haskell-process-wrapper-command "cabal" '("repl")))))) |
46 |
| - |
47 |
| -(ert-deftest haskell-process-wrapper-command-with-repeat-string () |
48 |
| - "Wrapper as a list of string, return the wrapping command as a string." |
49 |
| - (should (equal '("nix-shell" "default.nix" "--command" "cabal build") |
50 |
| - (let ((haskell-process-wrapper '("nix-shell" "default.nix" "--command"))) |
51 |
| - (haskell-process-wrapper-command "cabal" '("build")))))) |
| 26 | + (should (equal '("nix-shell" "default.nix" "--command" "cabal\\ run") |
| 27 | + (progn |
| 28 | + (custom-set-variables '(haskell-process-wrapper-function (lambda (argv) |
| 29 | + (append '("nix-shell" "default.nix" "--command") |
| 30 | + (list (shell-quote-argument argv)))))) |
| 31 | + (apply haskell-process-wrapper-function (list "cabal run")))))) |
52 | 32 |
|
53 | 33 | (ert-deftest test-haskell-process--compute-process-log-and-command-ghci ()
|
54 | 34 | (should (equal '("Starting inferior GHCi process ghci ..." "dumses1" nil "ghci" "-ferror-spans")
|
55 | 35 | (let ((haskell-process-path-ghci "ghci")
|
56 |
| - (haskell-process-args-ghci '("-ferror-spans")) |
57 |
| - (haskell-process-wrapper nil)) |
| 36 | + (haskell-process-args-ghci '("-ferror-spans"))) |
| 37 | + (custom-set-variables '(haskell-process-wrapper-function #'identity)) |
58 | 38 | (mocklet (((haskell-session-name "dummy-session") => "dumses1"))
|
59 | 39 | (haskell-process-compute-process-log-and-command "dummy-session" 'ghci))))))
|
60 | 40 |
|
61 | 41 | (ert-deftest test-haskell-process--with-wrapper-compute-process-log-and-command-ghci ()
|
62 |
| - (should (equal '("Starting inferior GHCi process ghci ..." "dumses1" nil "nix-shell" "default.nix" "--command" "ghci -ferror-spans") |
| 42 | + (should (equal '("Starting inferior GHCi process ghci ..." "dumses1" nil "nix-shell" "default.nix" "--command" "ghci\\ -ferror-spans") |
63 | 43 | (let ((haskell-process-path-ghci "ghci")
|
64 |
| - (haskell-process-args-ghci '("-ferror-spans")) |
65 |
| - (haskell-process-wrapper '("nix-shell" "default.nix" "--command"))) |
| 44 | + (haskell-process-args-ghci '("-ferror-spans"))) |
| 45 | + (custom-set-variables '(haskell-process-wrapper-function |
| 46 | + (lambda (argv) (append (list "nix-shell" "default.nix" "--command" ) |
| 47 | + (list (shell-quote-argument (mapconcat 'identity argv " "))))))) |
66 | 48 | (mocklet (((haskell-session-name "dummy-session") => "dumses1"))
|
67 | 49 | (haskell-process-compute-process-log-and-command "dummy-session" 'ghci))))))
|
68 | 50 |
|
69 | 51 | (ert-deftest test-haskell-process--compute-process-log-and-command-cabal-repl ()
|
70 | 52 | (should (equal '("Starting inferior `cabal repl' process using cabal ..." "dumses2" nil "cabal" "repl" "--ghc-option=-ferror-spans" "dumdum-session")
|
71 | 53 | (let ((haskell-process-path-cabal "cabal")
|
72 |
| - (haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans")) |
73 |
| - (haskell-process-wrapper nil)) |
| 54 | + (haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans"))) |
| 55 | + (custom-set-variables '(haskell-process-wrapper-function #'identity)) |
74 | 56 | (mocklet (((haskell-session-name "dummy-session2") => "dumses2")
|
75 | 57 | ((haskell-session-target "dummy-session2") => "dumdum-session"))
|
76 | 58 | (haskell-process-compute-process-log-and-command "dummy-session2" 'cabal-repl))))))
|
77 | 59 |
|
78 | 60 | (ert-deftest test-haskell-process--with-wrapper-compute-process-log-and-command-cabal-repl ()
|
79 |
| - (should (equal '("Starting inferior `cabal repl' process using cabal ..." "dumses2" nil "nix-shell" "default.nix" "--command" "cabal repl --ghc-option=-ferror-spans" "dumdum-session") |
| 61 | + (should (equal '("Starting inferior `cabal repl' process using cabal ..." "dumses2" nil "nix-shell" "default.nix" "--command" "cabal\\ repl\\ --ghc-option\\=-ferror-spans" "dumdum-session") |
80 | 62 | (let ((haskell-process-path-cabal "cabal")
|
81 |
| - (haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans")) |
82 |
| - (haskell-process-wrapper '("nix-shell" "default.nix" "--command"))) |
| 63 | + (haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans"))) |
| 64 | + (custom-set-variables '(haskell-process-wrapper-function |
| 65 | + (lambda (argv) (append (list "nix-shell" "default.nix" "--command" ) |
| 66 | + (list (shell-quote-argument (mapconcat 'identity argv " "))))))) |
83 | 67 | (mocklet (((haskell-session-name "dummy-session2") => "dumses2")
|
84 | 68 | ((haskell-session-target "dummy-session2") => "dumdum-session"))
|
85 | 69 | (haskell-process-compute-process-log-and-command "dummy-session2" 'cabal-repl))))))
|
86 | 70 |
|
87 | 71 | (ert-deftest test-haskell-process--compute-process-log-and-command-cabal-ghci ()
|
88 | 72 | (should (equal '("Starting inferior cabal-ghci process using cabal-ghci ..." "dumses3" nil "cabal-ghci")
|
89 |
| - (let ((haskell-process-path-ghci "ghci") |
90 |
| - (haskell-process-wrapper nil)) |
| 73 | + (let ((haskell-process-path-ghci "ghci")) |
| 74 | + (custom-set-variables '(haskell-process-wrapper-function #'identity)) |
91 | 75 | (mocklet (((haskell-session-name "dummy-session3") => "dumses3"))
|
92 | 76 | (haskell-process-compute-process-log-and-command "dummy-session3" 'cabal-ghci))))))
|
93 | 77 |
|
94 | 78 | (ert-deftest test-haskell-process--with-wrapper-compute-process-log-and-command-cabal-ghci ()
|
95 | 79 | (should (equal '("Starting inferior cabal-ghci process using cabal-ghci ..." "dumses3" nil "nix-shell" "default.nix" "--command" "cabal-ghci")
|
96 |
| - (let ((haskell-process-path-ghci "ghci") |
97 |
| - (haskell-process-wrapper '("nix-shell" "default.nix" "--command"))) |
| 80 | + (let ((haskell-process-path-ghci "ghci")) |
| 81 | + (custom-set-variables '(haskell-process-wrapper-function |
| 82 | + (lambda (argv) (append (list "nix-shell" "default.nix" "--command" ) |
| 83 | + (list (shell-quote-argument (mapconcat 'identity argv " "))))))) |
98 | 84 | (mocklet (((haskell-session-name "dummy-session3") => "dumses3"))
|
99 | 85 | (haskell-process-compute-process-log-and-command "dummy-session3" 'cabal-ghci))))))
|
100 | 86 |
|
101 | 87 | (ert-deftest test-haskell-process--compute-process-log-and-command-cabal-dev ()
|
102 | 88 | (should (equal '("Starting inferior cabal-dev process cabal-dev -s directory/cabal-dev ..." "dumses4" nil "cabal-dev" "ghci" "-s" "directory/cabal-dev")
|
103 |
| - (let ((haskell-process-path-cabal-dev "cabal-dev") |
104 |
| - (haskell-process-wrapper nil)) |
| 89 | + (let ((haskell-process-path-cabal-dev "cabal-dev")) |
| 90 | + (custom-set-variables '(haskell-process-wrapper-function #'identity)) |
105 | 91 | (mocklet (((haskell-session-name "dummy-session4") => "dumses4")
|
106 | 92 | ((haskell-session-cabal-dir "dummy-session4") => "directory"))
|
107 | 93 | (haskell-process-compute-process-log-and-command "dummy-session4" 'cabal-dev))))))
|
108 | 94 |
|
109 | 95 | (ert-deftest test-haskell-process--with-wrapper-compute-process-log-and-command-cabal-dev ()
|
110 |
| - (should (equal '("Starting inferior cabal-dev process cabal-dev -s directory/cabal-dev ..." "dumses4" nil "run-with-docker" "cabal-dev ghci -s directory/cabal-dev") |
111 |
| - (let ((haskell-process-path-cabal-dev "cabal-dev") |
112 |
| - (haskell-process-wrapper "run-with-docker")) |
| 96 | + (should (equal '("Starting inferior cabal-dev process cabal-dev -s directory/cabal-dev ..." "dumses4" nil "run-with-docker" "cabal-dev\\ ghci\\ -s\\ directory/cabal-dev") |
| 97 | + (let ((haskell-process-path-cabal-dev "cabal-dev")) |
| 98 | + (custom-set-variables '(haskell-process-wrapper-function |
| 99 | + (lambda (argv) (append (list "run-with-docker") |
| 100 | + (list (shell-quote-argument (mapconcat 'identity argv " "))))))) |
113 | 101 | (mocklet (((haskell-session-name "dummy-session4") => "dumses4")
|
114 | 102 | ((haskell-session-cabal-dir "dummy-session4") => "directory"))
|
115 | 103 | (haskell-process-compute-process-log-and-command "dummy-session4" 'cabal-dev))))))
|
|
0 commit comments