sqlite3-ruby 1.2.5 → 1.3.0.beta.1

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.
Files changed (47) hide show
  1. data/API_CHANGES.rdoc +48 -0
  2. data/{History.txt → CHANGELOG.rdoc} +24 -0
  3. data/Manifest.txt +14 -14
  4. data/{README.txt → README.rdoc} +1 -6
  5. data/Rakefile +8 -3
  6. data/ext/sqlite3/database.c +687 -0
  7. data/ext/sqlite3/database.h +15 -0
  8. data/ext/sqlite3/exception.c +94 -0
  9. data/ext/sqlite3/exception.h +8 -0
  10. data/ext/sqlite3/extconf.rb +26 -0
  11. data/ext/sqlite3/sqlite3.c +33 -0
  12. data/ext/sqlite3/sqlite3_ruby.h +43 -0
  13. data/ext/sqlite3/statement.c +412 -0
  14. data/ext/sqlite3/statement.h +16 -0
  15. data/lib/sqlite3.rb +9 -0
  16. data/lib/sqlite3/database.rb +94 -302
  17. data/lib/sqlite3/errors.rb +0 -24
  18. data/lib/sqlite3/pragmas.rb +16 -7
  19. data/lib/sqlite3/resultset.rb +25 -81
  20. data/lib/sqlite3/statement.rb +22 -107
  21. data/lib/sqlite3/version.rb +4 -4
  22. data/setup.rb +2 -2
  23. data/tasks/native.rake +13 -17
  24. data/tasks/vendor_sqlite3.rake +10 -7
  25. data/test/helper.rb +1 -65
  26. data/test/test_database.rb +239 -189
  27. data/test/test_encoding.rb +115 -0
  28. data/test/test_integration.rb +38 -35
  29. data/test/test_integration_open_close.rb +1 -1
  30. data/test/test_integration_pending.rb +6 -4
  31. data/test/test_integration_resultset.rb +20 -8
  32. data/test/test_integration_statement.rb +1 -2
  33. data/test/test_sqlite3.rb +9 -0
  34. data/test/test_statement.rb +193 -0
  35. metadata +82 -48
  36. data/ext/sqlite3_api/extconf.rb +0 -10
  37. data/ext/sqlite3_api/sqlite3_api.i +0 -362
  38. data/ext/sqlite3_api/sqlite3_api_wrap.c +0 -5018
  39. data/lib/sqlite3/driver/dl/api.rb +0 -152
  40. data/lib/sqlite3/driver/dl/driver.rb +0 -307
  41. data/lib/sqlite3/driver/native/driver.rb +0 -219
  42. data/tasks/benchmark.rake +0 -9
  43. data/tasks/gem.rake +0 -32
  44. data/test/bm.rb +0 -140
  45. data/test/driver/dl/tc_driver.rb +0 -292
  46. data/test/native-vs-dl.rb +0 -126
  47. data/test/test_errors.rb +0 -17
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TC_Statement < Test::Unit::TestCase
4
4
  def setup
5
- @db = SQLite3::Database.new( "test.db" )
5
+ @db = SQLite3::Database.new(":memory:")
6
6
  @db.transaction do
7
7
  @db.execute "create table foo ( a integer primary key, b text )"
8
8
  @db.execute "insert into foo ( b ) values ( 'foo' )"
@@ -15,7 +15,6 @@ class TC_Statement < Test::Unit::TestCase
15
15
  def teardown
16
16
  @stmt.close
17
17
  @db.close
18
- File.delete( "test.db" )
19
18
  end
20
19
 
21
20
  def test_remainder_empty
