зеркало из https://github.com/github/ruby.git
ruby.c: no -r when dump
* ruby.c (process_options, load_file_internal2): should not require other files when dump option is given. [ruby-dev:48712] [Bug #10435] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
c98b8d622b
Коммит
4079a35447
|
@ -1,3 +1,9 @@
|
|||
Tue Oct 28 16:22:41 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ruby.c (process_options, load_file_internal2): should not
|
||||
require other files when dump option is given.
|
||||
[ruby-dev:48712] [Bug #10435]
|
||||
|
||||
Tue Oct 28 14:51:38 2014 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* configure.in: remove apple-gcc4.2 from CC candidates.
|
||||
|
|
12
ruby.c
12
ruby.c
|
@ -1415,8 +1415,10 @@ process_options(int argc, char **argv, struct cmdline_options *opt)
|
|||
eenc = lenc;
|
||||
}
|
||||
rb_enc_associate(opt->e_script, eenc);
|
||||
ruby_set_script_name(opt->script_name);
|
||||
require_libraries(&opt->req_list);
|
||||
if (!(opt->dump & ~DUMP_BIT(version_v))) {
|
||||
ruby_set_script_name(opt->script_name);
|
||||
require_libraries(&opt->req_list);
|
||||
}
|
||||
ruby_set_script_name(progname);
|
||||
|
||||
PREPARE_PARSE_MAIN({
|
||||
|
@ -1612,8 +1614,10 @@ load_file_internal2(VALUE argp_v)
|
|||
if (f != rb_stdin) rb_io_close(f);
|
||||
f = Qnil;
|
||||
}
|
||||
ruby_set_script_name(opt->script_name);
|
||||
require_libraries(&opt->req_list); /* Why here? unnatural */
|
||||
if (!(opt->dump & ~DUMP_BIT(version_v))) {
|
||||
ruby_set_script_name(opt->script_name);
|
||||
require_libraries(&opt->req_list); /* Why here? unnatural */
|
||||
}
|
||||
}
|
||||
if (opt->src.enc.index >= 0) {
|
||||
enc = rb_enc_from_index(opt->src.enc.index);
|
||||
|
|
|
@ -710,4 +710,41 @@ class TestRubyOptions < Test::Unit::TestCase
|
|||
bug7157 = '[ruby-core:47967]'
|
||||
assert_in_out_err(['-p', '-e', 'sub(/t.*/){"TEST"}'], %[test], %w[TEST], [], bug7157)
|
||||
end
|
||||
|
||||
def assert_norun_with_rflag(opt)
|
||||
bug10435 = "[ruby-dev:48712] [Bug #10435]: should not run with #{opt} option"
|
||||
stderr = []
|
||||
Tempfile.create(%w"bug10435- .rb") do |script|
|
||||
dir, base = File.split(script.path)
|
||||
script.puts "abort ':run'"
|
||||
script.close
|
||||
opts = ['-C', dir, '-r', "./#{base}", opt]
|
||||
assert_in_out_err([*opts, '-ep']) do |_, e|
|
||||
stderr.concat(e)
|
||||
end
|
||||
stderr << "---"
|
||||
assert_in_out_err([*opts, base]) do |_, e|
|
||||
stderr.concat(e)
|
||||
end
|
||||
end
|
||||
assert_not_include(stderr, ":run", bug10435)
|
||||
end
|
||||
|
||||
def test_dump_syntax_with_rflag
|
||||
assert_norun_with_rflag('-c')
|
||||
assert_norun_with_rflag('--dump=syntax')
|
||||
end
|
||||
|
||||
def test_dump_yydebug_with_rflag
|
||||
assert_norun_with_rflag('-y')
|
||||
assert_norun_with_rflag('--dump=yydebug')
|
||||
end
|
||||
|
||||
def test_dump_parsetree_with_rflag
|
||||
assert_norun_with_rflag('--dump=parsetree')
|
||||
end
|
||||
|
||||
def test_dump_insns_with_rflag
|
||||
assert_norun_with_rflag('--dump=insns')
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче