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