Skip to content

Commit

Permalink
Upgrade to Crystal 0.28.0 (#38)
Browse files Browse the repository at this point in the history
  • Loading branch information
bcardiff authored Apr 18, 2019
1 parent a95182b commit c621a9b
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 10 deletions.
11 changes: 11 additions & 0 deletions spec/driver_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,17 @@ describe Driver do

assert_filename("sqlite3:/path/to/file.db", "/path/to/file.db")
assert_filename("sqlite3:///path/to/file.db", "/path/to/file.db")

{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
# Before 0.28.0 the filename had the query string in this case
# but it didn't bother when deleting the file in pool_spec.cr.
# After 0.28.0 the behavior is changed, but can't be fixed prior that
# due to the use of URI#opaque.
assert_filename("sqlite3:./file.db?max_pool_size=5", "./file.db")
{% end %}
assert_filename("sqlite3:/path/to/file.db?max_pool_size=5", "/path/to/file.db")
assert_filename("sqlite3://./file.db?max_pool_size=5", "./file.db")
assert_filename("sqlite3:///path/to/file.db?max_pool_size=5", "/path/to/file.db")
end

it "should use database option as file to open" do
Expand Down
7 changes: 6 additions & 1 deletion spec/pool_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,12 @@ describe DB::Pool do
fibers.times { channel.receive }

# all numbers were inserted
s = fibers * max_n * (max_n + 1) / 2
s : Int32
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
s = fibers * max_n * (max_n + 1) // 2
{% else %}
s = fibers * max_n * (max_n + 1) / 2
{% end %}
db.scalar("select sum(n) from numbers").should eq(s)

# numbers were not inserted one fiber at a time
Expand Down
10 changes: 6 additions & 4 deletions spec/spec_helper.cr
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@ ensure
File.delete(DB_FILENAME)
end

def with_db(name, &block : DB::Database ->)
File.delete(name) rescue nil
DB.open "sqlite3:#{name}", &block
def with_db(config, &block : DB::Database ->)
uri = "sqlite3:#{config}"
filename = SQLite3::Connection.filename(URI.parse(uri))
File.delete(filename) rescue nil
DB.open uri, &block
ensure
File.delete(name)
File.delete(filename) if filename
end

def with_mem_db(&block : DB::Database ->)
Expand Down
14 changes: 9 additions & 5 deletions src/sqlite3/connection.cr
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ class SQLite3::Connection < DB::Connection
end

def self.filename(uri : URI)
URI.unescape (if path = uri.path
(uri.host || "") + path
else
uri.opaque.not_nil!
end)
{% if compare_versions(Crystal::VERSION, "0.28.0") >= 0 %}
URI.unescape((uri.host || "") + uri.path)
{% else %}
URI.unescape (if path = uri.path
(uri.host || "") + path
else
uri.opaque.not_nil!
end)
{% end %}
end

def build_prepared_statement(query)
Expand Down

0 comments on commit c621a9b

Please sign in to comment.