From 04fe8d44aba77b79a3a0f6ad332a0fb07bdb21a2 Mon Sep 17 00:00:00 2001 From: Morgan Smith Date: Sat, 15 Jun 2024 11:27:34 -0400 Subject: [PATCH] Testing: Add tests for `org-tags-sort-function' * testing/lisp/test-org-agenda.el (test-org-agenda/tags-sorting): New test. --- testing/lisp/test-org-agenda.el | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/testing/lisp/test-org-agenda.el b/testing/lisp/test-org-agenda.el index 778f91e8e..a06d02064 100644 --- a/testing/lisp/test-org-agenda.el +++ b/testing/lisp/test-org-agenda.el @@ -655,6 +655,50 @@ Sunday 7 January 2024 (buffer-string)))))) (org-test-agenda--kill-all-agendas)))) +(ert-deftest test-org-agenda/tags-sorting () + "Test if `org-agenda' sorts tags according to `org-tags-sort-function'." + (let ((org-agenda-custom-commands + '(("f" "no fluff" todo "" + ((org-agenda-todo-keyword-format "") + (org-agenda-overriding-header "") + (org-agenda-prefix-format "") + (org-agenda-remove-tags t) + (org-agenda-sorting-strategy '(tag-up))))))) + (org-test-agenda-with-agenda + (string-join + '("* TODO group_a :group_a:" + "* TODO tag_a_1 :tag_a_1:" + "* TODO tag_a_2 :tag_a_2:" + "* TODO tag_b_1 :tag_b_1:" + "* TODO tag_b_2 :tag_b_2:" + "* TODO groupless :groupless:" + "* TODO lonely :lonely:") + "\n") + (dolist (org-tags-sort-function '(nil org-string< org-string> ignore)) + (should + (string-equal + (string-trim + (progn + (org-agenda nil "f") + (substring-no-properties (buffer-string)))) + (pcase org-tags-sort-function + ;; Not sorted + ('ignore + (string-join + '("group_a" "tag_a_1" "tag_a_2" "tag_b_1" "tag_b_2" "groupless" "lonely") + "\n")) + ;; TODO: a value of `nil' sorts it! That's not what the + ;; customize menu of `org-tags-sort-function' says! It + ;; says "No sorting". + ((or 'nil 'org-string< 'always) + (string-join + '("group_a" "groupless" "lonely" "tag_a_1" "tag_a_2" "tag_b_1" "tag_b_2") + "\n")) + ('org-string> + (string-join + '("tag_b_2" "tag_b_1" "tag_a_2" "tag_a_1" "lonely" "groupless" "group_a") + "\n"))))))))) + (ert-deftest test-org-agenda/goto-date () "Test `org-agenda-goto-date'." (unwind-protect -- 2.45.2