ruby-oci8 2.1.5.1-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|