@@ -0,0 +1,9 @@
1
+ require 'helper'
2
+
3
+ module SQLite3
4
+ class TestSQLite3 < Test::Unit::TestCase
5
+ def test_libversion
6
+ assert_not_nil SQLite3.libversion
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,193 @@
1
+ require 'helper'
2
+
3
+ module SQLite3
4
+ class TestStatement < Test::Unit::TestCase
5
+ def setup
6
+ @db = SQLite3::Database.new(':memory:')
7
+ @stmt = SQLite3::Statement.new(@db, "select 'foo'")
8
+ end
9
+
10
+ def test_database_name
11
+ @db.execute('create table foo(text BLOB)')
12
+ @db.execute('insert into foo(text) values (?)',SQLite3::Blob.new('hello'))
13
+ stmt = @db.prepare('select text from foo')
14
+ assert_equal 'main', stmt.database_name(0)
15
+ end
16
+
17
+ def test_prepare_blob
18
+ @db.execute('create table foo(text BLOB)')
19
+ stmt = @db.prepare('insert into foo(text) values (?)')
20
+ stmt.bind_param(1, SQLite3::Blob.new('hello'))
21
+ stmt.step
22
+ stmt.close
23
+ end
24
+
25
+ def test_select_blob
26
+ @db.execute('create table foo(text BLOB)')
27
+ @db.execute('insert into foo(text) values (?)',SQLite3::Blob.new('hello'))
28
+ assert_equal 'hello', @db.execute('select * from foo').first.first
29
+ end
30
+
31
+ def test_new
32
+ assert @stmt
33
+ end
34
+
35
+ def test_new_closed_handle
36
+ @db = SQLite3::Database.new(':memory:')
37
+ @db.close
38
+ assert_raises(ArgumentError) do
39
+ SQLite3::Statement.new(@db, 'select "foo"')
40
+ end
41
+ end
42
+
43
+ def test_new_with_remainder
44
+ stmt = SQLite3::Statement.new(@db, "select 'foo';bar")
45
+ assert_equal 'bar', stmt.remainder
46
+ end
47
+
48
+ def test_empty_remainder
49
+ assert_equal '', @stmt.remainder
50
+ end
51
+
52
+ def test_close
53
+ @stmt.close
54
+ assert @stmt.closed?
55
+ end
56
+
57
+ def test_double_close
58
+ @stmt.close
59
+ assert_raises(SQLite3::Exception) do
60
+ @stmt.close
61
+ end
62
+ end
63
+
64
+ def test_bind_param_string
65
+ stmt = SQLite3::Statement.new(@db, "select ?")
66
+ stmt.bind_param(1, "hello")
67
+ result = nil
68
+ stmt.each { |x| result = x }
69
+ assert_equal ['hello'], result
70
+ end
71
+
72
+ def test_bind_param_int
73
+ stmt = SQLite3::Statement.new(@db, "select ?")
74
+ stmt.bind_param(1, 10)
75
+ result = nil
76
+ stmt.each { |x| result = x }
77
+ assert_equal [10], result
78
+ end
79
+
80
+ def test_bind_nil
81
+ stmt = SQLite3::Statement.new(@db, "select ?")
82
+ stmt.bind_param(1, nil)
83
+ result = nil
84
+ stmt.each { |x| result = x }
85
+ assert_equal [nil], result
86
+ end
87
+
88
+ def test_bind_blobs
89
+ end
90
+
91
+ def test_bind_64
92
+ stmt = SQLite3::Statement.new(@db, "select ?")
93
+ stmt.bind_param(1, 2 ** 31)
94
+ result = nil
95
+ stmt.each { |x| result = x }
96
+ assert_equal [2 ** 31], result
97
+ end
98
+
99
+ def test_bind_double
100
+ stmt = SQLite3::Statement.new(@db, "select ?")
101
+ stmt.bind_param(1, 2.2)
102
+ result = nil
103
+ stmt.each { |x| result = x }
104
+ assert_equal [2.2], result
105
+ end
106
+
107
+ def test_named_bind
108
+ stmt = SQLite3::Statement.new(@db, "select :foo")
109
+ stmt.bind_param(':foo', 'hello')
110
+ result = nil
111
+ stmt.each { |x| result = x }
112
+ assert_equal ['hello'], result
113
+ end
114
+
115
+ def test_named_bind_no_colon
116
+ stmt = SQLite3::Statement.new(@db, "select :foo")
117
+ stmt.bind_param('foo', 'hello')
118
+ result = nil
119
+ stmt.each { |x| result = x }
120
+ assert_equal ['hello'], result
121
+ end
122
+
123
+ def test_named_bind_symbol
124
+ stmt = SQLite3::Statement.new(@db, "select :foo")
125
+ stmt.bind_param(:foo, 'hello')
126
+ result = nil
127
+ stmt.each { |x| result = x }
128
+ assert_equal ['hello'], result
129
+ end
130
+
131
+ def test_named_bind_not_found
132
+ stmt = SQLite3::Statement.new(@db, "select :foo")
133
+ assert_raises(SQLite3::Exception) do
134
+ stmt.bind_param('bar', 'hello')
135
+ end
136
+ end
137
+
138
+ def test_each
139
+ r = nil
140
+ @stmt.each do |row|
141
+ r = row
142
+ end
143
+ assert_equal(['foo'], r)
144
+ end
145
+
146
+ def test_reset!
147
+ r = []
148
+ @stmt.each { |row| r << row }
149
+ @stmt.reset!
150
+ @stmt.each { |row| r << row }
151
+ assert_equal [['foo'], ['foo']], r
152
+ end
153
+
154
+ def test_step
155
+ r = @stmt.step
156
+ assert_equal ['foo'], r
157
+ end
158
+
159
+ def test_tainted
160
+ r = @stmt.step
161
+ assert r.first.tainted?
162
+ end
163
+
164
+ def test_step_twice
165
+ assert_not_nil @stmt.step
166
+ assert !@stmt.done?
167
+ assert_nil @stmt.step
168
+ assert @stmt.done?
169
+
170
+ @stmt.reset!
171
+ assert !@stmt.done?
172
+ end
173
+
174
+ def test_step_never_moves_past_done
175
+ 10.times { @stmt.step }
176
+ @stmt.done?
177
+ end
178
+
179
+ def test_column_count
180
+ assert_equal 1, @stmt.column_count
181
+ end
182
+
183
+ def test_column_name
184
+ assert_equal "'foo'", @stmt.column_name(0)
185
+ assert_equal nil, @stmt.column_name(10)
186
+ end
187
+
188
+ def test_bind_parameter_count
189
+ stmt = SQLite3::Statement.new(@db, "select ?, ?, ?")
190
+ assert_equal 3, stmt.bind_parameter_count
191
+ end
192
+ end
193
+ end
metadata CHANGED
@@ -1,47 +1,68 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlite3-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ prerelease: true
5
+ segments:
6
+ - 1
7
+ - 3
8
+ - 0
9
+ - beta
10
+ - 1
11
+ version: 1.3.0.beta.1
5
12
  platform: ruby
