From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: npostavs@users.sourceforge.net Newsgroups: gmane.emacs.bugs Subject: bug#17851: Some ert tests fail when run compiled Date: Wed, 07 Sep 2016 21:15:48 -0400 Message-ID: <87r38v19a3.fsf@users.sourceforge.net> References: <3etx78b4bo.fsf@fencepost.gnu.org> <87vaystgmy.fsf@users.sourceforge.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1473297385 9052 195.159.176.226 (8 Sep 2016 01:16:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 8 Sep 2016 01:16:25 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) Cc: 17851@debbugs.gnu.org To: Glenn Morris Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Sep 08 03:16:19 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bhnwu-0001Ml-6Y for geb-bug-gnu-emacs@m.gmane.org; Thu, 08 Sep 2016 03:16:16 +0200 Original-Received: from localhost ([::1]:44215 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhnwr-00026Q-St for geb-bug-gnu-emacs@m.gmane.org; Wed, 07 Sep 2016 21:16:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhnwl-00025y-Ci for bug-gnu-emacs@gnu.org; Wed, 07 Sep 2016 21:16:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bhnwg-0004rn-7F for bug-gnu-emacs@gnu.org; Wed, 07 Sep 2016 21:16:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:55295) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhnwg-0004ri-34 for bug-gnu-emacs@gnu.org; Wed, 07 Sep 2016 21:16:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bhnwf-0000aM-P8 for bug-gnu-emacs@gnu.org; Wed, 07 Sep 2016 21:16:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: npostavs@users.sourceforge.net Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Sep 2016 01:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17851 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 17851-submit@debbugs.gnu.org id=B17851.14732973352216 (code B ref 17851); Thu, 08 Sep 2016 01:16:01 +0000 Original-Received: (at 17851) by debbugs.gnu.org; 8 Sep 2016 01:15:35 +0000 Original-Received: from localhost ([127.0.0.1]:53007 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bhnwF-0000Zf-0F for submit@debbugs.gnu.org; Wed, 07 Sep 2016 21:15:35 -0400 Original-Received: from mail-it0-f50.google.com ([209.85.214.50]:37284) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bhnwE-0000ZQ-0O for 17851@debbugs.gnu.org; Wed, 07 Sep 2016 21:15:34 -0400 Original-Received: by mail-it0-f50.google.com with SMTP id e124so53754367ith.0 for <17851@debbugs.gnu.org>; Wed, 07 Sep 2016 18:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=LYcjI8y5rx52QRw8aMY2ChCb0UEkiPTMkTg3VOG41u0=; b=NlYXWTpvZTdJnbzu+A81S4KbNhjwD7vcNAdYvpG6xVFAgjccEV5tbTlyLl/IVSFc32 evKV+6HcxNcLIEqZCMHPReUjTGVM9yMCy6le8Som38CI6UuoeVp9ZTPW9dm2PqCup+fu YZHcUR3pUtH44hq+izsVZc97afk0N57KShzWPfBv3NWAj8ICUQ744FaYZLcM/31pAcEw bB6hxC7/cPdrG3TTRZw68k23v8rfT3zV6NmbRatgs5e0hBurdLnz4Tta1JujKVs/dQ/O Co1gSTk0qFnPCTB9GCcBR9j6Av9rf0hSPE5UBC2AhN3wZWdUsj3LDdM3bZ1UIzTVe+5S poeA== 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:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=LYcjI8y5rx52QRw8aMY2ChCb0UEkiPTMkTg3VOG41u0=; b=HrKWjoAIaz4d3CqWs13btYtcbEDEbplNZBketNL4wRm7M2wbfwTSfKe1mPg8P0gHNc NYdb3XcQCQaZRotv0jqbfu4a+u4ZH1KV6WeY/x/hbt49bU9XvRj5B3rs7MuG8Qy9uiBt uDf38tWh41znnaY4tnkXC7zYaEjYz81wn8dZ3oEhCSwGiFY+b2pB6wZHv0KGMxPtq1OL zs1zv7Re95vNhgaQpdWDsmhGAza7x+z0bdZbHaDU5sXTPaN6fFnw7mn4NevNLDRI7Nlh N1Kq6KrFfFiH0Rqb1m5AA+XVn7V0MSXHPkdyhA4dNPjAvWdz35D+i8kPC9pAI4Vw71Xt 2Q7w== X-Gm-Message-State: AE9vXwM+ja19euIn/syzjexdoIEDhsZFJtBSXjVst3hwPmcOKaXWOOAgvAMJdYtAGuxwAw== X-Received: by 10.36.147.68 with SMTP id y65mr12059205itd.76.1473297328435; Wed, 07 Sep 2016 18:15:28 -0700 (PDT) Original-Received: from zony ([45.2.7.130]) by smtp.googlemail.com with ESMTPSA id z125sm759093itc.0.2016.09.07.18.15.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Sep 2016 18:15:27 -0700 (PDT) In-Reply-To: <87vaystgmy.fsf@users.sourceforge.net> (npostavs@users.sourceforge.net's message of "Mon, 22 Aug 2016 21:31:49 -0400") 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:123077 Archived-At: --=-=-= Content-Type: text/plain npostavs@users.sourceforge.net writes: > > First one is an overly implementation specific test, second seems to be > a bug in the `should' macro. Here's a patch to fix both (and also > another nearby test that was too implementation specific): Had some minor problems in the test (I must have run only an intermediate version before), here's a new patch. --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=v2-0001-Fix-ert-tests-when-running-compiled.patch Content-Description: patch v2 >From 8ee7db328a275710fd9999757b5578514a83be6c Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 21 Aug 2016 22:58:37 -0400 Subject: [PATCH v2] Fix ert-tests when running compiled * test/lisp/emacs-lisp/ert-tests.el (ert-test-deftest): Don't test for specific macroexpansion, just check result of evaluation. (ert-test-record-backtrace): Don't hardcode representation of closure in expected backtrace, this lets the test succeed even when the test code is compiled (Bug #17851). * lisp/emacs-lisp/ert.el (ert--expand-should-1): Also pass `byte-compile-macro-environment' to `macroexpand', this allows the `should' macro to properly handle macroexpansion of macros that were defined in the same file when it's being compiled (Bug #17851). --- lisp/emacs-lisp/ert.el | 11 ++++--- test/lisp/emacs-lisp/ert-tests.el | 68 +++++++++++++-------------------------- 2 files changed, 29 insertions(+), 50 deletions(-) diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index 0308c9c..89f83dd 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el @@ -276,11 +276,12 @@ ert--special-operator-p (defun ert--expand-should-1 (whole form inner-expander) "Helper function for the `should' macro and its variants." (let ((form - (macroexpand form (cond - ((boundp 'macroexpand-all-environment) - macroexpand-all-environment) - ((boundp 'cl-macro-environment) - cl-macro-environment))))) + (macroexpand form (append byte-compile-macro-environment + (cond + ((boundp 'macroexpand-all-environment) + macroexpand-all-environment) + ((boundp 'cl-macro-environment) + cl-macro-environment)))))) (cond ((or (atom form) (ert--special-operator-p (car form))) (let ((value (cl-gensym "value-"))) diff --git a/test/lisp/emacs-lisp/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el index 5d36755..83fddd1 100644 --- a/test/lisp/emacs-lisp/ert-tests.el +++ b/test/lisp/emacs-lisp/ert-tests.el @@ -344,53 +344,35 @@ ert--test-my-list ((error) (should (equal actual-condition expected-condition))))))) +(defun ert-test--which-file () + "Dummy function to help test `symbol-file' for tests.") + (ert-deftest ert-test-deftest () - ;; FIXME: These tests don't look very good. What is their intent, i.e. what - ;; are they really testing? The precise generated code shouldn't matter, so - ;; we should either test the behavior of the code, or else try to express the - ;; kind of efficiency guarantees we're looking for. - (should (equal (macroexpand '(ert-deftest abc () "foo" :tags '(bar))) - '(progn - (ert-set-test 'abc - (progn - "Constructor for objects of type `ert-test'." - (vector 'cl-struct-ert-test 'abc "foo" - #'(lambda nil) - nil ':passed - '(bar)))) - (setq current-load-list - (cons - '(ert-deftest . abc) - current-load-list)) - 'abc))) - (should (equal (macroexpand '(ert-deftest def () - :expected-result ':passed)) - '(progn - (ert-set-test 'def - (progn - "Constructor for objects of type `ert-test'." - (vector 'cl-struct-ert-test 'def nil - #'(lambda nil) - nil ':passed 'nil))) - (setq current-load-list - (cons - '(ert-deftest . def) - current-load-list)) - 'def))) + (ert-deftest ert-test-abc () "foo" :tags '(bar)) + (let ((abc (ert-get-test 'ert-test-abc))) + (should (equal (ert-test-tags abc) '(bar))) + (should (equal (ert-test-documentation abc) "foo"))) + (should (equal (symbol-file 'ert-test-deftest 'ert-deftest) + (symbol-file 'ert-test--which-file 'defun))) + + (ert-deftest ert-test-def () :expected-result ':passed) + (let ((def (ert-get-test 'ert-test-def))) + (should (equal (ert-test-expected-result-type def) :passed))) ;; :documentation keyword is forbidden (should-error (macroexpand '(ert-deftest ghi () :documentation "foo")))) (ert-deftest ert-test-record-backtrace () - (let ((test (make-ert-test :body (lambda () (ert-fail "foo"))))) - (let ((result (ert-run-test test))) - (should (ert-test-failed-p result)) - (with-temp-buffer - (ert--print-backtrace (ert-test-failed-backtrace result)) - (goto-char (point-min)) - (end-of-line) - (let ((first-line (buffer-substring-no-properties (point-min) (point)))) - (should (equal first-line " (closure (ert--test-body-was-run t) nil (ert-fail \"foo\"))()"))))))) + (let* ((test-body (lambda () (ert-fail "foo"))) + (test (make-ert-test :body test-body)) + (result (ert-run-test test))) + (should (ert-test-failed-p result)) + (with-temp-buffer + (ert--print-backtrace (ert-test-failed-backtrace result)) + (goto-char (point-min)) + (end-of-line) + (let ((first-line (buffer-substring-no-properties (point-min) (point)))) + (should (equal first-line (format " %S()" test-body))))))) (ert-deftest ert-test-messages () :tags '(:causes-redisplay) @@ -837,7 +819,3 @@ ert--test-my-list (provide 'ert-tests) ;;; ert-tests.el ends here - -;; Local Variables: -;; no-byte-compile: t -;; End: -- 2.9.3 --=-=-=--