diff options
Diffstat (limited to 'error_test.go')
-rw-r--r-- | error_test.go | 31 |
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) + } } |