6
13
  authors:
7
14
  - Jamis Buck
15
+ - Luis Lavena
16
+ - Aaron Patterson
8
17
  autorequire:
9
18
  bindir: bin
10
19
  cert_chain: []
11
20
 
12
- date: 2009-07-25 00:00:00 -03:00
21
+ date: 2010-05-10 00:00:00 -03:00
13
22
  default_executable:
14
23
  dependencies:
15
24
  - !ruby/object:Gem::Dependency
16
- name: mocha
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
25
+ name: rubyforge
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
20
28
  requirements:
21
29
  - - ">="
22
30
  - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
31
+ segments:
32
+ - 2
33
+ - 0
34
+ - 4
35
+ version: 2.0.4
36
+ type: :development
37
+ version_requirements: *id001
25
38
  - !ruby/object:Gem::Dependency
26
39
  name: rake-compiler
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
30
42
  requirements:
31
43
  - - ~>
32
44
  - !ruby/object:Gem::Version
33
- version: 0.5.0
34
- version:
45
+ segments:
46
+ - 0
47
+ - 7
48
+ - 0
49
+ version: 0.7.0
50
+ type: :development
51
+ version_requirements: *id002
35
52
  - !ruby/object:Gem::Dependency
36
53
  name: hoe
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
40
56
  requirements:
41
57
  - - ">="
42
58
  - !ruby/object:Gem::Version
43
- version: 2.3.2
44
- version:
59
+ segments:
60
+ - 2
61
+ - 6
62
+ - 0
63
+ version: 2.6.0
64
+ type: :development
65
+ version_requirements: *id003
45
66
  description: |-
46
67
  This module allows Ruby programs to interface with the SQLite3
