Index: sql/connection_unittest.cc |
diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc |
index d79cba8d0298e1289a61198e95fb746e9865e3fe..07c9fa7c732c0714e4eb07a5799f0946ed7a1076 100644 |
--- a/sql/connection_unittest.cc |
+++ b/sql/connection_unittest.cc |
@@ -237,7 +237,10 @@ TEST_F(SQLConnectionTest, ErrorCallback) { |
sql::ScopedErrorCallback sec( |
&db(), base::Bind(&sql::CaptureErrorCallback, &error)); |
EXPECT_FALSE(db().Execute("INSERT INTO foo (id) VALUES (12)")); |
- EXPECT_EQ(SQLITE_CONSTRAINT, error); |
+ |
+ // Later versions of SQLite throw SQLITE_CONSTRAINT_UNIQUE. The specific |
+ // sub-error isn't really important. |
+ EXPECT_EQ(SQLITE_CONSTRAINT, (error&0xff)); |
} |
// Callback is no longer in force due to reset. |
@@ -448,12 +451,20 @@ TEST_F(SQLConnectionTest, RazeNOTADB) { |
} |
ASSERT_TRUE(base::PathExists(db_path())); |
- // SQLite will successfully open the handle, but will fail with |
- // SQLITE_IOERR_SHORT_READ on pragma statemenets which read the |
- // header. |
+ // SQLite will successfully open the handle, but fail when running PRAGMA |
+ // statements that access the database. |
{ |
sql::ScopedErrorIgnorer ignore_errors; |
- ignore_errors.IgnoreError(SQLITE_IOERR_SHORT_READ); |
+ |
+ // Earlier versions of Chromium compiled against SQLite 3.6.7.3, which |
+ // returned SQLITE_IOERR_SHORT_READ in this case. Some platforms may still |
+ // compile against an earlier SQLite via USE_SYSTEM_SQLITE. |
+ if (ignore_errors.SQLiteLibVersionNumber() < 3008007) { |
+ ignore_errors.IgnoreError(SQLITE_IOERR_SHORT_READ); |
+ } else { |
+ ignore_errors.IgnoreError(SQLITE_NOTADB); |
+ } |
+ |
EXPECT_TRUE(db().Open(db_path())); |
ASSERT_TRUE(ignore_errors.CheckIgnoredErrors()); |
} |