Mon, 07 Aug 2023 23:21:08 -0500
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 | } |