47
68
  database engine (http://www.sqlite.org). You must have the
@@ -50,32 +71,43 @@ description: |-
50
71
  Note that this module is NOT compatible with SQLite 2.x.
51
72
  email:
52
73
  - jamis@37signals.com
74
+ - luislavena@gmail.com
75
+ - aaron@tenderlovemaking.com
53
76
  executables: []
54
77
 
55
78
  extensions:
56
- - ext/sqlite3_api/extconf.rb
79
+ - ext/sqlite3/extconf.rb
57
80
  extra_rdoc_files:
58
- - History.txt
59
81
  - Manifest.txt
60
- - README.txt
82
+ - API_CHANGES.rdoc
83
+ - README.rdoc
84
+ - CHANGELOG.rdoc
85
+ - ext/sqlite3/database.c
86
+ - ext/sqlite3/statement.c
87
+ - ext/sqlite3/sqlite3.c
88
+ - ext/sqlite3/exception.c
61
89
  files:
90
+ - API_CHANGES.rdoc
91
+ - CHANGELOG.rdoc
62
92
  - ChangeLog.cvs
63
- - History.txt
64
93
  - LICENSE
65
94
  - Manifest.txt
66
- - README.txt
95
+ - README.rdoc
67
96
  - Rakefile
68
- - ext/sqlite3_api/extconf.rb
69
- - ext/sqlite3_api/sqlite3_api.i
70
- - ext/sqlite3_api/sqlite3_api_wrap.c
97
+ - ext/sqlite3/database.c
98
+ - ext/sqlite3/database.h
99
+ - ext/sqlite3/exception.c
100
+ - ext/sqlite3/exception.h
101
+ - ext/sqlite3/extconf.rb
102
+ - ext/sqlite3/sqlite3.c
103
+ - ext/sqlite3/sqlite3_ruby.h
104
+ - ext/sqlite3/statement.c
105
+ - ext/sqlite3/statement.h
71
106
  - faq/faq.rb
72
107
  - faq/faq.yml
73
108
  - lib/sqlite3.rb
74
109
  - lib/sqlite3/constants.rb
75
110
  - lib/sqlite3/database.rb
76
- - lib/sqlite3/driver/dl/api.rb
77
- - lib/sqlite3/driver/dl/driver.rb
78
- - lib/sqlite3/driver/native/driver.rb
79
111
  - lib/sqlite3/errors.rb
80
112
  - lib/sqlite3/pragmas.rb
81
113
  - lib/sqlite3/resultset.rb
@@ -84,22 +116,18 @@ files:
84
116
  - lib/sqlite3/value.rb
85
117
  - lib/sqlite3/version.rb
86
118
  - setup.rb
87
- - tasks/benchmark.rake
88
119
  - tasks/faq.rake
89
- - tasks/gem.rake
90
120
  - tasks/native.rake
91
121
  - tasks/vendor_sqlite3.rake
92
- - test/bm.rb
93
- - test/driver/dl/tc_driver.rb
94
122
  - test/helper.rb
95
- - test/native-vs-dl.rb
96
123
  - test/test_database.rb
97
- - test/test_errors.rb
98
124
  - test/test_integration.rb
99
125
  - test/test_integration_open_close.rb
100
126
  - test/test_integration_pending.rb
101
127
  - test/test_integration_resultset.rb
102
128
  - test/test_integration_statement.rb
129
+ - test/test_sqlite3.rb
130
+ - test/test_statement.rb
103
131
  has_rdoc: true
104
132
  homepage: http://sqlite3-ruby.rubyforge.org
105
133
  licenses: []
@@ -107,35 +135,41 @@ licenses: []
107
135
  post_install_message:
108
136
  rdoc_options:
109
137
  - --main
110
- - README.txt
111
- - --main=README.txt
138
+ - README.rdoc
112
139
  require_paths:
113
140
  - lib
114
- - ext
115
141
  required_ruby_version: !ruby/object:Gem::Requirement
116
142
  requirements:
117
- - - ">"
143
+ - - ">="
118
144
  - !ruby/object:Gem::Version
119
- version: 1.8.5
120
- version:
145
+ segments:
146
+ - 1
147
+ - 8
148
+ - 6
149
+ version: 1.8.6
121
150
  required_rubygems_version: !ruby/object:Gem::Requirement
122
151
  requirements:
123
152
  - - ">="
124
153
  - !ruby/object:Gem::Version
125
- version: "0"
126
- version:
154
+ segments:
155
+ - 1
156
+ - 3
157
+ - 5
158
+ version: 1.3.5
127
159
  requirements: []
128
160
 
129
- rubyforge_project: sqlite-ruby
130
- rubygems_version: 1.3.4
161
+ rubyforge_project: sqlite3-ruby
162
+ rubygems_version: 1.3.6
131
163
  signing_key:
132
164
  specification_version: 3
133
165
  summary: This module allows Ruby programs to interface with the SQLite3 database engine (http://www.sqlite.org)
134
166
  test_files:
167
+ - test/test_sqlite3.rb
168
+ - test/test_integration_open_close.rb
135
169
  - test/test_database.rb
136
- - test/test_errors.rb
137
170
  - test/test_integration.rb
138
- - test/test_integration_open_close.rb
171
+ - test/test_statement.rb
139
172
  - test/test_integration_pending.rb
140
- - test/test_integration_resultset.rb
141
173
  - test/test_integration_statement.rb
174
+ - test/test_encoding.rb
175
+ - test/test_integration_resultset.rb
@@ -1,10 +0,0 @@
1
- require 'mkmf'
2
-
3
- dir_config( "sqlite3" )
4
-
5
- have_library( "rt", "fdatasync" )
6
-
7
- if have_header( "sqlite3.h" ) && have_library( "sqlite3", "sqlite3_open" ) then
8
- $CFLAGS << " -fno-strict-aliasing" unless RUBY_PLATFORM =~ /mswin/
9
- create_makefile( "sqlite3_api" )
10
- end