From b45de639ca142eb46ecce6dc8c82a87e6908c79c Mon Sep 17 00:00:00 2001 From: Anssi Hannula Date: Tue, 7 Jul 2009 13:35:45 +0000 Subject: add testcase for bug #52105 --- t/02create_pkgs.t | 3 ++- t/data/SPECS/backtrack-promotion/a-i586.spec | 13 ++++++++++ t/data/SPECS/backtrack-promotion/a-x86_64.spec | 14 +++++++++++ t/data/SPECS/backtrack-promotion/c.spec | 14 +++++++++++ t/data/SPECS/backtrack-promotion/d.spec | 14 +++++++++++ t/superuser--backtrack-promotion.t | 33 ++++++++++++++++++++++++++ 6 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 t/data/SPECS/backtrack-promotion/a-i586.spec create mode 100644 t/data/SPECS/backtrack-promotion/a-x86_64.spec create mode 100644 t/data/SPECS/backtrack-promotion/c.spec create mode 100644 t/data/SPECS/backtrack-promotion/d.spec create mode 100644 t/superuser--backtrack-promotion.t (limited to 't') diff --git a/t/02create_pkgs.t b/t/02create_pkgs.t index 81f282d6..507af0c4 100644 --- a/t/02create_pkgs.t +++ b/t/02create_pkgs.t @@ -62,7 +62,8 @@ sub rpmbuild { my ($spec, $o_medium_name) = @_; my $dir = getcwd(); - system_("rpmbuild --quiet --define 'rpm_version %(rpm -q --queryformat \"%{VERSION}\" rpm|sed -e \"s/\\\\.//g\")' --define '_topdir $dir/tmp' --define '_tmppath $dir/tmp' -bb --clean --nodeps $spec"); + my ($target) = $spec =~ m!-(i586|x86_64)\.spec$!; + system_("rpmbuild --quiet --define 'rpm_version %(rpm -q --queryformat \"%{VERSION}\" rpm|sed -e \"s/\\\\.//g\")' --define '_topdir $dir/tmp' --define '_tmppath $dir/tmp' -bb --clean --nodeps ".($target ? "--target $target" : "")." $spec"); my ($name) = $spec =~ m!([^/]*)\.spec$!; diff --git a/t/data/SPECS/backtrack-promotion/a-i586.spec b/t/data/SPECS/backtrack-promotion/a-i586.spec new file mode 100644 index 00000000..f75c94d2 --- /dev/null +++ b/t/data/SPECS/backtrack-promotion/a-i586.spec @@ -0,0 +1,13 @@ +Summary: x +Name: a +Version: 1 +Release: 1 +License: x +Group: x +Url: x +BuildRoot: %{_tmppath}/%{name} + +%description +x + +%files diff --git a/t/data/SPECS/backtrack-promotion/a-x86_64.spec b/t/data/SPECS/backtrack-promotion/a-x86_64.spec new file mode 100644 index 00000000..19dd247d --- /dev/null +++ b/t/data/SPECS/backtrack-promotion/a-x86_64.spec @@ -0,0 +1,14 @@ +Summary: x +Name: a +Version: 1 +Release: 1 +License: x +Group: x +Url: x +Provides: b +BuildRoot: %{_tmppath}/%{name} + +%description +x + +%files diff --git a/t/data/SPECS/backtrack-promotion/c.spec b/t/data/SPECS/backtrack-promotion/c.spec new file mode 100644 index 00000000..ca0c8476 --- /dev/null +++ b/t/data/SPECS/backtrack-promotion/c.spec @@ -0,0 +1,14 @@ +Summary: x +Name: c +Version: 1 +Release: 1 +License: x +Group: x +Url: x +Conflicts: b +BuildRoot: %{_tmppath}/%{name} + +%description +x + +%files diff --git a/t/data/SPECS/backtrack-promotion/d.spec b/t/data/SPECS/backtrack-promotion/d.spec new file mode 100644 index 00000000..c5093137 --- /dev/null +++ b/t/data/SPECS/backtrack-promotion/d.spec @@ -0,0 +1,14 @@ +Summary: x +Name: d +Version: 1 +Release: 1 +License: x +Group: x +Url: x +Requires: a +BuildRoot: %{_tmppath}/%{name} + +%description +x + +%files diff --git a/t/superuser--backtrack-promotion.t b/t/superuser--backtrack-promotion.t new file mode 100644 index 00000000..99825cf0 --- /dev/null +++ b/t/superuser--backtrack-promotion.t @@ -0,0 +1,33 @@ +#!/usr/bin/perl +# +# testcase for bug #52105 +# +# a.x86_64 provides b +# a.i586 does not provide b +# c conflicts with b +# d requires a +# +# user has a.x86_64, d installed +# trying to install c has to remove a, d +# +# Original problem: +# urpmi tries to promote a.i586 for d, but strict-arch does not allow it; +# backtracking finds a.i586 as well and tries it again; it still does not +# work, but urpmi already forgot the promotion and does not remove d +# +use strict; +use lib '.', 't'; +use helper; +use urpm::util; +use Test::More 'no_plan'; + +need_root_and_prepare(); + +my $name = 'backtrack-promotion'; +urpmi_addmedia("$name $::pwd/media/$name"); + +urpmi("--auto --ignorearch a-1-1.x86_64 d"); +check_installed_fullnames("a-1-1", "d-1-1"); +urpmi("--auto --ignorearch c"); +check_installed_fullnames("c-1-1"); + -- cgit v1.2.1