From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martyn Jago Subject: Re: [babel] Trying to add ERT test cases Date: Mon, 19 Sep 2011 16:46:09 +0100 Message-ID: References: <80sjnswzh5.fsf@somewhere.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([140.186.70.92]:56800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5g3C-00086F-Dy for emacs-orgmode@gnu.org; Mon, 19 Sep 2011 11:46:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R5g38-0008Fd-7z for emacs-orgmode@gnu.org; Mon, 19 Sep 2011 11:46:30 -0400 Received: from lo.gmane.org ([80.91.229.12]:55298) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5g37-0008FT-NO for emacs-orgmode@gnu.org; Mon, 19 Sep 2011 11:46:26 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1R5g36-0006bz-Ik for emacs-orgmode@gnu.org; Mon, 19 Sep 2011 17:46:24 +0200 Received: from 88-96-171-142.dsl.zen.co.uk ([88.96.171.142]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 19 Sep 2011 17:46:24 +0200 Received: from martyn.jago by 88-96-171-142.dsl.zen.co.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 19 Sep 2011 17:46:24 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi Sebastien "Sebastien Vauban" 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---