2012-03-16 20:29:49 +04:00
/*
2014-03-17 13:38:38 +04:00
* Copyright ( C ) 2011 , 2012 , 2014 Red Hat , Inc .
2012-03-16 20:29:49 +04:00
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
2012-09-21 02:30:55 +04:00
* License along with this library . If not , see
2012-07-21 14:06:23 +04:00
* < http : //www.gnu.org/licenses/>.
2012-03-16 20:29:49 +04:00
*
* Author : Daniel P . Berrange < berrange @ redhat . com >
*/
# include <config.h>
# include <stdlib.h>
# include <signal.h>
# include "testutils.h"
2012-12-13 22:21:53 +04:00
# include "virerror.h"
2012-12-12 22:06:53 +04:00
# include "viralloc.h"
2012-12-12 21:59:27 +04:00
# include "virlog.h"
2012-03-16 20:29:49 +04:00
# include "virkeyfile.h"
# define VIR_FROM_THIS VIR_FROM_RPC
2014-02-28 16:16:17 +04:00
VIR_LOG_INIT ( " tests.keyfiletest " ) ;
2012-03-16 20:29:49 +04:00
static int testParse ( const void * args ATTRIBUTE_UNUSED )
{
static const char * cfg1 =
" # Some config \n "
" \n "
" # The first group \n "
" [Foo] \n "
" one=The first entry is here \n "
" two=The second entry \n "
" \n "
" three=The third entry \n "
" [Bar] \n "
" ; Another comment \n "
" one=The first entry in second group " ;
virKeyFilePtr kf = virKeyFileNew ( ) ;
int ret = - 1 ;
if ( virKeyFileLoadData ( kf , " demo.conf " , cfg1 , strlen ( cfg1 ) ) < 0 )
goto cleanup ;
if ( ! virKeyFileHasGroup ( kf , " Foo " ) ) {
VIR_DEBUG ( " Missing group 'Foo' " ) ;
goto cleanup ;
}
if ( ! virKeyFileHasValue ( kf , " Foo " , " one " ) ) {
VIR_DEBUG ( " Missing Value 'Foo.one' " ) ;
goto cleanup ;
}
if ( ! virKeyFileHasValue ( kf , " Foo " , " two " ) ) {
VIR_DEBUG ( " Missing Value 'Foo.two' " ) ;
goto cleanup ;
}
if ( ! virKeyFileHasValue ( kf , " Foo " , " three " ) ) {
VIR_DEBUG ( " Missing Value 'Foo.three' " ) ;
goto cleanup ;
}
2015-10-20 19:15:12 +03:00
if ( STRNEQ ( virKeyFileGetValueString ( kf , " Foo " , " one " ) ,
2012-03-16 20:29:49 +04:00
" The first entry is here " ) ) {
VIR_DEBUG ( " Wrong value for 'Foo.one' " ) ;
goto cleanup ;
}
2015-10-20 19:15:12 +03:00
if ( STRNEQ ( virKeyFileGetValueString ( kf , " Foo " , " two " ) ,
2012-03-16 20:29:49 +04:00
" The second entry " ) ) {
VIR_DEBUG ( " Wrong value for 'Foo.one' " ) ;
goto cleanup ;
}
2015-10-20 19:15:12 +03:00
if ( STRNEQ ( virKeyFileGetValueString ( kf , " Foo " , " three " ) ,
2012-03-16 20:29:49 +04:00
" The third entry " ) ) {
VIR_DEBUG ( " Wrong value for 'Foo.one' " ) ;
goto cleanup ;
}
if ( ! virKeyFileHasGroup ( kf , " Bar " ) ) {
VIR_DEBUG ( " Missing group 'Bar' " ) ;
goto cleanup ;
}
if ( ! virKeyFileHasValue ( kf , " Bar " , " one " ) ) {
VIR_DEBUG ( " Missing Value 'Bar.one' " ) ;
goto cleanup ;
}
2015-10-20 19:15:12 +03:00
if ( STRNEQ ( virKeyFileGetValueString ( kf , " Bar " , " one " ) ,
2012-03-16 20:29:49 +04:00
" The first entry in second group " ) ) {
VIR_DEBUG ( " Wrong value for 'Bar.one' " ) ;
goto cleanup ;
}
ret = 0 ;
2014-03-25 10:53:44 +04:00
cleanup :
2012-03-16 20:29:49 +04:00
virKeyFileFree ( kf ) ;
return ret ;
}
static int
mymain ( void )
{
int ret = 0 ;
signal ( SIGPIPE , SIG_IGN ) ;
2016-05-26 18:01:50 +03:00
if ( virTestRun ( " Test parse " , testParse , NULL ) < 0 )
2012-03-16 20:29:49 +04:00
ret = - 1 ;
2014-03-17 13:38:38 +04:00
return ret = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ;
2012-03-16 20:29:49 +04:00
}
VIRT_TEST_MAIN ( mymain )