diff options
author | Torne (Richard Coles) <torne@google.com> | 2013-09-12 12:10:22 +0100 |
---|---|---|
committer | Torne (Richard Coles) <torne@google.com> | 2013-09-12 12:10:22 +0100 |
commit | 58537e28ecd584eab876aee8be7156509866d23a (patch) | |
tree | 8988984e52090aaadf33cff139d7dd212cd13656 /sql | |
parent | 0a1b11dee8e5cb2520121c300858fea6138e3c54 (diff) | |
download | chromium_org-58537e28ecd584eab876aee8be7156509866d23a.tar.gz |
Merge from Chromium at DEPS revision 222756
This commit was generated by merge_to_master.py.
Change-Id: I40d7f32f195f328f005f230ea80d07092d48040e
Diffstat (limited to 'sql')
-rw-r--r-- | sql/connection_unittest.cc | 13 | ||||
-rw-r--r-- | sql/meta_table_unittest.cc | 226 | ||||
-rw-r--r-- | sql/run_all_unittests.cc | 9 | ||||
-rw-r--r-- | sql/sql.gyp | 5 | ||||
-rw-r--r-- | sql/sql.target.darwin-arm.mk | 10 | ||||
-rw-r--r-- | sql/sql.target.darwin-mips.mk | 10 | ||||
-rw-r--r-- | sql/sql.target.darwin-x86.mk | 10 | ||||
-rw-r--r-- | sql/sql.target.linux-arm.mk | 10 | ||||
-rw-r--r-- | sql/sql.target.linux-mips.mk | 10 | ||||
-rw-r--r-- | sql/sql.target.linux-x86.mk | 10 | ||||
-rw-r--r-- | sql/test/test_helpers.cc | 75 | ||||
-rw-r--r-- | sql/test/test_helpers.h | 45 | ||||
-rw-r--r-- | sql/transaction_unittest.cc | 2 |
13 files changed, 409 insertions, 26 deletions
diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc index 09a47fb47f..445db3459b 100644 --- a/sql/connection_unittest.cc +++ b/sql/connection_unittest.cc @@ -88,11 +88,10 @@ class ScopedUmaskSetter { class SQLConnectionTest : public testing::Test { public: - SQLConnectionTest() {} - virtual void SetUp() { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); - ASSERT_TRUE(db_.Open(db_path())); + db_path_ = temp_dir_.path().AppendASCII("SQLConnectionTest.db"); + ASSERT_TRUE(db_.Open(db_path_)); } virtual void TearDown() { @@ -100,10 +99,7 @@ class SQLConnectionTest : public testing::Test { } sql::Connection& db() { return db_; } - - base::FilePath db_path() { - return temp_dir_.path().AppendASCII("SQLConnectionTest.db"); - } + const base::FilePath& db_path() { return db_path_; } // Handle errors by blowing away the database. void RazeErrorCallback(int expected_error, int error, sql::Statement* stmt) { @@ -112,8 +108,9 @@ class SQLConnectionTest : public testing::Test { } private: - base::ScopedTempDir temp_dir_; sql::Connection db_; + base::FilePath db_path_; + base::ScopedTempDir temp_dir_; }; TEST_F(SQLConnectionTest, Execute) { diff --git a/sql/meta_table_unittest.cc b/sql/meta_table_unittest.cc new file mode 100644 index 0000000000..3fbc499f41 --- /dev/null +++ b/sql/meta_table_unittest.cc @@ -0,0 +1,226 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "sql/meta_table.h" + +#include "base/files/file_path.h" +#include "base/files/scoped_temp_dir.h" +#include "sql/connection.h" +#include "sql/statement.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +class SQLMetaTableTest : public testing::Test { + public: + virtual void SetUp() { + ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); + ASSERT_TRUE(db_.Open(temp_dir_.path().AppendASCII("SQLMetaTableTest.db"))); + } + + virtual void TearDown() { + db_.Close(); + } + + sql::Connection& db() { return db_; } + + private: + base::ScopedTempDir temp_dir_; + sql::Connection db_; +}; + +TEST_F(SQLMetaTableTest, DoesTableExist) { + EXPECT_FALSE(sql::MetaTable::DoesTableExist(&db())); + + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + } + + EXPECT_TRUE(sql::MetaTable::DoesTableExist(&db())); +} + +TEST_F(SQLMetaTableTest, VersionNumber) { + // Compatibility versions one less than the main versions to make + // sure the values aren't being crossed with each other. + const int kVersionFirst = 2; + const int kCompatVersionFirst = kVersionFirst - 1; + const int kVersionSecond = 4; + const int kCompatVersionSecond = kVersionSecond - 1; + const int kVersionThird = 6; + const int kCompatVersionThird = kVersionThird - 1; + + // First Init() sets the version info as expected. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), kVersionFirst, kCompatVersionFirst)); + EXPECT_EQ(kVersionFirst, meta_table.GetVersionNumber()); + EXPECT_EQ(kCompatVersionFirst, meta_table.GetCompatibleVersionNumber()); + } + + // Second Init() does not change the version info. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), kVersionSecond, kCompatVersionSecond)); + EXPECT_EQ(kVersionFirst, meta_table.GetVersionNumber()); + EXPECT_EQ(kCompatVersionFirst, meta_table.GetCompatibleVersionNumber()); + + meta_table.SetVersionNumber(kVersionSecond); + meta_table.SetCompatibleVersionNumber(kCompatVersionSecond); + } + + // Version info from Set*() calls is seen. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), kVersionThird, kCompatVersionThird)); + EXPECT_EQ(kVersionSecond, meta_table.GetVersionNumber()); + EXPECT_EQ(kCompatVersionSecond, meta_table.GetCompatibleVersionNumber()); + } +} + +TEST_F(SQLMetaTableTest, StringValue) { + const char kKey[] = "String Key"; + const std::string kFirstValue("First Value"); + const std::string kSecondValue("Second Value"); + + // Initially, the value isn't there until set. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + std::string value; + EXPECT_FALSE(meta_table.GetValue(kKey, &value)); + + EXPECT_TRUE(meta_table.SetValue(kKey, kFirstValue)); + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kFirstValue, value); + } + + // Value is persistent across different instances. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + std::string value; + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kFirstValue, value); + + EXPECT_TRUE(meta_table.SetValue(kKey, kSecondValue)); + } + + // Existing value was successfully changed. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + std::string value; + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kSecondValue, value); + } +} + +TEST_F(SQLMetaTableTest, IntValue) { + const char kKey[] = "Int Key"; + const int kFirstValue = 17; + const int kSecondValue = 23; + + // Initially, the value isn't there until set. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + int value; + EXPECT_FALSE(meta_table.GetValue(kKey, &value)); + + EXPECT_TRUE(meta_table.SetValue(kKey, kFirstValue)); + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kFirstValue, value); + } + + // Value is persistent across different instances. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + int value; + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kFirstValue, value); + + EXPECT_TRUE(meta_table.SetValue(kKey, kSecondValue)); + } + + // Existing value was successfully changed. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + int value; + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kSecondValue, value); + } +} + +TEST_F(SQLMetaTableTest, Int64Value) { + const char kKey[] = "Int Key"; + const int64 kFirstValue = GG_LONGLONG(5000000017); + const int64 kSecondValue = GG_LONGLONG(5000000023); + + // Initially, the value isn't there until set. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + int64 value; + EXPECT_FALSE(meta_table.GetValue(kKey, &value)); + + EXPECT_TRUE(meta_table.SetValue(kKey, kFirstValue)); + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kFirstValue, value); + } + + // Value is persistent across different instances. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + int64 value; + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kFirstValue, value); + + EXPECT_TRUE(meta_table.SetValue(kKey, kSecondValue)); + } + + // Existing value was successfully changed. + { + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + int64 value; + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kSecondValue, value); + } +} + +TEST_F(SQLMetaTableTest, DeleteKey) { + const char kKey[] = "String Key"; + const std::string kValue("String Value"); + + sql::MetaTable meta_table; + EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); + + // Value isn't present. + std::string value; + EXPECT_FALSE(meta_table.GetValue(kKey, &value)); + + // Now value is present. + EXPECT_TRUE(meta_table.SetValue(kKey, kValue)); + EXPECT_TRUE(meta_table.GetValue(kKey, &value)); + EXPECT_EQ(kValue, value); + + // After delete value isn't present. + EXPECT_TRUE(meta_table.DeleteKey(kKey)); + EXPECT_FALSE(meta_table.GetValue(kKey, &value)); +} + +} // namespace diff --git a/sql/run_all_unittests.cc b/sql/run_all_unittests.cc deleted file mode 100644 index 2c8d29c6d0..0000000000 --- a/sql/run_all_unittests.cc +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/test/test_suite.h" - -int main(int argc, char** argv) { - return base::TestSuite(argc, argv).Run(); -} diff --git a/sql/sql.gyp b/sql/sql.gyp index 49ace016eb..7add51cf25 100644 --- a/sql/sql.gyp +++ b/sql/sql.gyp @@ -62,6 +62,8 @@ 'test/error_callback_support.h', 'test/scoped_error_ignorer.cc', 'test/scoped_error_ignorer.h', + 'test/test_helpers.cc', + 'test/test_helpers.h', ], 'include_dirs': [ '..', @@ -78,13 +80,14 @@ 'dependencies': [ 'sql', 'test_support_sql', + '../base/base.gyp:run_all_unittests', '../base/base.gyp:test_support_base', '../testing/gtest.gyp:gtest', '../third_party/sqlite/sqlite.gyp:sqlite', ], 'sources': [ - 'run_all_unittests.cc', 'connection_unittest.cc', + 'meta_table_unittest.cc', 'recovery_unittest.cc', 'sqlite_features_unittest.cc', 'statement_unittest.cc', diff --git a/sql/sql.target.darwin-arm.mk b/sql/sql.target.darwin-arm.mk index 63f27782f3..67eff5ba70 100644 --- a/sql/sql.target.darwin-arm.mk +++ b/sql/sql.target.darwin-arm.mk @@ -66,6 +66,7 @@ MY_CFLAGS_Debug := \ MY_DEFS_Debug := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -78,6 +79,7 @@ MY_DEFS_Debug := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -150,6 +152,7 @@ MY_CFLAGS_Release := \ MY_DEFS_Release := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -162,6 +165,7 @@ MY_DEFS_Release := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -217,7 +221,9 @@ LOCAL_LDFLAGS_Debug := \ -Wl,--no-undefined \ -Wl,--exclude-libs=ALL \ -Wl,--icf=safe \ + -Wl,--fatal-warnings \ -Wl,--gc-sections \ + -Wl,--warn-shared-textrel \ -Wl,-O1 \ -Wl,--as-needed @@ -236,7 +242,9 @@ LOCAL_LDFLAGS_Release := \ -Wl,--icf=safe \ -Wl,-O1 \ -Wl,--as-needed \ - -Wl,--gc-sections + -Wl,--gc-sections \ + -Wl,--fatal-warnings \ + -Wl,--warn-shared-textrel LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION)) diff --git a/sql/sql.target.darwin-mips.mk b/sql/sql.target.darwin-mips.mk index fac792ff8a..6c322fcf6b 100644 --- a/sql/sql.target.darwin-mips.mk +++ b/sql/sql.target.darwin-mips.mk @@ -65,6 +65,7 @@ MY_CFLAGS_Debug := \ MY_DEFS_Debug := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -77,6 +78,7 @@ MY_DEFS_Debug := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -148,6 +150,7 @@ MY_CFLAGS_Release := \ MY_DEFS_Release := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -160,6 +163,7 @@ MY_DEFS_Release := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -213,7 +217,9 @@ LOCAL_LDFLAGS_Debug := \ -nostdlib \ -Wl,--no-undefined \ -Wl,--exclude-libs=ALL \ + -Wl,--fatal-warnings \ -Wl,--gc-sections \ + -Wl,--warn-shared-textrel \ -Wl,-O1 \ -Wl,--as-needed @@ -230,7 +236,9 @@ LOCAL_LDFLAGS_Release := \ -Wl,--exclude-libs=ALL \ -Wl,-O1 \ -Wl,--as-needed \ - -Wl,--gc-sections + -Wl,--gc-sections \ + -Wl,--fatal-warnings \ + -Wl,--warn-shared-textrel LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION)) diff --git a/sql/sql.target.darwin-x86.mk b/sql/sql.target.darwin-x86.mk index d6bfe362d0..6569ed74ed 100644 --- a/sql/sql.target.darwin-x86.mk +++ b/sql/sql.target.darwin-x86.mk @@ -68,6 +68,7 @@ MY_CFLAGS_Debug := \ MY_DEFS_Debug := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -80,6 +81,7 @@ MY_DEFS_Debug := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -155,6 +157,7 @@ MY_CFLAGS_Release := \ MY_DEFS_Release := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -167,6 +170,7 @@ MY_DEFS_Release := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -219,7 +223,9 @@ LOCAL_LDFLAGS_Debug := \ -nostdlib \ -Wl,--no-undefined \ -Wl,--exclude-libs=ALL \ + -Wl,--fatal-warnings \ -Wl,--gc-sections \ + -Wl,--warn-shared-textrel \ -Wl,-O1 \ -Wl,--as-needed @@ -236,7 +242,9 @@ LOCAL_LDFLAGS_Release := \ -Wl,--exclude-libs=ALL \ -Wl,-O1 \ -Wl,--as-needed \ - -Wl,--gc-sections + -Wl,--gc-sections \ + -Wl,--fatal-warnings \ + -Wl,--warn-shared-textrel LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION)) diff --git a/sql/sql.target.linux-arm.mk b/sql/sql.target.linux-arm.mk index 63f27782f3..67eff5ba70 100644 --- a/sql/sql.target.linux-arm.mk +++ b/sql/sql.target.linux-arm.mk @@ -66,6 +66,7 @@ MY_CFLAGS_Debug := \ MY_DEFS_Debug := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -78,6 +79,7 @@ MY_DEFS_Debug := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -150,6 +152,7 @@ MY_CFLAGS_Release := \ MY_DEFS_Release := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -162,6 +165,7 @@ MY_DEFS_Release := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -217,7 +221,9 @@ LOCAL_LDFLAGS_Debug := \ -Wl,--no-undefined \ -Wl,--exclude-libs=ALL \ -Wl,--icf=safe \ + -Wl,--fatal-warnings \ -Wl,--gc-sections \ + -Wl,--warn-shared-textrel \ -Wl,-O1 \ -Wl,--as-needed @@ -236,7 +242,9 @@ LOCAL_LDFLAGS_Release := \ -Wl,--icf=safe \ -Wl,-O1 \ -Wl,--as-needed \ - -Wl,--gc-sections + -Wl,--gc-sections \ + -Wl,--fatal-warnings \ + -Wl,--warn-shared-textrel LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION)) diff --git a/sql/sql.target.linux-mips.mk b/sql/sql.target.linux-mips.mk index fac792ff8a..6c322fcf6b 100644 --- a/sql/sql.target.linux-mips.mk +++ b/sql/sql.target.linux-mips.mk @@ -65,6 +65,7 @@ MY_CFLAGS_Debug := \ MY_DEFS_Debug := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -77,6 +78,7 @@ MY_DEFS_Debug := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -148,6 +150,7 @@ MY_CFLAGS_Release := \ MY_DEFS_Release := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -160,6 +163,7 @@ MY_DEFS_Release := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -213,7 +217,9 @@ LOCAL_LDFLAGS_Debug := \ -nostdlib \ -Wl,--no-undefined \ -Wl,--exclude-libs=ALL \ + -Wl,--fatal-warnings \ -Wl,--gc-sections \ + -Wl,--warn-shared-textrel \ -Wl,-O1 \ -Wl,--as-needed @@ -230,7 +236,9 @@ LOCAL_LDFLAGS_Release := \ -Wl,--exclude-libs=ALL \ -Wl,-O1 \ -Wl,--as-needed \ - -Wl,--gc-sections + -Wl,--gc-sections \ + -Wl,--fatal-warnings \ + -Wl,--warn-shared-textrel LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION)) diff --git a/sql/sql.target.linux-x86.mk b/sql/sql.target.linux-x86.mk index d6bfe362d0..6569ed74ed 100644 --- a/sql/sql.target.linux-x86.mk +++ b/sql/sql.target.linux-x86.mk @@ -68,6 +68,7 @@ MY_CFLAGS_Debug := \ MY_DEFS_Debug := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -80,6 +81,7 @@ MY_DEFS_Debug := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -155,6 +157,7 @@ MY_CFLAGS_Release := \ MY_DEFS_Release := \ '-DANGLE_DX11' \ + '-DWTF_VECTOR_INITIAL_SIZE=16' \ '-D_FILE_OFFSET_BITS=64' \ '-DNO_TCMALLOC' \ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \ @@ -167,6 +170,7 @@ MY_DEFS_Release := \ '-DENABLE_GPU=1' \ '-DUSE_OPENSSL=1' \ '-DENABLE_EGLIMAGE=1' \ + '-DCLD_VERSION=1' \ '-DSQL_IMPLEMENTATION' \ '-D__STDC_CONSTANT_MACROS' \ '-D__STDC_FORMAT_MACROS' \ @@ -219,7 +223,9 @@ LOCAL_LDFLAGS_Debug := \ -nostdlib \ -Wl,--no-undefined \ -Wl,--exclude-libs=ALL \ + -Wl,--fatal-warnings \ -Wl,--gc-sections \ + -Wl,--warn-shared-textrel \ -Wl,-O1 \ -Wl,--as-needed @@ -236,7 +242,9 @@ LOCAL_LDFLAGS_Release := \ -Wl,--exclude-libs=ALL \ -Wl,-O1 \ -Wl,--as-needed \ - -Wl,--gc-sections + -Wl,--gc-sections \ + -Wl,--fatal-warnings \ + -Wl,--warn-shared-textrel LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION)) diff --git a/sql/test/test_helpers.cc b/sql/test/test_helpers.cc new file mode 100644 index 0000000000..607f146afc --- /dev/null +++ b/sql/test/test_helpers.cc @@ -0,0 +1,75 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "sql/test/test_helpers.h" + +#include <string> + +#include "base/file_util.h" +#include "sql/connection.h" +#include "sql/statement.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +size_t CountSQLItemsOfType(sql::Connection* db, const char* type) { + const char kTypeSQL[] = "SELECT COUNT(*) FROM sqlite_master WHERE type = ?"; + sql::Statement s(db->GetUniqueStatement(kTypeSQL)); + s.BindCString(0, type); + EXPECT_TRUE(s.Step()); + return s.ColumnInt(0); +} + +} // namespace + +namespace sql { +namespace test { + +size_t CountSQLTables(sql::Connection* db) { + return CountSQLItemsOfType(db, "table"); +} + +size_t CountSQLIndices(sql::Connection* db) { + return CountSQLItemsOfType(db, "index"); +} + +size_t CountTableColumns(sql::Connection* db, const char* table) { + // TODO(shess): sql::Connection::QuoteForSQL() would make sense. + std::string quoted_table; + { + const char kQuoteSQL[] = "SELECT quote(?)"; + sql::Statement s(db->GetUniqueStatement(kQuoteSQL)); + s.BindCString(0, table); + EXPECT_TRUE(s.Step()); + quoted_table = s.ColumnString(0); + } + + std::string sql = "PRAGMA table_info(" + quoted_table + ")"; + sql::Statement s(db->GetUniqueStatement(sql.c_str())); + size_t rows = 0; + while (s.Step()) { + ++rows; + } + EXPECT_TRUE(s.Succeeded()); + return rows; +} + +bool CreateDatabaseFromSQL(const base::FilePath& db_path, + const base::FilePath& sql_path) { + if (base::PathExists(db_path) || !base::PathExists(sql_path)) + return false; + + std::string sql; + if (!base::ReadFileToString(sql_path, &sql)) + return false; + + sql::Connection db; + if (!db.Open(db_path)) + return false; + + return db.Execute(sql.c_str()); +} + +} // namespace test +} // namespace sql diff --git a/sql/test/test_helpers.h b/sql/test/test_helpers.h new file mode 100644 index 0000000000..2e01ecd536 --- /dev/null +++ b/sql/test/test_helpers.h @@ -0,0 +1,45 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SQL_TEST_TEST_HELPERS_H_ +#define SQL_TEST_TEST_HELPERS_H_ + +#include "base/basictypes.h" +#include "base/compiler_specific.h" + +// Collection of test-only convenience functions. + +namespace base { +class FilePath; +} + +namespace sql { +class Connection; +} + +namespace sql { +namespace test { + +// Return the number of tables in sqlite_master. +size_t CountSQLTables(sql::Connection* db) WARN_UNUSED_RESULT; + +// Return the number of indices in sqlite_master. +size_t CountSQLIndices(sql::Connection* db) WARN_UNUSED_RESULT; + +// Returns the number of columns in the named table. 0 indicates an +// error (probably no such table). +size_t CountTableColumns(sql::Connection* db, const char* table) + WARN_UNUSED_RESULT; + +// Creates a SQLite database at |db_path| from the sqlite .dump output +// at |sql_path|. Returns false if |db_path| already exists, or if +// sql_path does not exist or cannot be read, or if there is an error +// executing the statements. +bool CreateDatabaseFromSQL(const base::FilePath& db_path, + const base::FilePath& sql_path) WARN_UNUSED_RESULT; + +} // namespace test +} // namespace sql + +#endif // SQL_TEST_TEST_HELPERS_H_ diff --git a/sql/transaction_unittest.cc b/sql/transaction_unittest.cc index ceaa4dbd7d..fe5eee232d 100644 --- a/sql/transaction_unittest.cc +++ b/sql/transaction_unittest.cc @@ -12,8 +12,6 @@ class SQLTransactionTest : public testing::Test { public: - SQLTransactionTest() {} - virtual void SetUp() { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); ASSERT_TRUE(db_.Open( |