Skip to content

Commit 2dfebfc

Browse files
committed
re-add set_log_hook tests
1 parent 04d8401 commit 2dfebfc

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

lib/exqlite.ex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ defmodule Exqlite do
6767
case Nif.open(path, flags) do
6868
{:ok, _conn} = ok -> ok
6969
{:error, reason} -> {:error, Error.exception(message: reason)}
70-
{:error, code, name} -> {:error, Error.exception(code: code, codename: name)}
7170
end
7271
end
7372

test/exqlite_test.exs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,4 +625,62 @@ defmodule ExqliteTest do
625625
refute_receive _anything
626626
end
627627
end
628+
629+
describe "set_log_hook/1" do
630+
setup do
631+
{:ok, conn} = Exqlite.open(":memory:")
632+
on_exit(fn -> Exqlite.close(conn) end)
633+
{:ok, conn: conn}
634+
end
635+
636+
test "can receive errors", %{conn: conn} do
637+
assert :ok = Exqlite.set_log_hook(self())
638+
639+
assert {:error, %Exqlite.Error{message: "near \"some\": syntax error"}} =
640+
Exqlite.prepare(conn, "some invalid sql")
641+
642+
assert_receive {:log, rc, msg}
643+
assert rc == 1
644+
assert msg == "near \"some\": syntax error in \"some invalid sql\""
645+
refute_receive _anything_else
646+
end
647+
648+
test "only one pid can listen at a time", %{conn: conn} do
649+
assert :ok = Exqlite.set_log_hook(self())
650+
651+
task =
652+
Task.async(fn ->
653+
:ok = Exqlite.set_log_hook(self())
654+
655+
assert {:error, %Exqlite.Error{message: "near \"some\": syntax error"}} =
656+
Exqlite.prepare(conn, "some invalid sql")
657+
658+
assert_receive {:log, rc, msg}
659+
assert rc == 1
660+
assert msg == "near \"some\": syntax error in \"some invalid sql\""
661+
refute_receive _anything_else
662+
end)
663+
664+
Task.await(task)
665+
refute_receive _anything_else
666+
end
667+
668+
test "receives notifications from all connections", %{conn: conn1} do
669+
assert :ok = Exqlite.set_log_hook(self())
670+
assert {:ok, conn2} = Exqlite.open(":memory:")
671+
on_exit(fn -> Exqlite.close(conn2) end)
672+
673+
assert {:error, _reason} = Exqlite.prepare(conn1, "some invalid sql 1")
674+
assert_receive {:log, rc, msg}
675+
assert rc == 1
676+
assert msg == "near \"some\": syntax error in \"some invalid sql 1\""
677+
refute_receive _anything_else
678+
679+
assert {:error, _reason} = Exqlite.prepare(conn2, "some invalid sql 2")
680+
assert_receive {:log, rc, msg}
681+
assert rc == 1
682+
assert msg == "near \"some\": syntax error in \"some invalid sql 2\""
683+
refute_receive _anything_else
684+
end
685+
end
628686
end

0 commit comments

Comments
 (0)