|
|
|
|
@ -28,6 +28,9 @@
|
|
|
|
|
#include <glib.h>
|
|
|
|
|
#include "test-stuff.h"
|
|
|
|
|
#include "gnc-filepath-utils.h"
|
|
|
|
|
#ifdef MAC_INTEGRATION
|
|
|
|
|
#include <Foundation/Foundation.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
struct usr_confpath_strings_struct
|
|
|
|
|
{
|
|
|
|
|
@ -55,13 +58,32 @@ usr_confpath_strings strs2[] =
|
|
|
|
|
{ 0, NULL, NULL },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static char*
|
|
|
|
|
test_get_userdatadir ()
|
|
|
|
|
{
|
|
|
|
|
#ifdef MAC_INTEGRATION
|
|
|
|
|
char *retval = NULL;
|
|
|
|
|
NSFileManager*fm = [NSFileManager defaultManager];
|
|
|
|
|
NSArray* appSupportDir = [fm URLsForDirectory:NSApplicationSupportDirectory
|
|
|
|
|
inDomains:NSUserDomainMask];
|
|
|
|
|
if ([appSupportDir count] > 0)
|
|
|
|
|
{
|
|
|
|
|
NSURL* dirUrl = [appSupportDir objectAtIndex:0];
|
|
|
|
|
NSString* dirPath = [dirUrl path];
|
|
|
|
|
retval = g_strdup([dirPath UTF8String]);
|
|
|
|
|
}
|
|
|
|
|
return retval;
|
|
|
|
|
#else
|
|
|
|
|
return g_strdup(g_get_user_data_dir());
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
main(int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
char *home_dir = NULL;
|
|
|
|
|
const char *userdata_dir = NULL;
|
|
|
|
|
const char *tmp_dir = g_get_tmp_dir();
|
|
|
|
|
char *userdata_dir = NULL;
|
|
|
|
|
char *gnc_data_home_dir = NULL;
|
|
|
|
|
|
|
|
|
|
if (argc > 1)
|
|
|
|
|
@ -70,11 +92,14 @@ main(int argc, char **argv)
|
|
|
|
|
* used to pass invalid home directories manually. The
|
|
|
|
|
* test error messages should then show the system's temporary
|
|
|
|
|
* directory to be used instead */
|
|
|
|
|
home_dir = argv[1];
|
|
|
|
|
home_dir = g_strdup(argv[1]);
|
|
|
|
|
else
|
|
|
|
|
/* Set up a fake home directory to play with */
|
|
|
|
|
#ifdef MAC_INTEGRATION
|
|
|
|
|
home_dir = test_get_userdatadir();
|
|
|
|
|
#else
|
|
|
|
|
home_dir = g_dir_make_tmp("gnucashXXXXXX", NULL);
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
/* Run usr conf dir tests with a valid and writable homedir */
|
|
|
|
|
g_setenv("HOME", home_dir, TRUE);
|
|
|
|
|
|
|
|
|
|
@ -86,25 +111,25 @@ main(int argc, char **argv)
|
|
|
|
|
|
|
|
|
|
if (strs2[i].func_num == 0)
|
|
|
|
|
{
|
|
|
|
|
wantout = g_build_filename(tmp_dir, PACKAGE_NAME, "foo",
|
|
|
|
|
wantout = g_build_filename(home_dir, PACKAGE_NAME, "foo",
|
|
|
|
|
(gchar *)NULL);
|
|
|
|
|
daout = gnc_build_userdata_path("foo");
|
|
|
|
|
}
|
|
|
|
|
else if (strs2[i].func_num == 1)
|
|
|
|
|
{
|
|
|
|
|
wantout = g_build_filename(tmp_dir, PACKAGE_NAME, strs2[i].output, "foo",
|
|
|
|
|
wantout = g_build_filename(home_dir, PACKAGE_NAME, strs2[i].output, "foo",
|
|
|
|
|
(gchar *)NULL);
|
|
|
|
|
daout = gnc_build_book_path("foo");
|
|
|
|
|
}
|
|
|
|
|
else if (strs2[i].func_num == 2)
|
|
|
|
|
{
|
|
|
|
|
wantout = g_build_filename(tmp_dir, PACKAGE_NAME, strs2[i].output, "foo",
|
|
|
|
|
wantout = g_build_filename(home_dir, PACKAGE_NAME, strs2[i].output, "foo",
|
|
|
|
|
(gchar *)NULL);
|
|
|
|
|
daout = gnc_build_translog_path("foo");
|
|
|
|
|
}
|
|
|
|
|
else // if (strs2[i].prefix_home == 3)
|
|
|
|
|
{
|
|
|
|
|
wantout = g_build_filename(tmp_dir, PACKAGE_NAME, strs2[i].output, "foo",
|
|
|
|
|
wantout = g_build_filename(home_dir, PACKAGE_NAME, strs2[i].output, "foo",
|
|
|
|
|
(gchar *)NULL);
|
|
|
|
|
daout = gnc_build_data_path("foo");
|
|
|
|
|
}
|
|
|
|
|
@ -116,10 +141,10 @@ main(int argc, char **argv)
|
|
|
|
|
g_free(wantout);
|
|
|
|
|
g_free(daout);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_free(home_dir);
|
|
|
|
|
/* Second run, after properly having called gnc_filepath_init */
|
|
|
|
|
gnc_filepath_init(TRUE);
|
|
|
|
|
userdata_dir = g_get_user_data_dir();
|
|
|
|
|
userdata_dir = test_get_userdatadir();
|
|
|
|
|
for (i = 0; strs2[i].funcname != NULL; i++)
|
|
|
|
|
{
|
|
|
|
|
char *daout;
|
|
|
|
|
@ -157,6 +182,7 @@ main(int argc, char **argv)
|
|
|
|
|
g_free(wantout);
|
|
|
|
|
g_free(daout);
|
|
|
|
|
}
|
|
|
|
|
g_free(userdata_dir);
|
|
|
|
|
|
|
|
|
|
/* Third run, after setting GNC_DATA_HOME gnc_filepath_init */
|
|
|
|
|
gnc_data_home_dir = g_build_filename(home_dir, "Test", NULL);
|
|
|
|
|
|