libpurple/tests/sqlite3/test_sqlite3.c

Tue, 05 Sep 2023 00:05:12 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 05 Sep 2023 00:05:12 -0500
changeset 42312
7d6f0b8b6e77
parent 42182
3fc2d2b7b7a8
permissions
-rw-r--r--

Use PurpleAvatar for PurplePerson and PurpleContactInfo

I'm not sure why we didn't do this earlier, but it's done now.

Testing Done:
Connected a demo account and verified all of its icons showed up in the contact list.

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

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