[GLIB] Use GUniquePtr instead of GOwnPtr
[WebKit-https.git] / Tools / TestWebKitAPI / gtk / WebKit2Gtk / TestMain.cpp
1 /*
2  * Copyright (C) 2011 Igalia S.L.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19
20 #include "config.h"
21 #include "TestMain.h"
22
23 #include <glib/gstdio.h>
24 #include <gtk/gtk.h>
25 #include <webkit2/webkit2.h>
26 #include <wtf/gobject/GUniquePtr.h>
27
28 void beforeAll();
29 void afterAll();
30
31 static void registerGResource(void)
32 {
33     GUniquePtr<char> resourcesPath(g_build_filename(WEBKIT_EXEC_PATH, "TestWebKitAPI", "WebKit2Gtk", "resources", "webkit2gtk-tests-resources.gresource", nullptr));
34     GResource* resource = g_resource_load(resourcesPath.get(), 0);
35     g_assert(resource);
36
37     g_resources_register(resource);
38     g_resource_unref(resource);
39 }
40
41 static void removeNonEmptyDirectory(const char* directoryPath)
42 {
43     GDir* directory = g_dir_open(directoryPath, 0, 0);
44     g_assert(directory);
45     const char* fileName;
46     while ((fileName = g_dir_read_name(directory))) {
47         GUniquePtr<char> filePath(g_build_filename(directoryPath, fileName, nullptr));
48         g_unlink(filePath.get());
49     }
50     g_dir_close(directory);
51     g_rmdir(directoryPath);
52 }
53
54 int main(int argc, char** argv)
55 {
56     g_unsetenv("DBUS_SESSION_BUS_ADDRESS");
57     gtk_test_init(&argc, &argv, 0);
58     g_setenv("WEBKIT_EXEC_PATH", WEBKIT_EXEC_PATH, FALSE);
59     g_setenv("WEBKIT_INJECTED_BUNDLE_PATH", WEBKIT_INJECTED_BUNDLE_PATH, FALSE);
60     g_setenv("LC_ALL", "C", TRUE);
61     g_setenv("GIO_USE_VFS", "local", TRUE);
62     g_setenv("GSETTINGS_BACKEND", "memory", TRUE);
63     g_test_bug_base("https://bugs.webkit.org/");
64
65     registerGResource();
66
67     GUniquePtr<char> diskCacheTempDirectory(g_dir_make_tmp("WebKit2TestsDiskCache-XXXXXX", 0));
68     g_assert(diskCacheTempDirectory.get());
69     webkit_web_context_set_disk_cache_directory(webkit_web_context_get_default(), diskCacheTempDirectory.get());
70
71     beforeAll();
72     int returnValue = g_test_run();
73     afterAll();
74
75     removeNonEmptyDirectory(diskCacheTempDirectory.get());
76
77     return returnValue;
78 }