ruby-oci8 2.1.5.1-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +17 -0
- data/COPYING +30 -0
- data/COPYING_old +64 -0
- data/ChangeLog +2779 -0
- data/Makefile +92 -0
- data/NEWS +660 -0
- data/README.md +43 -0
- data/VERSION +1 -0
- data/dist-files +91 -0
- data/docs/install-binary-package.md +40 -0
- data/docs/install-full-client.md +116 -0
- data/docs/install-instant-client.md +167 -0
- data/docs/platform-specific-issues.md +197 -0
- data/docs/report-installation-issue.md +50 -0
- data/lib/.document +1 -0
- data/lib/dbd/OCI8.rb +591 -0
- data/lib/oci8.rb +147 -0
- data/lib/oci8.rb.in +147 -0
- data/lib/oci8/.document +8 -0
- data/lib/oci8/bindtype.rb +350 -0
- data/lib/oci8/compat.rb +113 -0
- data/lib/oci8/connection_pool.rb +108 -0
- data/lib/oci8/cursor.rb +564 -0
- data/lib/oci8/datetime.rb +605 -0
- data/lib/oci8/encoding-init.rb +79 -0
- data/lib/oci8/encoding.yml +537 -0
- data/lib/oci8/metadata.rb +2092 -0
- data/lib/oci8/object.rb +605 -0
- data/lib/oci8/oci8.rb +560 -0
- data/lib/oci8/ocihandle.rb +607 -0
- data/lib/oci8/oracle_version.rb +143 -0
- data/lib/oci8/properties.rb +134 -0
- data/lib/oci8lib_200.so +0 -0
- data/metaconfig +142 -0
- data/pre-distclean.rb +7 -0
- data/ruby-oci8.gemspec +80 -0
- data/setup.rb +1333 -0
- data/test/README +42 -0
- data/test/config.rb +184 -0
- data/test/setup_test_object.sql +171 -0
- data/test/test_all.rb +54 -0
- data/test/test_appinfo.rb +63 -0
- data/test/test_array_dml.rb +333 -0
- data/test/test_bind_raw.rb +46 -0
- data/test/test_bind_string.rb +106 -0
- data/test/test_bind_time.rb +178 -0
- data/test/test_break.rb +124 -0
- data/test/test_clob.rb +98 -0
- data/test/test_connection_pool.rb +125 -0
- data/test/test_connstr.rb +81 -0
- data/test/test_datetime.rb +581 -0
- data/test/test_dbi.rb +366 -0
- data/test/test_dbi_clob.rb +53 -0
- data/test/test_encoding.rb +104 -0
- data/test/test_error.rb +88 -0
- data/test/test_metadata.rb +1485 -0
- data/test/test_object.rb +462 -0
- data/test/test_oci8.rb +489 -0
- data/test/test_oracle_version.rb +70 -0
- data/test/test_oradate.rb +256 -0
- data/test/test_oranumber.rb +787 -0
- data/test/test_rowid.rb +33 -0
- metadata +109 -0
data/test/README
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
Before runing unit test:
|
2
|
+
|
3
|
+
1. connect to Oracle as system:
|
4
|
+
|
5
|
+
$ sqlplus system/<password_of_system>
|
6
|
+
|
7
|
+
2. create user ruby:
|
8
|
+
|
9
|
+
SQL> CREATE USER ruby IDENTIFIED BY oci8;
|
10
|
+
|
11
|
+
or
|
12
|
+
|
13
|
+
SQL> CREATE USER ruby IDENTIFIED BY oci8
|
14
|
+
2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
|
15
|
+
|
16
|
+
3. grant the privilege to connect and execute.
|
17
|
+
|
18
|
+
SQL> GRANT connect, resource, create view TO ruby;
|
19
|
+
|
20
|
+
4. connect to Oracle as sys
|
21
|
+
|
22
|
+
$ sqlplus 'sys/<password_of_sys> as sysdba'
|
23
|
+
|
24
|
+
5. grant privileges
|
25
|
+
|
26
|
+
SQL> GRANT EXECUTE ON dbms_lock TO ruby;
|
27
|
+
SQL> GRANT CREATE VIEW TO ruby;
|
28
|
+
|
29
|
+
6. connect as ruby user.
|
30
|
+
|
31
|
+
$ sqlplus ruby/oci8
|
32
|
+
|
33
|
+
7. Create object types
|
34
|
+
|
35
|
+
SQL> @test/setup_test_object.sql
|
36
|
+
|
37
|
+
8. change $dbname if the database
|
38
|
+
|
39
|
+
Then you can run:
|
40
|
+
$ make check
|
41
|
+
or
|
42
|
+
$ nmake check (If your compiler is MS Visual C++.)
|
data/test/config.rb
ADDED
@@ -0,0 +1,184 @@
|
|
1
|
+
# $dbuser must have permission to run DBMS_LOCK.SLEEP
|
2
|
+
# connect as sys
|
3
|
+
# GRANT EXECUTE ON dbms_lock TO ruby;
|
4
|
+
$dbuser = "ruby"
|
5
|
+
$dbpass = "oci8"
|
6
|
+
$dbname = nil
|
7
|
+
|
8
|
+
# for test_bind_string_as_nchar in test_encoding.rb
|
9
|
+
ENV['ORA_NCHAR_LITERAL_REPLACE'] = 'TRUE' if OCI8.client_charset_name.include? 'UTF8'
|
10
|
+
|
11
|
+
# test_clob.rb
|
12
|
+
|
13
|
+
nls_lang = ENV['NLS_LANG']
|
14
|
+
nls_lang = nls_lang.split('.')[1] unless nls_lang.nil?
|
15
|
+
nls_lang = nls_lang.upcase unless nls_lang.nil?
|
16
|
+
$lobfile = File.dirname(__FILE__) + '/../setup.rb'
|
17
|
+
$lobreadnum = 256 # counts in charactors
|
18
|
+
|
19
|
+
# don't modify below.
|
20
|
+
|
21
|
+
# $oracle_server_version: database compatible level of the Oracle server.
|
22
|
+
# $oracle_client_version: Oracle client library version for which oci8 is compiled.
|
23
|
+
# $oracle_version: lower value of $oracle_server_version and $oracle_client_version.
|
24
|
+
conn = OCI8.new($dbuser, $dbpass, $dbname)
|
25
|
+
begin
|
26
|
+
conn.exec('select value from database_compatible_level') do |row|
|
27
|
+
$oracle_server_version = OCI8::OracleVersion.new(row[0])
|
28
|
+
end
|
29
|
+
rescue OCIError
|
30
|
+
raise if $!.code != 942 # ORA-00942: table or view does not exist
|
31
|
+
$oracle_server_version = OCI8::ORAVER_8_0
|
32
|
+
end
|
33
|
+
conn.logoff
|
34
|
+
|
35
|
+
if $oracle_server_version < OCI8.oracle_client_version
|
36
|
+
$oracle_version = $oracle_server_version
|
37
|
+
else
|
38
|
+
$oracle_version = OCI8.oracle_client_version
|
39
|
+
end
|
40
|
+
|
41
|
+
if $oracle_version < OCI8::ORAVER_8_1
|
42
|
+
$test_clob = false
|
43
|
+
else
|
44
|
+
$test_clob = true
|
45
|
+
end
|
46
|
+
|
47
|
+
begin
|
48
|
+
Time.new(2001, 1, 1, 0, 0, 0, '+00:00')
|
49
|
+
# ruby 1.9.2 or later
|
50
|
+
def convert_to_time(year, month, day, hour, minute, sec, subsec, timezone)
|
51
|
+
subsec ||= 0
|
52
|
+
if timezone
|
53
|
+
# with time zone
|
54
|
+
Time.new(year, month, day, hour, minute, sec + subsec, timezone)
|
55
|
+
else
|
56
|
+
# without time zone
|
57
|
+
Time.local(year, month, day, hour, minute, sec, subsec * 1000000)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
rescue
|
61
|
+
# ruby 1.9.1 or former
|
62
|
+
def convert_to_time(year, month, day, hour, minute, sec, subsec, timezone)
|
63
|
+
subsec ||= 0
|
64
|
+
if timezone
|
65
|
+
# with time zone
|
66
|
+
/([+-])(\d+):(\d+)/ =~ timezone
|
67
|
+
offset = ($1 + '1').to_i * ($2.to_i * 60 + $3.to_i)
|
68
|
+
if offset == 0
|
69
|
+
Time.utc(year, month, day, hour, minute, sec, subsec * 1000000)
|
70
|
+
else
|
71
|
+
tm = Time.local(year, month, day, hour, minute, sec, subsec * 1000000)
|
72
|
+
raise "Failed to convert #{str} to Time" if tm.utc_offset != offset * 60
|
73
|
+
tm
|
74
|
+
end
|
75
|
+
else
|
76
|
+
# without time zone
|
77
|
+
Time.local(year, month, day, hour, minute, sec, subsec * 1000000)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def convert_to_datetime(year, month, day, hour, minute, sec, subsec, timezone)
|
83
|
+
subsec ||= 0
|
84
|
+
utc_offset = if timezone
|
85
|
+
# with time zone
|
86
|
+
/([+-])(\d+):(\d+)/ =~ timezone
|
87
|
+
($1 + '1').to_i * ($2.to_i * 60 + $3.to_i) * 60
|
88
|
+
else
|
89
|
+
Time.local(year, month, day, hour, minute, sec).utc_offset
|
90
|
+
end
|
91
|
+
begin
|
92
|
+
DateTime.civil(year, month, day, hour, minute, sec + subsec, utc_offset.to_r / 86400)
|
93
|
+
rescue ArgumentError
|
94
|
+
raise $! if $!.to_s != 'invalid date'
|
95
|
+
# for ruby 1.8.6.
|
96
|
+
# convert to a DateTime via a String as a workaround.
|
97
|
+
if utc_offset >= 0
|
98
|
+
sign = ?+
|
99
|
+
else
|
100
|
+
sign = ?-
|
101
|
+
utc_offset = - utc_offset;
|
102
|
+
end
|
103
|
+
tz_min = utc_offset / 60
|
104
|
+
tz_hour, tz_min = tz_min.divmod 60
|
105
|
+
time_str = format("%04d-%02d-%02dT%02d:%02d:%02d.%09d%c%02d:%02d",
|
106
|
+
year, month, day, hour, minute, sec, (subsec * 1000_000_000).to_i, sign, tz_hour, tz_min)
|
107
|
+
::DateTime.parse(time_str)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
module Test
|
112
|
+
module Unit
|
113
|
+
class TestCase
|
114
|
+
|
115
|
+
def get_oci8_connection()
|
116
|
+
OCI8.new($dbuser, $dbpass, $dbname)
|
117
|
+
rescue OCIError
|
118
|
+
raise if $!.code != 12516 && $!.code != 12520
|
119
|
+
# sleep a few second and try again if
|
120
|
+
# the error code is ORA-12516 or ORA-12520.
|
121
|
+
#
|
122
|
+
# ORA-12516 - TNS:listener could not find available handler with
|
123
|
+
# matching protocol stack
|
124
|
+
# ORA-12520 - TNS:listener could not find available handler for
|
125
|
+
# requested type of server
|
126
|
+
#
|
127
|
+
# Thanks to Christopher Jones.
|
128
|
+
#
|
129
|
+
# Ref: The Underground PHP and Oracle Manual (page 175 in vesion 1.4)
|
130
|
+
# http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf
|
131
|
+
#
|
132
|
+
sleep(5)
|
133
|
+
OCI8.new($dbuser, $dbpass, $dbname)
|
134
|
+
end
|
135
|
+
|
136
|
+
def get_dbi_connection()
|
137
|
+
DBI.connect("dbi:OCI8:#{$dbname}", $dbuser, $dbpass, 'AutoCommit' => false)
|
138
|
+
rescue DBI::DatabaseError
|
139
|
+
raise if $!.err != 12516 && $!.err != 12520
|
140
|
+
# same as get_oci8_connection()
|
141
|
+
sleep(5)
|
142
|
+
DBI.connect("dbi:OCI8:#{$dbname}", $dbuser, $dbpass, 'AutoCommit' => false)
|
143
|
+
end
|
144
|
+
|
145
|
+
def drop_table(table_name)
|
146
|
+
if $oracle_server_version < OCI8::ORAVER_10_1
|
147
|
+
# Oracle 8 - 9i
|
148
|
+
sql = "DROP TABLE #{table_name}"
|
149
|
+
else
|
150
|
+
# Oracle 10g -
|
151
|
+
sql = "DROP TABLE #{table_name} PURGE"
|
152
|
+
end
|
153
|
+
|
154
|
+
if defined? @conn
|
155
|
+
begin
|
156
|
+
@conn.exec(sql)
|
157
|
+
rescue OCIError
|
158
|
+
raise if $!.code != 942 # table or view does not exist
|
159
|
+
end
|
160
|
+
elsif instance_variable_get(:@dbh)
|
161
|
+
begin
|
162
|
+
@dbh.do(sql)
|
163
|
+
rescue DBI::DatabaseError
|
164
|
+
raise if $!.err != 942 # table or view does not exist
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end # drop_table
|
168
|
+
|
169
|
+
def drop_type(type_name)
|
170
|
+
begin
|
171
|
+
@conn.exec("DROP TYPE BODY #{type_name}")
|
172
|
+
rescue OCIError
|
173
|
+
raise if $!.code != 4043
|
174
|
+
end
|
175
|
+
begin
|
176
|
+
@conn.exec("DROP TYPE #{type_name}")
|
177
|
+
rescue OCIError
|
178
|
+
raise if $!.code != 4043
|
179
|
+
end
|
180
|
+
end # drop_type
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
@@ -0,0 +1,171 @@
|
|
1
|
+
drop table rb_test_obj_tab1 purge
|
2
|
+
/
|
3
|
+
drop table rb_test_obj_tab2 purge
|
4
|
+
/
|
5
|
+
drop type rb_test_obj
|
6
|
+
/
|
7
|
+
drop type rb_test_obj_elem_ary_of_ary
|
8
|
+
/
|
9
|
+
drop type rb_test_obj_elem_array
|
10
|
+
/
|
11
|
+
drop type rb_test_obj_elem
|
12
|
+
/
|
13
|
+
create type rb_test_obj_elem as object (
|
14
|
+
x integer,
|
15
|
+
y integer
|
16
|
+
)
|
17
|
+
/
|
18
|
+
create or replace type rb_test_int_array as array(50) of integer
|
19
|
+
/
|
20
|
+
create or replace type rb_test_flt_array as array(50) of float
|
21
|
+
/
|
22
|
+
create or replace type rb_test_num_array as array(50) of number(10,1)
|
23
|
+
/
|
24
|
+
create or replace type rb_test_bdbl_array as array(50) of binary_double
|
25
|
+
/
|
26
|
+
create or replace type rb_test_bflt_array as array(50) of binary_float
|
27
|
+
/
|
28
|
+
create or replace type rb_test_str_array as array(50) of varchar2(50)
|
29
|
+
/
|
30
|
+
create or replace type rb_test_raw_array as array(50) of raw(50)
|
31
|
+
/
|
32
|
+
create or replace type rb_test_obj_elem_array as array(50) of rb_test_obj_elem
|
33
|
+
/
|
34
|
+
create or replace type rb_test_obj_elem_ary_of_ary as array(50) of rb_test_obj_elem_array
|
35
|
+
/
|
36
|
+
--create or replace type rb_test_date_array as array(50) of date
|
37
|
+
--/
|
38
|
+
create type rb_test_obj as object (
|
39
|
+
int_val integer,
|
40
|
+
flt_val float,
|
41
|
+
num_val number(10,1),
|
42
|
+
bdbl_val binary_double,
|
43
|
+
bflt_val binary_float,
|
44
|
+
str_val varchar2(50),
|
45
|
+
raw_val raw(50),
|
46
|
+
clob_val clob,
|
47
|
+
nclob_val nclob,
|
48
|
+
blob_val blob,
|
49
|
+
obj_val rb_test_obj_elem,
|
50
|
+
int_array_val rb_test_int_array,
|
51
|
+
flt_array_val rb_test_flt_array,
|
52
|
+
num_array_val rb_test_num_array,
|
53
|
+
bdbl_array_val rb_test_bdbl_array,
|
54
|
+
bflt_array_val rb_test_bflt_array,
|
55
|
+
str_array_val rb_test_str_array,
|
56
|
+
raw_array_val rb_test_raw_array,
|
57
|
+
obj_array_val rb_test_obj_elem_array,
|
58
|
+
obj_ary_of_ary_val rb_test_obj_elem_ary_of_ary,
|
59
|
+
date_val date,
|
60
|
+
-- date_array_val rb_test_date_array,
|
61
|
+
|
62
|
+
constructor function rb_test_obj(n number) return self as result,
|
63
|
+
static function test_object_version return integer,
|
64
|
+
static function class_func(n number) return rb_test_obj,
|
65
|
+
static procedure class_proc1(obj out rb_test_obj, n number),
|
66
|
+
static procedure class_proc2(obj in out rb_test_obj),
|
67
|
+
member function member_func return integer,
|
68
|
+
member procedure member_proc(n in integer)
|
69
|
+
)
|
70
|
+
/
|
71
|
+
create or replace type body rb_test_obj is
|
72
|
+
|
73
|
+
constructor function rb_test_obj(n number) return self as result is
|
74
|
+
function to_test_date(n number) return date is
|
75
|
+
begin
|
76
|
+
return to_date(to_char(1990 + n, 'FM0000') ||
|
77
|
+
to_char(mod(round(n) * 5, 12) + 1, 'FM00') ||
|
78
|
+
to_char(mod(round(n) * 7, 27) + 1, 'FM00') ||
|
79
|
+
to_char(mod(round(n) * 9, 24), 'FM00') ||
|
80
|
+
to_char(mod(round(n) * 11, 60), 'FM00') ||
|
81
|
+
to_char(mod(round(n) * 13, 60), 'FM00'), 'yyyymmddhh24miss');
|
82
|
+
end;
|
83
|
+
begin
|
84
|
+
self.int_val := n;
|
85
|
+
self.flt_val := n;
|
86
|
+
self.num_val := n;
|
87
|
+
self.bdbl_val := n;
|
88
|
+
self.bflt_val := n;
|
89
|
+
self.str_val := to_char(n);
|
90
|
+
self.raw_val := utl_raw.cast_to_raw(to_char(n));
|
91
|
+
self.clob_val := to_clob(n);
|
92
|
+
self.nclob_val := to_clob(n);
|
93
|
+
self.blob_val := to_blob(utl_raw.cast_to_raw(to_char(n)));
|
94
|
+
self.obj_val := rb_test_obj_elem(n, n + 1);
|
95
|
+
self.date_val := to_test_date(n);
|
96
|
+
if self.int_val != 1 then
|
97
|
+
self.int_array_val := rb_test_int_array(n, n + 1, n + 2);
|
98
|
+
self.flt_array_val := rb_test_flt_array(n, n + 1, n + 2);
|
99
|
+
self.num_array_val := rb_test_num_array(n, n + 1, n + 2);
|
100
|
+
self.bdbl_array_val := rb_test_bdbl_array(n, n + 1, n + 2);
|
101
|
+
self.bflt_array_val := rb_test_bflt_array(n, n + 1, n + 2);
|
102
|
+
self.str_array_val := rb_test_str_array(to_char(n), to_char(n + 1), to_char(n + 2));
|
103
|
+
self.raw_array_val := rb_test_raw_array(utl_raw.cast_to_raw(to_char(n)),
|
104
|
+
utl_raw.cast_to_raw(to_char(n + 1)),
|
105
|
+
utl_raw.cast_to_raw(to_char(n + 2)));
|
106
|
+
self.obj_array_val := rb_test_obj_elem_array(rb_test_obj_elem(n + 0, n + 1),
|
107
|
+
rb_test_obj_elem(n + 1, n + 2),
|
108
|
+
rb_test_obj_elem(n + 2, n + 3));
|
109
|
+
self.obj_ary_of_ary_val := rb_test_obj_elem_ary_of_ary(self.obj_array_val);
|
110
|
+
-- self.date_array_val := rb_test_date_array(to_test_date(n),
|
111
|
+
-- to_test_date(n + 1),
|
112
|
+
-- to_test_date(n + 2));
|
113
|
+
end if;
|
114
|
+
return;
|
115
|
+
end;
|
116
|
+
|
117
|
+
static function test_object_version return integer is
|
118
|
+
begin
|
119
|
+
return 2;
|
120
|
+
end;
|
121
|
+
|
122
|
+
static function class_func(n number) return rb_test_obj is
|
123
|
+
begin
|
124
|
+
return rb_test_obj(n);
|
125
|
+
end;
|
126
|
+
|
127
|
+
static procedure class_proc1(obj out rb_test_obj, n number) is
|
128
|
+
begin
|
129
|
+
obj := rb_test_obj(n);
|
130
|
+
end;
|
131
|
+
|
132
|
+
static procedure class_proc2(obj in out rb_test_obj) is
|
133
|
+
begin
|
134
|
+
obj.int_val := obj.int_val + 1;
|
135
|
+
end;
|
136
|
+
|
137
|
+
member function member_func return integer is
|
138
|
+
begin
|
139
|
+
return int_val;
|
140
|
+
end;
|
141
|
+
|
142
|
+
member procedure member_proc(n in integer) is
|
143
|
+
begin
|
144
|
+
self.int_val := n;
|
145
|
+
end;
|
146
|
+
end;
|
147
|
+
/
|
148
|
+
create table rb_test_obj_tab1 (
|
149
|
+
n number primary key,
|
150
|
+
obj rb_test_obj
|
151
|
+
)
|
152
|
+
/
|
153
|
+
create table rb_test_obj_tab2 of rb_test_obj (
|
154
|
+
int_val primary key
|
155
|
+
)
|
156
|
+
/
|
157
|
+
declare
|
158
|
+
n number := 0;
|
159
|
+
obj rb_test_obj;
|
160
|
+
begin
|
161
|
+
loop
|
162
|
+
n := n + 1.2;
|
163
|
+
exit when n > 20;
|
164
|
+
obj := rb_test_obj(n);
|
165
|
+
insert into rb_test_obj_tab1 values (n, obj);
|
166
|
+
insert into rb_test_obj_tab2 values (obj);
|
167
|
+
end loop;
|
168
|
+
end;
|
169
|
+
/
|
170
|
+
commit
|
171
|
+
/
|
data/test/test_all.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
srcdir = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
require 'oci8'
|
4
|
+
require 'test/unit'
|
5
|
+
require "#{srcdir}/config"
|
6
|
+
|
7
|
+
require "#{srcdir}/test_oradate"
|
8
|
+
require "#{srcdir}/test_oranumber"
|
9
|
+
require "#{srcdir}/test_bind_string"
|
10
|
+
require "#{srcdir}/test_bind_time"
|
11
|
+
require "#{srcdir}/test_bind_raw"
|
12
|
+
if $test_clob
|
13
|
+
require "#{srcdir}/test_clob"
|
14
|
+
end
|
15
|
+
|
16
|
+
require "#{srcdir}/test_break"
|
17
|
+
require "#{srcdir}/test_oci8"
|
18
|
+
require "#{srcdir}/test_datetime"
|
19
|
+
require "#{srcdir}/test_connstr"
|
20
|
+
require "#{srcdir}/test_metadata"
|
21
|
+
require "#{srcdir}/test_array_dml"
|
22
|
+
require "#{srcdir}/test_rowid"
|
23
|
+
require "#{srcdir}/test_appinfo"
|
24
|
+
require "#{srcdir}/test_oracle_version"
|
25
|
+
require "#{srcdir}/test_error"
|
26
|
+
require "#{srcdir}/test_connection_pool"
|
27
|
+
require "#{srcdir}/test_object"
|
28
|
+
|
29
|
+
if OCI8.respond_to? :encoding
|
30
|
+
require "#{srcdir}/test_encoding"
|
31
|
+
end
|
32
|
+
|
33
|
+
# Ruby/DBI
|
34
|
+
begin
|
35
|
+
require 'dbi'
|
36
|
+
rescue LoadError
|
37
|
+
begin
|
38
|
+
require 'rubygems'
|
39
|
+
require 'dbi'
|
40
|
+
rescue LoadError
|
41
|
+
dbi_not_found = true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
unless dbi_not_found
|
45
|
+
require "#{srcdir}/test_dbi"
|
46
|
+
if $test_clob
|
47
|
+
require "#{srcdir}/test_dbi_clob"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
#Test::Unit::AutoRunner.run(true, true)
|
52
|
+
if defined? Test::Unit::AutoRunner
|
53
|
+
Test::Unit::AutoRunner.run()
|
54
|
+
end
|