summaryrefslogtreecommitdiffstats
path: root/pactest
AgeCommit message (Collapse)AuthorFilesLines
2009-07-20Do not create .pacsave with -R, if the file is unchangedXavier Chantry1-2/+2
This fixes FS#15546 Also fix the interface of unlink_file which was really stupid.. (alpm_list_t used with only one element) Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20Fix klibc conflict case.Xavier Chantry1-0/+17
A package can now replace symdir->dir by dir without fileconflicts. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20Fix fileconflict004Xavier Chantry3-3/+24
When one package wants to replace a directory by a file, we check that all files in that directory were owned by that package. Additionally pacman can be more verbose when the extraction of the symlink (or file) fails. The patch to add.c looks more complex than it is, I just moved and reindented code to handle cases 10 and 11 together. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20pactest : safety check with MODEXavier Chantry1-2/+5
check that the file exists first, otherwise pactest just breaks. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18Remove find_replacements()Nagy Gabor1-2/+2
"Foo replaces bar" simply means that "foo is a new version of bar". So this patch refactors the code to use this "rule". _alpm_sync_sysupgrade now does the following for each local package [bar] (pseudo-code): for db in syncdbs { if(db contains bar) {check if db/bar is an upgrade; break;} replacers = find(bar replacers in db); if(replacers!=NULL) {ask_user; break;} } Note: 1. Replacers are grouped per repo. If more than one package replace bar in a repo, all of them are considered ("package set of bar replacers"). 2. If repo1/foo1 and repo2/foo2 both replaces bar, only repo1/foo1 is considered (if repo1 stands before repo2 in pacman.conf). FS#11737 is fixed. 3. It can happen that pacman doesn't consider any replacer, if it found a literal "earlier", so sync132.py modified accordingly (btw, that situation should not appear irl). The new sysupgrade code doesn't use sync_newversion(), so I removed the "local is newer than repo" message, which was annoying with -Qu and SyncFirst. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18Add an initial pactest/test/.gitignoreGerardo Exequiel Pozzi1-0/+1
Add an initial pactest/test/.gitignore to exclude sync200.py that is generated from sync200.py.in Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11Look in target-list first to resolve dependenciesBryan Ischo1-0/+20
This fixes a bug introduced by my previous changes which changes the behavior of IgnorePkg/IgnoreGroup to allow the user to remove unresolvable packages from the transaction. The bug is that the target-list was no longer being consulted first to resolve dependencies, which means that if two packages in the sync database satisfied a dependency, and the user explicitly requested one of those two packages in the sync, the other package was still being pulled in. A new test was added, sync993.py, to verify the desired behavior. Signed-off-by: Bryan Ischo <bji-keyword-pacman.3644cb@www.ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11Fix for trans001.py (FS#9088)Nagy Gabor1-2/+0
From now on _alpm_db_find_fileconflicts() works with upgrade and remove target lists (like checkdeps), which makes it transaction independent (we still need a trans param because of the progressbar). This is a small step towards the universal transaction. So we call this function directly from sync.c before commiting the remove transaction. This is much safer, but we can get false fileconflict error alarms in some tricky cases ("symlinks puzzle" etc). The patch on find_fileconflict looks complex, but it is mainly an "indent-patch", the new code-part can be found after the /* check remove list ... */ comment, and I modified something around the "file has changed hand" case (see comment modifications in the code). Unfortunately sync.c became more ugly, because we have to create 2 parallel internal transactions: to avoid duplicated work, upgrade transaction is used to load package data (filelists). This problem will disappear, when we finally get rid of internal transactions. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23Update pactest to use hashlibDan McGee1-3/+3
The md5 module is deprecated in favor of hashlib. Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23Don't prompt the user for unignore of IgnorePkg/IgnoreGroup packagesBryan Ischo5-0/+179
Don't prompt the user for unignore of IgnorePkg/IgnoreGroup packages, except for packages explicitly listed for sync by the user. This eliminates many unnecessary prompts when IgnorePkg/IgnoreGroup is used. Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23Enabled new interactive prompt and updated some testsBryan Ischo4-4/+4
Enabled a new prompt to ask the user if they'd like to remove unresolvable packages from the transaction rather than failing it. Many pactest tests that used to fail now return success codes, because pacman now issues a prompt allowing the user to cancel rather than failing many transactions, and the pactest scripts always choose to cancel with no error rather than failing. The only net effect is that the return status of pacman is now 0 in cases where it used to be nonzero. Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-16Fixed some inconsistencies and errors in the pactest documentation.Bryan Ischo1-9/+16
Signed-off-by: Bryan Ischo <bryan@ischo.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12HoldPkg reworkNagy Gabor1-4/+2
The HoldPkg feature is even more important when the packages to be held are pulled automatically by pacman, in a -Rc and -Rs operation. Before, it only applied when the packages were explicitly requested by the user to be removed. This patch extends holdpkg to -Rc and -Rs by doing the HoldPkg check just before trans_commit. Additionally, the whole HoldPkg stuff was moved to the front-end. I changed the default behavior to "don't remove", so I modified remove030.py pactest as well. See also: FS#9173. Original-work-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12Merge branch 'maint'Dan McGee3-3/+9
2008-10-12Quiet up the make process a bitDan McGee1-5/+6
When we do our sed edits, we really don't need every command printed out to the terminal. Now with "make -s", the output is quite palatable. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12Rework fakechroot checkingDan McGee3-3/+9
Do the checks in the tests that need it, and get rid of some of the cluttered output when it is not available (one line per test run). Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23Allow sync200 pactest to pass without libdownload.Xavier Chantry1-0/+3
This was a stupid and unimportant regression caused by commit 4476598e4e128f4595d5383ecb51a9576a447b5b . When libdownload is not available, a xfercommand is needed for this pactest to run properly. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23Add autotools magic for pactestsHenning Garus2-1/+28
Added a Makefile.am for the pactest/tests dir. This is a blatant ripoff of scripts/Makefile.am, which replaces predefined expressions in NAME.py.in pactests with configure variables. This can be used to write pactests which consider compile time options. Signed-off-by: Henning Garus <henning.garus@gmail.com> [Dan: autotools are tough, make a few adjustments for correctness] Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23pactest: remove need for pause when running testsDan McGee2-3/+13
Instead of pausing 1.5 seconds on tests that check file mtimes, change the mtimes to something in the far past so we can immediately tell if a file was modified and/or touched. This saves a decent amount of time on the upgrade tests which often check mtimes. 355 was a completely arbitrary time value, don't ask me why I picked it. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-29New fileconflict005.py pactestNagy Gabor1-0/+23
This makes the fileconflict004.py test complete. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-25vercmptest: fix binary existence checkDan McGee1-1/+1
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-24pactest: exit with a non-zero error code on unexpected failureDan McGee4-26/+28
This will allow the return code of pactest to be useful, for such things as use in a git-bisect test script. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-24pactest: add test.expectfailure option for testsDan McGee9-5/+41
This will enable us to mark tests we know currently fail to differentiate them from those that we know should pass. Regressions should be easier to spot this way. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-24Fix vercmp and add additional testsDan McGee1-3/+33
This vercmp issue has been a sticking point but this should resolve many of the issues that have come up. Only a few minor code changes were necessary to get the behavior we desired, and this version appears to beat any other vercmp rendition on a few more cases added in this commit. This commit passes all 58 vercmp tests currently out there. Other 'fixes' still fail on a few tests, namely these ones: test: ver1: 1.5.a ver2: 1.5 ret: -1 expected: 1 ==> FAILURE test: ver1: 1.5 ver2: 1.5.a ret: 1 expected: -1 ==> FAILURE test: ver1: 1.5-1 ver2: 1.5.b ret: 1 expected: -1 ==> FAILURE test: ver1: 1.5.b ver2: 1.5-1 ret: -1 expected: 1 ==> FAILURE 4 of 58 tests failed Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-22Update pactest READMENagy Gabor1-1/+3
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-22New fileconflict004.py pactestNagy Gabor1-0/+19
Thread: http://www.archlinux.org/pipermail/pacman-dev/2008-July/012465.html Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
2008-07-13sync_addtarget reworkNagy Gabor1-15/+0
Now '-S provision' handling is done in the back-end. In case of multiple providers, the first one is selected (behavior change: deleted provision002.py). The old processing order was: literal, group, provision; the new one: literal, provision, group. This is more rational, but "pacman -S group" will be slower now. "pacman -S repo/provision" also works. Provision was generalized to dependencies, so you can resolve deps by hand: "pacman -S 'bash>2.0'" or "pacman -S 'core/bash>2.0'" etc. This can be useful in makepkg dependency resolving. The changes were documented in pacman manual. alpm_find_pkg_satisfiers and _alpm_find_dep_satisfiers functions were removed, since they are no longer needed. I added some verbosity to "select provider instead of literal" and "fallback to group". Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-13New remove060.py pactestNagy Gabor1-0/+19
This is a group removal test. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-07Remove requiredby from pactestsNagy Gabor35-183/+2
Also remove some meaningless pactests (broken requiredby, requiredby*.py tests). requiredby001.py was renamed to upgrade076.py. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-07-07Resolvedeps reworkNagy Gabor1-11/+6
I divided resolvedeps into 2 functions. The new _alpm_resolvedep function will resolve one dependency, for example the 'foo>=1.0-1' dependency. It can be useful in sync_addtarget refactoring. The resolvedeps parameters were changed, to be coherent with recursedeps: * the target-list is an alpm_list* instead of alpm_list**. This is OK, because alpm_list_add == alpm_list_add_last * syncpkg param was removed. list contains the to-be-installed packages, resolvedeps will add the required dependencies into this list * trans param was removed, it was used in QUESTION() only, which can be used on the main (handle->trans) transaction only (because the front-end cannot access our pseudo-transactions at all!). The patch fixes some wrong dynamic pmdepmissing_t usage. I did a behavior change (and sync1003.py was modified accordingly), which needs some explanation: The old resolvedeps didn't elect packages from 'remove' list. I've dropped this because I don't want that 2nd excluding list param. In fact, in real life, we ~never need this rule. Resolvedeps is called before checkconflicts, so only -Su's %REPLACES% packages are sitting in 'remove' list. This means, that we have the replacement packages in our target list. Usually "foo replaces bar" means, that bar isn't in our repos any more, so resolvedeps *cannot* elect it; but usually it won't try it at all, because foo is in the target list, and it is expected to satisfy 'bar>=1.0-1'-like dependencies too. Since checkdeps and checkconflicts is done after resolvedeps, this cannot cause any harm. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-06-08Various updates needed prior to a new releaseDan McGee1-1/+2
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-30Fix versioncmp regression after updateDan McGee2-9/+32
Commit 84283672853350a84d2a71b72dc06e180cad1587 introduced the regression, and a previous commit introduced the vercmptest.sh test script to track down these issues. This commit solves the problem by removing the previous attempt at locating the pkgrel portions and replacing it with something that performs the correct logic. While tracking down everything I needed to, I also found a mistake in one of the pactests which is fixed here as well as increased the functionality and verbosity of the vercmptest script to both print out each test it is running as well as automatically run the mirror of each test case. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-29Add simple vercmp test scriptDan McGee1-0/+77
Commit 84283672853350a84d2a71b72dc06e180cad1587 updated the versioncmp code in libalpm. Unfortunately for us, it also introduced the regression that becomes apparant with the following upgrade: warning: sonata: local (1.5-2) is newer than extra (1.5.1-2) Add a vercmptest.sh test script that is run during the make check phase which now points out three regressions in the version comparison function that will need fixing. All current tests in this script pass with the old versioncmp code. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-29Pactests for sync operations with NoUpgrade and NoExtractAllan McRae2-0/+33
This adds the sync equivalents of upgrade010.py and upgrade070.py. Both additional test pass. Signed-off-by: Allan McRae <mcrae_allan@hotmail.com> Acked-by: Dan McGee <dan@archlinux.org> Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-29Pactest for removing multiple items in a dependency chain.Allan McRae1-0/+21
This adds a test for when removing multilpe packages recursively from a chain of dependent packages. This situation can occur when removing installed dependencies with makepkg if a "makedepend" recursively depends on a "depend" or if redundant dependancies are included. Signed-off-by: Allan McRae <mcrae_allan at hotmail.com> Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-14pactest: only use fakeroot when it is found.Xavier Chantry1-6/+10
Only use fakeroot and fakechroot when they are found AND required. fakechroot only had the first condition, and fakeroot only the second. When they are required (user != root) but not found, display a warning. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-13Add SyncFirst option.Chantry Xavier2-2/+5
This patch offers a way to fix FS#9228. By putting "SyncFirst = pacman" in pacman.conf, the version check will happen before the transaction really starts, and before any replacements is made. Otherwise, no version check is done. The sync301 pactest was updated to use this SyncFirst option. Example session with SyncFirst = pacman, and a newer pacman version available : $ pacman -Su (or pacman -S <any targets>) :: the following packages should be upgraded first : pacman :: Do you want to cancel the current operation :: and upgrade these packages now? [Y/n] resolving dependencies... looking for inter-conflicts... Targets: pacman-x.y.z-t Total Download Size: x.xx MB Total Installed Size: x.xx MB Proceed with installation? [Y/n] n As Nagy previously noted, doing this check on any -S operations might look intrusive, but it can be required. For example, the case where you want to install a package with versioned provisions, using a pacman version which didn't support that feature yet (and there is already a newer pacman in sync db supporting it). Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-05-11pactest: fix --gdb optionDan McGee1-1/+1
A libtool upgrade broke the gdb option as we need a MODE specified; add the execute mode to the call. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-04-28Rework extract_single_file() temp file creationDan McGee1-0/+20
We were a bit juryrigged using one call to mkstemp() before rather than extracting the new files side-by-side and doing our comparisons there. We were also facing some permissions issues. Instead, make our life easier by extracting all temp files to a '.paccheck' extension, doing our md5 comparisons, and then taking the correct actions. Still to be done here- a cleanup of the use of PATH_MAX which should not be necessary if we use dynamic allocation on the heap. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-04-28Update pactest to allow setting modes on created filesDan McGee3-20/+34
This should allow some future tests to set modes and ensure they are set after installation. It is also in anticipation of a test for checking permissions on pacnew files. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-04-19Merge branch 'maint'Dan McGee3-14/+22
Conflicts: pactest/pmtest.py
2008-04-17pactest : Use tarfile module.Chantry Xavier2-12/+20
Previously, tar was called manually with os.system. This caused one fork per package/db creation, which is costly, especially on cygwin. Besides, it also caused some problems with directory with whitespaces (that could also be fixed with quotes, but well..) Using tarfile module is cleaner and more efficient, and still easy enough. Benchmark (time make check) : - windows / cygwin prepatch: real 6m36.360s user 2m28.914s sys 2m35.866s postpatch: real 5m25.428s user 1m26.029s sys 2m0.006s - linux prepatch: real 1m22.629s user 0m31.498s sys 0m18.899s postpatch: real 1m11.465s user 0m26.382s sys 0m12.986s Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
2008-04-17pactest: Add quotes for directory with whitespacesChantry Xavier1-2/+2
Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-03-30Update -Ss and -Qs pactests to include groupsDan McGee2-0/+2
This update causes query003 to fail before commit 4b8ada818e21aae43b4f54f146ffa215fdb9213e. Hopefully the issue doesn't crop up again but we might as well test for it. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-03-23Avoid duplicated target names.Nagy Gabor2-17/+8
This patch should avoid duplicated target names in the backend. 1. sync_loadtarget will return with PM_ERR_TRANS_DUP_TARGET when trying to add a duplicated target 2. sysupgrade never pulls duplicated targets 3. resolvedeps won't pull duplicated targets anymore A pulled list was introduced in sync_prepare to improve the pmsyncpkg_t<->pmpkg_t list conversion by making it more direct. Also replace sync1005 and sync1006 by the sync1008 pactest, which is similar but more interesting (the provisions are dependencies instead of explicit targets). sync1005 didn't work as expected anyway. It was expecting that pacman failed, and pacman indeed failed, but not for the good reason. It didn't fail during the preparation step because of conflicting targets, but during the commit step, because of a md5 error... And sync1006 didn't pass and was not really worth fixing. We have already enough failing pactests more important than these two. sync1008 pass with this patch. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
2008-03-23Add -q (quiet) option to valgrind call in pactestDan McGee1-1/+1
This gets rid of a lot of the unnecessary verbosity in the --valgrind output when running all the tests. It should also make diff-ing output between test runs a lot easier. Signed-off-by: Dan McGee <dan@archlinux.org>
2008-03-22Kill the dependsonly option.Chantry Xavier2-37/+0
From the man page : "This is pretty useless and we're not sure why it even exists." Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
2008-03-17Drop case insensitive comparisons in the config parsing.Chantry Xavier9-9/+9
These case insensitive comparisons didn't work in some locales, like tr_TR where upper(i) != I. So a second case sensitive comparison had to be made for each directive. Only keeping case sensitive comparisons make the code cleaner and treat all locales equally. Ref: http://www.archlinux.org/pipermail/pacman-dev/2008-March/011445.html Also fix pactests to use the correct case. Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
2008-03-10Add -Rss optionNagy Gabor2-0/+40
* -Rss removes all dependencies (including explicitly installed ones). * updated documentation * two pactest files added to test the difference between -Rs and -Rss Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
2008-03-10Remove trans->targetsNagy Gabor1-3/+2
Its implementation was quite broken: * add_loadtarget() might have silently filtered out some targets when replacing an older version. * This was used in sync.c to determine whether a target is implicit or not, which is incorrect behavior. Before this patch we silently removed user confirmed replacements; now we always warn on a replacement. * remove001.py behavior was quite odd in adding same target 5 times to the target list, we can change this behavior to be a failure. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> [Xav: changed remove001 pactest accordingly] Signed-off-by: Chantry Xavier <shiningxc@gmail.com> [Dan: rewrote commit message] Signed-off-by: Dan McGee <dan@archlinux.org>