You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.5 KiB
135 lines
3.5 KiB
#include "munit/munit.h" |
|
#include "../src/config.c" |
|
#include <unistd.h> //This has getcwd |
|
#include <stdlib.h> //This has getenv |
|
|
|
/* |
|
* Ensures that path_exists returns true on current working dir (should to exist) |
|
*/ |
|
MunitResult pathThatExists(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
char cwd[500] = {'\0'}; |
|
getcwd(cwd,500); |
|
munit_assert_true( path_exists( cwd ) ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult pathThatDoesntExist(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
char cwd[500] = {'\0'}; |
|
getcwd(cwd,500); |
|
strcat( cwd, "thisshoudldnotexist" ); |
|
munit_assert_false( path_exists( cwd ) ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult tildeResolvesCorrectly(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
munit_assert_string_equal( getenv("HOME"), resolveTilde("~") ); |
|
return MUNIT_OK; |
|
} |
|
|
|
|
|
MunitResult checkConfigDirWithXdg(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
char directory[] = "/testing/xdg/directory"; |
|
setenv( "XDG_CONFIG_HOME",directory, 1 ); |
|
munit_assert_string_equal( directory, getConfigDir() ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult checkConfigDirWithoutXdg(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
unsetenv( "XDG_CONFIG_HOME" ); |
|
char dir[500] = {'\0'}; |
|
strcpy( dir, getenv("HOME") ); |
|
strcat( dir, "/.config" ); |
|
munit_assert_string_equal( dir, getConfigDir() ); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitResult checkDefaults(const MunitParameter params[], |
|
void* user_data_or_fixture){ |
|
|
|
char directory[] = "/testing/xdg/directory"; |
|
char file[] = "/testing/xdg/directory/proxy.conf"; |
|
setenv( "XDG_CONFIG_HOME",directory, 1 ); |
|
Config *conf = configDefaults(); |
|
|
|
munit_assert_string_equal(conf->database, "proxy.sqlite"); |
|
munit_assert_int(conf->port, ==, 8080); |
|
munit_assert_string_equal(conf->localConfig, "proxy.conf"); |
|
munit_assert_string_equal(conf->userConfig, file); |
|
return MUNIT_OK; |
|
} |
|
|
|
MunitTest tests[] = { |
|
{ |
|
"/path_exists/yes", /* name */ |
|
pathThatExists, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/path_exists/no", /* name */ |
|
pathThatDoesntExist, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/TildeResolves", /* name */ |
|
tildeResolvesCorrectly, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/WithXDG", /* name */ |
|
checkConfigDirWithoutXdg, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/WithoutXDG", /* name */ |
|
checkConfigDirWithoutXdg, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
{ |
|
"/ConfigDir/Defaults", /* name */ |
|
checkDefaults, /* test */ |
|
NULL, /* setup */ |
|
NULL, /* tear_down */ |
|
MUNIT_TEST_OPTION_NONE, /* options */ |
|
NULL /* parameters */ |
|
}, |
|
/* Mark the end of the array with an entry where the test |
|
* function is NULL */ |
|
{ NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } |
|
}; |
|
|
|
MunitSuite config_test_suite = { |
|
"/config", /* name */ |
|
tests, /* tests */ |
|
NULL, /* suites */ |
|
1, /* iterations */ |
|
MUNIT_SUITE_OPTION_NONE /* options */ |
|
}; |
|
|
|
#ifndef MAINTEST |
|
#define MAINTEST |
|
|
|
int main (int argc, char* argv[]) { |
|
return munit_suite_main(&config_test_suite, NULL, argc, argv); |
|
} |
|
|
|
#endif /* ifndef MAINTEST */
|
|
|