diff options
| author | Matthew White <mehw.is.me@inventati.org> | 2021-07-10 04:11:28 +0000 |
|---|---|---|
| committer | Matthew White <mehw.is.me@inventati.org> | 2021-10-20 23:01:53 +0200 |
| commit | 6aa369c1ea7694b1dd5a4e1d9cb5f64564e04234 (patch) | |
| tree | 302a30ed4324e1bd4d2bfd402a8efabfcb87205f /test | |
| parent | 4408cf4674c9f3e85b029e704799a6bd95cb541a (diff) | |
basic-persp-creation-deletion: test killing all perspectives
Test 'persp-current-name' and also killing the main perspective. When
killing the main perspective, preserve the *ert* buffer when the tests
are run interactively, and always preserve *Messages*, because it's an
ert's requirement for properly executing tests.
Diffstat (limited to 'test')
| -rw-r--r-- | test/test-perspective.el | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/test/test-perspective.el b/test/test-perspective.el index 16feb5f..28798a0 100644 --- a/test/test-perspective.el +++ b/test/test-perspective.el @@ -639,16 +639,59 @@ local value of it is a mistake." (kill-buffer "*dummy*"))) (ert-deftest basic-persp-creation-deletion () + "Switching to a non-existing perspective should create the new +perspective. Switching to an existing perspective should not +duplicate the perspective. Creating a new perspective should +not automatically switch to the perspective." (persp-test-with-persp - (should (equal (list "main") (persp-names))) + (should (equal (persp-current-name) "main")) + (should (equal (list "main") (sort (persp-names) #'string-lessp))) + ;; test if switching to a non-existing perspective also creates it (persp-switch "A") + (should (equal (persp-current-name) "A")) (should (equal (list "A" "main") (sort (persp-names) #'string-lessp))) + ;; test if creating a new perspective switches to it automatically + (persp-new "B") + (should (equal (persp-current-name) "A")) + (should (equal (list "A" "B" "main") (sort (persp-names) #'string-lessp))) + ;; test if switching to an existing perspective duplicates it (persp-switch "B") + (should (equal (persp-current-name) "B")) (should (equal (list "A" "B" "main") (sort (persp-names) #'string-lessp))) - (persp-kill "A") + (persp-switch "A") + (should (equal (persp-current-name) "A")) + (should (equal (list "A" "B" "main") (sort (persp-names) #'string-lessp))) + ;; kill the current perspective to see where we land + (persp-kill (persp-current-name)) + (should (equal (persp-current-name) "B")) (should (equal (list "B" "main") (sort (persp-names) #'string-lessp))) - (persp-kill "B") - (should (equal (list "main") (persp-names))))) + (persp-kill (persp-current-name)) + (should (equal (persp-current-name) "main")) + (should (equal (list "main") (sort (persp-names) #'string-lessp))) + ;; sanity checks before killing the main perspective + (should (get-buffer "*Messages*")) + (should (get-buffer-create "*scratch*")) + (persp-set-buffer (get-buffer "*scratch*")) + (let ((ert-buffer (get-buffer "*ert*")) + (msg-buffer (get-buffer "*Messages*"))) + ;; interactively run ert requires the *ert* buffer + (setf (persp-current-buffers) (remq ert-buffer (persp-current-buffers))) + ;; the *Messages* buffer is also ert's requiremet + (setf (persp-current-buffers) (remq msg-buffer (persp-current-buffers))) + ;; *scratch* is in main, not *ert* and *Messages* + (should (persp-test-buffer-in-persps "*scratch*" "main")) + (should-not (persp-test-buffer-in-persps ert-buffer "main")) + (should-not (persp-test-buffer-in-persps msg-buffer "main")) + ;; kill the main perspective except above buffers + (persp-kill (persp-current-name)) + ;; the *scratch* buffer should have been killed + (should-not (get-buffer "*scratch*")) + ;; *ert* is needed by interactively run tests + (should (eq ert-buffer (get-buffer "*ert*"))) + ;; the *Messages* buffer is needed by ert + (should (eq msg-buffer (get-buffer "*Messages*"))))) + ;; cleanup + (should (get-buffer-create "*scratch*"))) (ert-deftest basic-persp-switching () (persp-test-with-persp |
