Fix self check to work as non-root

In our test suite, create and use a temporary directory for our history. This
makes the history check work as non-root.

Consequently, drop the skipping of the history check for "make distcheck".
This commit is contained in:
Martin Pitt 2010-11-04 23:32:08 -04:00
parent a4353d0801
commit e38cddbb8e

View file

@ -24,6 +24,8 @@
#include <glib-object.h>
#include <glib/gstdio.h>
#include <up-history-item.h>
#include <stdlib.h>
#include <errno.h>
#include "up-backend.h"
#include "up-daemon.h"
#include "up-device.h"
@ -34,6 +36,8 @@
#include "up-qos.h"
#include "up-wakeups.h"
gchar *history_dir = NULL;
static void
up_test_native_func (void)
{
@ -122,16 +126,16 @@ static void
up_test_history_remove_temp_files (void)
{
gchar *filename;
filename = g_build_filename (PACKAGE_LOCALSTATE_DIR, "lib", "upower", "history-time-full-test.dat", NULL);
filename = g_build_filename (history_dir, "history-time-full-test.dat", NULL);
g_unlink (filename);
g_free (filename);
filename = g_build_filename (PACKAGE_LOCALSTATE_DIR, "lib", "upower", "history-time-empty-test.dat", NULL);
filename = g_build_filename (history_dir, "history-time-empty-test.dat", NULL);
g_unlink (filename);
g_free (filename);
filename = g_build_filename (PACKAGE_LOCALSTATE_DIR, "lib", "upower", "history-charge-test.dat", NULL);
filename = g_build_filename (history_dir, "history-charge-test.dat", NULL);
g_unlink (filename);
g_free (filename);
filename = g_build_filename (PACKAGE_LOCALSTATE_DIR, "lib", "upower", "history-rate-test.dat", NULL);
filename = g_build_filename (history_dir, "history-rate-test.dat", NULL);
g_unlink (filename);
g_free (filename);
}
@ -148,9 +152,11 @@ up_test_history_func (void)
history = up_history_new ();
g_assert (history != NULL);
/* is this a distcheck with no writable root? */
if (g_strstr_len (PACKAGE_LOCALSTATE_DIR, -1, "_inst") != NULL)
goto distcheck_skip;
/* set a temporary directory for the history */
history_dir = g_build_filename (g_get_tmp_dir(), "upower-test.XXXXXX", NULL);
if (mkdtemp (history_dir) == NULL)
g_error ("Cannot create temporary directory: %s", g_strerror(errno));
up_history_set_directory (history, history_dir);
/* remove previous test files */
up_test_history_remove_temp_files ();
@ -196,12 +202,13 @@ up_test_history_func (void)
g_object_unref (history);
/* ensure the file was created */
filename = g_build_filename (PACKAGE_LOCALSTATE_DIR, "lib", "upower", "history-charge-test.dat", NULL);
filename = g_build_filename (history_dir, "history-charge-test.dat", NULL);
g_assert (g_file_test (filename, G_FILE_TEST_EXISTS));
g_free (filename);
/* ensure we can load from disk */
history = up_history_new ();
up_history_set_directory (history, history_dir);
up_history_set_id (history, "test");
/* get data for last 10 seconds */
@ -221,19 +228,19 @@ up_test_history_func (void)
/* ensure only 2 points are returned */
history = up_history_new ();
up_history_set_directory (history, history_dir);
up_history_set_id (history, "test");
array = up_history_get_data (history, UP_HISTORY_TYPE_CHARGE, 10, 100);
g_assert (array != NULL);
g_assert_cmpint (array->len, ==, 2);
g_ptr_array_unref (array);
distcheck_skip:
/* unref */
g_object_unref (history);
/* remove these test files */
up_test_history_remove_temp_files ();
rmdir (history_dir);
}
static void