diff options
author | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2010-10-03 15:54:34 +0000 |
---|---|---|
committer | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2010-10-03 15:54:34 +0000 |
commit | d1ee01105ef052c30db476a989ef840e529a6c6d (patch) | |
tree | 67808f766a8e5fca84b4b8b7e2ced1dbf707777b /t/resolve.t | |
parent | 0769ed515b873d0b1fa67df5e20d35a50992619f (diff) | |
download | perl-URPM-d1ee01105ef052c30db476a989ef840e529a6c6d.tar perl-URPM-d1ee01105ef052c30db476a989ef840e529a6c6d.tar.gz perl-URPM-d1ee01105ef052c30db476a989ef840e529a6c6d.tar.bz2 perl-URPM-d1ee01105ef052c30db476a989ef840e529a6c6d.tar.xz perl-URPM-d1ee01105ef052c30db476a989ef840e529a6c6d.zip |
add some crude regression tests to catch any potential changes in the dependency solving behaviour
Diffstat (limited to 't/resolve.t')
-rw-r--r-- | t/resolve.t | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/t/resolve.t b/t/resolve.t new file mode 100644 index 0000000..46ae32a --- /dev/null +++ b/t/resolve.t @@ -0,0 +1,71 @@ +#!/usr/bin/perl + +use strict ; +use warnings ; +use Test::More tests => 6; +use URPM; + +chdir 't' if -d 't'; + +my $urpm; +my $db; + +# There's currently not implemented any way for closing the rpmdb, so we cannot +# delete it from perl itself, as the rpmdb won't close before perl exists, +# which will give us errors when trying to close the rpmdb after it's been +# deleted. Therefore we just fork a shell in the background which deletes it +# after a 1 sec delay, which should give perl time to exit and close the +# rpmdb before. +END { + system('sh -c "sleep 1; rm -rf tmp" &'); +} + +sub solve_check { + my ($pkg, $pkgtotal, $suggest, $write) = @_; + my $cand_pkgs = $urpm->find_candidate_packages($pkg); + my @pkgs; + my $out; + my $in; + my $file = "res/$pkg.resolve"; + if ($suggest) { + @pkgs = $urpm->resolve_requested($db, undef, $cand_pkgs); + $file .= ".suggests"; + } else { + @pkgs = $urpm->resolve_requested__no_suggests_($db, undef, $cand_pkgs); + $file .= ".nosuggests"; + } + foreach (@pkgs) { + $out .= $_->fullname() . "\n"; + } + if ($write) { + open FILE, ">$file"; + + print FILE $out; + close FILE; + } else { + open (FILE, $file); + while (<FILE>) { + $in .= $_; + } + close FILE; + } + + is(int @pkgs, $pkgtotal, "$pkg total number of packages"); + is($in, $out, "$file comparision"); + +} + +SKIP: { + my $synthesis = "res/synthesis.hdlist.cz"; + + if (!(-r $synthesis)) { + skip "$synthesis missing, only found in svn", 6; + } + $db = URPM::DB::open("tmp", 1); + $urpm = new URPM; + $urpm->parse_synthesis($synthesis); + + solve_check("basesystem-minimal", 141, 0, 0); + solve_check("basesystem", 527, 1, 0); + solve_check("task-kde4", 2059, 1, 0); +} |