From 01b15204ee6e2c3b583e5a4479f53d2651bb20aa Mon Sep 17 00:00:00 2001 From: Andreas Guldstrand Date: Sat, 16 Apr 2016 00:01:34 +0200 Subject: Add Test::Sbotools module, and fix Test::Execute for it --- t/Test/Sbotools.pm | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 t/Test/Sbotools.pm (limited to 't/Test/Sbotools.pm') diff --git a/t/Test/Sbotools.pm b/t/Test/Sbotools.pm new file mode 100644 index 0000000..8319802 --- /dev/null +++ b/t/Test/Sbotools.pm @@ -0,0 +1,102 @@ +package Test::Sbotools; + +use strict; +use warnings; + +use Exporter 'import'; +use Test::More; +use Test::Execute; +use FindBin '$RealBin'; + +# From Test::Execute +$path = "$RealBin/../"; + +our @EXPORT_OK = qw/ + sbocheck + sboclean + sboconfig + sbofind + sboinstall + sboremove + sbosnap + sboupgrade + set_noclean + set_distclean + set_jobs + set_repo + set_lo + set_version + set_pkg_dir + set_sbo_home + make_slackbuilds_txt +/; + +local $Test::Builder::Level = $Test::Builder::Level + 1; + +sub sbocheck { script('sbocheck', @_); } +sub sboclean { script('sboclean', @_); } +sub sboconfig { script('sboconfig', @_); } +sub sbofind { script('sbofind', @_); } +sub sboinstall { script('sboinstall', @_); } +sub sboremove { script('sboremove', @_); } +sub sbosnap { script('sbosnap', @_); } +sub sboupgrade { script('sboupgrade', @_); } + +sub set_noclean { _set_config('NOCLEAN', @_); } +sub set_distclean { _set_config('DISTCLEAN', @_); } +sub set_jobs { _set_config('JOBS', @_); } +sub set_pkg_dir { _set_config('PKG_DIR', @_); } +sub set_sbo_home { _set_config('SBO_HOME', @_); } +sub set_lo { _set_config('LOCAL_OVERRIDES', @_); } +sub set_version { _set_config('SLACKWARE_VERSION', @_); } +sub set_repo { _set_config('REPO', @_); } + +my %config; +my %settings = ( + DISTCLEAN => '-d', + JOBS => '-j', + LOCAL_OVERRIDES => '-o', + NOCLEAN => '-c', + PKG_DIR => '-p', + REPO => '-r', + SBO_HOME => '-s', + SLACKWARE_VERSION => '-V', +); +sub _set_config { + my ($config, $value) = @_; + + # if %config is empty, populate it + if (not %config) { + sboconfig('-l', { test => 0, expected => + sub { + my $text = shift; + foreach my $setting (keys %settings) { $text =~ /\Q$setting\E=(.*)/ and $config{$setting} = $1 // 'FALSE'; } + }, + }); + } + + if (defined $value) { + sboconfig($settings{$config}, $value, { test => 0 }); + note "Saving original value of '$config': $config{$config}"; + } else { + sboconfig($settings{$config}, $config{$config}, { test => 0 }); + } +} + +my $made = undef; +my $fname = "/usr/sbo/repo/SLACKBUILDS.TXT"; +sub make_slackbuilds_txt { + if (not -e $fname) { $made = 1; system('mkdir', '-p', '/usr/sbo/repo'); system('touch', $fname); } +} + +# Restore original values when exiting +END { + if (%config) { + _set_config($_) for keys %settings; + } + if ($made) { + system(qw!rm -rf!, $fname); + } +} + +1; -- cgit v1.2.3