Hi Sebastien "Sebastien Vauban" <wxhgmqzgw...@spammotel.com> writes:
> Hi, > > I'd like to really contrib more on test cases, in particular every time I'd > see something problematic. My goal (SOMEDAY/MAYBE) would be to (be able to) > report any problem with an attached ERT test case... > > Last experience: for some unknown reason (maybe a Lisp nesting exceeded, > though), it (rarely) happens that the speed commands don't work anymore. I'd > like to test (ultimately all speed commans) against such a behavior. > > Hence: > > * Speed command (this must be at level-1 headline) > :PROPERTIES: > :ID: 4ee368b8-cf7c-4269-98c0-b28dcf94ff2b > :END: > > Some text. > > * Test > > #+begin_src emacs-lisp > (ert-deftest ob-tangle/speed-command-r () > "Test that speed command `r' does demote the headline." > (org-test-at-id "4ee368b8-cf7c-4269-98c0-b28dcf94ff2b" > (goto-char (point-at-bol)) > (insert "r") ;; I don't want a self-insert of r, but the effect of typing > it > (goto-char (point-at-bol)) > (should (looking-at "\\*\\* Speed command")) > (delete-char 1))) > #+end_src > > Problems: > > - I want to simulate the user pressing `r', but `insert' does insert a literal > `r', instead of executing what's associated to it. > > Of course, I don't want to replace the key press on `r' but a call to > `org-shiftright', that's the whole point of the test. > > So, how can I insert a `r' character to be contextually interpreted? > > - when `should' is failing, the `delete-char' does not take place. This is > still mysterious to me, at this point in time. > > Any hints for me to go further? > > Best regards, > Seb My solution doesn't simulate pressing `r' as such (which looks like it will require some substantial setup), so I approached the test slightly differently... - 1) Ensure =org-speed-command-default-hook= returns t when valid (default) speed command and bol - 2) Ensure actual speed command promotes correctly - 3) Use a test-buffer (with org-mode enabled) to avoid messing with test example There may be a better solution however. Best, Martyn --8<---------------cut here---------------start------------->8--- (ert-deftest ob-tangle/speed-command-r () (let ((org-use-speed-commands t)) (with-temp-buffer (org-mode) (insert "* Speed command") (goto-char (point-at-bol)) ;; ensure default speed commands return t (should (org-speed-command-default-hook "r")) (should (org-speed-command-default-hook "n")) ;; ensure non-default speed commands return nil (should-not (org-speed-command-default-hook "z")) ;; ensure default speed commands return nil if not at bol (forward-char) (should-not (org-speed-command-default-hook "r")) ;; ensure org-metaright promotes heading (goto-char (point-at-bol)) (org-metaright 1) (goto-char (point-at-bol)) (should (equal "** Speed command" (buffer-string))) ;; ensure org-metaleft demotes heading (org-metaleft 1) (should (equal "* Speed command" (buffer-string)))))) --8<---------------cut here---------------end--------------->8---