aboutsummaryrefslogtreecommitdiffstats
path: root/t/resolve.t
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <peroyvind@mandriva.org>2010-10-03 15:54:34 +0000
committerPer Øyvind Karlsen <peroyvind@mandriva.org>2010-10-03 15:54:34 +0000
commitd1ee01105ef052c30db476a989ef840e529a6c6d (patch)
tree67808f766a8e5fca84b4b8b7e2ced1dbf707777b /t/resolve.t
parent0769ed515b873d0b1fa67df5e20d35a50992619f (diff)
downloadperl-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.t71
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);
+}