From: Kevin Foley <firstname.lastname@example.org> To: email@example.com Subject: Assistance Writing Test for Org Agenda Custom Bulk Function Date: Mon, 15 Feb 2021 18:21:50 -0500 [thread overview] Message-ID: <m2eehgkjch.fsf@Kevins-MBP.home.lan> (raw) I'm trying write a test for a recently merged patch. The patch adds the ability for users to specify a function to collect args to be passed to a custom bulk function. I'm trying to mock the argument collecting function and the custom bulk function and then test that the arguments returned from the former are passed to the latter. I'd also like to test the argument function is only called once while the bulk function is called multiple times. Here is an example of what I'm trying to do: (org-test-with-temp-text-in-file "* TODO a\n*TODO b" (let ((org-agenda-files `(,(buffer-file-name)))) (org-todo-list) (org-agenda-bulk-mark-all) ;; Fails without these ;; (defvar f-called-cnt) ;; (defvar arg-f-call-cnt) ;; (defvar f-called-args) (let ((f-called-cnt 0) (arg-f-call-cnt 0) (f-called-args nil)) (cl-letf (((symbol-function 'read-char-exclusive) (lambda () ?P)) (org-agenda-bulk-custom-functions '((?P (lambda (&rest args) (message "test" args) (setq f-called-cnt (1+ f-called-cnt) f-called-args args)) (lambda () (setq arg-f-call-cnt (1+ arg-f-call-cnt)) '(1 2 3)))))) (org-agenda-bulk-action) (org-test-agenda--kill-all-agendas) (should (= f-called-cnt 2)) (should (= arg-f-call-cnt 1)) (should (equal f-called-args '(1 2 3))))))) However, this fails with the error void-variable unless I first define the variables for storing the call counts/arguments. I understand that defvar makes the variables dynamically bound, however I'm struggling to understand why that's needed here. I've read the manual entries on variable binding but I seem to be missing something. Can someone help me understand what's going on here? Also, is there a better way to approach this?  https://code.orgmode.org/bzg/org-mode/commit/885ee086dde4ec2a9e303ff101e55d55c4b2363f
next reply other threads:[~2021-02-15 23:23 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-02-15 23:21 Kevin Foley [this message] 2021-02-18 3:58 ` Kyle Meyer 2021-02-18 14:08 ` Kevin Foley
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=m2eehgkjch.fsf@Kevins-MBP.home.lan \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: Assistance Writing Test for Org Agenda Custom Bulk Function' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).