From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michal Nazarewicz Newsgroups: gmane.emacs.bugs Subject: bug#23729: [PATCH] Remove =?UTF-8?Q?=E2=80=98ert-with-function-mocked=E2=80=99?= macro in favour of =?UTF-8?Q?=E2=80=98cl-letf=E2=80=99?= macro Date: Wed, 8 Jun 2016 14:44:39 +0200 Message-ID: <1465389879-14248-1-git-send-email-mina86@mina86.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1465389981 10268 80.91.229.3 (8 Jun 2016 12:46:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 8 Jun 2016 12:46:21 +0000 (UTC) To: 23729@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jun 08 14:46:14 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bAcs7-00061z-JU for geb-bug-gnu-emacs@m.gmane.org; Wed, 08 Jun 2016 14:46:11 +0200 Original-Received: from localhost ([::1]:56778 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAcs7-00052x-2w for geb-bug-gnu-emacs@m.gmane.org; Wed, 08 Jun 2016 08:46:11 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAcs0-00052q-Js for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:46:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bAcry-0002oj-4d for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:46:03 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:47571) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAcry-0002of-0V for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:46:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bAcrx-0006PM-PS for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:46:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michal Nazarewicz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 08 Jun 2016 12:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 23729 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.146538990124535 (code B ref -1); Wed, 08 Jun 2016 12:46:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 8 Jun 2016 12:45:01 +0000 Original-Received: from localhost ([127.0.0.1]:59908 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bAcqy-0006NO-V3 for submit@debbugs.gnu.org; Wed, 08 Jun 2016 08:45:01 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:33431) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bAcqx-0006N9-3Q for submit@debbugs.gnu.org; Wed, 08 Jun 2016 08:44:59 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bAcqq-0002Yu-92 for submit@debbugs.gnu.org; Wed, 08 Jun 2016 08:44:53 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:36304) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAcqq-0002Yg-5K for submit@debbugs.gnu.org; Wed, 08 Jun 2016 08:44:52 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52620) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAcqn-0004nG-Dq for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:44:50 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bAcqm-0002YM-01 for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:44:49 -0400 Original-Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:37254) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAcql-0002Y8-EL for bug-gnu-emacs@gnu.org; Wed, 08 Jun 2016 08:44:47 -0400 Original-Received: by mail-wm0-x22d.google.com with SMTP id k204so15360945wmk.0 for ; Wed, 08 Jun 2016 05:44:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=cEjlpf6/sqdO4IS4LW2LEsfMcT4EEQGLPKld8ZJOmSc=; b=fedt9QHp8NLuCLEWJvBralIh0mfvDrrM27YiJyb9927sLf3NOFyxqqVVf/UY58mJIl BHdVAcryLeJsoElkIu6ye57R00ZsMEoxOWTTZmiSbWxpid6Cpchhl8+rctch0bK6m27L mybeLGZoqftYDnmLigvgrB7wyfimGJ6bPC2cgx63NMS1rGInhv8iKMSKXAHM1m4W4JyO w1k4RT5cebcgsMbH/FlKjV7Yljr56JAvALShOVX/he1NpIKwKKF1CSdgukCSeHvdExLF 7OzGpAaSvW1wkrdg0rWZ/F2j4QEmqIiBDXUl9MBq3Gkd10FuMGZUtDQ3dN2+EMOM8WEn iEpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :mime-version:content-transfer-encoding; bh=cEjlpf6/sqdO4IS4LW2LEsfMcT4EEQGLPKld8ZJOmSc=; b=a+3Og4OYBV6tF0mssvJdzeQuVzwvugBb8lB4tlENd+FRur+trWziCPJxPpC9eVf7VS rrrgNPN/oHROk6VP4as4qapLmPfEdblsIhRVeCsM3Dg6yl0d+5DbezfUs8i7406w9oCq 2J89d3CFiPjdsLRdsRhqCoaldYULix2tuYVmuZ+3H6E9y6SmT/6YpJly3VXVOu4Ig9OY hH69JkenakYAL2T/32cQ3ZQFjPtuJsWYneKEs4BONdgRs1rVEglZ4wKjBgvToFFq9nze vo41rsy+15aVU7UgP1r/zy7sPnPd8BF+99gHnL+kTcCRXBEzYvu/JTwcasRfv/9shIEe i3Ew== X-Gm-Message-State: ALyK8tKF3xA51nyHbMlulo2s+UUnR4smeZaLf/8doKp7y+q9N603hxzf0IaZ72zwu3w5oc09 X-Received: by 10.195.17.138 with SMTP id ge10mr4864023wjd.94.1465389885799; Wed, 08 Jun 2016 05:44:45 -0700 (PDT) Original-Received: from mpn.zrh.corp.google.com ([172.16.113.135]) by smtp.gmail.com with ESMTPSA id s1sm1296258wjf.43.2016.06.08.05.44.44 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Jun 2016 05:44:45 -0700 (PDT) Original-Received: by mpn.zrh.corp.google.com (Postfix, from userid 126942) id 238DD1E0274; Wed, 8 Jun 2016 14:44:44 +0200 (CEST) X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:119268 Archived-At: * lisp/emacs-lisp/ert-x.el (ert-with-function-mocked): Remove macro in favour of ‘cl-letf’ macro which is more generic. All existing uses are migrated accordingly. The macro has not been included in an official release yet so it should be fine to delete it. --- etc/NEWS | 3 --- lisp/emacs-lisp/ert-x.el | 40 -------------------------------- test/lisp/calendar/icalendar-tests.el | 3 +-- test/lisp/emacs-lisp/ert-x-tests.el | 43 ----------------------------------- test/lisp/gnus/message-tests.el | 2 +- test/lisp/vc/vc-bzr-tests.el | 3 +-- 6 files changed, 3 insertions(+), 91 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 1ae8ff6..d8583cf 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -418,9 +418,6 @@ by setting 'autoload-timestamps' to nil. FIXME As an experiment, nil is the current default. If no insurmountable problems before next release, it can stay that way. -** 'ert-with-function-mocked' of 'ert-x package allows mocking of functions -in unit tests. - --- ** 'gnutls-boot' now takes a parameter :complete-negotiation that says that negotiation should complete even on non-blocking sockets. diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el index 67cb102..2a2418f 100644 --- a/lisp/emacs-lisp/ert-x.el +++ b/lisp/emacs-lisp/ert-x.el @@ -285,46 +285,6 @@ ert-buffer-string-reindented (kill-buffer clone))))))) -(defmacro ert-with-function-mocked (name mock &rest body) - "Mocks function NAME with MOCK and run BODY. - -Once BODY finishes (be it normally by returning a value or -abnormally by throwing or signaling), the old definition of -function NAME is restored. - -BODY may further change the mock with `fset'. - -If MOCK is nil, the function NAME is mocked with a function -`ert-fail'ing when called. - -For example: - - ;; Regular use, function is mocked inside the BODY: - (should (eq 2 (+ 1 1))) - (ert-with-function-mocked ((+ (lambda (a b) (- a b)))) - (should (eq 0 (+ 1 1)))) - (should (eq 2 (+ 1 1))) - - ;; Macro correctly recovers from a throw or signal: - (should - (catch 'done - (ert-with-function-mocked ((+ (lambda (a b) (- a b)))) - (should (eq 0 (+ 1 1)))) - (throw 'done t))) - (should (eq 2 (+ 1 1))) -" - (declare (indent 2)) - (let ((old-var (make-symbol "old-var")) - (mock-var (make-symbol "mock-var"))) - `(let ((,old-var (symbol-function (quote ,name))) (,mock-var ,mock)) - (fset (quote ,name) - (or ,mock-var (lambda (&rest _) - (ert-fail (concat "`" ,(symbol-name name) - "' unexpectedly called."))))) - (unwind-protect - (progn ,@body) - (fset (quote ,name) ,old-var))))) - (provide 'ert-x) ;;; ert-x.el ends here diff --git a/test/lisp/calendar/icalendar-tests.el b/test/lisp/calendar/icalendar-tests.el index 20d8834..6db4222 100644 --- a/test/lisp/calendar/icalendar-tests.el +++ b/test/lisp/calendar/icalendar-tests.el @@ -32,7 +32,6 @@ ;;; Code: (require 'ert) -(require 'ert-x) (require 'icalendar) ;; ====================================================================== @@ -64,7 +63,7 @@ icalendar-tests--trim (hash (format "%d" (abs (sxhash entry-full)))) (contents "DTSTART:19640630T070100\nblahblah") (username (or user-login-name "UNKNOWN_USER"))) - (ert-with-function-mocked current-time (lambda () '(1 2 3)) + (cl-letf (((symbol-function 'current-time) (lambda () '(1 2 3)))) (should (= 77 icalendar--uid-count)) (should (string= (concat "xxx-123-77-" hash "-" username "-19640630") (icalendar--create-uid entry-full contents))) diff --git a/test/lisp/emacs-lisp/ert-x-tests.el b/test/lisp/emacs-lisp/ert-x-tests.el index a2665e7..ef8642a 100644 --- a/test/lisp/emacs-lisp/ert-x-tests.el +++ b/test/lisp/emacs-lisp/ert-x-tests.el @@ -275,49 +275,6 @@ ert--hash-table-to-alist (should (equal (c x) (lisp x)))))) -(defun ert--dummy-id (a) - "Identity function. Used for tests only." - a) - -(ert-deftest ert-with-function-mocked () - (let ((mock-id (lambda (_) 21))) - (should (eq 42 (ert--dummy-id 42))) - - (ert-with-function-mocked ert--dummy-id nil - (fset 'ert--dummy-id mock-id) - (should (eq 21 (ert--dummy-id 42)))) - (should (eq 42 (ert--dummy-id 42))) - - (ert-with-function-mocked ert--dummy-id mock-id - (should (eq 21 (ert--dummy-id 42)))) - (should (eq 42 (ert--dummy-id 42))) - - (should - (catch 'exit - (ert-with-function-mocked ert--dummy-id mock-id - (should (eq 21 (ert--dummy-id 42)))) - (throw 'exit t))) - (should (eq 42 (ert--dummy-id 42))) - - (should - (string= "Foo" - (condition-case err - (progn - (ert-with-function-mocked ert--dummy-id mock-id - (should (eq 21 (ert--dummy-id 42)))) - (user-error "Foo")) - (user-error (cadr err))))) - (should (eq 42 (ert--dummy-id 42))) - - (should - (string= "`ert--dummy-id' unexpectedly called." - (condition-case err - (ert-with-function-mocked ert--dummy-id nil - (ert--dummy-id 42)) - (ert-test-failed (cadr err))))) - (should (eq 42 (ert--dummy-id 42))))) - - (provide 'ert-x-tests) ;;; ert-x-tests.el ends here diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index ae34f24..13c15e3 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el @@ -57,7 +57,7 @@ (ert-deftest message-strip-subject-trailing-was () - (ert-with-function-mocked message-talkative-question nil + (cl-letf (((symbol-function 'message-talkative-question) nil)) (with-temp-buffer (let ((no-was "Re: Foo ") (with-was "Re: Foo \t (was: Bar ) ") diff --git a/test/lisp/vc/vc-bzr-tests.el b/test/lisp/vc/vc-bzr-tests.el index 98d176c..f27e658 100644 --- a/test/lisp/vc/vc-bzr-tests.el +++ b/test/lisp/vc/vc-bzr-tests.el @@ -25,7 +25,6 @@ ;;; Code: (require 'ert) -(require 'ert-x) (require 'vc-bzr) (require 'vc-dir) @@ -102,7 +101,7 @@ (while (vc-dir-busy) (sit-for 0.1)) (vc-dir-mark-all-files t) - (ert-with-function-mocked y-or-n-p (lambda (_) t) + (cl-letf (((symbol-function 'y-or-n-p) (lambda (_) t))) (vc-next-action nil)) (should (get-buffer "*vc-log*"))) (delete-directory homedir t)))) -- 2.8.0.rc3.226.g39d4020