From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Aleksei Gusev Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] (compilation-error-regexp-alist-alist): added regexps for ruby backtraces, ruby's Test::Unit output, cucumber output. Date: Sat, 10 Jul 2010 08:29:17 +0300 Message-ID: <87r5jbq502.fsf@gmail.com> References: <871vbdptnn.fsf@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1278739792 7590 80.91.229.12 (10 Jul 2010 05:29:52 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 10 Jul 2010 05:29:52 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jul 10 07:29:51 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OXSdI-0000i8-9b for ged-emacs-devel@m.gmane.org; Sat, 10 Jul 2010 07:29:48 +0200 Original-Received: from localhost ([127.0.0.1]:55126 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OXSdH-0002Ny-LZ for ged-emacs-devel@m.gmane.org; Sat, 10 Jul 2010 01:29:47 -0400 Original-Received: from [140.186.70.92] (port=42198 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OXSd5-0002NH-Fj for emacs-devel@gnu.org; Sat, 10 Jul 2010 01:29:37 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OXSd3-0004XS-LD for emacs-devel@gnu.org; Sat, 10 Jul 2010 01:29:35 -0400 Original-Received: from lo.gmane.org ([80.91.229.12]:58707) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OXSd3-0004X4-7Q for emacs-devel@gnu.org; Sat, 10 Jul 2010 01:29:33 -0400 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1OXScz-0000bN-BG for emacs-devel@gnu.org; Sat, 10 Jul 2010 07:29:29 +0200 Original-Received: from 178.120.80.146 ([178.120.80.146]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 10 Jul 2010 07:29:29 +0200 Original-Received: from aleksei.gusev by 178.120.80.146 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 10 Jul 2010 07:29:29 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 195 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 178.120.80.146 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:3hh2b7rbUvh3adUfUQ9+06PA2Gk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:126981 Archived-At: Is there any chance to get apply this patch on trunk? Maybe I do something wrong in codebase? I think many rubists will be very appreciated if Emacs will know about ruby backtraces out of the box. ;] Aleksei Gusev writes: > Signed-off-by: Aleksei Gusev > --- > etc/compilation.txt | 102 +++++++++++++++++++++++++++++++++++++++++++-- > lisp/progmodes/compile.el | 13 +++++- > 2 files changed, 110 insertions(+), 5 deletions(-) > > diff --git a/etc/compilation.txt b/etc/compilation.txt > index d6a236d..2041b7f 100644 > --- a/etc/compilation.txt > +++ b/etc/compilation.txt > @@ -93,6 +93,55 @@ symbol: comma > "foo.adb", line 2(11): warning: file name does not match ... > "src/swapping.c", line 30.34: 1506-342 (W) "/*" detected in comment. > > +* Cucumber > + > +symbol: cucumber > + > +Feature: This is an example for backtrace. > + > + Scenario: undefined step # features/cucumber.feature:3 > + Given this is undefined # features/cucumber.feature:4 > + > + Scenario: assertion false (Test::Unit) # features/cucumber.feature:6 > + Given this will generate 'assert false' # features/step_definitions/default_steps.rb:1 > + is not true. (Test::Unit::AssertionFailedError) > + /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:48:in `assert_block' > + /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:500:in `_wrap_assertion' > + /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:46:in `assert_block' > + /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:63:in `assert' > + /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:495:in `_wrap_assertion' > + /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:61:in `assert' > + ./features/step_definitions/default_steps.rb:2:in `/^this will generate 'assert false'$/' > + features/cucumber.feature:7:in `Given this will generate 'assert false'' > + > + Scenario: assertion false (RSpec) # features/cucumber.feature:9 > + Given this will generate 'should be_true' # features/step_definitions/default_steps.rb:5 > + expected true to be false (Spec::Expectations::ExpectationNotMetError) > + ./features/step_definitions/default_steps.rb:6:in `/^this will generate 'should be_true'$/' > + features/cucumber.feature:10:in `Given this will generate 'should be_true'' > + > + Scenario: backtrace in step definition # features/cucumber.feature:12 > + Given this will generate backtrace # features/step_definitions/default_steps.rb:9 > + (RuntimeError) > + ./features/step_definitions/default_steps.rb:10:in `/^this will generate backtrace$/' > + features/cucumber.feature:13:in `Given this will generate backtrace' > + > + Scenario: deeep backtrace in step definition # features/cucumber.feature:15 > + Given this will generate deep backtrace # features/step_definitions/default_steps.rb:13 > + (RuntimeError) > + ./features/step_definitions/default_steps.rb:18:in `deep' > + ./features/step_definitions/default_steps.rb:14:in `/^this will generate deep backtrace$/' > + features/cucumber.feature:16:in `Given this will generate deep backtrace' > + > +Failing Scenarios: > +cucumber features/cucumber.feature:6 # Scenario: assertion false (Test::Unit) > +cucumber features/cucumber.feature:9 # Scenario: assertion false (RSpec) > +cucumber features/cucumber.feature:12 # Scenario: backtrace in step definition > +cucumber features/cucumber.feature:15 # Scenario: deeep backtrace in step definition > + > +5 scenarios (4 failed, 1 undefined) > +5 steps (4 failed, 1 undefined) > +0m0.007s > > * EDG C/C++ > > @@ -318,6 +367,51 @@ symbol: php > Parse error: parse error, unexpected $ in main.php on line 59 > Fatal error: Call to undefined function: mysql_pconnect() in db.inc on line 66 > > +* Ruby > + > +symbol: ruby > + > +plain-exception.rb:7:in `fun': unhandled exception > + from plain-exception.rb:3:in `proxy' > + from plain-exception.rb:12 > + > +* Ruby (Test::Unit) > + > +symbol: ruby-Test::Unit > + > +Loaded suite examples/test-unit > +Started > +FFFE > +Finished in 0.023173 seconds. > + > + 1) Failure: > +test_a_deep_assert(BacktracesTest) > + [examples/test-unit.rb:28:in `here_is_a_deep_assert' > + examples/test-unit.rb:19:in `test_a_deep_assert']: > + is not true. > + > + 2) Failure: > +test_assert(BacktracesTest) [examples/test-unit.rb:5]: > + is not true. > + > + 3) Failure: > +test_assert_raise(BacktracesTest) [examples/test-unit.rb:9]: > +Exception raised: > +Class: > +Message: <""> > +---Backtrace--- > +examples/test-unit.rb:10:in `test_assert_raise' > +examples/test-unit.rb:9:in `test_assert_raise' > +--------------- > + > + 4) Error: > +test_backtrace(BacktracesTest): > +NoMethodError: undefined method `not_exists' for nil:NilClass > + examples/test-unit.rb:24:in `some_function_call_from_nil' > + examples/test-unit.rb:15:in `test_backtrace' > + > +4 tests, 3 assertions, 3 failures, 1 errors > + > * RXP > > symbol: rxp > @@ -375,11 +469,11 @@ bloofle defined( /users/wolfgang/foo.c(4) ), but never used > > * GCOV (test coverage program) > > -symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line > +symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line > > -: 0:Source:foo.c > -: 0:Object:foo.bb > - -: 1:/* $ gcc -fprofile-arcs -ftest-coverage foo.c > + -: 1:/* $ gcc -fprofile-arcs -ftest-coverage foo.c > -: 2: $ ./a.out > -: 3: $ gcov foo.c > -: 4: LANG=C gcov foo.c > @@ -393,10 +487,10 @@ symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line > 1: 12: r = 1; > #####: 13: else if (argc == 2) > #####: 14: r = 2; > - -: 15: else > + -: 15: else > #####: 16: r = 0; > 1: 17: return r; > - -: 18:} > + -: 18:} > > > * Podchecker error messages, per Pod::Checker > diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el > index 7000b4b..e9cf5d4 100644 > --- a/lisp/progmodes/compile.el > +++ b/lisp/progmodes/compile.el > @@ -196,6 +196,10 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1)) > "^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\ > \\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4)) > > + (cucumber > + "\\(?:^cucumber\\(?: -p [^[:space:]]+\\)?\\|#\\)\ > +\\(?: \\)\\([^\(].*\\):\\([1-9][0-9]*\\)" 1 2) > + > (edg-1 > "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)" > 1 2 nil (3 . 4)) > @@ -325,6 +329,13 @@ during global destruction\\.$\\)" 1 2) > "\\(?:Parse\\|Fatal\\) error: \\(.*\\) in \\(.*\\) on line \\([0-9]+\\)" > 2 3 nil nil) > > + (ruby > + "^[\t ]*\\(?:from \\)?\ > +\\([^\(\n][^[:space:]\n]*\\):\\([1-9][0-9]*\\)\\(:in `.*'\\)?.*$" 1 2) > + > + (ruby-Test::Unit > + "[\t ]*\\[\\([^\(].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:" 1 2) > + > (rxp > "^\\(?:Error\\|Warnin\\(g\\)\\):.*\n.* line \\([0-9]+\\) char\ > \\([0-9]+\\) of file://\\(.+\\)" > @@ -2083,7 +2094,7 @@ and overlay is highlighted between MK and END-MK." > pre-existing > (let ((display-buffer-reuse-frames t) > (pop-up-windows t)) > - ;; Pop up a window. > + ;; Pop up a window. > (display-buffer (marker-buffer msg))))) > (highlight-regexp (with-current-buffer (marker-buffer msg) > ;; also do this while we change buffer -- WBR, Aleksei Gusev