mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Update to ruby/spec@e69a14c
This commit is contained in:
		
							parent
							
								
									f9a9f3c7c6
								
							
						
					
					
						commit
						a17bc04d15
					
				
					 8 changed files with 158 additions and 8 deletions
				
			
		| 
						 | 
					@ -5,4 +5,12 @@ require_relative 'shared/collect_concat'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe "Enumerator::Lazy#flat_map" do
 | 
					describe "Enumerator::Lazy#flat_map" do
 | 
				
			||||||
  it_behaves_like :enumerator_lazy_collect_concat, :flat_map
 | 
					  it_behaves_like :enumerator_lazy_collect_concat, :flat_map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it "properly unwraps nested yields" do
 | 
				
			||||||
 | 
					    s = Enumerator.new do |y| loop do y << [1, 2] end end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expected = s.take(3).flat_map { |x| x }.to_a
 | 
				
			||||||
 | 
					    actual = s.lazy.take(3).flat_map{ |x| x }.force
 | 
				
			||||||
 | 
					    actual.should == expected
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								spec/ruby/core/gc/stat_spec.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								spec/ruby/core/gc/stat_spec.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					require_relative '../../spec_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe "GC.stat" do
 | 
				
			||||||
 | 
					  it "supports access by key" do
 | 
				
			||||||
 | 
					    keys = [:heap_free_slots, :total_allocated_objects, :count]
 | 
				
			||||||
 | 
					    keys.each do |key|
 | 
				
			||||||
 | 
					      GC.stat(key).should be_kind_of(Integer)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it "returns hash of values" do
 | 
				
			||||||
 | 
					    stat = GC.stat
 | 
				
			||||||
 | 
					    stat.should be_kind_of(Hash)
 | 
				
			||||||
 | 
					    stat.keys.should include(:count)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -101,6 +101,16 @@ describe "Kernel#warn" do
 | 
				
			||||||
        -> { w.f4("foo", 3) }.should output(nil, %r|core/kernel/fixtures/classes.rb:#{w.f3_call_lineno}: warning: foo|)
 | 
					        -> { w.f4("foo", 3) }.should output(nil, %r|core/kernel/fixtures/classes.rb:#{w.f3_call_lineno}: warning: foo|)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it "converts first arg using to_s" do
 | 
				
			||||||
 | 
					        w = KernelSpecs::WarnInNestedCall.new
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        -> { w.f4(false, 0) }.should output(nil, %r|core/kernel/fixtures/classes.rb:#{w.warn_call_lineno}: warning: false|)
 | 
				
			||||||
 | 
					        -> { w.f4(nil, 1) }.should output(nil, %r|core/kernel/fixtures/classes.rb:#{w.f1_call_lineno}: warning: |)
 | 
				
			||||||
 | 
					        obj = mock("obj")
 | 
				
			||||||
 | 
					        obj.should_receive(:to_s).and_return("to_s called")
 | 
				
			||||||
 | 
					        -> { w.f4(obj, 2) }.should output(nil, %r|core/kernel/fixtures/classes.rb:#{w.f2_call_lineno}: warning: to_s called|)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it "does not prepend caller information if line number is too big" do
 | 
					      it "does not prepend caller information if line number is too big" do
 | 
				
			||||||
        w = KernelSpecs::WarnInNestedCall.new
 | 
					        w = KernelSpecs::WarnInNestedCall.new
 | 
				
			||||||
        -> { w.f4("foo", 100) }.should output(nil, "warning: foo\n")
 | 
					        -> { w.f4("foo", 100) }.should output(nil, "warning: foo\n")
 | 
				
			||||||
| 
						 | 
					@ -136,5 +146,11 @@ describe "Kernel#warn" do
 | 
				
			||||||
        -> { warn "", uplevel: Object.new }.should raise_error(TypeError)
 | 
					        -> { warn "", uplevel: Object.new }.should raise_error(TypeError)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "treats empty hash as no keyword argument" do
 | 
				
			||||||
 | 
					      h = {}
 | 
				
			||||||
 | 
					      -> { warn(**h) }.should_not complain(verbose: true)
 | 
				
			||||||
 | 
					      -> { warn('foo', **h) }.should complain("foo\n")
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,18 @@ describe 'Optional variable assignments' do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        a.should == 10
 | 
					        a.should == 10
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'returns the new value if set to false' do
 | 
				
			||||||
 | 
					        a = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        (a ||= 20).should == 20
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'returns the original value if truthy' do
 | 
				
			||||||
 | 
					        a = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        (a ||= 20).should == 10
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    describe 'using a accessor' do
 | 
					    describe 'using a accessor' do
 | 
				
			||||||
| 
						 | 
					@ -89,6 +101,49 @@ describe 'Optional variable assignments' do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @a.b.should == 10
 | 
					        @a.b.should == 10
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'returns the new value if set to false' do
 | 
				
			||||||
 | 
					        def @a.b=(x)
 | 
				
			||||||
 | 
					          :v
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @a.b = false
 | 
				
			||||||
 | 
					        (@a.b ||= 20).should == 20
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'returns the original value if truthy' do
 | 
				
			||||||
 | 
					        def @a.b=(x)
 | 
				
			||||||
 | 
					          @b = x
 | 
				
			||||||
 | 
					          :v
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @a.b = 10
 | 
				
			||||||
 | 
					        (@a.b ||= 20).should == 10
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'works when writer is private' do
 | 
				
			||||||
 | 
					        klass = Class.new do
 | 
				
			||||||
 | 
					          def t
 | 
				
			||||||
 | 
					            self.b = false
 | 
				
			||||||
 | 
					            (self.b ||= 10).should == 10
 | 
				
			||||||
 | 
					            (self.b ||= 20).should == 10
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          def b
 | 
				
			||||||
 | 
					            @b
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          def b=(x)
 | 
				
			||||||
 | 
					            @b = x
 | 
				
			||||||
 | 
					            :v
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          private :b=
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        klass.new.t
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										30
									
								
								spec/ruby/library/rubygems/gem/bin_path_spec.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								spec/ruby/library/rubygems/gem/bin_path_spec.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					require_relative '../../../spec_helper'
 | 
				
			||||||
 | 
					require 'rubygems'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe "Gem.bin_path" do
 | 
				
			||||||
 | 
					  before :each do
 | 
				
			||||||
 | 
					    @bundle_gemfile = ENV['BUNDLE_GEMFILE']
 | 
				
			||||||
 | 
					    ENV['BUNDLE_GEMFILE'] = tmp("no-gemfile")
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  after :each do
 | 
				
			||||||
 | 
					    ENV['BUNDLE_GEMFILE'] = @bundle_gemfile
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it "finds executables of default gems, which are the only files shipped for default gems" do
 | 
				
			||||||
 | 
					    # For instance, Gem.bin_path("bundler", "bundle") is used by rails new
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if Gem.respond_to? :default_specifications_dir
 | 
				
			||||||
 | 
					      default_specifications_dir = Gem.default_specifications_dir
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      default_specifications_dir = Gem::Specification.default_specifications_dir
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Gem::Specification.each_spec([default_specifications_dir]) do |spec|
 | 
				
			||||||
 | 
					      spec.executables.each do |exe|
 | 
				
			||||||
 | 
					        path = Gem.bin_path(spec.name, exe)
 | 
				
			||||||
 | 
					        File.exist?(path).should == true
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -14,14 +14,9 @@ extern "C" {
 | 
				
			||||||
 * On TruffleRuby RSTRING_PTR and the bytes remain in managed memory
 | 
					 * On TruffleRuby RSTRING_PTR and the bytes remain in managed memory
 | 
				
			||||||
 * until they must be written to native memory.
 | 
					 * until they must be written to native memory.
 | 
				
			||||||
 * In some specs we want to test using the native memory. */
 | 
					 * In some specs we want to test using the native memory. */
 | 
				
			||||||
char* NATIVE_RSTRING_PTR(VALUE str) {
 | 
					#ifndef NATIVE_RSTRING_PTR
 | 
				
			||||||
  char* ptr = RSTRING_PTR(str);
 | 
					#define NATIVE_RSTRING_PTR(str) RSTRING_PTR(str)
 | 
				
			||||||
  char** native = malloc(sizeof(char*));
 | 
					#endif
 | 
				
			||||||
  *native = ptr;
 | 
					 | 
				
			||||||
  ptr = *native;
 | 
					 | 
				
			||||||
  free(native);
 | 
					 | 
				
			||||||
  return ptr;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
VALUE string_spec_rb_cstr2inum(VALUE self, VALUE str, VALUE inum) {
 | 
					VALUE string_spec_rb_cstr2inum(VALUE self, VALUE str, VALUE inum) {
 | 
				
			||||||
  int num = FIX2INT(inum);
 | 
					  int num = FIX2INT(inum);
 | 
				
			||||||
| 
						 | 
					@ -124,6 +119,10 @@ VALUE string_spec_rb_str_conv_enc_opts(VALUE self, VALUE str, VALUE from, VALUE
 | 
				
			||||||
  return rb_str_conv_enc_opts(str, from_enc, to_enc, FIX2INT(ecflags), ecopts);
 | 
					  return rb_str_conv_enc_opts(str, from_enc, to_enc, FIX2INT(ecflags), ecopts);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					VALUE string_spec_rb_str_drop_bytes(VALUE self, VALUE str, VALUE len) {
 | 
				
			||||||
 | 
					  return rb_str_drop_bytes(str, NUM2LONG(len));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VALUE string_spec_rb_str_export(VALUE self, VALUE str) {
 | 
					VALUE string_spec_rb_str_export(VALUE self, VALUE str) {
 | 
				
			||||||
  return rb_str_export(str);
 | 
					  return rb_str_export(str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -427,6 +426,7 @@ void Init_string_spec(void) {
 | 
				
			||||||
  rb_define_method(cls, "rb_str_cmp", string_spec_rb_str_cmp, 2);
 | 
					  rb_define_method(cls, "rb_str_cmp", string_spec_rb_str_cmp, 2);
 | 
				
			||||||
  rb_define_method(cls, "rb_str_conv_enc", string_spec_rb_str_conv_enc, 3);
 | 
					  rb_define_method(cls, "rb_str_conv_enc", string_spec_rb_str_conv_enc, 3);
 | 
				
			||||||
  rb_define_method(cls, "rb_str_conv_enc_opts", string_spec_rb_str_conv_enc_opts, 5);
 | 
					  rb_define_method(cls, "rb_str_conv_enc_opts", string_spec_rb_str_conv_enc_opts, 5);
 | 
				
			||||||
 | 
					  rb_define_method(cls, "rb_str_drop_bytes", string_spec_rb_str_drop_bytes, 2);
 | 
				
			||||||
  rb_define_method(cls, "rb_str_export", string_spec_rb_str_export, 1);
 | 
					  rb_define_method(cls, "rb_str_export", string_spec_rb_str_export, 1);
 | 
				
			||||||
  rb_define_method(cls, "rb_str_export_locale", string_spec_rb_str_export_locale, 1);
 | 
					  rb_define_method(cls, "rb_str_export_locale", string_spec_rb_str_export_locale, 1);
 | 
				
			||||||
  rb_define_method(cls, "rb_str_dup", string_spec_rb_str_dup, 1);
 | 
					  rb_define_method(cls, "rb_str_dup", string_spec_rb_str_dup, 1);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -322,6 +322,11 @@ describe "CApiModule" do
 | 
				
			||||||
      @class.should_not have_instance_method(:ruby_test_method)
 | 
					      @class.should_not have_instance_method(:ruby_test_method)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "undefines private methods also" do
 | 
				
			||||||
 | 
					      @m.rb_undef_method @class, "initialize_copy"
 | 
				
			||||||
 | 
					      -> { @class.new.dup }.should raise_error(NoMethodError)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it "does not raise exceptions when passed a missing name" do
 | 
					    it "does not raise exceptions when passed a missing name" do
 | 
				
			||||||
      -> { @m.rb_undef_method @class, "not_exist" }.should_not raise_error
 | 
					      -> { @m.rb_undef_method @class, "not_exist" }.should_not raise_error
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -977,4 +977,24 @@ end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe "rb_str_drop_bytes" do
 | 
				
			||||||
 | 
					    it "drops N characters for an ASCII string" do
 | 
				
			||||||
 | 
					      str = "12345678".encode("US-ASCII")
 | 
				
			||||||
 | 
					      @s.rb_str_drop_bytes(str, 4)
 | 
				
			||||||
 | 
					      str.should == "5678".encode("US-ASCII")
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "drop N/2 characters for a UTF-16 string" do
 | 
				
			||||||
 | 
					      str = "12345678".encode("UTF-16LE")
 | 
				
			||||||
 | 
					      @s.rb_str_drop_bytes(str, 4)
 | 
				
			||||||
 | 
					      str.should == "345678".encode("UTF-16LE")
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "drop N/4 characters for a UTF-32 string" do
 | 
				
			||||||
 | 
					      str = "12345678".encode("UTF-32LE")
 | 
				
			||||||
 | 
					      @s.rb_str_drop_bytes(str, 4)
 | 
				
			||||||
 | 
					      str.should == "2345678".encode("UTF-32LE")
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue