nkeynes@1205: /** nkeynes@1205: * $Id$ nkeynes@1205: * nkeynes@1205: * Test cases for path helper functions nkeynes@1205: * nkeynes@1205: * Copyright (c) 2012 Nathan Keynes. nkeynes@1205: * nkeynes@1205: * This program is free software; you can redistribute it and/or modify nkeynes@1205: * it under the terms of the GNU General Public License as published by nkeynes@1205: * the Free Software Foundation; either version 2 of the License, or nkeynes@1205: * (at your option) any later version. nkeynes@1205: * nkeynes@1205: * This program is distributed in the hope that it will be useful, nkeynes@1205: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@1205: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@1205: * GNU General Public License for more details. nkeynes@1205: */ nkeynes@1205: nkeynes@1205: #include nkeynes@1205: #include nkeynes@1205: #include nkeynes@1205: #include nkeynes@1205: #include "lxpaths.h" nkeynes@1205: nkeynes@1205: char *lxdream_get_global_config_path_value() { } nkeynes@1205: nkeynes@1205: struct expanded_path_case_t { nkeynes@1205: const char *input; nkeynes@1205: const char *output; nkeynes@1205: }; nkeynes@1205: nkeynes@1205: char *env_vars[] = { "TEST1=quux", "TEST2=${BLAH}", "TEST3=", "2=3", "TEST_HOME=/home/foo", NULL }; nkeynes@1205: const char *unset_env_vars[] = { "PATH_TEST", "1", NULL }; nkeynes@1205: struct expanded_path_case_t expanded_path_cases[] = { nkeynes@1205: {NULL, NULL}, nkeynes@1205: {"", ""}, nkeynes@1205: {"a", "a"}, nkeynes@1205: {"$", "$"}, nkeynes@1205: {"blah$", "blah$"}, nkeynes@1205: {"\\$", "$"}, nkeynes@1205: {"foo\\${TEST}\\n\\\\r", "foo${TEST}n\\r"}, nkeynes@1205: {"/home/user/.lxdreamrc", "/home/user/.lxdreamrc"}, nkeynes@1205: {"${TEST_HOME}/.lxdreamrc", "/home/foo/.lxdreamrc"}, nkeynes@1205: {"$TEST_HOME/bar", "/home/foo/bar"}, nkeynes@1205: {"/home/$TEST1/blah", "/home/quux/blah"}, nkeynes@1205: {"/tmp/${TEST2}/abcd", "/tmp/${BLAH}/abcd"}, nkeynes@1205: {"$TEST1$TEST2$TEST3$1$2", "quux${BLAH}3"}, nkeynes@1205: {NULL,NULL} nkeynes@1205: }; nkeynes@1205: nkeynes@1205: gboolean check_expanded_path( const char *input, const char *output ) nkeynes@1205: { nkeynes@1205: char * result = get_expanded_path(input); nkeynes@1205: if( output == NULL ) { nkeynes@1205: if( result != NULL ) { nkeynes@1205: printf( "Unexpected non-null result from get_expanded_path(NULL), got '%s'\n", result ); nkeynes@1205: g_free(result); nkeynes@1205: return FALSE; nkeynes@1205: } else { nkeynes@1205: return TRUE; nkeynes@1205: } nkeynes@1205: } else if( result == NULL ) { nkeynes@1205: printf( "Unexpected NULL result from get_expanded_path('%s'), expected '%s'\n", input, output ); nkeynes@1205: return FALSE; nkeynes@1205: } else if( strcmp(result, output) != 0 ) { nkeynes@1205: printf( "Unexpected result from get_expanded_path('%s'), expected '%s' but was '%s'\n", input, output, result ); nkeynes@1205: g_free(result); nkeynes@1205: return FALSE; nkeynes@1205: } else { nkeynes@1205: g_free(result); nkeynes@1205: return TRUE; nkeynes@1205: } nkeynes@1205: } nkeynes@1205: nkeynes@1205: nkeynes@1205: gboolean test_get_expanded_path() nkeynes@1205: { nkeynes@1205: int count, i; nkeynes@1205: int fails = 0; nkeynes@1205: nkeynes@1205: for( i=0; env_vars[i] != NULL; i++ ) { nkeynes@1205: putenv(env_vars[i]); nkeynes@1205: } nkeynes@1205: for( i=0; unset_env_vars[i] != NULL; i++ ) { nkeynes@1205: unsetenv(unset_env_vars[i]); nkeynes@1205: } nkeynes@1205: nkeynes@1205: for( count=0; expanded_path_cases[count].input != NULL || count == 0; count++ ) { nkeynes@1205: gboolean success = check_expanded_path(expanded_path_cases[count].input, expanded_path_cases[count].output); nkeynes@1205: if( !success ) nkeynes@1205: fails ++; nkeynes@1205: } nkeynes@1205: printf( "get_expanded_path: %d/%d (%s)\n", (count-fails), count, (fails == 0 ? "OK" : "ERROR")); nkeynes@1205: return fails == 0 ? TRUE : FALSE; nkeynes@1205: nkeynes@1205: /* FIXME: Should probably restore the env state, but doesn't matter at the moment */ nkeynes@1205: } nkeynes@1205: nkeynes@1205: int main() nkeynes@1205: { nkeynes@1205: gboolean result = TRUE; nkeynes@1205: result = test_get_expanded_path() && result; nkeynes@1205: nkeynes@1205: return result ? 0 : 1; nkeynes@1205: }