@ -34,6 +34,7 @@
ASTERISK_FILE_VERSION ( __FILE__ , " $Revision$ " ) ;
ASTERISK_FILE_VERSION ( __FILE__ , " $Revision$ " ) ;
# include <math.h> /* HUGE_VAL */
# include <math.h> /* HUGE_VAL */
# include <sys/stat.h>
# include "asterisk/config.h"
# include "asterisk/config.h"
# include "asterisk/module.h"
# include "asterisk/module.h"
@ -47,6 +48,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$");
# include "asterisk/logger.h"
# include "asterisk/logger.h"
# define CONFIG_FILE "test_config.conf"
# define CONFIG_FILE "test_config.conf"
# define CONFIG_INCLUDE_FILE "test_config_include.conf"
/*
/*
* This builds the folowing config :
* This builds the folowing config :
@ -293,6 +295,77 @@ static int hook_cb(struct ast_config *cfg)
return 0 ;
return 0 ;
}
}
AST_TEST_DEFINE ( config_save )
{
enum ast_test_result_state res = AST_TEST_FAIL ;
struct ast_flags config_flags = { 0 } ;
struct ast_config * cfg ;
char config_filename [ PATH_MAX ] ;
char include_filename [ PATH_MAX ] ;
struct stat config_stat ;
off_t before_save ;
switch ( cmd ) {
case TEST_INIT :
info - > name = " config_save " ;
info - > category = " /main/config/ " ;
info - > summary = " Test config save " ;
info - > description =
" Test configuration save. " ;
return AST_TEST_NOT_RUN ;
case TEST_EXECUTE :
break ;
}
if ( write_config_file ( ) ) {
ast_test_status_update ( test , " Could not write initial config files \n " ) ;
return res ;
}
snprintf ( config_filename , PATH_MAX , " %s/%s " , ast_config_AST_CONFIG_DIR , CONFIG_FILE ) ;
snprintf ( include_filename , PATH_MAX , " %s/%s " , ast_config_AST_CONFIG_DIR , CONFIG_INCLUDE_FILE ) ;
cfg = ast_config_load ( CONFIG_FILE , config_flags ) ;
if ( ! cfg ) {
ast_test_status_update ( test , " Could not load config \n " ) ;
goto out ;
}
/* We need to re-save to get the generator header */
if ( ast_config_text_file_save ( CONFIG_FILE , cfg , " TEST " ) ) {
ast_test_status_update ( test , " Unable to write files \n " ) ;
goto out ;
}
stat ( config_filename , & config_stat ) ;
before_save = config_stat . st_size ;
if ( ! ast_include_new ( cfg , CONFIG_FILE , CONFIG_INCLUDE_FILE , 0 , NULL , 4 , include_filename , PATH_MAX ) ) {
ast_test_status_update ( test , " Could not create include \n " ) ;
goto out ;
}
if ( ast_config_text_file_save ( CONFIG_FILE , cfg , " TEST " ) ) {
ast_test_status_update ( test , " Unable to write files \n " ) ;
goto out ;
}
stat ( config_filename , & config_stat ) ;
if ( config_stat . st_size < = before_save ) {
ast_test_status_update ( test , " Did not save config file with #include \n " ) ;
goto out ;
}
res = AST_TEST_PASS ;
out :
ast_config_destroy ( cfg ) ;
unlink ( config_filename ) ;
unlink ( include_filename ) ;
return res ;
}
AST_TEST_DEFINE ( config_hook )
AST_TEST_DEFINE ( config_hook )
{
{
enum ast_test_result_state res = AST_TEST_FAIL ;
enum ast_test_result_state res = AST_TEST_FAIL ;
@ -934,6 +1007,7 @@ AST_TEST_DEFINE(config_options_test)
static int unload_module ( void )
static int unload_module ( void )
{
{
AST_TEST_UNREGISTER ( config_save ) ;
AST_TEST_UNREGISTER ( copy_config ) ;
AST_TEST_UNREGISTER ( copy_config ) ;
AST_TEST_UNREGISTER ( config_hook ) ;
AST_TEST_UNREGISTER ( config_hook ) ;
AST_TEST_UNREGISTER ( ast_parse_arg_test ) ;
AST_TEST_UNREGISTER ( ast_parse_arg_test ) ;
@ -943,6 +1017,7 @@ static int unload_module(void)
static int load_module ( void )
static int load_module ( void )
{
{
AST_TEST_REGISTER ( config_save ) ;
AST_TEST_REGISTER ( copy_config ) ;
AST_TEST_REGISTER ( copy_config ) ;
AST_TEST_REGISTER ( config_hook ) ;
AST_TEST_REGISTER ( config_hook ) ;
AST_TEST_REGISTER ( ast_parse_arg_test ) ;
AST_TEST_REGISTER ( ast_parse_arg_test ) ;