1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* test/dl/test_{base,handle}.rb: use more verbose assertions.

* test/dl/test_import.rb (DL::LIBC::BoundQsortCallback): renamed
  to get rid of overwriting warning.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-02-16 10:03:02 +00:00
parent 53dddcf88e
commit da2497745e
6 changed files with 30 additions and 23 deletions

View file

@ -1,3 +1,10 @@
Tue Feb 16 19:02:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/dl/test_{base,handle}.rb: use more verbose assertions.
* test/dl/test_import.rb (DL::LIBC::BoundQsortCallback): renamed
to get rid of overwriting warning.
Tue Feb 16 11:03:19 2010 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/dl/method.c: Adding DL::Method as a superclass for DL::Function

View file

@ -147,12 +147,12 @@ rb_dlcfunc_initialize(int argc, VALUE argv[], VALUE self)
struct cfunc_data *data;
void *saddr;
const char *sname;
rb_scan_args(argc, argv, "13", &addr, &type, &name, &calltype);
saddr = (void*)(NUM2PTR(rb_Integer(addr)));
sname = NIL_P(name) ? NULL : StringValuePtr(name);
TypedData_Get_Struct(self, struct cfunc_data, &dlcfunc_data_type, data);
if( data->name ) xfree(data->name);
data->ptr = saddr;
@ -286,9 +286,9 @@ rb_dlcfunc_inspect(VALUE self)
char *str;
int str_size;
struct cfunc_data *cfunc;
TypedData_Get_Struct(self, struct cfunc_data, &dlcfunc_data_type, cfunc);
str_size = (cfunc->name ? strlen(cfunc->name) : 0) + 100;
str = ruby_xmalloc(str_size);
snprintf(str, str_size - 1,
@ -339,14 +339,14 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
memset(stack, 0, sizeof(DLSTACK_TYPE) * DLSTACK_SIZE);
Check_Type(ary, T_ARRAY);
TypedData_Get_Struct(self, struct cfunc_data, &dlcfunc_data_type, cfunc);
if( cfunc->ptr == 0 ){
rb_raise(rb_eDLError, "can't call null-function");
return Qnil;
}
for( i = 0; i < RARRAY_LEN(ary); i++ ){
if( i >= DLSTACK_SIZE ){
rb_raise(rb_eDLError, "too many arguments (stack overflow)");
@ -354,7 +354,7 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
rb_check_safe_obj(RARRAY_PTR(ary)[i]);
stack[i] = NUM2LONG(RARRAY_PTR(ary)[i]);
}
/* calltype == CFUNC_CDECL */
if( cfunc->calltype == CFUNC_CDECL
#ifndef FUNC_STDCALL

View file

@ -104,7 +104,7 @@ rb_dlptr2cptr(VALUE val)
else{
rb_raise(rb_eTypeError, "DL::PtrData was expected");
}
return ptr;
}

View file

@ -66,11 +66,11 @@ module DL
end
def assert_match(expected, actual, message="")
assert(expected === actual, message)
assert_operator(expected, :===, actual, message)
end
def assert_positive(actual)
assert(actual > 0)
assert_operator(actual, :>, 0)
end
def assert_zero(actual)
@ -78,7 +78,7 @@ module DL
end
def assert_negative(actual)
assert(actual < 0)
assert_operator(actual, :<, 0)
end
def test_empty()

View file

@ -4,7 +4,7 @@ module DL
class TestHandle < TestBase
def test_to_i
handle = DL::Handle.new(LIBC_SO)
assert handle.to_i
assert_kind_of Integer, handle.to_i
end
def test_static_sym_secure
@ -22,7 +22,7 @@ module DL
end
def test_static_sym
assert DL::Handle.sym('dlopen')
assert_not_nil DL::Handle.sym('dlopen')
assert_equal DL::Handle.sym('dlopen'), DL::Handle['dlopen']
end
@ -57,8 +57,8 @@ module DL
def test_sym
handle = DL::Handle.new(LIBC_SO)
assert handle.sym('calloc')
assert handle['calloc']
assert_not_nil handle.sym('calloc')
assert_not_nil handle['calloc']
end
def test_handle_close
@ -98,12 +98,12 @@ module DL
def test_initialize_noargs
handle = DL::Handle.new
assert handle['rb_str_new']
assert_not_nil handle['rb_str_new']
end
def test_initialize_flags
handle = DL::Handle.new(LIBC_SO, DL::RTLD_LAZY | DL::RTLD_GLOBAL)
assert handle['calloc']
assert_not_nil handle['calloc']
end
def test_enable_close
@ -134,7 +134,7 @@ module DL
# library.
# --- Ubuntu Linux 8.04 dlsym(3)
handle = DL::Handle::NEXT
assert handle['malloc']
assert_not_nil handle['malloc']
rescue
# BSD
#
@ -145,19 +145,19 @@ module DL
# called from a shared library, all subsequent shared libraries are
# searched. RTLD_NEXT is useful for implementing wrappers around library
# functions. For example, a wrapper function getpid() could access the
# “real” getpid() with dlsym(RTLD_NEXT, "getpid"). (Actually, the dlfunc()
# "real" getpid() with dlsym(RTLD_NEXT, "getpid"). (Actually, the dlfunc()
# interface, below, should be used, since getpid() is a function and not a
# data object.)
# --- FreeBSD 8.0 dlsym(3)
require 'objspace'
handle = DL::Handle::NEXT
assert handle['Init_objspace']
assert_not_nil handle['Init_objspace']
end
end
def test_DEFAULT
handle = DL::Handle::DEFAULT
assert handle['malloc']
assert_not_nil handle['malloc']
end
end
end

View file

@ -18,7 +18,7 @@ module DL
extern "int gettimeofday(timeval*, timezone*)" rescue nil
QsortCallback = bind("void *qsort_callback(void*, void*)", :temp)
BoundQsortCallback = bind("void *qsort_callback(void*, void*)"){|ptr1,ptr2| ptr1[0] <=> ptr2[0]}
BoundQsortCallback = bind("void *bound_qsort_callback(void*, void*)"){|ptr1,ptr2| ptr1[0] <=> ptr2[0]}
Timeval = struct [
"long tv_sec",
"long tv_usec",