dohruby 0.2.1 → 0.3
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.
- data/CHANGELOG +8 -0
- data/bin/config.rb +61 -0
- data/bin/create_database.rb +13 -6
- data/bin/gendata.rb +37 -0
- data/bin/migrate.rb +66 -0
- data/bin/{rcov-preprocess-files.rb → rcov_preprocess_files.rb} +1 -1
- data/bin/run_tests.rb +15 -5
- data/bin/update_rdoc.rb +28 -0
- data/dohapp_home +0 -0
- data/lib/doh/app/activate_database.rb +5 -12
- data/lib/doh/app/activate_logger.rb +29 -13
- data/lib/doh/app/config.rb +18 -0
- data/lib/doh/app/home.rb +3 -8
- data/lib/doh/app/init_runnable.rb +39 -8
- data/lib/doh/app/init_script.rb +19 -0
- data/lib/doh/app/init_unit_test.rb +4 -1
- data/lib/doh/app_no_stdio.rb +1 -1
- data/lib/doh/boot/app.rb +2 -0
- data/lib/doh/boot/app_pwd.rb +2 -0
- data/lib/doh/boot/find_dohruby.rb +5 -0
- data/lib/doh/boot/find_dohruby_18.rb +37 -0
- data/lib/doh/boot/find_dohruby_19.rb +58 -0
- data/lib/doh/boot/init_runnable.rb +2 -0
- data/lib/doh/boot/options.rb +2 -0
- data/lib/doh/core/array.rb +10 -0
- data/lib/doh/core/bigdecimal.rb +15 -0
- data/lib/doh/core/date.rb +73 -0
- data/lib/doh/core/deep_dup.rb +12 -0
- data/lib/doh/core/hash.rb +21 -0
- data/lib/doh/core/object.rb +6 -0
- data/lib/doh/core/require_local.rb +5 -0
- data/lib/doh/core/socket.rb +25 -0
- data/lib/doh/core/string.rb +34 -4
- data/lib/doh/core.rb +4 -1
- data/lib/doh/data/basic.rb +24 -19
- data/lib/doh/data/bulk.rb +28 -88
- data/lib/doh/data/catalog.rb +44 -0
- data/lib/doh/data/human.rb +50 -42
- data/lib/doh/data/make_global.rb +3 -0
- data/lib/doh/data/require_datagen.rb +2 -1
- data/lib/doh/home.rb +16 -0
- data/lib/doh/logger/email_acceptor.rb +6 -3
- data/lib/doh/logger/event.rb +19 -6
- data/lib/doh/logger/formatter.rb +22 -16
- data/lib/doh/logger/interface.rb +13 -0
- data/lib/doh/logger/iostream_acceptor.rb +3 -2
- data/lib/doh/logger/null_interface.rb +1 -0
- data/lib/doh/logger/proxy.rb +53 -0
- data/lib/doh/logger/socket_acceptor.rb +53 -0
- data/lib/doh/logger/socket_viewer.rb +64 -0
- data/lib/doh/logger/standard_interface.rb +46 -17
- data/lib/doh/logger/util.rb +18 -0
- data/lib/doh/logger.rb +2 -1
- data/lib/doh/logger_configure.rb +1 -1
- data/lib/doh/merb/db_session.rb +136 -0
- data/lib/doh/merb/form_helpers.rb +16 -0
- data/lib/doh/merb/login.rb +27 -12
- data/lib/doh/merb/merb_dohsession.rb +4 -0
- data/lib/doh/merb/notify_on_exception.rb +1 -1
- data/lib/doh/merb/session.rb +7 -0
- data/lib/doh/merb/source_ip.rb +10 -0
- data/lib/doh/merb.rb +0 -1
- data/lib/doh/mysql/abstract_row.rb +81 -0
- data/lib/doh/mysql/cache_connector.rb +11 -8
- data/lib/doh/mysql/connector_instance.rb +32 -5
- data/lib/doh/mysql/connector_util.rb +1 -0
- data/lib/doh/mysql/convert.rb +18 -0
- data/lib/doh/mysql/database_creator.rb +18 -5
- data/lib/doh/mysql/db_date.rb +2 -2
- data/lib/doh/mysql/default_type_guesser.rb +21 -4
- data/lib/doh/mysql/error.rb +3 -2
- data/lib/doh/mysql/handle.rb +144 -18
- data/lib/doh/mysql/hash_row.rb +13 -0
- data/lib/doh/mysql/load_sql.rb +1 -0
- data/lib/doh/mysql/metadata_util.rb +60 -19
- data/lib/doh/mysql/migrate.rb +122 -0
- data/lib/doh/mysql/migrate_check.rb +139 -0
- data/lib/doh/mysql/parse.rb +2 -0
- data/lib/doh/mysql/readonly_row.rb +11 -48
- data/lib/doh/mysql/require_dbtypes.rb +8 -0
- data/lib/doh/mysql/smart_row.rb +156 -0
- data/lib/doh/mysql/to_sql.rb +12 -0
- data/lib/doh/mysql/typed_row_builder.rb +4 -3
- data/lib/doh/mysql/types.rb +33 -0
- data/lib/doh/mysql/unquoted.rb +8 -0
- data/lib/doh/mysql/version.rb +102 -0
- data/lib/doh/mysql/virtual.rb +17 -0
- data/lib/doh/mysql/writable_row.rb +58 -0
- data/lib/doh/mysql.rb +2 -1
- data/lib/doh/paypal/paypal.rb +20 -0
- data/lib/doh/paypal/pdt.rb +14 -0
- data/lib/doh/paypal.rb +1 -0
- data/lib/doh/rails/form_helpers.rb +53 -0
- data/lib/doh/rails/login.rb +143 -0
- data/lib/doh/test/error_acceptor.rb +1 -1
- data/lib/doh/test/run_tests.rb +48 -43
- data/lib/doh/test/setup_once.rb +15 -0
- data/lib/doh/test/test_result.rb +7 -0
- data/lib/doh/unit_test.rb +6 -0
- data/lib/doh/util/banking_workday.rb +16 -12
- data/lib/doh/util/class_basename.rb +10 -0
- data/lib/doh/util/current_date.rb +18 -41
- data/lib/doh/util/doh_socket.rb +56 -0
- data/lib/doh/util/email.rb +18 -0
- data/lib/doh/util/file_edit.rb +64 -0
- data/lib/doh/util/http_helper.rb +107 -0
- data/lib/doh/util/internal_ip.rb +1 -1
- data/lib/doh/util/jsval.rb +13 -0
- data/lib/doh/util/post_hash.rb +14 -0
- data/lib/doh/util/xml_util.rb +48 -0
- data/test/core/tc_array.rb +12 -0
- data/test/core/tc_date.rb +53 -0
- data/test/core/tc_deep_dup.rb +69 -0
- data/test/core/tc_hash.rb +28 -0
- data/test/core/tc_socket.rb +30 -0
- data/test/core/tc_string.rb +15 -22
- data/test/local_tests.rb +3 -0
- data/test/local_tests_including_slow.rb +4 -0
- data/test/logger/tc_acceptor.rb +23 -6
- data/test/logger/tc_event.rb +1 -1
- data/test/logger/tc_formatter.rb +3 -2
- data/test/logger/tc_socket_viewer_acceptor.rb +48 -0
- data/test/mysql/001_down.sql +1 -0
- data/test/mysql/001_up.sql +4 -0
- data/test/mysql/002_down.sql +1 -0
- data/test/mysql/002_up.sql +1 -0
- data/test/mysql/tc_connector_instance.rb +8 -8
- data/test/mysql/tc_convert.rb +45 -0
- data/test/mysql/tc_handle.rb +94 -2
- data/test/mysql/tc_metadata_util.rb +50 -0
- data/test/mysql/tc_migrate.rb +50 -0
- data/test/mysql/tc_parse.rb +3 -1
- data/test/mysql/tc_readonly_row.rb +14 -10
- data/test/mysql/tc_smart_row.rb +22 -0
- data/test/mysql/tc_to_sql.rb +20 -0
- data/test/mysql/tc_types.rb +32 -0
- data/test/mysql/tc_unquoted.rb +1 -0
- data/test/mysql/tc_writable_row.rb +22 -0
- data/test/ts_core.rb +4 -0
- data/test/ts_logger.rb +4 -0
- data/test/ts_mysql.rb +6 -0
- data/test/ts_util.rb +6 -0
- data/test/util/slow_doh_socket.rb +102 -0
- data/test/util/tc_banking_workday.rb +18 -0
- data/test/util/tc_file_edit.rb +54 -0
- data/test/util/tc_jsval.rb +12 -0
- data/test/util/tc_to_display.rb +14 -0
- data/test/util/tc_xml_util.rb +17 -0
- metadata +130 -39
- data/README +0 -4
- data/lib/doh/merb/post_hash.rb +0 -26
- data/lib/doh/mysql/db_null.rb +0 -24
- data/lib/doh/mysql/hash_util.rb +0 -56
- data/test/mysql/tc_hash_util.rb +0 -23
data/test/core/tc_date.rb
CHANGED
|
@@ -20,6 +20,59 @@ class TC_core_date < Test::Unit::TestCase
|
|
|
20
20
|
assert_equal(6, Date::short_weekday_to_num('saT'))
|
|
21
21
|
assert_equal(nil, Date::short_weekday_to_num('saTurday'))
|
|
22
22
|
end
|
|
23
|
+
|
|
24
|
+
def test_years_since
|
|
25
|
+
dt = Date.new(2008,2,29)
|
|
26
|
+
assert_equal(0, dt.years_since(Date.new(2007,3,1)))
|
|
27
|
+
assert_equal(1, dt.years_since(Date.new(2007,2,28)))
|
|
28
|
+
assert_equal(2, dt.years_since(Date.new(2006,2,28)))
|
|
29
|
+
assert_equal(4, dt.years_since(Date.new(2004,2,29)))
|
|
30
|
+
assert_equal(3, dt.years_since(Date.new(2004,3,1)))
|
|
31
|
+
dt = Date.new(2009,2,28)
|
|
32
|
+
assert_equal(0, dt.years_since(Date.new(2008,2,29)))
|
|
33
|
+
assert_equal(1, dt.years_since(Date.new(2008,2,28)))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_smart_parse
|
|
37
|
+
assert_equal(Date.new(2008, 1, 1), Date.smart_parse('01/01/08'))
|
|
38
|
+
assert_equal(Date.new(1950, 1, 1), Date.smart_parse('01/01/50'))
|
|
39
|
+
assert_equal(Date.new(2049, 1, 1), Date.smart_parse('01/01/49'))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_add_seconds
|
|
43
|
+
assert_equal(DateTime.new(2009, 2, 10, 15, 30, 3), DateTime.new(2009, 2, 10, 15, 30, 2).add_seconds(1))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_add_months
|
|
47
|
+
assert_equal(Date.new(2008, 2, 1), Date.new(2008, 1, 1).add_months(1))
|
|
48
|
+
assert_equal(Date.new(2008, 3, 1), Date.new(2008, 1, 1).add_months(2))
|
|
49
|
+
assert_equal(Date.new(2008, 4, 1), Date.new(2008, 1, 5).add_months(3, 1))
|
|
50
|
+
assert_equal(Date.new(2008, 11, 1), Date.new(2008, 1, 1).add_months(10))
|
|
51
|
+
assert_equal(Date.new(2008, 12, 1), Date.new(2008, 1, 1).add_months(11))
|
|
52
|
+
assert_equal(Date.new(2009, 1, 1), Date.new(2008, 1, 1).add_months(12))
|
|
53
|
+
assert_equal(Date.new(2009, 2, 1), Date.new(2008, 1, 1).add_months(13))
|
|
54
|
+
assert_equal(Date.new(2009, 3, 3), Date.new(2008, 1, 8).add_months(14, 3))
|
|
55
|
+
assert_equal(Date.new(2008, 3, 5), Date.new(2008, 2, 5).add_months(1))
|
|
56
|
+
assert_equal(Date.new(2008, 11, 2), Date.new(2008, 10, 5).add_months(1, 2))
|
|
57
|
+
assert_equal(Date.new(2008, 12, 5), Date.new(2008, 10, 5).add_months(2))
|
|
58
|
+
assert_equal(Date.new(2008, 12, 1), Date.new(2008, 10, 1).add_months(2))
|
|
59
|
+
assert_equal(Date.new(2009, 1, 1), Date.new(2008, 10, 1).add_months(3))
|
|
60
|
+
assert_equal(Date.new(2008, 12, 1), Date.new(2008, 11, 1).add_months(1))
|
|
61
|
+
assert_equal(Date.new(2009, 1, 1), Date.new(2008, 11, 1).add_months(2))
|
|
62
|
+
assert_equal(Date.new(2009, 1, 1), Date.new(2008, 12, 1).add_months(1))
|
|
63
|
+
assert_equal(Date.new(2009, 2, 1), Date.new(2008, 12, 1).add_months(2))
|
|
64
|
+
assert_equal(Date.new(2009, 12, 1), Date.new(2008, 1, 1).add_months(23))
|
|
65
|
+
assert_equal(Date.new(2010, 1, 1), Date.new(2008, 1, 1).add_months(24))
|
|
66
|
+
assert_equal(Date.new(2010, 11, 1), Date.new(2008, 12, 1).add_months(23))
|
|
67
|
+
assert_equal(Date.new(2010, 12, 1), Date.new(2008, 12, 1).add_months(24))
|
|
68
|
+
assert_equal(Date.new(2009, 2, 28), Date.new(2009, 1, 31).add_months(1))
|
|
69
|
+
assert_raise(ArgumentError) {Date.new(2009,1,25).add_months(1, 29)}
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_add_years
|
|
73
|
+
assert_equal(Date.new(2010, 12, 1), Date.new(2008, 12, 1).add_years(2))
|
|
74
|
+
assert_equal(Date.new(2010, 2, 28), Date.new(2008, 2, 29).add_years(2))
|
|
75
|
+
end
|
|
23
76
|
end
|
|
24
77
|
|
|
25
78
|
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/core/deep_dup'
|
|
3
|
+
|
|
4
|
+
module Doh
|
|
5
|
+
|
|
6
|
+
class Parent
|
|
7
|
+
deep_dup :var1, :var2
|
|
8
|
+
attr_accessor :var1, :var2
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Child < Parent
|
|
12
|
+
deep_dup :var3
|
|
13
|
+
attr_accessor :var3
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class ShallowParent
|
|
17
|
+
attr_accessor :var1, :var2
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class TC_core_deep_dup < Test::Unit::TestCase
|
|
21
|
+
def test_regular_dup
|
|
22
|
+
parent = ShallowParent.new
|
|
23
|
+
parent.var1 = ['elem1']
|
|
24
|
+
parent.var2 = {'key1' => 'val1'}
|
|
25
|
+
parent2 = parent.dup
|
|
26
|
+
assert(parent2.var1.equal?(parent.var1))
|
|
27
|
+
assert(parent2.var2.equal?(parent.var2))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_deep_dup
|
|
31
|
+
parent = Parent.new
|
|
32
|
+
parent.var1 = ['elem1']
|
|
33
|
+
parent.var2 = {'key1' => 'val1'}
|
|
34
|
+
parent2 = parent.dup
|
|
35
|
+
assert(!parent2.var1.equal?(parent.var1))
|
|
36
|
+
assert(!parent2.var2.equal?(parent.var2))
|
|
37
|
+
|
|
38
|
+
parent2.var1.push('elem2')
|
|
39
|
+
parent2.var2['key2'] = 'val2'
|
|
40
|
+
assert_equal(['elem1'], parent.var1)
|
|
41
|
+
assert_equal(['key1'], parent.var2.keys)
|
|
42
|
+
assert_equal(['val1'], parent.var2.values)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_deep_dup_inheritance
|
|
46
|
+
child = Child.new
|
|
47
|
+
child.var1 = ['elem1']
|
|
48
|
+
child.var2 = {'key1' => 'val1'}
|
|
49
|
+
child.var3 = Parent.new
|
|
50
|
+
child.var3.var1 = ['blah']
|
|
51
|
+
child2 = child.dup
|
|
52
|
+
assert(!child2.var1.equal?(child.var1))
|
|
53
|
+
assert(!child2.var2.equal?(child.var2))
|
|
54
|
+
assert(!child2.var3.equal?(child.var3))
|
|
55
|
+
|
|
56
|
+
child2.var1.push('elem2')
|
|
57
|
+
child2.var2['key2'] = 'val2'
|
|
58
|
+
child2.var3.var1.push(['smoe'])
|
|
59
|
+
child2.var3.var2 = 'val3'
|
|
60
|
+
assert_equal(['elem1'], child.var1)
|
|
61
|
+
assert_equal(['key1'], child.var2.keys)
|
|
62
|
+
assert_equal(['val1'], child.var2.values)
|
|
63
|
+
assert_equal(['blah'], child.var3.var1)
|
|
64
|
+
assert_equal(nil, child.var3.var2)
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/core/hash'
|
|
3
|
+
|
|
4
|
+
module Doh
|
|
5
|
+
|
|
6
|
+
class TC_core_hash < Test::Unit::TestCase
|
|
7
|
+
def test_setnew
|
|
8
|
+
h = {}
|
|
9
|
+
h.setnew('field', 'first_value')
|
|
10
|
+
h.setnew('field', 'second_value')
|
|
11
|
+
assert_equal('first_value', h['field'])
|
|
12
|
+
h = {'field' => 'first'}
|
|
13
|
+
h.setnew('field', 'second')
|
|
14
|
+
assert_equal('first', h['field'])
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_merge_with_remove
|
|
18
|
+
h = {1=>2, 2=>3}
|
|
19
|
+
orig_h = h.dup
|
|
20
|
+
assert_equal({1=>2, 3=>4}, h.merge_with_remove({2=>nil, 3=>4}))
|
|
21
|
+
assert_equal({1=>2, 2=>3, 3=>4}, h.merge_with_remove({3=>4}))
|
|
22
|
+
assert_equal(orig_h, h)
|
|
23
|
+
assert_equal({1=>2, 3=>4}, h.merge_with_remove!({2=>nil, 3=>4}))
|
|
24
|
+
assert_equal({1=>2, 3=>4}, h)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/core/socket'
|
|
3
|
+
|
|
4
|
+
module Doh
|
|
5
|
+
|
|
6
|
+
class TC_core_socket < Test::Unit::TestCase
|
|
7
|
+
def test_amount_header_and_object
|
|
8
|
+
verylongmessage = 'long message' * 100000
|
|
9
|
+
server = TCPServer.new(2479)
|
|
10
|
+
server_thread = Thread.new do
|
|
11
|
+
server_sock = server.accept
|
|
12
|
+
assert_equal('message sent from client', server_sock.read_with_amount_header)
|
|
13
|
+
assert_equal(verylongmessage, server_sock.read_with_amount_header)
|
|
14
|
+
object = server_sock.read_object
|
|
15
|
+
assert_equal({'this is a' => 'hash sent from client'}, object)
|
|
16
|
+
server_sock.write_with_amount_header('message sent from server')
|
|
17
|
+
server_sock.write_object(['this', 'is', 'an', 'array', 'sent', 'from', 'the', 'server'])
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
client_sock = TCPSocket.new('127.0.0.1', 2479)
|
|
21
|
+
client_sock.write_with_amount_header('message sent from client')
|
|
22
|
+
client_sock.write_with_amount_header(verylongmessage)
|
|
23
|
+
client_sock.write_object({'this is a' => 'hash sent from client'})
|
|
24
|
+
assert_equal('message sent from server', client_sock.read_with_amount_header)
|
|
25
|
+
assert_equal(['this', 'is', 'an', 'array', 'sent', 'from', 'the', 'server'], client_sock.read_object)
|
|
26
|
+
server_thread.join
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
data/test/core/tc_string.rb
CHANGED
|
@@ -82,30 +82,23 @@ class TC_core_string < Test::Unit::TestCase
|
|
|
82
82
|
assert_equal('blah', str.lastn(100))
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
def
|
|
86
|
-
|
|
87
|
-
str
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
assert_equal(
|
|
93
|
-
assert_equal(true, str.starts_with('bla'))
|
|
94
|
-
assert_equal(true, str.starts_with('bl'))
|
|
95
|
-
assert_equal(true, str.starts_with('b'))
|
|
85
|
+
def test_gsub_between
|
|
86
|
+
str = 'start smoe blah endstart blah blah blah endstart blah blah blah endstart blah blah blah endstart blah blah blah endstart blah blah blah endstart blah blah blah end '
|
|
87
|
+
assert_equal('start blah endstart blah endstart blah endstart blah endstart blah endstart blah endstart blah end ', str.gsub_between('start', 'end', ' blah '))
|
|
88
|
+
|
|
89
|
+
result = str.gsub_between('start', 'end') do |contents|
|
|
90
|
+
contents.reverse
|
|
91
|
+
end
|
|
92
|
+
assert_equal('start halb eoms endstart halb halb halb endstart halb halb halb endstart halb halb halb endstart halb halb halb endstart halb halb halb endstart halb halb halb end ', result)
|
|
96
93
|
end
|
|
97
94
|
|
|
98
|
-
def
|
|
99
|
-
assert_equal(true,
|
|
100
|
-
|
|
101
|
-
assert_equal(false,
|
|
102
|
-
assert_equal(
|
|
103
|
-
assert_equal(
|
|
104
|
-
assert_equal(true,
|
|
105
|
-
assert_equal(true, str.ends_with('blah'))
|
|
106
|
-
assert_equal(true, str.ends_with('lah'))
|
|
107
|
-
assert_equal(true, str.ends_with('ah'))
|
|
108
|
-
assert_equal(true, str.ends_with('h'))
|
|
95
|
+
def test_equals_ignore_whitespace
|
|
96
|
+
assert_equal(true, " smoe ".equals_ignore_whitespace("smoe"))
|
|
97
|
+
assert_equal(true, " sm oe ".equals_ignore_whitespace("sm oe"))
|
|
98
|
+
assert_equal(false, " sm oe ".equals_ignore_whitespace("smoe"))
|
|
99
|
+
assert_equal(true, " sm\n\noe ".equals_ignore_whitespace("sm oe"))
|
|
100
|
+
assert_equal(true, " sm\n\noe ".equals_ignore_whitespace(" sm oe "))
|
|
101
|
+
assert_equal(true, " s\tm\n\no e ".equals_ignore_whitespace("s m o e"))
|
|
109
102
|
end
|
|
110
103
|
end
|
|
111
104
|
|
data/test/local_tests.rb
ADDED
data/test/logger/tc_acceptor.rb
CHANGED
|
@@ -12,7 +12,7 @@ class TC_Acceptor < Test::Unit::TestCase
|
|
|
12
12
|
@ios = StringIO.new
|
|
13
13
|
@ios2 = StringIO.new
|
|
14
14
|
@sched = DohLogger::DirectScheduler.new
|
|
15
|
-
@acceptor = DohLogger::IOStreamAcceptor.new(@ios, '%msg', '%msg error')
|
|
15
|
+
@acceptor = DohLogger::IOStreamAcceptor.new(@ios, '%msg', '%msg error: %call_stack')
|
|
16
16
|
@acceptor2 = DohLogger::IOStreamAcceptor.new(@ios2, '%msg', '%msg error')
|
|
17
17
|
@interface = DohLogger::StandardInterface.new(@sched)
|
|
18
18
|
@interface.add_acceptor(DohLogger::DEBUG, @acceptor)
|
|
@@ -20,19 +20,36 @@ class TC_Acceptor < Test::Unit::TestCase
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def test_log
|
|
23
|
+
fake_backtrace = ['/fake/backtrace/location.rb:33:in `some_func\'', '/some/other/location']
|
|
24
|
+
except = Exception.new('test exception with stack')
|
|
25
|
+
except.set_backtrace(fake_backtrace)
|
|
26
|
+
|
|
23
27
|
@interface.info("info1")
|
|
24
28
|
@interface.warn("warn1")
|
|
25
|
-
@interface.error("error1")
|
|
26
|
-
@interface.fatal("fatal1")
|
|
27
|
-
|
|
29
|
+
@interface.error("error1", except)
|
|
30
|
+
@interface.fatal("fatal1", except)
|
|
31
|
+
string = @ios.string
|
|
32
|
+
events = string.split("\n")
|
|
28
33
|
assert_equal('info1', events[0])
|
|
29
34
|
assert_equal('warn1', events[1])
|
|
30
|
-
assert_equal('error1 error', events[2])
|
|
31
|
-
assert_equal('
|
|
35
|
+
assert_equal('error1 error: /fake/backtrace/location.rb:33:in `some_func\'', events[2])
|
|
36
|
+
assert_equal('/some/other/location', events[3])
|
|
37
|
+
assert_equal('fatal1 error: /fake/backtrace/location.rb:33:in `some_func\'', events[4])
|
|
38
|
+
assert_equal('/some/other/location', events[5])
|
|
32
39
|
events2 = @ios2.string.split("\n")
|
|
33
40
|
assert_equal('warn1', events2[0])
|
|
34
41
|
assert_equal(1, events2.size)
|
|
35
42
|
end
|
|
43
|
+
|
|
44
|
+
def test_literal
|
|
45
|
+
@interface.info("info\ninfo")
|
|
46
|
+
@interface.literal = true
|
|
47
|
+
@interface.info("info\ninfo")
|
|
48
|
+
events = @ios.string.split("\n")
|
|
49
|
+
assert_equal('info\ninfo', events[0])
|
|
50
|
+
assert_equal('info', events[1])
|
|
51
|
+
assert_equal('info', events[2])
|
|
52
|
+
end
|
|
36
53
|
end
|
|
37
54
|
|
|
38
55
|
end
|
data/test/logger/tc_event.rb
CHANGED
data/test/logger/tc_formatter.rb
CHANGED
|
@@ -8,8 +8,8 @@ module Doh
|
|
|
8
8
|
|
|
9
9
|
class TC_Formatter < Test::Unit::TestCase
|
|
10
10
|
def setup
|
|
11
|
-
@formatter = DohLogger::Formatter.new("severity=%severity,msg=%msg,exception=%exception,time=%time,datetime=%datetime,call_stack=%call_stack,source_ip=%source_ip")
|
|
12
|
-
@event = DohLogger::Event.new(DohLogger::DEBUG, 'testmessage')
|
|
11
|
+
@formatter = DohLogger::Formatter.new("severity=%severity,msg=%msg,location=%location,exception=%exception,time=%time,datetime=%datetime,call_stack=%call_stack,source_ip=%source_ip")
|
|
12
|
+
@event = DohLogger::Event.new(DohLogger::DEBUG, 'testmessage', 'testloc')
|
|
13
13
|
@time = '10:20:30'
|
|
14
14
|
@datetime = '2008-01-02 ' + @time
|
|
15
15
|
@event.time = Time.parse(@datetime)
|
|
@@ -29,6 +29,7 @@ class TC_Formatter < Test::Unit::TestCase
|
|
|
29
29
|
hsh = format_output_to_hash(@formatter.replace(@event))
|
|
30
30
|
assert_equal('debug', hsh['severity'])
|
|
31
31
|
assert_equal('testmessage', hsh['msg'])
|
|
32
|
+
assert_equal('testloc', hsh['location'])
|
|
32
33
|
assert_equal('', hsh['exception'])
|
|
33
34
|
assert_equal(@time + '.000', hsh['time'])
|
|
34
35
|
assert_equal(@datetime + '.000', hsh['datetime'])
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/logger/socket_viewer.rb'
|
|
3
|
+
require 'doh/logger/socket_acceptor.rb'
|
|
4
|
+
require 'doh/logger/direct_scheduler.rb'
|
|
5
|
+
require 'doh/logger/standard_interface.rb'
|
|
6
|
+
|
|
7
|
+
module Doh
|
|
8
|
+
|
|
9
|
+
class TC_SocketViewerAcceptor < Test::Unit::TestCase
|
|
10
|
+
def setup
|
|
11
|
+
@port = 12377
|
|
12
|
+
@sched = DohLogger::DirectScheduler.new
|
|
13
|
+
@socket_acceptor = DohLogger::SocketAcceptor.new('127.0.0.1', @port)
|
|
14
|
+
@interface = DohLogger::StandardInterface.new(@sched)
|
|
15
|
+
@interface.add_acceptor(DohLogger::DEBUG, @socket_acceptor)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_no_viewer
|
|
19
|
+
assert_nothing_raised {@interface.debug("debug1")}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_with_viewer
|
|
23
|
+
socket_viewer = DohLogger::SocketViewer.new(@port)
|
|
24
|
+
@socket_acceptor.connect_socket(0)
|
|
25
|
+
fake_backtrace = ['/fake/backtrace/location.rb:33:in `some_func\'', '/some/other/location']
|
|
26
|
+
except = Exception.new('test exception with stack')
|
|
27
|
+
except.set_backtrace(fake_backtrace)
|
|
28
|
+
|
|
29
|
+
thread = Thread.new do
|
|
30
|
+
events = []
|
|
31
|
+
socket_viewer.handle_events do |event|
|
|
32
|
+
events.push(event)
|
|
33
|
+
break if events.size == 2
|
|
34
|
+
end
|
|
35
|
+
assert_equal('debug1', events[0].msg)
|
|
36
|
+
assert_equal('debug2', events[1].msg)
|
|
37
|
+
assert_equal("Exception(#{except.class}): #{except.to_s}", events[1].exception.to_s)
|
|
38
|
+
assert_equal(fake_backtrace, events[1].exception.backtrace)
|
|
39
|
+
end
|
|
40
|
+
@interface.debug('debug1')
|
|
41
|
+
@interface.error('debug2', except)
|
|
42
|
+
|
|
43
|
+
thread.join
|
|
44
|
+
socket_viewer.shutdown
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
DROP TABLE migrate_test_version2;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE migrate_test_version2 DROP created_at;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE migrate_test_version2 ADD created_at DATETIME NOT NULL;
|
|
@@ -9,20 +9,20 @@ class TC_ConnectorInstance < Test::Unit::TestCase
|
|
|
9
9
|
assert_equal(1, DohDb::insert("INSERT INTO #{tbl} (id, created_on, created_at, money) VALUES (null, CURDATE(), '2007-01-01 10:30:05', 10.5)"))
|
|
10
10
|
assert_equal(2, DohDb::insert("INSERT INTO #{tbl} (id, created_on) VALUES (null, 0)"))
|
|
11
11
|
assert_equal(1, DohDb::update("UPDATE #{tbl} SET money = 10.8 WHERE id = 1"))
|
|
12
|
-
assert_equal('10.80', DohDb::select_field("SELECT money FROM #{tbl} WHERE id = 1"))
|
|
13
|
-
assert_raise(
|
|
12
|
+
assert_equal(BigDecimal('10.80'), DohDb::select_field("SELECT money FROM #{tbl} WHERE id = 1"))
|
|
13
|
+
assert_raise(UnexpectedQueryResult) {DohDb::select_row("SELECT * FROM #{tbl} WHERE id = 7")}
|
|
14
14
|
assert_equal(nil, DohDb::select_optional_row("SELECT * FROM #{tbl} WHERE id = 7"))
|
|
15
|
-
assert_raise(
|
|
15
|
+
assert_raise(UnexpectedQueryResult){DohDb::select_optional_row("SELECT * FROM #{tbl} WHERE id < 3")}
|
|
16
16
|
assert_equal(nil, DohDb::select_optional_field("SELECT money FROM #{tbl} WHERE id = 7"))
|
|
17
|
-
assert_raise(
|
|
17
|
+
assert_raise(UnexpectedQueryResult) {DohDb::select_field("SELECT money FROM #{tbl} WHERE id = 7")}
|
|
18
18
|
assert_equal(1, DohDb::update_row("UPDATE #{tbl} SET money = 10.95 WHERE id = 1"))
|
|
19
19
|
assert_raise(Mysql::Error){DohDb::query("some invalid sql here")}
|
|
20
|
-
assert(
|
|
21
|
-
assert_raise(
|
|
20
|
+
assert(DohTest::pop_error)
|
|
21
|
+
assert_raise(UnexpectedQueryResult) {DohDb::update_row("UPDATE #{tbl} SET money = 10.95 WHERE id = 7")}
|
|
22
22
|
onerow = DohDb::select_row("SELECT * FROM #{tbl} WHERE id = 1")
|
|
23
|
-
assert_equal(
|
|
23
|
+
assert_equal(1, onerow['id'])
|
|
24
24
|
onerow = DohDb::select_optional_row("SELECT * FROM #{tbl} WHERE id = 1")
|
|
25
|
-
assert_equal(
|
|
25
|
+
assert_equal(1, onerow['id'])
|
|
26
26
|
rows = DohDb::select("SELECT * FROM #{tbl}")
|
|
27
27
|
rows.each {|row| assert(row['id'] != 0)}
|
|
28
28
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'db_unit_test')
|
|
2
|
+
require 'doh/mysql/convert'
|
|
3
|
+
|
|
4
|
+
module DohDb
|
|
5
|
+
|
|
6
|
+
class TC_Convert < Test::Unit::TestCase
|
|
7
|
+
def setup
|
|
8
|
+
@tbl = "doh_mysql_convert_tests"
|
|
9
|
+
DohDb::query("DROP TABLE IF EXISTS #@tbl")
|
|
10
|
+
DohDb::request_handle.query("CREATE TABLE #{@tbl} (not_null_field CHAR(1) NOT NULL, null_ok_field CHAR(1), int_field INT, bool_field TINYINT(1), date_field DATE, datetime_field DATETIME)")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def teardown
|
|
14
|
+
DohDb::query("DROP TABLE IF EXISTS #@tbl")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def convert(value)
|
|
18
|
+
DohDb::convert(@tbl, @field, value)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def verify(converted, original)
|
|
22
|
+
assert_equal(converted, convert(original))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def verify_same(value)
|
|
26
|
+
verify(value, value)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def verify_exception(value, exception_class)
|
|
30
|
+
assert_raise(exception_class) { convert(value) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_nil_null
|
|
34
|
+
# assert_raise(UnknownColumn) { DohDb::convert('some_table_that_doesnt_exist', 'some_column_that_doesnt_exist', 'blah') }
|
|
35
|
+
assert_equal('blah', DohDb::convert('some_table_that_doesnt_exist', 'some_column_that_doesnt_exist', 'blah'))
|
|
36
|
+
assert_equal('blah', DohDb::convert('', 'some_column_that_doesnt_exist', 'blah'))
|
|
37
|
+
assert_raise(CannotBeNull) { DohDb::convert(@tbl, 'not_null_field', nil) }
|
|
38
|
+
assert_equal(nil, DohDb::convert(@tbl, 'null_ok_field', nil))
|
|
39
|
+
assert_equal('', DohDb::convert(@tbl, 'not_null_field', ''))
|
|
40
|
+
assert_equal(nil, DohDb::convert(@tbl, 'null_ok_field', ''))
|
|
41
|
+
assert_equal(nil, DohDb::convert(@tbl, 'int_field', ''))
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
data/test/mysql/tc_handle.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'db_unit_test')
|
|
2
|
+
require 'doh/core/hash'
|
|
2
3
|
|
|
3
4
|
module DohDb
|
|
4
5
|
|
|
@@ -8,13 +9,104 @@ class TC_MysqlHandle < Test::Unit::TestCase
|
|
|
8
9
|
tbl = "doh_mysql_handle_stuff_test"
|
|
9
10
|
dbh.query("CREATE TEMPORARY TABLE #{tbl} (id INT UNSIGNED AUTO_INCREMENT NOT NULL KEY, value INT NOT NULL DEFAULT 0, created_on DATE, created_at DATETIME, money DECIMAL(7,2) NOT NULL DEFAULT 0)")
|
|
10
11
|
assert_equal(1, dbh.insert("INSERT INTO #{tbl} (id, created_on, created_at, money) VALUES (null, CURDATE(), '2007-01-01 10:30:05', 10.5)"))
|
|
11
|
-
assert_equal(2, dbh.insert("INSERT INTO #{tbl} (id, created_on) VALUES (null, 0)"))
|
|
12
|
+
assert_equal(2, dbh.insert("INSERT INTO #{tbl} (id, created_on, created_at) VALUES (null, 0, 0)"))
|
|
12
13
|
assert_equal(3, dbh.insert("INSERT INTO #{tbl} (id) VALUES (null)"))
|
|
13
14
|
onerow = dbh.select_row("SELECT * FROM #{tbl} WHERE id = 1")
|
|
14
|
-
assert_equal(
|
|
15
|
+
assert_equal(1, onerow['id'])
|
|
15
16
|
rows = dbh.select("SELECT * FROM #{tbl}")
|
|
16
17
|
rows.each {|row| assert(row['id'] != 0)}
|
|
17
18
|
end
|
|
19
|
+
|
|
20
|
+
def test_select_transpose_2fields
|
|
21
|
+
dbh = DohDb::request_handle
|
|
22
|
+
tbl = "doh_mysql_handle_select_transpose_2fields_test"
|
|
23
|
+
DohDb::query("CREATE TEMPORARY TABLE #{tbl} (field CHAR(30) NOT NULL, value CHAR(30) NOT NULL)")
|
|
24
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'some_name', value = 'some_value'")
|
|
25
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'other_name', value = 'matching_other_value'")
|
|
26
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'yet_another_name', value = 'strange_value'")
|
|
27
|
+
hash = DohDb::select_transpose("SELECT field, value FROM #{tbl}")
|
|
28
|
+
assert_equal('some_value', hash['some_name'])
|
|
29
|
+
assert_equal('matching_other_value', hash['other_name'])
|
|
30
|
+
assert_equal('strange_value', hash['yet_another_name'])
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_select_transpose_3fields
|
|
34
|
+
dbh = DohDb::request_handle
|
|
35
|
+
tbl = "doh_mysql_handle_select_transpose_3fields_test"
|
|
36
|
+
DohDb::query("CREATE TEMPORARY TABLE #{tbl} (field CHAR(30), some_value CHAR(30), other_value CHAR(30))")
|
|
37
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'some_name', some_value = 'some_value', other_value = 'blah'")
|
|
38
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'other_name', some_value = 'matching_other_value', other_value = 'blee'")
|
|
39
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'yet_another_name', some_value = 'strange_value', other_value = 'bloo'")
|
|
40
|
+
hash = DohDb::select_transpose("SELECT field, some_value, other_value FROM #{tbl}")
|
|
41
|
+
assert_equal(hash['some_name'], {'some_value' => 'some_value', 'other_value' => 'blah'})
|
|
42
|
+
assert_equal(hash['other_name'], {'some_value' => 'matching_other_value', 'other_value' => 'blee'})
|
|
43
|
+
assert_equal(hash['yet_another_name'], {'some_value' => 'strange_value', 'other_value' => 'bloo'})
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_select_values
|
|
47
|
+
dbh = DohDb::request_handle
|
|
48
|
+
tbl = "doh_mysql_handle_select_values_test"
|
|
49
|
+
DohDb::query("CREATE TEMPORARY TABLE #{tbl} (field CHAR(30), some_value CHAR(30))")
|
|
50
|
+
DohDb::query("INSERT INTO #{tbl} SET field = 'some_name', some_value = 'some_value'")
|
|
51
|
+
assert_equal([['some_name', 'some_value']], DohDb::select_values("SELECT field, some_value FROM #{tbl}"))
|
|
52
|
+
assert_equal([['some_name']], DohDb::select_values("SELECT field FROM #{tbl}"))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_multi_select
|
|
56
|
+
dbh = DohDb::request_handle
|
|
57
|
+
tbl = "doh_mysql_handle_multi_select_test"
|
|
58
|
+
DohDb::query("CREATE TEMPORARY TABLE #{tbl} (value CHAR(30))")
|
|
59
|
+
DohDb::query("INSERT INTO #{tbl} SET value = 'first'")
|
|
60
|
+
DohDb::query("INSERT INTO #{tbl} SET value = 'second'")
|
|
61
|
+
|
|
62
|
+
stmts = []
|
|
63
|
+
stmts.push("SELECT * FROM #{tbl}")
|
|
64
|
+
stmts.push("INSERT INTO #{tbl} SET value = 'third'")
|
|
65
|
+
stmts.push(["SELECT * FROM #{tbl}", :hash])
|
|
66
|
+
stmts.push("SELECT * FROM #{tbl}")
|
|
67
|
+
stmts.push("INSERT INTO #{tbl} SET value = 'fourth'")
|
|
68
|
+
stmts.push(["SELECT * FROM #{tbl}", :smart])
|
|
69
|
+
select_results = DohDb::multi_select(stmts)
|
|
70
|
+
assert_equal(4, select_results.size)
|
|
71
|
+
assert_equal(4, DohDb::select_field("SELECT COUNT(*) FROM #{tbl}"))
|
|
72
|
+
|
|
73
|
+
curr_select = select_results[0]
|
|
74
|
+
assert_equal(2, curr_select.size)
|
|
75
|
+
assert_kind_of(ReadOnlyRow, curr_select[0])
|
|
76
|
+
assert_equal({'value' => 'first'}, curr_select[0].to_h)
|
|
77
|
+
assert_equal({'value' => 'second'}, curr_select[1].to_h)
|
|
78
|
+
|
|
79
|
+
curr_select = select_results[1]
|
|
80
|
+
assert_equal(3, curr_select.size)
|
|
81
|
+
assert_kind_of(Hash, curr_select[0])
|
|
82
|
+
assert_equal({'value' => 'first'}, curr_select[0].to_h)
|
|
83
|
+
assert_equal({'value' => 'second'}, curr_select[1].to_h)
|
|
84
|
+
assert_equal({'value' => 'third'}, curr_select[2].to_h)
|
|
85
|
+
|
|
86
|
+
curr_select = select_results[2]
|
|
87
|
+
assert_equal(3, curr_select.size)
|
|
88
|
+
assert_equal({'value' => 'first'}, curr_select[0].to_h)
|
|
89
|
+
assert_equal({'value' => 'second'}, curr_select[1].to_h)
|
|
90
|
+
assert_equal({'value' => 'third'}, curr_select[2].to_h)
|
|
91
|
+
|
|
92
|
+
curr_select = select_results[3]
|
|
93
|
+
assert_equal(4, curr_select.size)
|
|
94
|
+
assert_kind_of(SmartRow, curr_select[0])
|
|
95
|
+
assert_equal({'value' => 'first'}, curr_select[0].to_h)
|
|
96
|
+
assert_equal({'value' => 'second'}, curr_select[1].to_h)
|
|
97
|
+
assert_equal({'value' => 'third'}, curr_select[2].to_h)
|
|
98
|
+
assert_equal({'value' => 'fourth'}, curr_select[3].to_h)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_insert_hash
|
|
102
|
+
dbh = DohDb::request_handle
|
|
103
|
+
tbl = "doh_mysql_insert_hash_test"
|
|
104
|
+
dbh.query("CREATE TEMPORARY TABLE #{tbl} (value INT KEY)")
|
|
105
|
+
hash1 = {'value' => 1}
|
|
106
|
+
assert_equal(0, dbh.insert_hash(hash1, tbl))
|
|
107
|
+
assert_raise(Mysql::Error) { dbh.insert_hash(hash1, tbl) }
|
|
108
|
+
assert_equal(0, dbh.insert_hash(hash1, tbl, true))
|
|
109
|
+
end
|
|
18
110
|
end
|
|
19
111
|
|
|
20
112
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'db_unit_test')
|
|
2
|
+
require 'doh/mysql/metadata_util'
|
|
3
|
+
|
|
4
|
+
module DohDb
|
|
5
|
+
|
|
6
|
+
class TC_metadata_util < Test::Unit::TestCase
|
|
7
|
+
def tbl
|
|
8
|
+
"doh_mysql_metadata_util_test"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_stuff
|
|
12
|
+
dbh = DohDb::request_handle
|
|
13
|
+
dbh.query("CREATE TABLE #{tbl} (num INT, str CHAR(7))")
|
|
14
|
+
column_info = DohDb::column_info(tbl)
|
|
15
|
+
info = column_info['str']
|
|
16
|
+
assert_equal('char', info['data_type'])
|
|
17
|
+
assert_equal(7, info['character_maximum_length'])
|
|
18
|
+
info = column_info['num']
|
|
19
|
+
assert_equal('int', info['data_type'])
|
|
20
|
+
assert_equal(nil, info['character_maximum_length'])
|
|
21
|
+
|
|
22
|
+
assert_equal(7, DohDb::field_character_size(tbl, 'str'))
|
|
23
|
+
assert_equal(nil, DohDb::field_character_size(tbl, 'num'))
|
|
24
|
+
|
|
25
|
+
row = {'num' => 'blahblahblah', 'str' => 'blahblahblah'}
|
|
26
|
+
DohDb::chop_character_fields!(tbl, row)
|
|
27
|
+
assert_equal('blahblahblah', row['num'])
|
|
28
|
+
assert_equal('blahbla', row['str'])
|
|
29
|
+
|
|
30
|
+
row = {'num' => 'blahblahblah', 'str' => 'blahblahblah'}
|
|
31
|
+
newrow = DohDb::chop_character_fields(tbl, row)
|
|
32
|
+
assert_equal('blahblahblah', newrow['num'])
|
|
33
|
+
assert_equal('blahbla', newrow['str'])
|
|
34
|
+
assert_equal('blahblahblah', row['num'])
|
|
35
|
+
assert_equal('blahblahblah', row['str'])
|
|
36
|
+
|
|
37
|
+
assert(DohDb::table_exist?(tbl))
|
|
38
|
+
|
|
39
|
+
assert_equal('num', DohDb::find_primary_key(tbl))
|
|
40
|
+
assert_raise(RuntimeError) { DohDb::find_primary_key(tbl, "this_database_doesnt_exist") }
|
|
41
|
+
assert_raise(RuntimeError) { DohDb::find_primary_key("this table doesn't exist") }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def teardown
|
|
45
|
+
DohDb::query("DROP TABLE IF EXISTS #{tbl}")
|
|
46
|
+
super
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|