[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [babel] Trying to add ERT test cases
From: |
Martyn Jago |
Subject: |
Re: [O] [babel] Trying to add ERT test cases |
Date: |
Mon, 19 Sep 2011 16:46:09 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (darwin) |
Hi Sebastien
"Sebastien Vauban"
<address@hidden> 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---
Re: [O] [babel] Trying to add ERT test cases, Sebastien Vauban, 2011/09/19