mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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:
parent
c98b8d622b
commit
4079a35447
3 changed files with 51 additions and 4 deletions
|
@ -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>
|
Tue Oct 28 14:51:38 2014 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* configure.in: remove apple-gcc4.2 from CC candidates.
|
* configure.in: remove apple-gcc4.2 from CC candidates.
|
||||||
|
|
4
ruby.c
4
ruby.c
|
@ -1415,8 +1415,10 @@ process_options(int argc, char **argv, struct cmdline_options *opt)
|
||||||
eenc = lenc;
|
eenc = lenc;
|
||||||
}
|
}
|
||||||
rb_enc_associate(opt->e_script, eenc);
|
rb_enc_associate(opt->e_script, eenc);
|
||||||
|
if (!(opt->dump & ~DUMP_BIT(version_v))) {
|
||||||
ruby_set_script_name(opt->script_name);
|
ruby_set_script_name(opt->script_name);
|
||||||
require_libraries(&opt->req_list);
|
require_libraries(&opt->req_list);
|
||||||
|
}
|
||||||
ruby_set_script_name(progname);
|
ruby_set_script_name(progname);
|
||||||
|
|
||||||
PREPARE_PARSE_MAIN({
|
PREPARE_PARSE_MAIN({
|
||||||
|
@ -1612,9 +1614,11 @@ load_file_internal2(VALUE argp_v)
|
||||||
if (f != rb_stdin) rb_io_close(f);
|
if (f != rb_stdin) rb_io_close(f);
|
||||||
f = Qnil;
|
f = Qnil;
|
||||||
}
|
}
|
||||||
|
if (!(opt->dump & ~DUMP_BIT(version_v))) {
|
||||||
ruby_set_script_name(opt->script_name);
|
ruby_set_script_name(opt->script_name);
|
||||||
require_libraries(&opt->req_list); /* Why here? unnatural */
|
require_libraries(&opt->req_list); /* Why here? unnatural */
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (opt->src.enc.index >= 0) {
|
if (opt->src.enc.index >= 0) {
|
||||||
enc = rb_enc_from_index(opt->src.enc.index);
|
enc = rb_enc_from_index(opt->src.enc.index);
|
||||||
}
|
}
|
||||||
|
|
|
@ -710,4 +710,41 @@ class TestRubyOptions < Test::Unit::TestCase
|
||||||
bug7157 = '[ruby-core:47967]'
|
bug7157 = '[ruby-core:47967]'
|
||||||
assert_in_out_err(['-p', '-e', 'sub(/t.*/){"TEST"}'], %[test], %w[TEST], [], bug7157)
|
assert_in_out_err(['-p', '-e', 'sub(/t.*/){"TEST"}'], %[test], %w[TEST], [], bug7157)
|
||||||
end
|
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
|
end
|
||||||
|
|
Loading…
Reference in a new issue