libpurple/tests/sqlite3/test_sqlite3.c

Mon, 07 Aug 2023 23:21:08 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Mon, 07 Aug 2023 23:21:08 -0500
changeset 42266
f521c4c38c6e
parent 42182
3fc2d2b7b7a8
permissions
-rw-r--r--

Add PurpleProtocolContactSearchInterface to search for contacts

This interface is meant for you to be able to search for new contacts to add to
your contact list. Right now this just does keyword search, but can be extended
in the future.

Searching through your contact list is the ui's responsibility.

Testing Done:
Ran the unit tests

Reviewed at https://reviews.imfreedom.org/r/2533/

41804
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * Lesser General Public License for more details.
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 */
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 #include <glib.h>
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 #include <sqlite3.h>
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <purple.h>
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 /******************************************************************************
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 * get schema version tests
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 *****************************************************************************/
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 test_sqlite3_get_schema_version_null(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 if(g_test_subprocess()) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 int version = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 version = purple_sqlite3_get_schema_version(NULL, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 g_assert_error(error, PURPLE_SQLITE3_DOMAIN, 0);
42182
3fc2d2b7b7a8 Fix leaked errors
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41804
diff changeset
36 g_clear_error(&error);
41804
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 g_assert_cmpint(version, ==, -1);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 g_test_trap_subprocess(NULL, 0, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 g_test_trap_assert_failed();
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 g_test_trap_assert_stderr("*assertion*!= NULL*");
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 test_sqlite3_get_schema_version_new(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 int version = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 g_assert_cmpint(version, ==, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 /******************************************************************************
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 * string migration tests
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 *****************************************************************************/
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 test_sqlite3_string_migrations_null(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 if(g_test_subprocess()) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 res = purple_sqlite3_run_migrations_from_strings(db, NULL, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 g_test_trap_subprocess(NULL, 0, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 g_test_trap_assert_failed();
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 g_test_trap_assert_stderr("*migrations != NULL*");
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 test_sqlite3_string_migrations_null_terminator(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 const char *migrations[] = {NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 res = purple_sqlite3_run_migrations_from_strings(db, migrations, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 g_assert_cmpint(version, ==, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 test_sqlite3_string_migrations_multiple(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 const char *migrations[] = {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 "CREATE TABLE foo(a TEXT); CREATE TABLE bar(b TEXT);",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 "CREATE TABLE baz(c TEXT);",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 NULL
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 };
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 res = purple_sqlite3_run_migrations_from_strings(db, migrations, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 /* Run the migrations again and make sure we remain at schema version 2. */
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 res = purple_sqlite3_run_migrations_from_strings(db, migrations, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 test_sqlite3_string_migrations_syntax_error(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 const char *migrations[] = {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 "CREATE TABLE broke(a TEXT",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 NULL
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 };
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 res = purple_sqlite3_run_migrations_from_strings(db, migrations, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 g_assert_error(error, PURPLE_SQLITE3_DOMAIN, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 g_clear_error(&error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 g_assert_cmpint(version, ==, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 test_sqlite3_string_migrations_older(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 const char *migrations1[] = {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 "CREATE TABLE foo(a TEXT); CREATE TABLE bar(b TEXT);",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 "CREATE TABLE baz(c TEXT);",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 NULL
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 };
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 const char *migrations2[] = {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 "CREATE TABLE foo(a TEXT); CREATE TABLE bar(b TEXT);",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 NULL
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 };
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 res = purple_sqlite3_run_migrations_from_strings(db, migrations1, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 /* Run the older migrations now and verify we get a failure. */
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 res = purple_sqlite3_run_migrations_from_strings(db, migrations2, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 g_assert_error(error, PURPLE_SQLITE3_DOMAIN, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 g_clear_error(&error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 /******************************************************************************
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 * resource migration tests
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 *****************************************************************************/
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 test_sqlite3_resource_migrations_null_path(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229 if(g_test_subprocess()) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 res = purple_sqlite3_run_migrations_from_resources(db, NULL, NULL,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 g_test_trap_subprocess(NULL, 0, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 g_test_trap_assert_failed();
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 g_test_trap_assert_stderr("*path != NULL*");
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 test_sqlite3_resource_migrations_null_migrations(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 if(g_test_subprocess()) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 const char *path = "/im/libpidgin/purple/tests/sqlite3/";
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 res = purple_sqlite3_run_migrations_from_resources(db, path, NULL,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 g_test_trap_subprocess(NULL, 0, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 g_test_trap_assert_failed();
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 g_test_trap_assert_stderr("*migrations != NULL*");
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 test_sqlite3_resource_migrations_null_terminator(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 const char *migrations[] = {NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 const char *path = "/im/pidgin/libpurple/tests/sqlite3/";
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 res = purple_sqlite3_run_migrations_from_resources(db, path, migrations,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 g_assert_cmpint(version, ==, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 test_sqlite3_resource_migrations_multiple(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 const char *migrations[] = {"initial.sql", "secondary.sql", NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 const char *path = "/im/pidgin/libpurple/tests/sqlite3/";
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
321 res = purple_sqlite3_run_migrations_from_resources(db, path, migrations,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
322 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330 /* Run the migrations again and make sure we remain at schema version 2. */
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331 res = purple_sqlite3_run_migrations_from_strings(db, migrations, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
333 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
334
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
343 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
344 test_sqlite3_resource_migrations_missing(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
345 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
346 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
347 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 const char *migrations[] = {"initial.sql", "imaginary.sql", NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351 const char *path = "/im/pidgin/libpurple/tests/sqlite3/";
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
353 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
356
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
357 res = purple_sqlite3_run_migrations_from_resources(db, path, migrations,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
358 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
359 g_assert_error(error, G_RESOURCE_ERROR, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
360 g_clear_error(&error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
361 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
365 g_assert_cmpint(version, ==, 1);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
368 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372 test_sqlite3_resource_migrations_syntax_error(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
374 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
376 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
377 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378 const char *migrations[] = {"malformed.sql", NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
379 const char *path = "/im/pidgin/libpurple/tests/sqlite3/";
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
380
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
381 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385 res = purple_sqlite3_run_migrations_from_resources(db, path, migrations,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387 g_assert_error(error, PURPLE_SQLITE3_DOMAIN, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388 g_clear_error(&error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 g_assert_cmpint(version, ==, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
395 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
396 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
398
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399 static void
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
400 test_sqlite3_resource_migrations_older(void) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401 GError *error = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402 sqlite3 *db = NULL;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
403 gboolean res = FALSE;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
404 int rc = 0;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
405 int version = -1;
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
406 const char *migrations1[] = {"initial.sql", "secondary.sql", NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
407 const char *migrations2[] = {"initial.sql", NULL};
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
408 const char *path = "/im/pidgin/libpurple/tests/sqlite3/";
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
409
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 rc = sqlite3_open(":memory:", &db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411 g_assert_nonnull(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
412 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
414 res = purple_sqlite3_run_migrations_from_resources(db, path, migrations1,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 g_assert_true(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
418
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
420 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
423 /* Run the older migrations now and verify we get a failure. */
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
424 res = purple_sqlite3_run_migrations_from_resources(db, path, migrations2,
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
425 &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
426 g_assert_error(error, PURPLE_SQLITE3_DOMAIN, 0);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427 g_clear_error(&error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
428 g_assert_false(res);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
429
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
430 version = purple_sqlite3_get_schema_version(db, &error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
431 g_assert_no_error(error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
432 g_assert_cmpint(version, ==, 2);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
433
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434 rc = sqlite3_close(db);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435 g_assert_cmpint(rc, ==, SQLITE_OK);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 }
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438 /******************************************************************************
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 * Main
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
440 *****************************************************************************/
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441 int
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
442 main(int argc, char *argv[]) {
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443 g_test_init(&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
444
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
445 g_test_add_func("/sqlite3/schema_version/null",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
446 test_sqlite3_get_schema_version_null);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
447 g_test_add_func("/sqlite3/schema_version/new",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
448 test_sqlite3_get_schema_version_new);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
449
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
450 g_test_add_func("/sqlite3/string_migrations/null",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
451 test_sqlite3_string_migrations_null);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
452 g_test_add_func("/sqlite3/string_migrations/null-terminator",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
453 test_sqlite3_string_migrations_null_terminator);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
454 g_test_add_func("/sqlite3/string_migrations/multiple",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
455 test_sqlite3_string_migrations_multiple);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
456 g_test_add_func("/sqlite3/string_migrations/syntax-error",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
457 test_sqlite3_string_migrations_syntax_error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
458 g_test_add_func("/sqlite3/string_migrations/older",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
459 test_sqlite3_string_migrations_older);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
460
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
461 g_test_add_func("/sqlite3/resource_migrations/null-path",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
462 test_sqlite3_resource_migrations_null_path);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
463 g_test_add_func("/sqlite3/resource_migrations/null-migrations",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
464 test_sqlite3_resource_migrations_null_migrations);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
465 g_test_add_func("/sqlite3/resource_migrations/null-terminator",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
466 test_sqlite3_resource_migrations_null_terminator);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
467 g_test_add_func("/sqlite3/resource_migrations/multiple",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
468 test_sqlite3_resource_migrations_multiple);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
469 g_test_add_func("/sqlite3/resource_migrations/missing",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
470 test_sqlite3_resource_migrations_missing);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
471 g_test_add_func("/sqlite3/resource_migrations/syntax-error",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
472 test_sqlite3_resource_migrations_syntax_error);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
473 g_test_add_func("/sqlite3/resource_migrations/older",
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
474 test_sqlite3_resource_migrations_older);
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
475
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
476 return g_test_run();
36c3c3cd2402 Add some api for handling SQLite3 migrations
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
477 }

mercurial