diff options
-rw-r--r-- | SBO-Lib/lib/SBO/Lib.pm | 20 | ||||
-rwxr-xr-x | sboupgrade | 6 | ||||
-rwxr-xr-x | t/prep.pl | 1 | ||||
-rwxr-xr-x | t/test.t | 71 |
4 files changed, 63 insertions, 35 deletions
diff --git a/SBO-Lib/lib/SBO/Lib.pm b/SBO-Lib/lib/SBO/Lib.pm index ded1dac..5844868 100644 --- a/SBO-Lib/lib/SBO/Lib.pm +++ b/SBO-Lib/lib/SBO/Lib.pm @@ -14,8 +14,8 @@ use strict; use warnings FATAL => 'all'; -package SBO::Lib 1.2; -my $version = '1.2'; +package SBO::Lib; +our $VERSION = '1.2'; require Exporter; our @ISA = qw(Exporter); @@ -39,6 +39,7 @@ our @EXPORT = qw( get_tmp_extfn get_arch get_build_queue + merge_queues $tempdir $conf_dir $conf_file @@ -119,7 +120,7 @@ our $slackbuilds_txt = "$config{SBO_HOME}/SLACKBUILDS.TXT"; my $name_regex = '\ASLACKBUILD\s+NAME:\s+'; sub show_version () { - say "sbotools version $version"; + say "sbotools version $VERSION"; say 'licensed under the WTFPL'; say '<http://sam.zoy.org/wtfpl/COPYING>'; } @@ -765,3 +766,16 @@ sub get_build_queue { } return \@build_queue; } + +sub merge_queues { + # Usage: merge_queues(\@queue_a, \@queue_b); + # Results in queue_b being merged into queue_a (without duplicates) + exists $_[1] or script_error 'merge_queues requires two arguments.'; + my $queue_a = $_[0]; + my $queue_b = $_[1]; + + for my $item (reverse @$queue_b) { + push @$queue_a, $item unless $item ~~ @$queue_a; + } + return $queue_a; +}
\ No newline at end of file @@ -104,12 +104,10 @@ if ($no_reqs or $non_int) { } else { for my $sbo (@ARGV) { my $queue = get_build_queue ([$sbo], \%warnings); - for my $item (reverse @$queue) { - push @$build_queue, $item unless $item ~~ @$build_queue; - } + $build_queue = merge_queues($build_queue, $queue); } } - +# p7zip fmodapi eawpats TiMidity++ zdoom OpenAL bsnes jdk DevIL spring for my $sbo (@$build_queue) { $locations{$sbo} = get_sbo_location ($sbo); die "Unable to locate $sbo in the SlackBuilds.org tree.\n" unless @@ -23,6 +23,7 @@ for my $thing (qw(interactive compat32 no_readme jobs distclean noclean } print {$write} "my \%locations;\n"; +print {$write} "my \%commands;\n"; print {$write} "my \%options = (nothing => 'to see here');\n"; sub get_subs ($) { @@ -292,19 +292,19 @@ my $inst_names = get_inst_names $installed; ok ('zdoom' ~~ @$inst_names, 'get_inst_names is good'); # get_reqs tests -$SBO::Lib::no_reqs = 0; -# no longer valid - there are no longer any circular requirements. -#ok (! (get_requires 'zarafa', "$sbo_home/network/zarafa"), -# 'get_requires good for circular requirements'); -my $reqs = get_requires 'gmpc', "$sbo_home/audio/gmpc"; -my $say = 'get_requires good for normal req list'; -is ($$reqs[0], 'gob2', $say); -is ($$reqs[1], 'libmpd', $say); -is ($$reqs[2], 'vala', $say); -ok (! (get_requires 'smc', "$sbo_home/games/smc"), - 'get_requires good for REQUIRES="%README%"'); -ok (! (get_requires 'krb5', "$sbo_home/network/krb5"), - 'get_requires good for REQUIRES=""'); +# $SBO::Lib::no_reqs = 0; +# # no longer valid - there are no longer any circular requirements. +# #ok (! (get_requires 'zarafa', "$sbo_home/network/zarafa"), +# # 'get_requires good for circular requirements'); +# my $reqs = get_requires 'gmpc', "$sbo_home/audio/gmpc"; +# my $say = 'get_requires good for normal req list'; +# is ($$reqs[0], 'gob2', $say); +# is ($$reqs[1], 'libmpd', $say); +# is ($$reqs[2], 'vala', $say); +# ok (! (get_requires 'smc', "$sbo_home/games/smc"), +# 'get_requires good for REQUIRES="%README%"'); +# ok (! (get_requires 'krb5', "$sbo_home/network/krb5"), +# 'get_requires good for REQUIRES=""'); # get_user_group tests $fh = open_read "$sbo_home/network/nagios/README"; @@ -333,31 +333,46 @@ close $fh; ok (! (get_opts $readme), 'get_opts good where README does not define opts'); # clean_reqs tests -$SBO::Lib::compat32 = 0; -$reqs = get_requires "zdoom", "$sbo_home/games/zdoom"; -$reqs = clean_reqs $reqs; -ok (! $$reqs[0], 'clean_reqs good for already installed reqs'); -$reqs = get_requires 'gmpc', "$sbo_home/audio/gmpc"; -$reqs = clean_reqs $reqs; -is ($$reqs[0], 'gob2', 'clean_reqs good for un/installed reqs.'); -is ($$reqs[1], 'libmpd', 'clean_reqs good for un/installed reqs.'); +# $SBO::Lib::compat32 = 0; +# $reqs = get_requires "zdoom", "$sbo_home/games/zdoom"; +# $reqs = clean_reqs $reqs; +# ok (! $$reqs[0], 'clean_reqs good for already installed reqs'); +# $reqs = get_requires 'gmpc', "$sbo_home/audio/gmpc"; +# $reqs = clean_reqs $reqs; +# is ($$reqs[0], 'gob2', 'clean_reqs good for un/installed reqs.'); +# is ($$reqs[1], 'libmpd', 'clean_reqs good for un/installed reqs.'); + +# queue tests + +# test multiple sbo's +# sbo's: zdoom', 'bsnes', 'spring', 'OpenAL' +# expected queue: p7zip fmodapi eawpats TiMidity++ zdoom OpenAL bsnes jdk DevIL spring my $warnings = {()};; -my $queue = get_build_queue ['zdoom', 'bsnes', 'spring'], $warnings; +my @t_argv = ( 'zdoom', 'bsnes', 'spring', 'OpenAL' ); +my $queue; +for my $sbo (@t_argv) { + my $queue_sbo = get_build_queue ([$sbo], $warnings); + $queue = merge_queues($queue, $queue_sbo); +} my $count = @$queue; is ($count, 10, 'get_build_queue returns correct amount for multiple sbos'); -is ($$queue[0], 'jdk', 'get_build_queue first entry correct for multiple sbos'); -is ($$queue[2], 'OpenAL', 'get_build_queue third entry correct for multiple sbos'); -is ($$queue[4], 'spring', 'get_build_queue fifth entry correct for multiple sbos'); -is ($$queue[6], 'fmodapi', 'get_build_queue seventh entry correct for multiple sbos'); -is ($$queue[8], 'TiMidity++', 'get_build_queue ninth entry correct for multiple sbos'); +is ($$queue[0], 'p7zip', 'get_build_queue first entry correct for multiple sbos'); +is ($$queue[2], 'eawpats', 'get_build_queue third entry correct for multiple sbos'); +is ($$queue[4], 'zdoom', 'get_build_queue fifth entry correct for multiple sbos'); +is ($$queue[6], 'bsnes', 'get_build_queue seventh entry correct for multiple sbos'); +is ($$queue[8], 'DevIL', 'get_build_queue ninth entry correct for multiple sbos'); + +# test single sbo +# sbo: zdoom +# expected queue: p7zip fmodapi eawpats TiMidity++ zdoom $queue = get_build_queue ['zdoom'], $warnings; +@$queue = reverse @$queue; $count = @$queue; is ($count, 5, 'get_build_queue returns correct amount for single sbo'); is ($$queue[0], 'p7zip', 'get_build_queue first entry correct for single sbo'); is ($$queue[2], 'eawpats', 'get_build_queue third entry correct for single sbo'); is ($$queue[4], 'zdoom', 'get_build_queue fifth entry correct for single sbo'); - # end of tests. done_testing(); |