aboutsummaryrefslogtreecommitdiff
path: root/error_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'error_test.go')
-rw-r--r--error_test.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/error_test.go b/error_test.go
index 7cb33ae..3cfad06 100644
--- a/error_test.go
+++ b/error_test.go
@@ -240,5 +240,36 @@ func TestExtendedErrorCodes_Unique(t *testing.T) {
extended, expected)
}
}
+}
+
+func TestError_SystemErrno(t *testing.T) {
+ _, n, _ := Version()
+ if n < 3012000 {
+ t.Skip("sqlite3_system_errno requires sqlite3 >= 3.12.0")
+ }
+
+ // open a non-existent database in read-only mode so we get an IO error.
+ db, err := sql.Open("sqlite3", "file:nonexistent.db?mode=ro")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer db.Close()
+ err = db.Ping()
+ if err == nil {
+ t.Fatal("expected error pinging read-only non-existent database, but got nil")
+ }
+
+ serr, ok := err.(Error)
+ if !ok {
+ t.Fatalf("expected error to be of type Error, but got %[1]T %[1]v", err)
+ }
+
+ if serr.SystemErrno == 0 {
+ t.Fatal("expected SystemErrno to be set")
+ }
+
+ if !os.IsNotExist(serr.SystemErrno) {
+ t.Errorf("expected SystemErrno to be a not exists error, but got %v", serr.SystemErrno)
+ }
}