summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2013-09-12 12:10:22 +0100
committerTorne (Richard Coles) <torne@google.com>2013-09-12 12:10:22 +0100
commit58537e28ecd584eab876aee8be7156509866d23a (patch)
tree8988984e52090aaadf33cff139d7dd212cd13656 /sql
parent0a1b11dee8e5cb2520121c300858fea6138e3c54 (diff)
downloadchromium_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.cc13
-rw-r--r--sql/meta_table_unittest.cc226
-rw-r--r--sql/run_all_unittests.cc9
-rw-r--r--sql/sql.gyp5
-rw-r--r--sql/sql.target.darwin-arm.mk10
-rw-r--r--sql/sql.target.darwin-mips.mk10
-rw-r--r--sql/sql.target.darwin-x86.mk10
-rw-r--r--sql/sql.target.linux-arm.mk10
-rw-r--r--sql/sql.target.linux-mips.mk10
-rw-r--r--sql/sql.target.linux-x86.mk10
-rw-r--r--sql/test/test_helpers.cc75
-rw-r--r--sql/test/test_helpers.h45
-rw-r--r--sql/transaction_unittest.cc2
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(