[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH 01/10] TestSupport: Provide target_editfile_cancel
This allows a caller of target_editfile to cancel the edit from within their supplied code block. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> --- Osstest/TestSupport.pm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm index 6a02757..5a4c41f 100644 --- a/Osstest/TestSupport.pm +++ b/Osstest/TestSupport.pm @@ -55,6 +55,7 @@ BEGIN { target_putfilecontents_stash target_putfilecontents_root_stash target_put_guest_image target_editfile + target_editfile_cancel target_editfile_root target_file_exists target_run_apt target_install_packages target_install_packages_norec @@ -483,6 +484,14 @@ sub target_file_exists ($$) { die "$rfile $out ?"; } +our $target_editfile_cancel_exception = + bless { }, 'Osstest::TestSupport::TargetEditfileCancelException'; + +sub target_editfile_cancel ($) { + logm("cancelling edit: @_"); + die $target_editfile_cancel_exception; +} + sub teditfileex { my $user= shift @_; my $code= pop @_; @@ -512,12 +521,19 @@ sub teditfileex { open '::EI', "$lfile" or die "$lfile: $!"; open '::EO', "> $lfile.new" or die "$lfile.new: $!"; - &$code; + my $install = 1; + + eval { &$code }; + if ($@) { + ref $@ && $@ == $target_editfile_cancel_exception or die $@; + $install = 0; + } '::EI'->error and die $!; close '::EI' or die $!; close '::EO' or die $!; - tputfileex($user, $ho, 60, "$lfile.new", $rdest); + tputfileex($user, $ho, 60, "$lfile.new", $rdest) + if $install; } sub target_editfile_root ($$$;$$) { teditfileex('root',@_); } -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |