From 0de805f62bda2cbfac2a0c6392bdf7cae014cde4 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 20 Dec 2012 02:05:37 +0000 Subject: envutil.rb: validate syntax * test/ruby/envutil.rb (assert_valid_syntax): move from test_syntax.rb. * test/ruby/envutil.rb (assert_normal_exit): validate syntax before running because this assertion passes even if the code fails by SyntaxError. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ test/ruby/envutil.rb | 16 ++++++++++++++++ test/ruby/test_syntax.rb | 15 --------------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b31d0e39e..3a6a4c7eb3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Thu Dec 20 11:05:26 2012 Nobuyoshi Nakada + + * test/ruby/envutil.rb (assert_valid_syntax): move from + test_syntax.rb. + + * test/ruby/envutil.rb (assert_normal_exit): validate syntax before + running because this assertion passes even if the code fails by + SyntaxError. + Thu Dec 20 10:29:58 2012 Martin Bosslet * test/openssl/test_pkey_dh.rb: revert special treatment of diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb index 6006ae75b4..42a9bf0aa6 100644 --- a/test/ruby/envutil.rb +++ b/test/ruby/envutil.rb @@ -133,7 +133,23 @@ module Test module Unit module Assertions public + def assert_valid_syntax(code, fname, mesg = fname) + code = code.dup.force_encoding("ascii-8bit") + code.sub!(/\A(?:\xef\xbb\xbf)?(\s*\#.*$)*(\n)?/n) { + "#$&#{"\n" if $1 && !$2}BEGIN{throw tag, :ok}\n" + } + code.force_encoding("us-ascii") + verbose, $VERBOSE = $VERBOSE, nil + yield if defined?(yield) + assert_nothing_raised(SyntaxError, mesg) do + assert_equal(:ok, catch {|tag| eval(code, binding, fname, 0)}, mesg) + end + ensure + $VERBOSE = verbose + end + def assert_normal_exit(testsrc, message = '', opt = {}) + assert_valid_syntax(testsrc, caller_locations(1, 1)[0].path) if opt.include?(:child_env) opt = opt.dup child_env = [opt.delete(:child_env)] || [] diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index f9f279d751..b2d625cd2a 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -2,21 +2,6 @@ require 'test/unit' require_relative 'envutil' class TestSyntax < Test::Unit::TestCase - def assert_valid_syntax(code, fname, mesg = fname) - code = code.dup.force_encoding("ascii-8bit") - code.sub!(/\A(?:\xef\xbb\xbf)?(\s*\#.*$)*(\n)?/n) { - "#$&#{"\n" if $1 && !$2}BEGIN{throw tag, :ok}\n" - } - code.force_encoding("us-ascii") - verbose, $VERBOSE = $VERBOSE, nil - yield if defined?(yield) - assert_nothing_raised(SyntaxError, mesg) do - assert_equal(:ok, catch {|tag| eval(code, binding, fname, 0)}, mesg) - end - ensure - $VERBOSE = verbose - end - def test_syntax assert_nothing_raised(Exception) do for script in Dir[File.expand_path("../../../{lib,sample,ext,test}/**/*.rb", __FILE__)].sort -- cgit v1.2.3