gtest-path-utilities.cpp (gnucash-5.0.tar.bz2) | : | gtest-path-utilities.cpp (gnucash-5.1.tar.bz2) | ||
---|---|---|---|---|
#include <glib.h> | #include <glib.h> | |||
#include <config.h> | #include <config.h> | |||
#include <gncla-dir.h> | #include <gncla-dir.h> | |||
#include <gnc-path.h> | #include <gnc-path.h> | |||
#include <binreloc.h> | #include <binreloc.h> | |||
#include <gnc-filepath-utils.h> | #include <gnc-filepath-utils.h> | |||
#include <gtest/gtest.h> | #include <gtest/gtest.h> | |||
/* Variant of EXPECT_STREQ that calls g_free() | ||||
* on its first argument after the check */ | ||||
#define EXPECT_STREQ_GFREE(a, b) do { char *p_; EXPECT_STREQ(p_ = (a), (b)); g_f | ||||
ree(p_); } while (0) | ||||
struct PathTest : public testing::Test | struct PathTest : public testing::Test | |||
{ | { | |||
PathTest() : m_prefix{nullptr} {} | PathTest() : m_prefix{nullptr} {} | |||
void SetUp() | void SetUp() | |||
{ | { | |||
#ifdef ENABLE_BINRELOC | #ifdef ENABLE_BINRELOC | |||
gnc_gbr_init(nullptr); | gnc_gbr_init(nullptr); | |||
#endif | #endif | |||
char *builddir = g_strdup(g_getenv("GNC_BUILDDIR")); | char *builddir = g_strdup(g_getenv("GNC_BUILDDIR")); | |||
if (builddir) | if (builddir) | |||
m_prefix = builddir; | m_prefix = builddir; | |||
else | else | |||
m_prefix = g_get_current_dir(); | m_prefix = g_get_current_dir(); | |||
} | } | |||
void TearDown() | void TearDown() | |||
{ | { | |||
if (m_prefix) | if (m_prefix) | |||
g_free(m_prefix); | g_free(m_prefix); | |||
/* Clear the statically allocated exe string */ | ||||
gnc_gbr_set_exe(NULL); | ||||
} | } | |||
char *m_prefix; | char *m_prefix; | |||
}; | }; | |||
TEST_F(PathTest, gnc_path_get_prefix) | TEST_F(PathTest, gnc_path_get_prefix) | |||
{ | { | |||
#ifdef ENABLE_BINRELOC | #ifdef ENABLE_BINRELOC | |||
EXPECT_STREQ(gnc_path_get_prefix(), m_prefix); | EXPECT_STREQ_GFREE(gnc_path_get_prefix(), m_prefix); | |||
#else | #else | |||
g_setenv("GNC_UNINSTALLED", "1", TRUE); | g_setenv("GNC_UNINSTALLED", "1", TRUE); | |||
g_setenv("GNC_BUILDDIR", m_prefix, 1); | g_setenv("GNC_BUILDDIR", m_prefix, 1); | |||
EXPECT_STREQ(gnc_path_get_prefix(), m_prefix); | EXPECT_STREQ_GFREE(gnc_path_get_prefix(), m_prefix); | |||
g_unsetenv("GNC_UNINSTALLED"); | g_unsetenv("GNC_UNINSTALLED"); | |||
g_unsetenv("GNC_BUILDDIR"); | g_unsetenv("GNC_BUILDDIR"); | |||
EXPECT_STREQ(gnc_path_get_prefix(), PREFIX); | EXPECT_STREQ_GFREE(gnc_path_get_prefix(), PREFIX); | |||
#endif | #endif | |||
} | } | |||
TEST_F(PathTest, gnc_path_get_bindir) | TEST_F(PathTest, gnc_path_get_bindir) | |||
{ | { | |||
gchar *dirname = gnc_file_path_relative_part(PREFIX, BINDIR); | gchar *dirname = gnc_file_path_relative_part(PREFIX, BINDIR); | |||
gchar *binpath = g_build_filename(m_prefix, dirname, NULL); | gchar *binpath = g_build_filename(m_prefix, dirname, NULL); | |||
g_free(dirname); | g_free(dirname); | |||
#ifdef ENABLE_BINRELOC | #ifdef ENABLE_BINRELOC | |||
EXPECT_STREQ(gnc_path_get_bindir(), binpath); | EXPECT_STREQ_GFREE(gnc_path_get_bindir(), binpath); | |||
g_free(binpath); | g_free(binpath); | |||
#else | #else | |||
g_setenv("GNC_UNINSTALLED", "1", TRUE); | g_setenv("GNC_UNINSTALLED", "1", TRUE); | |||
g_setenv("GNC_BUILDDIR", m_prefix, 1); | g_setenv("GNC_BUILDDIR", m_prefix, 1); | |||
EXPECT_STREQ(gnc_path_get_bindir(), binpath); | EXPECT_STREQ_GFREE(gnc_path_get_bindir(), binpath); | |||
g_free(binpath); | g_free(binpath); | |||
g_unsetenv("GNC_UNINSTALLED"); | g_unsetenv("GNC_UNINSTALLED"); | |||
g_unsetenv("GNC_BUILDDIR"); | g_unsetenv("GNC_BUILDDIR"); | |||
EXPECT_STREQ(gnc_path_get_bindir(), BINDIR); | EXPECT_STREQ_GFREE(gnc_path_get_bindir(), BINDIR); | |||
#endif | #endif | |||
} | } | |||
TEST_F(PathTest, gnc_path_get_libdir) | TEST_F(PathTest, gnc_path_get_libdir) | |||
{ | { | |||
gchar *dirname = gnc_file_path_relative_part(PREFIX, LIBDIR); | gchar *dirname = gnc_file_path_relative_part(PREFIX, LIBDIR); | |||
gchar *libpath = g_build_filename(m_prefix, dirname, NULL); | gchar *libpath = g_build_filename(m_prefix, dirname, NULL); | |||
g_free(dirname); | g_free(dirname); | |||
#ifdef ENABLE_BINRELOC | #ifdef ENABLE_BINRELOC | |||
EXPECT_STREQ(gnc_path_get_libdir(), libpath); | EXPECT_STREQ_GFREE(gnc_path_get_libdir(), libpath); | |||
g_free(libpath); | g_free(libpath); | |||
#else | #else | |||
g_setenv("GNC_UNINSTALLED", "1", TRUE); | g_setenv("GNC_UNINSTALLED", "1", TRUE); | |||
g_setenv("GNC_BUILDDIR", m_prefix, 1); | g_setenv("GNC_BUILDDIR", m_prefix, 1); | |||
EXPECT_STREQ(gnc_path_get_libdir(), libpath); | EXPECT_STREQ_GFREE(gnc_path_get_libdir(), libpath); | |||
g_free(libpath); | g_free(libpath); | |||
g_unsetenv("GNC_UNINSTALLED"); | g_unsetenv("GNC_UNINSTALLED"); | |||
g_unsetenv("GNC_BUILDDIR"); | g_unsetenv("GNC_BUILDDIR"); | |||
EXPECT_STREQ(gnc_path_get_libdir(), LIBDIR); | EXPECT_STREQ_GFREE(gnc_path_get_libdir(), LIBDIR); | |||
#endif | #endif | |||
} | } | |||
TEST_F(PathTest, gnc_path_get_datadir) | TEST_F(PathTest, gnc_path_get_datadir) | |||
{ | { | |||
gchar *dirname = gnc_file_path_relative_part(PREFIX, DATADIR); | gchar *dirname = gnc_file_path_relative_part(PREFIX, DATADIR); | |||
gchar *datapath = g_build_filename(m_prefix, dirname, NULL); | gchar *datapath = g_build_filename(m_prefix, dirname, NULL); | |||
g_free(dirname); | g_free(dirname); | |||
#ifdef ENABLE_BINRELOC | #ifdef ENABLE_BINRELOC | |||
EXPECT_STREQ(gnc_path_get_datadir(), datapath); | EXPECT_STREQ_GFREE(gnc_path_get_datadir(), datapath); | |||
g_free(datapath); | g_free(datapath); | |||
#else | #else | |||
g_setenv("GNC_UNINSTALLED", "1", TRUE); | g_setenv("GNC_UNINSTALLED", "1", TRUE); | |||
g_setenv("GNC_BUILDDIR", m_prefix, 1); | g_setenv("GNC_BUILDDIR", m_prefix, 1); | |||
EXPECT_STREQ(gnc_path_get_datadir(), datapath); | EXPECT_STREQ_GFREE(gnc_path_get_datadir(), datapath); | |||
g_free(datapath); | g_free(datapath); | |||
g_unsetenv("GNC_UNINSTALLED"); | g_unsetenv("GNC_UNINSTALLED"); | |||
g_unsetenv("GNC_BUILDDIR"); | g_unsetenv("GNC_BUILDDIR"); | |||
EXPECT_STREQ(gnc_path_get_datadir(), DATADIR); | EXPECT_STREQ_GFREE(gnc_path_get_datadir(), DATADIR); | |||
#endif | #endif | |||
} | } | |||
TEST_F(PathTest, gnc_path_get_sysconfdir) | TEST_F(PathTest, gnc_path_get_sysconfdir) | |||
{ | { | |||
gchar *dirname = gnc_file_path_relative_part(PREFIX, SYSCONFDIR); | gchar *dirname = gnc_file_path_relative_part(PREFIX, SYSCONFDIR); | |||
gchar *sysconfpath = g_build_filename(m_prefix, dirname, PROJECT_NAME, NULL) ; | gchar *sysconfpath = g_build_filename(m_prefix, dirname, PROJECT_NAME, NULL) ; | |||
g_free(dirname); | g_free(dirname); | |||
#ifdef ENABLE_BINRELOC | #ifdef ENABLE_BINRELOC | |||
EXPECT_STREQ(gnc_path_get_pkgsysconfdir(), sysconfpath); | EXPECT_STREQ_GFREE(gnc_path_get_pkgsysconfdir(), sysconfpath); | |||
g_free(sysconfpath); | g_free(sysconfpath); | |||
#else | #else | |||
g_setenv("GNC_UNINSTALLED", "1", TRUE); | g_setenv("GNC_UNINSTALLED", "1", TRUE); | |||
g_setenv("GNC_BUILDDIR", m_prefix, 1); | g_setenv("GNC_BUILDDIR", m_prefix, 1); | |||
EXPECT_STREQ(gnc_path_get_pkgsysconfdir(), sysconfpath); | EXPECT_STREQ_GFREE(gnc_path_get_pkgsysconfdir(), sysconfpath); | |||
g_free(sysconfpath); | g_free(sysconfpath); | |||
g_unsetenv("GNC_UNINSTALLED"); | g_unsetenv("GNC_UNINSTALLED"); | |||
g_unsetenv("GNC_BUILDDIR"); | g_unsetenv("GNC_BUILDDIR"); | |||
sysconfpath = g_build_filename(SYSCONFDIR, PROJECT_NAME, NULL); | sysconfpath = g_build_filename(SYSCONFDIR, PROJECT_NAME, NULL); | |||
EXPECT_STREQ(gnc_path_get_pkgsysconfdir(), sysconfpath); | EXPECT_STREQ_GFREE(gnc_path_get_pkgsysconfdir(), sysconfpath); | |||
g_free(sysconfpath); | g_free(sysconfpath); | |||
#endif | #endif | |||
} | } | |||
TEST_F (PathTest, gnc_filename_is_backup) | ||||
{ | ||||
EXPECT_EQ (gnc_filename_is_backup (""), false); | ||||
EXPECT_EQ (gnc_filename_is_backup ("a.gnucash"), false); | ||||
EXPECT_EQ (gnc_filename_is_backup ("a.gnucash.20201131010203.gnucash"), true | ||||
); | ||||
EXPECT_EQ (gnc_filename_is_datafile (""), false); | ||||
EXPECT_EQ (gnc_filename_is_datafile ("a.gnucash"), true); | ||||
EXPECT_EQ (gnc_filename_is_datafile ("a.gnucash.20201131010203.gnucash"), fa | ||||
lse); | ||||
} | ||||
End of changes. 18 change blocks. | ||||
15 lines changed or deleted | 22 lines changed or added |