diff options
Diffstat (limited to 'spec/ruby/command_line')
-rw-r--r-- | spec/ruby/command_line/dash_upper_c_spec.rb | 23 | ||||
-rw-r--r-- | spec/ruby/command_line/dash_upper_x_spec.rb | 6 | ||||
-rw-r--r-- | spec/ruby/command_line/feature_spec.rb | 65 | ||||
-rw-r--r-- | spec/ruby/command_line/fixtures/change_directory_script.rb (renamed from spec/ruby/command_line/fixtures/dash_upper_c_script.rb) | 0 | ||||
-rw-r--r-- | spec/ruby/command_line/rubylib_spec.rb | 1 | ||||
-rw-r--r-- | spec/ruby/command_line/shared/change_directory.rb | 21 |
6 files changed, 96 insertions, 20 deletions
diff --git a/spec/ruby/command_line/dash_upper_c_spec.rb b/spec/ruby/command_line/dash_upper_c_spec.rb index 761beaadab..ece1b32105 100644 --- a/spec/ruby/command_line/dash_upper_c_spec.rb +++ b/spec/ruby/command_line/dash_upper_c_spec.rb @@ -1,23 +1,6 @@ require_relative '../spec_helper' +require_relative 'shared/change_directory' -describe 'The -C command line option' do - before :all do - @script = fixture(__FILE__, 'dash_upper_c_script.rb') - @tempdir = File.dirname(@script) - end - - it 'changes the PWD when using a file' do - output = ruby_exe(@script, options: "-C #{@tempdir}") - output.should == @tempdir - end - - it 'does not need a space after -C for the argument' do - output = ruby_exe(@script, options: "-C#{@tempdir}") - output.should == @tempdir - end - - it 'changes the PWD when using -e' do - output = ruby_exe(nil, options: "-C #{@tempdir} -e 'print Dir.pwd'") - output.should == @tempdir - end +describe "The -C command line option" do + it_behaves_like :command_line_change_directory, "-C" end diff --git a/spec/ruby/command_line/dash_upper_x_spec.rb b/spec/ruby/command_line/dash_upper_x_spec.rb new file mode 100644 index 0000000000..8ef9aae4b1 --- /dev/null +++ b/spec/ruby/command_line/dash_upper_x_spec.rb @@ -0,0 +1,6 @@ +require_relative '../spec_helper' +require_relative 'shared/change_directory' + +describe "The -X command line option" do + it_behaves_like :command_line_change_directory, "-X" +end diff --git a/spec/ruby/command_line/feature_spec.rb b/spec/ruby/command_line/feature_spec.rb new file mode 100644 index 0000000000..fa2a82cb4b --- /dev/null +++ b/spec/ruby/command_line/feature_spec.rb @@ -0,0 +1,65 @@ +require_relative '../spec_helper' + +describe "The --enable and --disable flags" do + + it "can be used with gems" do + ruby_exe("p defined?(Gem)", options: "--enable=gems").chomp.should == "\"constant\"" + ruby_exe("p defined?(Gem)", options: "--disable=gems").chomp.should == "nil" + ruby_exe("p defined?(Gem)", options: "--enable-gems").chomp.should == "\"constant\"" + ruby_exe("p defined?(Gem)", options: "--disable-gems").chomp.should == "nil" + end + + it "can be used with gem" do + ruby_exe("p defined?(Gem)", options: "--enable=gem").chomp.should == "\"constant\"" + ruby_exe("p defined?(Gem)", options: "--disable=gem").chomp.should == "nil" + ruby_exe("p defined?(Gem)", options: "--enable-gem").chomp.should == "\"constant\"" + ruby_exe("p defined?(Gem)", options: "--disable-gem").chomp.should == "nil" + end + + it "can be used with did_you_mean" do + ruby_exe("p defined?(DidYouMean)", options: "--enable=did_you_mean").chomp.should == "\"constant\"" + ruby_exe("p defined?(DidYouMean)", options: "--disable=did_you_mean").chomp.should == "nil" + ruby_exe("p defined?(DidYouMean)", options: "--enable-did_you_mean").chomp.should == "\"constant\"" + ruby_exe("p defined?(DidYouMean)", options: "--disable-did_you_mean").chomp.should == "nil" + end + + it "can be used with rubyopt" do + ruby_exe("p $VERBOSE", options: "--enable=rubyopt", env: {'RUBYOPT' => '-w'}).chomp.should == "true" + ruby_exe("p $VERBOSE", options: "--disable=rubyopt", env: {'RUBYOPT' => '-w'}).chomp.should == "false" + ruby_exe("p $VERBOSE", options: "--enable-rubyopt", env: {'RUBYOPT' => '-w'}).chomp.should == "true" + ruby_exe("p $VERBOSE", options: "--disable-rubyopt", env: {'RUBYOPT' => '-w'}).chomp.should == "false" + end + + it "can be used with frozen-string-literal" do + ruby_exe("p 'foo'.frozen?", options: "--enable=frozen-string-literal").chomp.should == "true" + ruby_exe("p 'foo'.frozen?", options: "--disable=frozen-string-literal").chomp.should == "false" + ruby_exe("p 'foo'.frozen?", options: "--enable-frozen-string-literal").chomp.should == "true" + ruby_exe("p 'foo'.frozen?", options: "--disable-frozen-string-literal").chomp.should == "false" + end + + ruby_version_is "2.6" do + it "can be used with jit" do + ruby_exe("p RubyVM::MJIT.enabled?", options: "--enable=jit").chomp.should == "true" + ruby_exe("p RubyVM::MJIT.enabled?", options: "--disable=jit").chomp.should == "false" + ruby_exe("p RubyVM::MJIT.enabled?", options: "--enable-jit").chomp.should == "true" + ruby_exe("p RubyVM::MJIT.enabled?", options: "--disable-jit").chomp.should == "false" + end + end + + it "can be used with all" do + e = "p [defined?(Gem), defined?(DidYouMean), $VERBOSE, 'foo'.frozen?]" + env = {'RUBYOPT' => '-w'} + ruby_exe(e, options: "--enable=all", env: env).chomp.should == "[\"constant\", \"constant\", true, true]" + ruby_exe(e, options: "--enable-all", env: env).chomp.should == "[\"constant\", \"constant\", true, true]" + ruby_exe(e, options: "--disable=all", env: env).chomp.should == "[nil, nil, false, false]" + ruby_exe(e, options: "--disable-all", env: env).chomp.should == "[nil, nil, false, false]" + end + + it "prints a warning for unknown features" do + ruby_exe("p 14", options: "--enable=ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --enable') + ruby_exe("p 14", options: "--disable=ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --disable') + ruby_exe("p 14", options: "--enable-ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --enable') + ruby_exe("p 14", options: "--disable-ruby-spec-feature-does-not-exist 2>&1").chomp.should include('warning: unknown argument for --disable') + end + +end diff --git a/spec/ruby/command_line/fixtures/dash_upper_c_script.rb b/spec/ruby/command_line/fixtures/change_directory_script.rb index abe244705f..abe244705f 100644 --- a/spec/ruby/command_line/fixtures/dash_upper_c_script.rb +++ b/spec/ruby/command_line/fixtures/change_directory_script.rb diff --git a/spec/ruby/command_line/rubylib_spec.rb b/spec/ruby/command_line/rubylib_spec.rb index 20e9c2cf95..b45919b997 100644 --- a/spec/ruby/command_line/rubylib_spec.rb +++ b/spec/ruby/command_line/rubylib_spec.rb @@ -30,6 +30,7 @@ describe "The RUBYLIB environment variable" do dir = tmp("rubylib/incl_front") ENV["RUBYLIB"] = @pre + dir paths = ruby_exe("puts $LOAD_PATH").lines.map(&:chomp) + paths.shift if paths.first.end_with?('/gem-rehash') if PlatformGuard.implementation? :ruby # In a MRI checkout, $PWD and some extra -I entries end up as # the first entries in $LOAD_PATH. So just assert that it's not last. diff --git a/spec/ruby/command_line/shared/change_directory.rb b/spec/ruby/command_line/shared/change_directory.rb new file mode 100644 index 0000000000..9cb6e90ac6 --- /dev/null +++ b/spec/ruby/command_line/shared/change_directory.rb @@ -0,0 +1,21 @@ +describe :command_line_change_directory, shared: true do + before :all do + @script = fixture(__FILE__, 'change_directory_script.rb') + @tempdir = File.dirname(@script) + end + + it 'changes the PWD when using a file' do + output = ruby_exe(@script, options: "#{@method} #{@tempdir}") + output.should == @tempdir + end + + it 'does not need a space after -C for the argument' do + output = ruby_exe(@script, options: "#{@method}#{@tempdir}") + output.should == @tempdir + end + + it 'changes the PWD when using -e' do + output = ruby_exe(nil, options: "#{@method} #{@tempdir} -e 'print Dir.pwd'") + output.should == @tempdir + end +end |