* testing/lisp/test-org-agenda.el (test-org-agenda/tags-sorting): New test. ---
Hello! I just recently sent in a patch to add a new possible value for `org-tags-sort-function'. To ease discussion there, I thought I'd add a nice little test here so I can later show off the feature I'm trying to add. Do notice that TODO I put in the comment though. Not sure what the solution to that should be. It would be nice to accept this patch even with the TODO so I can make patches in the other discussion that extend this test. Or I suppose I could try being patient. That doesn't sound as fun though. Thanks, Morgan testing/lisp/test-org-agenda.el | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/testing/lisp/test-org-agenda.el b/testing/lisp/test-org-agenda.el index 778f91e8e..c1092df3b 100644 --- a/testing/lisp/test-org-agenda.el +++ b/testing/lisp/test-org-agenda.el @@ -655,6 +655,55 @@ 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)))))) + ;; Sorting doesn't care about `org-tag-alist'. This is only + ;; here for later when we add sorting methods that do + (org-tag-alist + '((:startgrouptag) + ("group_a") + (:grouptags) + ("tag_a_1") + ("tag_a_2") + (:endgrouptag) + (:startgroup) + ("tag_b_1") + ("tag_b_2") + (:endgroup) + ("groupless") + ("lonely")))) + (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>)) + (should + (string-equal + (progn + (org-agenda nil "f") + (substring-no-properties (buffer-string))) + (pcase org-tags-sort-function + ;; 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<) + "group_a\ngroupless\nlonely\ntag_a_1\ntag_a_2\ntag_b_1\ntag_b_2\n") + ('org-string> + "tag_b_2\ntag_b_1\ntag_a_2\ntag_a_1\nlonely\ngroupless\ngroup_a\n")))))))) + (ert-deftest test-org-agenda/goto-date () "Test `org-agenda-goto-date'." (unwind-protect -- 2.45.1