2017-09-21 22:26:06 +03:00
/*
2016-03-03 21:49:54 +03:00
* Copyright ( C ) 2016 Red Hat , Inc .
*
2018-01-30 22:26:26 +03:00
* SPDX - License - Identifier : LGPL - 2.0 +
*
2016-03-03 21:49:54 +03: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 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
2021-12-07 04:20:55 +03:00
* License along with this library . If not , see < https : //www.gnu.org/licenses/>.
2016-03-03 21:49:54 +03:00
*/
# include "config.h"
# include <gio/gio.h>
2023-05-01 21:24:29 +03:00
# include <stdlib.h>
2016-03-03 21:49:54 +03:00
# include <string.h>
# include "libglnx.h"
# include "libostreetest.h"
static gboolean
run_sync ( const char * cmdline , GError * * error )
{
int estatus ;
if ( ! g_spawn_command_line_sync ( cmdline , NULL , NULL , & estatus , error ) )
return FALSE ;
if ( ! g_spawn_check_exit_status ( estatus , error ) )
return FALSE ;
return TRUE ;
}
static void
test_sysroot_reload ( gconstpointer data )
{
2023-05-01 21:24:29 +03:00
OstreeSysroot * sysroot = ( void * ) data ;
g_autoptr ( GError ) error = NULL ;
2016-03-03 21:49:54 +03:00
gboolean changed ;
if ( ! ostree_sysroot_load ( sysroot , NULL , & error ) )
goto out ;
if ( ! ostree_sysroot_load_if_changed ( sysroot , & changed , NULL , & error ) )
goto out ;
g_assert ( ! changed ) ;
2023-05-01 21:24:29 +03:00
if ( ! run_sync ( " ostree --repo=sysroot/ostree/repo pull-local --remote=testos testos-repo "
" testos/buildmain/x86_64-runtime " ,
& error ) )
2016-03-03 21:49:54 +03:00
goto out ;
2023-05-01 21:24:29 +03:00
if ( ! run_sync ( " ostree admin --sysroot=sysroot deploy --karg=root=LABEL=MOO --karg=quiet "
" --os=testos testos:testos/buildmain/x86_64-runtime " ,
& error ) )
2016-03-03 21:49:54 +03:00
goto out ;
if ( ! ostree_sysroot_load_if_changed ( sysroot , & changed , NULL , & error ) )
goto out ;
g_assert ( changed ) ;
if ( ! ostree_sysroot_load_if_changed ( sysroot , & changed , NULL , & error ) )
goto out ;
g_assert ( ! changed ) ;
2023-05-01 21:24:29 +03:00
out :
2016-03-03 21:49:54 +03:00
if ( error )
g_error ( " %s " , error - > message ) ;
}
2023-05-01 21:24:29 +03:00
int
main ( int argc , char * * argv )
2016-03-03 21:49:54 +03:00
{
2023-05-01 21:24:29 +03:00
g_autoptr ( GError ) error = NULL ;
2016-03-03 21:49:54 +03:00
glnx_unref_object OstreeSysroot * sysroot = NULL ;
g_test_init ( & argc , & argv , NULL ) ;
2023-02-08 00:48:15 +03:00
sysroot = ot_test_setup_sysroot ( NULL , & error ) ;
2016-03-03 21:49:54 +03:00
if ( ! sysroot )
goto out ;
2023-02-08 00:48:15 +03:00
2016-03-03 21:49:54 +03:00
g_test_add_data_func ( " /sysroot-reload " , sysroot , test_sysroot_reload ) ;
2023-05-01 21:24:29 +03:00
return g_test_run ( ) ;
out :
2016-03-03 21:49:54 +03:00
if ( error )
g_error ( " %s " , error - > message ) ;
return 1 ;
}